naracli 1.0.89 → 1.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -76,7 +76,7 @@ zkid withdraw <name> [--recipient <addr>] Withdraw deposit
76
76
  bridge transfer <token> <amount> --from <chain> Bridge tokens between Solana and Nara
77
77
  bridge status <tx-or-message-id> --from <chain> Check bridge transfer delivery status
78
78
  bridge info Show bridgeable token balances on both chains
79
- bridge tokens List supported bridge tokens (with minimum amounts)
79
+ bridge tokens List supported bridge tokens (shows min amount + min fee per token)
80
80
  dex pools [token-mint] Find Meteora pools containing a token (default: NARA)
81
81
  dex smart-quote <input> <output> <amount> Best-route quote via smart router
82
82
  dex smart-swap <input> <output> <amount> [--slippage] Execute best-route swap via smart router
@@ -66721,10 +66721,10 @@ var require_dist3 = __commonJS({
66721
66721
  }
66722
66722
  });
66723
66723
 
66724
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/constants.ts
66724
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/constants.ts
66725
66725
  var DEFAULT_RPC_URL, DEFAULT_QUEST_RELAY_URL, DEFAULT_QUEST_PROGRAM_ID, DEFAULT_SKILLS_PROGRAM_ID, DEFAULT_ZKID_PROGRAM_ID, DEFAULT_AGENT_REGISTRY_PROGRAM_ID, DEFAULT_ALT_ADDRESS, DEFAULT_BRIDGE_FEE_BPS, BRIDGE_FEE_BPS_DENOMINATOR, DEFAULT_BRIDGE_FEE_RECIPIENT_SOLANA, DEFAULT_BRIDGE_FEE_RECIPIENT_NARA;
66726
66726
  var init_constants2 = __esm({
66727
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/constants.ts"() {
66727
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/constants.ts"() {
66728
66728
  DEFAULT_RPC_URL = process.env.RPC_URL || "https://mainnet-api.nara.build/";
66729
66729
  DEFAULT_QUEST_RELAY_URL = process.env.QUEST_RELAY_URL || "https://quest-api.nara.build/";
66730
66730
  DEFAULT_QUEST_PROGRAM_ID = process.env.QUEST_PROGRAM_ID || "Quest11111111111111111111111111111111111111";
@@ -66739,7 +66739,7 @@ var init_constants2 = __esm({
66739
66739
  }
66740
66740
  });
66741
66741
 
66742
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx.ts
66742
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx.ts
66743
66743
  function getAltAddress() {
66744
66744
  if (_overrideAltAddresses !== null) return _overrideAltAddresses;
66745
66745
  if (!DEFAULT_ALT_ADDRESS) return [];
@@ -66861,7 +66861,7 @@ async function sendTx(connection, payer, instructions, signers, opts) {
66861
66861
  }
66862
66862
  var import_web394, _cachedAlts, _cachedAltKey, _overrideAltAddresses, _globalSkipPreflight;
66863
66863
  var init_tx = __esm({
66864
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx.ts"() {
66864
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx.ts"() {
66865
66865
  import_web394 = __toESM(require_index_cjs(), 1);
66866
66866
  init_constants2();
66867
66867
  _cachedAlts = [];
@@ -83116,10 +83116,10 @@ var require_cjs2 = __commonJS({
83116
83116
  }
83117
83117
  });
83118
83118
 
83119
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_quest.json
83119
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_quest.json
83120
83120
  var nara_quest_default;
83121
83121
  var init_nara_quest = __esm({
83122
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_quest.json"() {
83122
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_quest.json"() {
83123
83123
  nara_quest_default = {
83124
83124
  address: "Quest11111111111111111111111111111111111111",
83125
83125
  metadata: {
@@ -83883,6 +83883,10 @@ var init_nara_quest = __esm({
83883
83883
  {
83884
83884
  name: "max_reward_count",
83885
83885
  type: "u32"
83886
+ },
83887
+ {
83888
+ name: "free_stake_multiplier",
83889
+ type: "u32"
83886
83890
  }
83887
83891
  ]
83888
83892
  },
@@ -85032,6 +85036,11 @@ var init_nara_quest = __esm({
85032
85036
  code: 6022,
85033
85037
  name: "InsufficientAirdrop",
85034
85038
  msg: "Airdrop fund has insufficient balance"
85039
+ },
85040
+ {
85041
+ code: 6023,
85042
+ name: "InvalidMultiplier",
85043
+ msg: "Multiplier must be >= 1"
85035
85044
  }
85036
85045
  ],
85037
85046
  types: [
@@ -85128,12 +85137,16 @@ var init_nara_quest = __esm({
85128
85137
  name: "max_airdrop_count",
85129
85138
  type: "u32"
85130
85139
  },
85140
+ {
85141
+ name: "free_stake_multiplier",
85142
+ type: "u32"
85143
+ },
85131
85144
  {
85132
85145
  name: "_padding",
85133
85146
  type: {
85134
85147
  array: [
85135
85148
  "u8",
85136
- 20
85149
+ 16
85137
85150
  ]
85138
85151
  }
85139
85152
  }
@@ -85171,15 +85184,15 @@ var init_nara_quest = __esm({
85171
85184
  type: "u64"
85172
85185
  },
85173
85186
  {
85174
- name: "reward_count",
85187
+ name: "stake_reward_count",
85175
85188
  type: "u32"
85176
85189
  },
85177
85190
  {
85178
- name: "reward_per_winner",
85191
+ name: "stake_reward_per_winner",
85179
85192
  type: "u64"
85180
85193
  },
85181
85194
  {
85182
- name: "winner_count",
85195
+ name: "stake_winner_count",
85183
85196
  type: "u32"
85184
85197
  },
85185
85198
  {
@@ -85202,12 +85215,24 @@ var init_nara_quest = __esm({
85202
85215
  name: "avg_participant_stake",
85203
85216
  type: "u64"
85204
85217
  },
85218
+ {
85219
+ name: "free_reward_count",
85220
+ type: "u32"
85221
+ },
85222
+ {
85223
+ name: "free_reward_per_winner",
85224
+ type: "u64"
85225
+ },
85226
+ {
85227
+ name: "free_winner_count",
85228
+ type: "u32"
85229
+ },
85205
85230
  {
85206
85231
  name: "_padding",
85207
85232
  type: {
85208
85233
  array: [
85209
85234
  "u8",
85210
- 64
85235
+ 48
85211
85236
  ]
85212
85237
  }
85213
85238
  }
@@ -85273,10 +85298,10 @@ var init_nara_quest = __esm({
85273
85298
  }
85274
85299
  });
85275
85300
 
85276
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_agent_registry.json
85301
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_agent_registry.json
85277
85302
  var nara_agent_registry_default;
85278
85303
  var init_nara_agent_registry = __esm({
85279
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_agent_registry.json"() {
85304
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_agent_registry.json"() {
85280
85305
  nara_agent_registry_default = {
85281
85306
  address: "AgentRegistry111111111111111111111111111111",
85282
85307
  metadata: {
@@ -90793,7 +90818,7 @@ var init_nara_agent_registry = __esm({
90793
90818
  }
90794
90819
  });
90795
90820
 
90796
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/agent_registry.ts
90821
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/agent_registry.ts
90797
90822
  var agent_registry_exports = {};
90798
90823
  __export(agent_registry_exports, {
90799
90824
  approveRejectedTwitter: () => approveRejectedTwitter,
@@ -91700,7 +91725,7 @@ async function rejectTweet(connection, wallet, agentId, options) {
91700
91725
  }
91701
91726
  var import_web395, anchor, import_anchor, import_bn, DEFAULT_CHUNK_SIZE, BUFFER_HEADER_SIZE, MEMORY_HEADER_SIZE, BIO_META_HEADER_SIZE;
91702
91727
  var init_agent_registry = __esm({
91703
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/agent_registry.ts"() {
91728
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/agent_registry.ts"() {
91704
91729
  import_web395 = __toESM(require_index_cjs(), 1);
91705
91730
  anchor = __toESM(require_cjs2(), 1);
91706
91731
  import_anchor = __toESM(require_cjs2(), 1);
@@ -171461,7 +171486,7 @@ var init_main3 = __esm({
171461
171486
  }
171462
171487
  });
171463
171488
 
171464
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/quest.ts
171489
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/quest.ts
171465
171490
  var quest_exports = {};
171466
171491
  __export(quest_exports, {
171467
171492
  adjustFreeStake: () => adjustFreeStake,
@@ -171652,16 +171677,24 @@ async function getQuestInfo(connection, wallet, options) {
171652
171677
  decayMs,
171653
171678
  nowMs
171654
171679
  );
171680
+ const stakeRewardCount = pool.stakeRewardCount;
171681
+ const stakeWinnerCount = pool.stakeWinnerCount;
171682
+ const creditRewardCount = pool.freeRewardCount;
171683
+ const creditWinnerCount = pool.freeWinnerCount;
171655
171684
  return {
171656
171685
  active,
171657
171686
  round: pool.round.toString(),
171658
171687
  question: pool.question,
171659
171688
  answerHash: Array.from(pool.answerHash),
171660
- rewardPerWinner: pool.rewardPerWinner.toNumber() / import_web396.LAMPORTS_PER_SOL,
171661
171689
  totalReward: pool.rewardAmount.toNumber() / import_web396.LAMPORTS_PER_SOL,
171662
- rewardCount: pool.rewardCount,
171663
- winnerCount: pool.winnerCount,
171664
- remainingSlots: Math.max(0, pool.rewardCount - pool.winnerCount),
171690
+ stakeRewardCount,
171691
+ stakeWinnerCount,
171692
+ stakeRewardPerWinner: pool.stakeRewardPerWinner.toNumber() / import_web396.LAMPORTS_PER_SOL,
171693
+ stakeRemainingSlots: Math.max(0, stakeRewardCount - stakeWinnerCount),
171694
+ creditRewardCount,
171695
+ creditWinnerCount,
171696
+ creditRewardPerWinner: pool.freeRewardPerWinner.toNumber() / import_web396.LAMPORTS_PER_SOL,
171697
+ creditRemainingSlots: Math.max(0, creditRewardCount - creditWinnerCount),
171665
171698
  difficulty: pool.difficulty,
171666
171699
  deadline,
171667
171700
  timeRemaining: secsLeft,
@@ -171900,9 +171933,9 @@ async function initializeQuest(connection, wallet, options) {
171900
171933
  const ix = await program3.methods.initialize().accounts({ authority: wallet.publicKey }).instruction();
171901
171934
  return sendTx(connection, wallet, [ix]);
171902
171935
  }
171903
- async function setRewardConfig(connection, wallet, minRewardCount, maxRewardCount, options) {
171936
+ async function setRewardConfig(connection, wallet, minRewardCount, maxRewardCount, freeStakeMultiplier, options) {
171904
171937
  const program3 = createProgram2(connection, wallet, options?.programId);
171905
- const ix = await program3.methods.setRewardConfig(minRewardCount, maxRewardCount).accounts({ authority: wallet.publicKey }).instruction();
171938
+ const ix = await program3.methods.setRewardConfig(minRewardCount, maxRewardCount, freeStakeMultiplier).accounts({ authority: wallet.publicKey }).instruction();
171906
171939
  return sendTx(connection, wallet, [ix]);
171907
171940
  }
171908
171941
  async function setStakeConfig(connection, wallet, bpsHigh, bpsLow, decayMs, options) {
@@ -171955,7 +171988,8 @@ async function getQuestConfig(connection, options) {
171955
171988
  extraReward: Number(config2.extraReward.toString()),
171956
171989
  stakeAuthority: config2.stakeAuthority,
171957
171990
  airdropAmount: Number(config2.airdropAmount.toString()),
171958
- maxAirdropCount: config2.maxAirdropCount
171991
+ maxAirdropCount: config2.maxAirdropCount,
171992
+ freeStakeMultiplier: config2.freeStakeMultiplier
171959
171993
  };
171960
171994
  }
171961
171995
  async function setStakeAuthority(connection, wallet, newStakeAuthority, options) {
@@ -171984,7 +172018,7 @@ async function setAirdropConfig(connection, wallet, airdropAmount, maxAirdropCou
171984
172018
  }
171985
172019
  var import_web396, anchor2, import_anchor2, import_bn2, import_meta, BN254_FIELD, WSOL_MINT;
171986
172020
  var init_quest = __esm({
171987
- "node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/quest.ts"() {
172021
+ "node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/quest.ts"() {
171988
172022
  import_web396 = __toESM(require_index_cjs(), 1);
171989
172023
  init_esm4();
171990
172024
  anchor2 = __toESM(require_cjs2(), 1);
@@ -266630,7 +266664,7 @@ var esm_default = base;
266630
266664
  var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
266631
266665
  var esm_default2 = esm_default(ALPHABET);
266632
266666
 
266633
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/client.ts
266667
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/client.ts
266634
266668
  var import_web393 = __toESM(require_index_cjs(), 1);
266635
266669
  var NaraSDK = class {
266636
266670
  connection;
@@ -266645,10 +266679,10 @@ var NaraSDK = class {
266645
266679
  }
266646
266680
  };
266647
266681
 
266648
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
266682
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
266649
266683
  init_constants2();
266650
266684
 
266651
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/sign.ts
266685
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/sign.ts
266652
266686
  var import_tweetnacl = __toESM(require_nacl_fast(), 1);
266653
266687
  function buildSignMessage(params) {
266654
266688
  return Object.keys(params).filter((k2) => k2 !== "sign").sort().map((k2) => `${k2}=${params[k2]}`).join("&");
@@ -266676,17 +266710,17 @@ function signUrl(baseUrl, wallet, params) {
266676
266710
  return url.toString();
266677
266711
  }
266678
266712
 
266679
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
266713
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
266680
266714
  init_tx();
266681
266715
  init_quest();
266682
266716
 
266683
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/skills.ts
266717
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/skills.ts
266684
266718
  var import_web397 = __toESM(require_index_cjs(), 1);
266685
266719
  var anchor3 = __toESM(require_cjs2(), 1);
266686
266720
  var import_anchor3 = __toESM(require_cjs2(), 1);
266687
266721
  init_constants2();
266688
266722
 
266689
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_skills_hub.json
266723
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_skills_hub.json
266690
266724
  var nara_skills_hub_default = {
266691
266725
  address: "SkiLLHub11111111111111111111111111111111111",
266692
266726
  metadata: {
@@ -268084,7 +268118,7 @@ var nara_skills_hub_default = {
268084
268118
  ]
268085
268119
  };
268086
268120
 
268087
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/skills.ts
268121
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/skills.ts
268088
268122
  init_tx();
268089
268123
  var DEFAULT_CHUNK_SIZE2 = 800;
268090
268124
  var BUFFER_HEADER_SIZE2 = 144;
@@ -268314,7 +268348,7 @@ async function uploadSkillContent(connection, wallet, name, content, options) {
268314
268348
  }
268315
268349
  }
268316
268350
 
268317
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/zkid.ts
268351
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/zkid.ts
268318
268352
  var import_web398 = __toESM(require_index_cjs(), 1);
268319
268353
  var anchor4 = __toESM(require_cjs2(), 1);
268320
268354
  var import_anchor4 = __toESM(require_cjs2(), 1);
@@ -268324,7 +268358,7 @@ var import_bn3 = __toESM(require_bn(), 1);
268324
268358
  init_constants2();
268325
268359
  init_tx();
268326
268360
 
268327
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_zk.json
268361
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/idls/nara_zk.json
268328
268362
  var nara_zk_default = {
268329
268363
  address: "ZKidentity111111111111111111111111111111111",
268330
268364
  metadata: {
@@ -269535,7 +269569,7 @@ var nara_zk_default = {
269535
269569
  ]
269536
269570
  };
269537
269571
 
269538
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/zkid.ts
269572
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/zkid.ts
269539
269573
  var import_meta2 = {};
269540
269574
  var BN254_PRIME = 21888242871839275222246405745257275088696311157297823662689037894645226208583n;
269541
269575
  var MERKLE_LEVELS = 64;
@@ -269897,10 +269931,10 @@ async function transferZkIdByCommitment(connection, payer, name, currentIdSecret
269897
269931
  return sendTx(connection, payer, [ix]);
269898
269932
  }
269899
269933
 
269900
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
269934
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
269901
269935
  init_agent_registry();
269902
269936
 
269903
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/bridge.ts
269937
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/bridge.ts
269904
269938
  var import_web399 = __toESM(require_index_cjs(), 1);
269905
269939
  init_esm4();
269906
269940
  init_constants2();
@@ -269931,8 +269965,10 @@ var BRIDGE_TOKENS = {
269931
269965
  USDC: {
269932
269966
  symbol: "USDC",
269933
269967
  decimals: 6,
269934
- minAmount: 100000n,
269935
- // 0.1 USDC
269968
+ minAmount: 5000000n,
269969
+ // 5 USDC
269970
+ minFee: 500000n,
269971
+ // 0.5 USDC (fee floor)
269936
269972
  solana: {
269937
269973
  warpProgram: new import_web399.PublicKey("4GcZJTa8s9vxtTz97Vj1RrwKMqPkT3DiiJkvUQDwsuZP"),
269938
269974
  mode: "collateral",
@@ -269949,8 +269985,10 @@ var BRIDGE_TOKENS = {
269949
269985
  USDT: {
269950
269986
  symbol: "USDT",
269951
269987
  decimals: 6,
269952
- minAmount: 100000n,
269953
- // 0.1 USDT
269988
+ minAmount: 5000000n,
269989
+ // 5 USDT
269990
+ minFee: 500000n,
269991
+ // 0.5 USDT (fee floor)
269954
269992
  solana: {
269955
269993
  warpProgram: new import_web399.PublicKey("DCTt9H3pwwU89qC3Z4voYNThZypV68AwhYNzMNBxWXoy"),
269956
269994
  mode: "collateral",
@@ -269967,8 +270005,10 @@ var BRIDGE_TOKENS = {
269967
270005
  SOL: {
269968
270006
  symbol: "SOL",
269969
270007
  decimals: 9,
269970
- minAmount: 1000000n,
269971
- // 0.001 SOL
270008
+ minAmount: 100000000n,
270009
+ // 0.1 SOL
270010
+ minFee: 10000000n,
270011
+ // 0.01 SOL (fee floor)
269972
270012
  solana: {
269973
270013
  warpProgram: new import_web399.PublicKey("46MmAWwKRAt9uvn7m44NXbVq2DCWBQE2r1TDw25nyXrt"),
269974
270014
  mode: "native",
@@ -270072,14 +270112,15 @@ function encodeTransferRemote(destinationDomain, recipient, amount) {
270072
270112
  buf.writeBigUInt64LE(amount, 45);
270073
270113
  return buf;
270074
270114
  }
270075
- function calculateBridgeFee(amount, feeBps) {
270115
+ function calculateBridgeFee(amount, feeBps, minFee = 0n) {
270076
270116
  const bps = feeBps ?? DEFAULT_BRIDGE_FEE_BPS;
270077
270117
  if (bps < 0 || bps > BRIDGE_FEE_BPS_DENOMINATOR) {
270078
270118
  throw new Error(`Invalid feeBps: ${bps}`);
270079
270119
  }
270080
- const feeAmount = amount * BigInt(bps) / BigInt(BRIDGE_FEE_BPS_DENOMINATOR);
270120
+ const pctFee = amount * BigInt(bps) / BigInt(BRIDGE_FEE_BPS_DENOMINATOR);
270121
+ const feeAmount = pctFee > minFee ? pctFee : minFee;
270081
270122
  const bridgeAmount = amount - feeAmount;
270082
- return { feeAmount, bridgeAmount, feeBps: bps };
270123
+ return { feeAmount, bridgeAmount, feeBps: bps, minFee };
270083
270124
  }
270084
270125
  function makeBridgeFeeIxs(params) {
270085
270126
  const { token, fromChain, sender, feeRecipient, feeAmount } = params;
@@ -270220,9 +270261,9 @@ function makeBridgeIxs(params) {
270220
270261
  `Bridge amount too small: minimum for ${token} is ${min2} (raw ${tokenCfg.minAmount})`
270221
270262
  );
270222
270263
  }
270223
- const split = skipFee ? { feeAmount: 0n, bridgeAmount: amount, feeBps: 0 } : calculateBridgeFee(amount, feeBps);
270264
+ const split = skipFee ? { feeAmount: 0n, bridgeAmount: amount, feeBps: 0, minFee: 0n } : calculateBridgeFee(amount, feeBps, tokenCfg.minFee);
270224
270265
  if (split.bridgeAmount <= 0n) {
270225
- throw new Error("bridge amount after fee is zero \u2014 increase amount or lower feeBps");
270266
+ throw new Error("bridge amount after fee is zero \u2014 increase amount or lower fee");
270226
270267
  }
270227
270268
  const recipientForFee = feeRecipient ?? getBridgeFeeRecipient(fromChain);
270228
270269
  const feeIxs = makeBridgeFeeIxs({
@@ -270385,7 +270426,7 @@ async function scanValidator(folder, messageId, maxScan) {
270385
270426
  };
270386
270427
  }
270387
270428
 
270388
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx_parser.ts
270429
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/src/tx_parser.ts
270389
270430
  var import_web3100 = __toESM(require_index_cjs(), 1);
270390
270431
  init_esm4();
270391
270432
  init_constants2();
@@ -270509,7 +270550,7 @@ function buildAnchorDiscriminators() {
270509
270550
  }
270510
270551
  var anchorDiscs = buildAnchorDiscriminators();
270511
270552
 
270512
- // node_modules/.pnpm/nara-sdk@1.0.82_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
270553
+ // node_modules/.pnpm/nara-sdk@1.0.84_bufferutil@4.1.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.9.3_utf-8-validate@6.0.6/node_modules/nara-sdk/index.ts
270513
270554
  var import_web3101 = __toESM(require_index_cjs(), 1);
270514
270555
  var import_bn4 = __toESM(require_bn(), 1);
270515
270556
 
@@ -271347,10 +271388,13 @@ async function handleQuestGet(options) {
271347
271388
  round: quest.round,
271348
271389
  question: quest.question,
271349
271390
  difficulty: quest.difficulty,
271350
- rewardPerWinner: `${quest.rewardPerWinner} NARA`,
271351
271391
  totalReward: `${quest.totalReward} NARA`,
271352
- rewardSlots: `${quest.winnerCount}/${quest.rewardCount}`,
271353
- remainingRewardSlots: quest.remainingSlots,
271392
+ stakeRewardPerWinner: `${quest.stakeRewardPerWinner} NARA`,
271393
+ stakeRewardSlots: `${quest.stakeWinnerCount}/${quest.stakeRewardCount}`,
271394
+ stakeRemainingSlots: quest.stakeRemainingSlots,
271395
+ creditRewardPerWinner: `${quest.creditRewardPerWinner} NARA`,
271396
+ creditRewardSlots: `${quest.creditWinnerCount}/${quest.creditRewardCount}`,
271397
+ creditRemainingSlots: quest.creditRemainingSlots,
271354
271398
  deadline: new Date(quest.deadline * 1e3).toLocaleString(),
271355
271399
  timeRemaining: formatTimeRemaining(quest.timeRemaining),
271356
271400
  expired: quest.expired,
@@ -271368,10 +271412,12 @@ async function handleQuestGet(options) {
271368
271412
  console.log(` Question: ${quest.question}`);
271369
271413
  console.log(` Round: #${quest.round}`);
271370
271414
  console.log(` Difficulty: ${quest.difficulty}`);
271371
- console.log(` Reward per winner: ${quest.rewardPerWinner} NARA`);
271372
271415
  console.log(` Total reward: ${quest.totalReward} NARA`);
271373
271416
  console.log(
271374
- ` Reward slots: ${quest.winnerCount}/${quest.rewardCount} (${quest.remainingSlots} remaining)`
271417
+ ` Stake reward: ${quest.stakeRewardPerWinner} NARA/winner, ${quest.stakeWinnerCount}/${quest.stakeRewardCount} (${quest.stakeRemainingSlots} remaining)`
271418
+ );
271419
+ console.log(
271420
+ ` Credit reward: ${quest.creditRewardPerWinner} NARA/winner, ${quest.creditWinnerCount}/${quest.creditRewardCount} (${quest.creditRemainingSlots} remaining)`
271375
271421
  );
271376
271422
  if (stakeRequired) {
271377
271423
  console.log(` Stake requirement: ${quest.effectiveStakeRequirement.toFixed(9).replace(/\.?0+$/, "")} NARA (decays ${quest.stakeHigh} \u2192 ${quest.stakeLow})`);
@@ -271416,7 +271462,8 @@ async function handleQuestConfig(options) {
271416
271462
  stakeBpsHigh,
271417
271463
  stakeBpsLow,
271418
271464
  decayMs: config2.decayMs,
271419
- minQuestInterval: config2.minQuestInterval
271465
+ minQuestInterval: config2.minQuestInterval,
271466
+ freeStakeMultiplier: config2.freeStakeMultiplier
271420
271467
  };
271421
271468
  if (options.json) {
271422
271469
  formatOutput(data, true);
@@ -271430,6 +271477,7 @@ async function handleQuestConfig(options) {
271430
271477
  console.log(` Stake BPS Low: ${stakeBpsLow / 100}% (${stakeBpsLow} BPS)`);
271431
271478
  console.log(` Decay (ms): ${data.decayMs}`);
271432
271479
  console.log(` Min Quest Interval: ${data.minQuestInterval}s`);
271480
+ console.log(` Free Stake Multiplier: ${data.freeStakeMultiplier}x`);
271433
271481
  console.log("");
271434
271482
  }
271435
271483
  }
@@ -275060,19 +275108,24 @@ async function handleBridgeStatus(id, options) {
275060
275108
  }
275061
275109
  function handleBridgeTokens(options) {
275062
275110
  const tokens = Object.values(BRIDGE_TOKENS);
275111
+ const toUi = (n, d) => n ? Number(n) / 10 ** d : null;
275063
275112
  if (options.json) {
275064
275113
  formatOutput(tokens.map((t2) => ({
275065
275114
  symbol: t2.symbol,
275066
275115
  decimals: t2.decimals,
275067
- minAmount: t2.minAmount ? Number(t2.minAmount) / 10 ** t2.decimals : null,
275116
+ minAmount: toUi(t2.minAmount, t2.decimals),
275117
+ minFee: toUi(t2.minFee, t2.decimals),
275068
275118
  solanaMint: t2.solana.mint?.toBase58() ?? "native",
275069
275119
  naraMint: t2.nara.mint?.toBase58() ?? "native"
275070
275120
  })), true);
275071
275121
  } else {
275072
275122
  console.log("");
275073
275123
  for (const t2 of tokens) {
275074
- const minStr = t2.minAmount ? `${Number(t2.minAmount) / 10 ** t2.decimals} ${t2.symbol}` : "\u2014";
275075
- console.log(` ${t2.symbol} (${t2.decimals} decimals) min: ${minStr}`);
275124
+ const minAmt = toUi(t2.minAmount, t2.decimals);
275125
+ const minFee = toUi(t2.minFee, t2.decimals);
275126
+ const minAmtStr = minAmt !== null ? `${minAmt} ${t2.symbol}` : "\u2014";
275127
+ const minFeeStr = minFee !== null ? `${minFee} ${t2.symbol}` : "\u2014";
275128
+ console.log(` ${t2.symbol} (${t2.decimals} decimals) min: ${minAmtStr} min fee: ${minFeeStr}`);
275076
275129
  console.log(` Solana: ${t2.solana.mint?.toBase58() ?? "native SOL"} (${t2.solana.mode})`);
275077
275130
  console.log(` Nara: ${t2.nara.mint?.toBase58() ?? "native NARA"} (${t2.nara.mode})`);
275078
275131
  }
@@ -275160,7 +275213,7 @@ function registerBridgeCommands(program3) {
275160
275213
  const bridge = program3.command("bridge").description("Cross-chain bridge between Solana and Nara (powered by Hyperlane)").addHelpText("after", `
275161
275214
  1. Solana and Nara use the same wallet address (Ed25519). To bridge from Solana, your wallet must have SOL on Solana mainnet for gas.
275162
275215
  2. Delivery takes ~5-10 minutes (Hyperlane multi-validator signing).
275163
- 3. Bridge fee: 0.5%.
275216
+ 3. Bridge fee: 0.5% of amount, with a per-token minimum fee floor (see "bridge tokens"). Each token also has a minimum bridgeable amount.
275164
275217
 
275165
275218
  Examples:
275166
275219
  npx naracli bridge transfer USDC 10 --from solana # Solana \u2192 Nara
@@ -276886,7 +276939,7 @@ function registerCommands(program3) {
276886
276939
  }
276887
276940
 
276888
276941
  // bin/nara-cli.ts
276889
- var version2 = true ? "1.0.89" : "dev";
276942
+ var version2 = true ? "1.0.91" : "dev";
276890
276943
  var program2 = new Command();
276891
276944
  program2.name("naracli").description("CLI for the Nara chain. Native coin is NARA (not SOL). Mine NARA for free via PoMI quests, manage wallets, register agents, and more. Run 'naracli <command> --help' for details on any command.").version(version2);
276892
276945
  program2.option("-r, --rpc-url <url>", "RPC endpoint (default: https://mainnet-api.nara.build/)").option("-w, --wallet <path>", "Path to wallet keypair JSON file (default: ~/.config/nara/id.json)").option("-j, --json", "Output in JSON format");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naracli",
3
- "version": "1.0.89",
3
+ "version": "1.0.91",
4
4
  "description": "CLI for the Nara chain (Solana-compatible)",
5
5
  "homepage": "https://nara.build",
6
6
  "repository": {
@@ -67,7 +67,7 @@
67
67
  "bs58": "^6.0.0",
68
68
  "commander": "^12.1.0",
69
69
  "ed25519-hd-key": "^1.3.0",
70
- "nara-sdk": "^1.0.82",
70
+ "nara-sdk": "^1.0.84",
71
71
  "picocolors": "^1.1.1"
72
72
  },
73
73
  "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
@@ -205,19 +205,24 @@ async function handleBridgeStatus(
205
205
 
206
206
  function handleBridgeTokens(options: GlobalOptions) {
207
207
  const tokens = Object.values(BRIDGE_TOKENS) as any[];
208
+ const toUi = (n: bigint | undefined, d: number) => n ? Number(n) / 10 ** d : null;
208
209
  if (options.json) {
209
210
  formatOutput(tokens.map((t: any) => ({
210
211
  symbol: t.symbol,
211
212
  decimals: t.decimals,
212
- minAmount: t.minAmount ? (Number(t.minAmount) / 10 ** t.decimals) : null,
213
+ minAmount: toUi(t.minAmount, t.decimals),
214
+ minFee: toUi(t.minFee, t.decimals),
213
215
  solanaMint: t.solana.mint?.toBase58() ?? "native",
214
216
  naraMint: t.nara.mint?.toBase58() ?? "native",
215
217
  })), true);
216
218
  } else {
217
219
  console.log("");
218
220
  for (const t of tokens) {
219
- const minStr = t.minAmount ? `${Number(t.minAmount) / 10 ** t.decimals} ${t.symbol}` : "—";
220
- console.log(` ${t.symbol} (${t.decimals} decimals) min: ${minStr}`);
221
+ const minAmt = toUi(t.minAmount, t.decimals);
222
+ const minFee = toUi(t.minFee, t.decimals);
223
+ const minAmtStr = minAmt !== null ? `${minAmt} ${t.symbol}` : "—";
224
+ const minFeeStr = minFee !== null ? `${minFee} ${t.symbol}` : "—";
225
+ console.log(` ${t.symbol} (${t.decimals} decimals) min: ${minAmtStr} min fee: ${minFeeStr}`);
221
226
  console.log(` Solana: ${t.solana.mint?.toBase58() ?? "native SOL"} (${t.solana.mode})`);
222
227
  console.log(` Nara: ${t.nara.mint?.toBase58() ?? "native NARA"} (${t.nara.mode})`);
223
228
  }
@@ -334,7 +339,7 @@ export function registerBridgeCommands(program: Command): void {
334
339
  .addHelpText("after", `
335
340
  1. Solana and Nara use the same wallet address (Ed25519). To bridge from Solana, your wallet must have SOL on Solana mainnet for gas.
336
341
  2. Delivery takes ~5-10 minutes (Hyperlane multi-validator signing).
337
- 3. Bridge fee: 0.5%.
342
+ 3. Bridge fee: 0.5% of amount, with a per-token minimum fee floor (see "bridge tokens"). Each token also has a minimum bridgeable amount.
338
343
 
339
344
  Examples:
340
345
  npx naracli bridge transfer USDC 10 --from solana # Solana → Nara
@@ -125,10 +125,13 @@ async function handleQuestGet(options: GlobalOptions & { verbose?: boolean }) {
125
125
  round: quest.round,
126
126
  question: quest.question,
127
127
  difficulty: quest.difficulty,
128
- rewardPerWinner: `${quest.rewardPerWinner} NARA`,
129
128
  totalReward: `${quest.totalReward} NARA`,
130
- rewardSlots: `${quest.winnerCount}/${quest.rewardCount}`,
131
- remainingRewardSlots: quest.remainingSlots,
129
+ stakeRewardPerWinner: `${quest.stakeRewardPerWinner} NARA`,
130
+ stakeRewardSlots: `${quest.stakeWinnerCount}/${quest.stakeRewardCount}`,
131
+ stakeRemainingSlots: quest.stakeRemainingSlots,
132
+ creditRewardPerWinner: `${quest.creditRewardPerWinner} NARA`,
133
+ creditRewardSlots: `${quest.creditWinnerCount}/${quest.creditRewardCount}`,
134
+ creditRemainingSlots: quest.creditRemainingSlots,
132
135
  deadline: new Date(quest.deadline * 1000).toLocaleString(),
133
136
  timeRemaining: formatTimeRemaining(quest.timeRemaining),
134
137
  expired: quest.expired,
@@ -147,10 +150,12 @@ async function handleQuestGet(options: GlobalOptions & { verbose?: boolean }) {
147
150
  console.log(` Question: ${quest.question}`);
148
151
  console.log(` Round: #${quest.round}`);
149
152
  console.log(` Difficulty: ${quest.difficulty}`);
150
- console.log(` Reward per winner: ${quest.rewardPerWinner} NARA`);
151
153
  console.log(` Total reward: ${quest.totalReward} NARA`);
152
154
  console.log(
153
- ` Reward slots: ${quest.winnerCount}/${quest.rewardCount} (${quest.remainingSlots} remaining)`
155
+ ` Stake reward: ${quest.stakeRewardPerWinner} NARA/winner, ${quest.stakeWinnerCount}/${quest.stakeRewardCount} (${quest.stakeRemainingSlots} remaining)`
156
+ );
157
+ console.log(
158
+ ` Credit reward: ${quest.creditRewardPerWinner} NARA/winner, ${quest.creditWinnerCount}/${quest.creditRewardCount} (${quest.creditRemainingSlots} remaining)`
154
159
  );
155
160
  if (stakeRequired) {
156
161
  console.log(` Stake requirement: ${quest.effectiveStakeRequirement.toFixed(9).replace(/\.?0+$/, "")} NARA (decays ${quest.stakeHigh} → ${quest.stakeLow})`);
@@ -201,6 +206,7 @@ async function handleQuestConfig(options: GlobalOptions) {
201
206
  stakeBpsLow,
202
207
  decayMs: config.decayMs,
203
208
  minQuestInterval: config.minQuestInterval,
209
+ freeStakeMultiplier: config.freeStakeMultiplier,
204
210
  };
205
211
 
206
212
  if (options.json) {
@@ -215,6 +221,7 @@ async function handleQuestConfig(options: GlobalOptions) {
215
221
  console.log(` Stake BPS Low: ${stakeBpsLow / 100}% (${stakeBpsLow} BPS)`);
216
222
  console.log(` Decay (ms): ${data.decayMs}`);
217
223
  console.log(` Min Quest Interval: ${data.minQuestInterval}s`);
224
+ console.log(` Free Stake Multiplier: ${data.freeStakeMultiplier}x`);
218
225
  console.log("");
219
226
  }
220
227
  }