@magmaprotocol/magma-clmm-sdk 0.5.7 → 0.5.9

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/dist/index.mjs CHANGED
@@ -301,6 +301,8 @@ var ClmmIntegrateUtilsModule = "utils";
301
301
  var VotingEscrow = "voting_escrow";
302
302
  var Voter = "voter";
303
303
  var RewardDistributor = "reward_distributor";
304
+ var Gauge = "gauge";
305
+ var Minter = "minter";
304
306
  var CoinInfoAddress = "0x1::coin::CoinInfo";
305
307
  var CoinStoreAddress = "0x1::coin::CoinStore";
306
308
  var DeepbookCustodianV2Moudle = "custodian_v2";
@@ -3014,9 +3016,8 @@ var _TransactionUtil = class {
3014
3016
  static buildVoteTransaction(sdk, params) {
3015
3017
  const tx = new Transaction();
3016
3018
  tx.setSender(sdk.senderAddress);
3017
- tx.setGasBudget(1e8);
3018
3019
  const { integrate } = sdk.sdkOptions;
3019
- const { voting_escrow_id, magma_token, voter_id } = getPackagerConfigs(sdk.sdkOptions.magma_config);
3020
+ const { distribution_cfg, voting_escrow_id, magma_token, voter_id } = getPackagerConfigs(sdk.sdkOptions.magma_config);
3020
3021
  const typeArguments = [magma_token];
3021
3022
  const functionName = "vote";
3022
3023
  const pools = tx.pure.vector("id", params.pools);
@@ -3024,7 +3025,15 @@ var _TransactionUtil = class {
3024
3025
  elements: params.weights.map((weight) => tx.pure.u64(weight)),
3025
3026
  type: "u64"
3026
3027
  });
3027
- const args = [tx.object(voter_id), tx.object(voting_escrow_id), tx.object(params.lockId), pools, weights, tx.object(CLOCK_ADDRESS)];
3028
+ const args = [
3029
+ tx.object(distribution_cfg),
3030
+ tx.object(voter_id),
3031
+ tx.object(voting_escrow_id),
3032
+ tx.object(params.lockId),
3033
+ pools,
3034
+ weights,
3035
+ tx.object(CLOCK_ADDRESS)
3036
+ ];
3028
3037
  tx.moveCall({
3029
3038
  target: `${integrate.published_at}::${Voter}::${functionName}`,
3030
3039
  typeArguments,
@@ -3086,10 +3095,16 @@ var _TransactionUtil = class {
3086
3095
  const tx = new Transaction();
3087
3096
  tx.setSender(sdk.senderAddress);
3088
3097
  const { integrate } = sdk.sdkOptions;
3089
- const { voting_escrow_id, magma_token, voter_id } = getPackagerConfigs(sdk.sdkOptions.magma_config);
3098
+ const { distribution_cfg, voting_escrow_id, magma_token, voter_id } = getPackagerConfigs(sdk.sdkOptions.magma_config);
3090
3099
  const typeArguments = [magma_token];
3091
3100
  const functionName = "poke";
3092
- const args = [tx.object(voter_id), tx.object(voting_escrow_id), tx.object(params.lockId), tx.object(CLOCK_ADDRESS)];
3101
+ const args = [
3102
+ tx.object(distribution_cfg),
3103
+ tx.object(voter_id),
3104
+ tx.object(voting_escrow_id),
3105
+ tx.object(params.lockId),
3106
+ tx.object(CLOCK_ADDRESS)
3107
+ ];
3093
3108
  tx.moveCall({
3094
3109
  target: `${integrate.published_at}::${Voter}::${functionName}`,
3095
3110
  typeArguments,
@@ -7231,6 +7246,25 @@ var LockModule = class {
7231
7246
  }
7232
7247
  return TransactionUtil.buildPoke(this.sdk, params);
7233
7248
  }
7249
+ async addBribeReward(params) {
7250
+ if (this._sdk.senderAddress.length === 0) {
7251
+ throw Error("this config sdk senderAddress is empty");
7252
+ }
7253
+ const tx = new Transaction9();
7254
+ tx.setSender(this.sdk.senderAddress);
7255
+ const { integrate } = this.sdk.sdkOptions;
7256
+ const { magma_token, voter_id } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
7257
+ const typeArguments = [magma_token, params.coinType];
7258
+ const allCoinAsset = await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);
7259
+ const coinInput = TransactionUtil.buildCoinForAmount(tx, allCoinAsset, BigInt(params.amount), params.coinType, false, true);
7260
+ const args = [tx.object(voter_id), coinInput.targetCoin, tx.object(CLOCK_ADDRESS)];
7261
+ tx.moveCall({
7262
+ target: `${integrate.published_at}::${Voter}::add_bribe_reward`,
7263
+ typeArguments,
7264
+ arguments: args
7265
+ });
7266
+ return tx;
7267
+ }
7234
7268
  async claimVotingBribe(locks, incentive_tokens) {
7235
7269
  if (this._sdk.senderAddress.length === 0) {
7236
7270
  throw Error("this config sdk senderAddress is empty");
@@ -7288,6 +7322,62 @@ var LockModule = class {
7288
7322
  }
7289
7323
  return locksInfo;
7290
7324
  }
7325
+ async aLockInfo(lockId) {
7326
+ const aLockSummary = await this.aLockSummary(lockId);
7327
+ const lockObj = await this._sdk.fullClient.getObject({
7328
+ id: lockId,
7329
+ options: {
7330
+ showContent: true,
7331
+ showDisplay: true,
7332
+ showOwner: true,
7333
+ showPreviousTransaction: true,
7334
+ showStorageRebate: true,
7335
+ showType: true
7336
+ }
7337
+ });
7338
+ const { magma_token } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
7339
+ const poolIncentiveTokens = await this.getVotingBribeRewardTokens(lockId);
7340
+ const incentiveTokens = [];
7341
+ poolIncentiveTokens.forEach((value, key) => {
7342
+ incentiveTokens.push(...value);
7343
+ });
7344
+ const poolIncentiveRewards = await this.getPoolIncentiveRewrads(incentiveTokens, lockId);
7345
+ const votingRewards = /* @__PURE__ */ new Map();
7346
+ poolIncentiveRewards.forEach((value, coin) => {
7347
+ value.forEach((amount, pool) => {
7348
+ if (!votingRewards.has(pool)) {
7349
+ votingRewards.set(pool, []);
7350
+ }
7351
+ votingRewards.get(pool)?.push({
7352
+ kind: "incentiveCoin" /* Incentive */,
7353
+ token_addr: coin,
7354
+ amount: amount.toString()
7355
+ });
7356
+ });
7357
+ });
7358
+ if (lockObj.error != null || lockObj.data?.content?.dataType !== "moveObject") {
7359
+ throw new ClmmpoolsError(
7360
+ `getPool error code: ${lockObj.error?.code ?? "unknown error"}, please check config and object id`,
7361
+ "InvalidLockObject" /* InvalidLockObject */
7362
+ );
7363
+ }
7364
+ const fields = getObjectFields(lockObj);
7365
+ const lockInfo = {
7366
+ lock_id: lockId,
7367
+ amount: fields.amount,
7368
+ start: fields.start,
7369
+ end: fields.end,
7370
+ permanent: fields.permanent,
7371
+ rebase_amount: {
7372
+ kind: "rebaseCoin" /* RebaseCoin */,
7373
+ token_addr: magma_token,
7374
+ amount: aLockSummary.reward_distributor_claimable
7375
+ },
7376
+ voting_power: aLockSummary.voting_power,
7377
+ voting_rewards: votingRewards
7378
+ };
7379
+ return lockInfo;
7380
+ }
7291
7381
  async aLockSummary(lock_id) {
7292
7382
  const tx = new Transaction9();
7293
7383
  const { integrate, simulationAccount } = this.sdk.sdkOptions;
@@ -7419,14 +7509,14 @@ var LockModule = class {
7419
7509
  const { magma_token, voter_id } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
7420
7510
  const typeArguments = [magma_token];
7421
7511
  const args = [tx.object(voter_id), tx.object(lock_id)];
7512
+ if (!checkInvalidSuiAddress(simulationAccount.address)) {
7513
+ throw Error("this config simulationAccount is not set right");
7514
+ }
7422
7515
  tx.moveCall({
7423
7516
  target: `${integrate.published_at}::${Voter}::get_voting_fee_reward_tokens`,
7424
7517
  arguments: args,
7425
7518
  typeArguments
7426
7519
  });
7427
- if (!checkInvalidSuiAddress(simulationAccount.address)) {
7428
- throw Error("this config simulationAccount is not set right");
7429
- }
7430
7520
  const simulateRes = await this.sdk.fullClient.devInspectTransactionBlock({
7431
7521
  transactionBlock: tx,
7432
7522
  sender: simulationAccount.address
@@ -8638,6 +8728,7 @@ var ConfigModule = class {
8638
8728
  voter_id: "",
8639
8729
  minter_id: "",
8640
8730
  reward_distributor_id: "",
8731
+ distribution_cfg: "",
8641
8732
  magma_token: "",
8642
8733
  voting_escrow_id: ""
8643
8734
  };
@@ -8912,6 +9003,174 @@ var RpcModule = class extends SuiClient {
8912
9003
  }
8913
9004
  };
8914
9005
 
9006
+ // src/modules/gauge.ts
9007
+ import { Transaction as Transaction11 } from "@mysten/sui/transactions";
9008
+ var GaugeModule = class {
9009
+ _sdk;
9010
+ constructor(sdk) {
9011
+ this._sdk = sdk;
9012
+ }
9013
+ get sdk() {
9014
+ return this._sdk;
9015
+ }
9016
+ async depositPosition(params) {
9017
+ const tx = new Transaction11();
9018
+ tx.setSender(this.sdk.senderAddress);
9019
+ const poolGauge = await this.getPoolGaguers();
9020
+ const gauge = poolGauge.get(params.poolId);
9021
+ if (gauge === void 0) {
9022
+ throw Error(`Fetch gauge of pool ${params.poolId} failed`);
9023
+ }
9024
+ const { distribution_cfg, magma_token } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
9025
+ const { clmm_pool, integrate } = this.sdk.sdkOptions;
9026
+ const clmmConfig = getPackagerConfigs(clmm_pool);
9027
+ const typeArguments = [params.coinTypeA, params.coinTypeB, magma_token];
9028
+ const args = [
9029
+ tx.object(clmmConfig.global_config_id),
9030
+ tx.object(distribution_cfg),
9031
+ tx.object(gauge),
9032
+ tx.object(params.poolId),
9033
+ tx.object(params.positionId),
9034
+ tx.object(CLOCK_ADDRESS)
9035
+ ];
9036
+ tx.moveCall({
9037
+ target: `${integrate.published_at}::${Gauge}::deposit_position`,
9038
+ typeArguments,
9039
+ arguments: args
9040
+ });
9041
+ return tx;
9042
+ }
9043
+ async withdrawPosition(params) {
9044
+ const tx = new Transaction11();
9045
+ tx.setSender(this.sdk.senderAddress);
9046
+ const poolGauge = await this.sdk.Gauge.getPoolGaguers();
9047
+ const gauge = poolGauge.get(params.poolId);
9048
+ if (gauge === void 0) {
9049
+ throw Error(`Fetch gauge of pool ${params.poolId} failed`);
9050
+ }
9051
+ const { magma_token } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
9052
+ const { integrate } = this.sdk.sdkOptions;
9053
+ const typeArguments = [params.coinTypeA, params.coinTypeB, magma_token];
9054
+ const args = [tx.object(gauge), tx.object(params.poolId), tx.object(params.positionId), tx.object(CLOCK_ADDRESS)];
9055
+ tx.moveCall({
9056
+ target: `${integrate.published_at}::${Gauge}::withdraw_position`,
9057
+ typeArguments,
9058
+ arguments: args
9059
+ });
9060
+ return tx;
9061
+ }
9062
+ async getUserStakedPositionInfo(userAddr) {
9063
+ const poolGauger = await this.getPoolGaguers();
9064
+ const poolCoins = await this.getPoolCoins([...poolGauger.keys()]);
9065
+ const res = [];
9066
+ for (const [pool, gauger] of poolGauger) {
9067
+ const coins = poolCoins.get(pool);
9068
+ if (coins === void 0) {
9069
+ console.log(`Failed to get coins of pool: ${pool}`);
9070
+ continue;
9071
+ }
9072
+ const stakedPositionOfPool = await this.getUserStakedPositionInfoOfPool(userAddr, pool, gauger, coins[0], coins[1]);
9073
+ res.push(...stakedPositionOfPool);
9074
+ }
9075
+ return res;
9076
+ }
9077
+ async getUserStakedPositionInfoOfPool(userAddr, pool, gauger, poolCoinA, poolCoinB) {
9078
+ const tx = new Transaction11();
9079
+ const { integrate, simulationAccount } = this.sdk.sdkOptions;
9080
+ const { magma_token, voter_id } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
9081
+ const typeArguments = [magma_token, poolCoinA, poolCoinB];
9082
+ const args = [tx.object(voter_id), tx.object(gauger), tx.object(pool), tx.pure.address(userAddr), tx.object(CLOCK_ADDRESS)];
9083
+ tx.moveCall({
9084
+ target: `${integrate.published_at}::${Gauge}::user_staked_position_infos`,
9085
+ arguments: args,
9086
+ typeArguments
9087
+ });
9088
+ const simulateRes = await this.sdk.fullClient.devInspectTransactionBlock({
9089
+ transactionBlock: tx,
9090
+ sender: simulationAccount.address
9091
+ });
9092
+ if (simulateRes.error != null) {
9093
+ throw new Error(`all_lock_summary error code: ${simulateRes.error ?? "unknown error"}`);
9094
+ }
9095
+ const res = [];
9096
+ simulateRes.events?.forEach((item) => {
9097
+ res.push(item.parsedJson);
9098
+ });
9099
+ return res;
9100
+ }
9101
+ async getPoolGaguers() {
9102
+ const tx = new Transaction11();
9103
+ const { integrate, simulationAccount } = this.sdk.sdkOptions;
9104
+ const { magma_token, voter_id } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
9105
+ const typeArguments = [magma_token];
9106
+ const args = [tx.object(voter_id)];
9107
+ tx.moveCall({
9108
+ target: `${integrate.published_at}::${Voter}::pools_gauges`,
9109
+ arguments: args,
9110
+ typeArguments
9111
+ });
9112
+ const simulateRes = await this.sdk.fullClient.devInspectTransactionBlock({
9113
+ transactionBlock: tx,
9114
+ sender: simulationAccount.address
9115
+ });
9116
+ if (simulateRes.error != null) {
9117
+ throw new Error(`all_lock_summary error code: ${simulateRes.error ?? "unknown error"}`);
9118
+ }
9119
+ const poolGauger = /* @__PURE__ */ new Map();
9120
+ simulateRes.events?.forEach((item) => {
9121
+ const { gauges } = item.parsedJson;
9122
+ console.log("parsedJson", item.parsedJson);
9123
+ item.parsedJson.pools.map((pool, index) => {
9124
+ poolGauger.set(pool, gauges[index]);
9125
+ });
9126
+ });
9127
+ return poolGauger;
9128
+ }
9129
+ async getPoolCoins(pools) {
9130
+ const res = await this._sdk.fullClient.multiGetObjects({ ids: pools, options: { showContent: true } });
9131
+ const poolCoins = /* @__PURE__ */ new Map();
9132
+ res.forEach((item) => {
9133
+ if (item.error != null || item.data?.content?.dataType !== "moveObject") {
9134
+ throw new Error(`Failed to get poolCoins with err: ${item.error}`);
9135
+ }
9136
+ const type = getObjectType(item);
9137
+ const poolTypeFields = extractStructTagFromType(type);
9138
+ poolCoins.set(poolTypeFields.address, poolTypeFields.type_arguments);
9139
+ });
9140
+ return poolCoins;
9141
+ }
9142
+ async getEmissions() {
9143
+ const tx = new Transaction11();
9144
+ const { integrate, simulationAccount } = this.sdk.sdkOptions;
9145
+ const { magma_token, minter_id, voting_escrow_id } = getPackagerConfigs(this.sdk.sdkOptions.magma_config);
9146
+ const typeArguments = [magma_token];
9147
+ const args = [tx.object(minter_id), tx.object(voting_escrow_id)];
9148
+ tx.moveCall({
9149
+ target: `${integrate.published_at}::${Minter}::emissions`,
9150
+ arguments: args,
9151
+ typeArguments
9152
+ });
9153
+ const simulateRes = await this.sdk.fullClient.devInspectTransactionBlock({
9154
+ transactionBlock: tx,
9155
+ sender: simulationAccount.address
9156
+ });
9157
+ if (simulateRes.error != null) {
9158
+ throw new Error(`all_lock_summary error code: ${simulateRes.error ?? "unknown error"}`);
9159
+ }
9160
+ let res = {
9161
+ emission: 0,
9162
+ rebase: 0
9163
+ };
9164
+ simulateRes.events?.forEach((item) => {
9165
+ res = {
9166
+ emission: item.parsedJson.emission,
9167
+ rebase: item.parsedJson.rebase
9168
+ };
9169
+ });
9170
+ return res;
9171
+ }
9172
+ };
9173
+
8915
9174
  // src/sdk.ts
8916
9175
  var MagmaClmmSDK = class {
8917
9176
  _cache = {};
@@ -8935,6 +9194,7 @@ var MagmaClmmSDK = class {
8935
9194
  * Provide interact with a lock interface.
8936
9195
  */
8937
9196
  _lock;
9197
+ _gauge;
8938
9198
  /**
8939
9199
  * Provide interact with a position rewarder interface.
8940
9200
  */
@@ -8971,6 +9231,7 @@ var MagmaClmmSDK = class {
8971
9231
  });
8972
9232
  this._swap = new SwapModule(this);
8973
9233
  this._lock = new LockModule(this);
9234
+ this._gauge = new GaugeModule(this);
8974
9235
  this._pool = new PoolModule(this);
8975
9236
  this._position = new PositionModule(this);
8976
9237
  this._rewarder = new RewarderModule(this);
@@ -9005,6 +9266,9 @@ var MagmaClmmSDK = class {
9005
9266
  get Lock() {
9006
9267
  return this._lock;
9007
9268
  }
9269
+ get Gauge() {
9270
+ return this._gauge;
9271
+ }
9008
9272
  /**
9009
9273
  * Getter for the fullClient property.
9010
9274
  * @returns {RpcModule} The fullClient property value.
@@ -9191,11 +9455,12 @@ var SDKConfig = {
9191
9455
  launchpad_pools_handle: "0x5e194a8efcf653830daf85a85b52e3ae8f65dc39481d54b2382acda25068375c",
9192
9456
  clmm_pools_handle: "0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb",
9193
9457
  global_config_id: "0x4f32c00706e7bdbce532acdcfc0afd91b14defd5ffc9e2723a0ce7ed84f5d380",
9194
- voter_id: "0x2e2fae39d85e991e1adad756f6723bb1aebc33140b8b16897a41171640389f88",
9195
- voting_escrow_id: "0x8c300ccc0cb221feb76d0ed0820ff0873477ab1ada266129d594d539c5cd2f11",
9196
- reward_distributor_id: "0x289c10f62e998a2ee58a982262732af7e329b7b689f4c81b0e16de7c6589669c",
9197
- magma_token: "0x4201f44d506036666a1d9166f7a3450a80c73c551a582684cf39f2dbb3d56461::magma_token::MAGMA_TOKEN",
9198
- minter_id: "0xfaf1c9b59192a3f910f28d46325dbfb3ffcc92df43d11663f3820fec8faf540b"
9458
+ voter_id: "0xe8e0c266602404caa463f85bee4ccf6000c8c2566204a3949400a06857295ceb",
9459
+ voting_escrow_id: "0x143aab8c7c13c58a94d99ae281b4226f1877abc21bc01b9d75b58a7217fc3b2c",
9460
+ reward_distributor_id: "0x93bf24d3db08f93a02ba90abc7095f8d8086e5a1f72bac8bd866df21defe83ab",
9461
+ distribution_cfg: "0x94e23846c975e2faf89a61bfc2b10ad64decab9069eb1f9fc39752b010868c74",
9462
+ magma_token: "0x3abcdefce1a0ec1252237b69efc6dc3881325d543fceaad2e2f360a02d2f5bd9::magma_token::MAGMA_TOKEN",
9463
+ minter_id: "0x92877b638c3febf8576d0d7caebf9a2c43753b2e441669fb434e709458ece345"
9199
9464
  }
9200
9465
  };
9201
9466
  var clmmMainnet = {
@@ -9214,12 +9479,12 @@ var clmmMainnet = {
9214
9479
  config: SDKConfig.clmmConfig
9215
9480
  },
9216
9481
  distribution: {
9217
- package_id: "0x4201f44d506036666a1d9166f7a3450a80c73c551a582684cf39f2dbb3d56461",
9218
- published_at: "0x5c008a2e0aee9a034b19e32bbc119cf6e7b1a0ce1316b2199cde1704d9f64f3c"
9482
+ package_id: "0x3abcdefce1a0ec1252237b69efc6dc3881325d543fceaad2e2f360a02d2f5bd9",
9483
+ published_at: "0x3abcdefce1a0ec1252237b69efc6dc3881325d543fceaad2e2f360a02d2f5bd9"
9219
9484
  },
9220
9485
  integrate: {
9221
- package_id: "0x01268a2afbaf91538f0b9041269fe2780273eb83b642abd4fcacad7b660a3711",
9222
- published_at: "0x01268a2afbaf91538f0b9041269fe2780273eb83b642abd4fcacad7b660a3711"
9486
+ package_id: "0x6e3ae31a16362c563c0fef5293348d262646882a10c307f20f6be8577960f1ef",
9487
+ published_at: "0xba2255e57f407e1e171f0bacd54d9e743bb12e3e9bb9d51a41a362749b9e51c2"
9223
9488
  },
9224
9489
  deepbook: {
9225
9490
  package_id: "0x000000000000000000000000000000000000000000000000000000000000dee9",
@@ -9263,6 +9528,7 @@ var SDKConfig2 = {
9263
9528
  voter_id: "0x59571991a5c7041c4376d980061af5c7a6d8345006d6b5167bd1f00fc17b8ddb",
9264
9529
  voting_escrow_id: "0x9081c8044719135da4ff2d52907fcd40c19e2a40750cbba4c1d6a59610ae1446",
9265
9530
  reward_distributor_id: "0xdf213d8e0ca49c8f4a508e7d3b3a6983c4aafd639f7c99479fc75fb4451d752e",
9531
+ distribution_cfg: "0x94e23846c975e2faf89a61bfc2b10ad64decab9069eb1f9fc39752b010868c74",
9266
9532
  magma_token: "0x45ac2371c33ca0df8dc784d62c8ce5126d42edd8c56820396524dff2ae0619b1::magma_token::MAGMA_TOKEN",
9267
9533
  minter_id: "0x89435d6b2a510ba50ca23303f10e91ec058f138a88f69a43fe03cd22edb214c5"
9268
9534
  }
@@ -9357,6 +9623,7 @@ export {
9357
9623
  GAS_SYMBOL,
9358
9624
  GAS_TYPE_ARG,
9359
9625
  GAS_TYPE_ARG_LONG,
9626
+ Gauge,
9360
9627
  LockModule,
9361
9628
  MAX_SQRT_PRICE,
9362
9629
  MAX_TICK_INDEX,
@@ -9364,6 +9631,7 @@ export {
9364
9631
  MIN_TICK_INDEX,
9365
9632
  MagmaClmmSDK,
9366
9633
  MathUtil,
9634
+ Minter,
9367
9635
  ONE,
9368
9636
  POOL_STRUCT,
9369
9637
  Percentage,