@allbridge/bridge-core-sdk 3.27.0-alpha.3 → 3.27.0-alpha.4

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.
@@ -8,6 +8,7 @@ const exceptions_1 = require("../../../exceptions");
8
8
  const models_1 = require("../../../models");
9
9
  const clarigen_types_1 = require("../../models/stx/clarigen-types");
10
10
  const get_network_1 = require("../../utils/stx/get-network");
11
+ const get_token_name_1 = require("../../utils/stx/get-token-name");
11
12
  const post_conditions_1 = require("../../utils/stx/post-conditions");
12
13
  const bridge_1 = require("../models/bridge");
13
14
  const utils_1 = require("../utils");
@@ -30,7 +31,7 @@ class StxBridgeService extends bridge_1.ChainBridgeService {
30
31
  const txSendParams = await (0, utils_1.prepareTxSendParams)(this.chainType, params, this.api);
31
32
  const { contractAddress: bridgeAddress, messenger, toChainId, toAccountAddress, toTokenAddress } = txSendParams;
32
33
  const amount = BigInt(txSendParams.amount);
33
- const postFungiblePostCondition = (0, post_conditions_1.getFungiblePostCondition)(amount, "lte", params.fromAccountAddress, params.sourceToken.tokenAddress, "example-token");
34
+ const postFungiblePostCondition = (0, post_conditions_1.getFungiblePostCondition)(amount, "lte", params.fromAccountAddress, params.sourceToken.tokenAddress, (0, get_token_name_1.getTokenName)(params.sourceToken));
34
35
  const postStxPostCondition = (0, post_conditions_1.getStxPostCondition)(0, "gte", params.sourceToken.bridgeAddress);
35
36
  const postConditions = [postFungiblePostCondition, postStxPostCondition];
36
37
  let totalFee = BigInt(txSendParams.fee);
@@ -96,8 +97,8 @@ class StxBridgeService extends bridge_1.ChainBridgeService {
96
97
  });
97
98
  const privateKey = (0, transactions_1.makeRandomPrivKey)();
98
99
  const publicKey = (0, transactions_1.privateKeyToPublic)(privateKey);
99
- const postFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(amount, "lte", params.fromAccountAddress, params.sourceToken.tokenAddress, "example-token");
100
- const postFungibleMinReceiveCondition = (0, post_conditions_1.getFungiblePostCondition)(minimumReceiveAmount, "gte", params.destinationToken.poolAddress, params.destinationToken.tokenAddress, "example-token");
100
+ const postFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(amount, "lte", params.fromAccountAddress, params.sourceToken.tokenAddress, (0, get_token_name_1.getTokenName)(params.sourceToken));
101
+ const postFungibleMinReceiveCondition = (0, post_conditions_1.getFungiblePostCondition)(minimumReceiveAmount, "gte", params.destinationToken.poolAddress, params.destinationToken.tokenAddress, (0, get_token_name_1.getTokenName)(params.destinationToken));
101
102
  const txOptions = {
102
103
  contractAddress,
103
104
  contractName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/stx/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClarigenClient, contractFactory } from \"@clarigen/core\";\nimport {\n ContractIdString,\n makeRandomPrivKey,\n makeUnsignedContractCall,\n parseContractId,\n PostCondition,\n PostConditionMode,\n privateKeyToPublic,\n} from \"@stacks/transactions\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { MethodNotSupportedError } from \"../../../exceptions\";\nimport { FeePaymentMethod } from \"../../../models\";\nimport { RawStxTransaction, TransactionResponse } from \"../../models\";\nimport { stacksContracts as contracts } from \"../../models/stx/clarigen-types\";\nimport { getStxNetwork } from \"../../utils/stx/get-network\";\nimport { getFungiblePostCondition, getStxPostCondition } from \"../../utils/stx/post-conditions\";\nimport { ChainBridgeService } from \"../models/bridge\";\nimport { SendParams, SwapParams } from \"../models/bridge.model\";\nimport { getNonce, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class StxBridgeService extends ChainBridgeService {\n chainType: ChainType.STX = ChainType.STX;\n\n private client: ClarigenClient;\n\n constructor(\n public nodeRpcUrl: string,\n public api: AllbridgeCoreClient\n ) {\n super();\n const network = getStxNetwork(this.nodeRpcUrl);\n this.client = new ClarigenClient(network);\n }\n\n send(_params: SendParams): Promise<TransactionResponse> {\n throw new MethodNotSupportedError();\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawStxTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const { contractAddress: bridgeAddress, messenger, toChainId, toAccountAddress, toTokenAddress } = txSendParams;\n const amount = BigInt(txSendParams.amount);\n\n const postFungiblePostCondition = getFungiblePostCondition(\n amount,\n \"lte\",\n params.fromAccountAddress,\n params.sourceToken.tokenAddress,\n \"example-token\"\n );\n const postStxPostCondition = getStxPostCondition(0, \"gte\", params.sourceToken.bridgeAddress);\n const postConditions: PostCondition[] = [postFungiblePostCondition, postStxPostCondition];\n\n let totalFee = BigInt(txSendParams.fee);\n if (txSendParams.extraGas) {\n totalFee = totalFee + BigInt(txSendParams.extraGas);\n }\n\n const isPayWithStable = txSendParams.gasFeePaymentMethod === FeePaymentMethod.WITH_STABLECOIN;\n\n let feeTokenAmount: bigint;\n if (isPayWithStable) {\n feeTokenAmount = totalFee;\n } else {\n feeTokenAmount = 0n;\n const postUserStxPostCondition = getStxPostCondition(totalFee, \"lte\", params.fromAccountAddress);\n postConditions.push(postUserStxPostCondition);\n }\n\n const [contractPrincipal] = parseContractId(bridgeAddress as ContractIdString);\n\n const bridge = contractFactory(contracts.bridge, bridgeAddress);\n const { contractAddress, contractName, functionName, functionArgs } = bridge.swapAndBridge({\n ftRef: params.sourceToken.tokenAddress,\n poolRef: params.sourceToken.poolAddress,\n messengerRef: `${contractPrincipal}.messenger`,\n gasOracleRef: `${contractPrincipal}.gas-oracle`,\n amount,\n recipient: Uint8Array.from(toAccountAddress),\n destinationChainId: toChainId,\n receiveToken: Uint8Array.from(toTokenAddress),\n nonce: Uint8Array.from(getNonce()),\n messengerId: messenger,\n feeNativeAmount: totalFee,\n feeTokenAmount: feeTokenAmount,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions,\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionSwap(params: SwapParams): Promise<RawStxTransaction> {\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n const amount = BigInt(txSwapParams.amount);\n const minimumReceiveAmount = BigInt(txSwapParams.minimumReceiveAmount);\n\n const bridgeAddress = params.sourceToken.bridgeAddress;\n const bridge = contractFactory(contracts.bridge, bridgeAddress);\n const { contractAddress, contractName, functionName, functionArgs } = bridge.swap({\n amount,\n sendPoolRef: params.sourceToken.poolAddress,\n sendFtRef: params.sourceToken.tokenAddress,\n receivePoolRef: params.destinationToken.poolAddress,\n receiveFtRef: params.destinationToken.tokenAddress,\n recipient: params.toAccountAddress,\n receiveAmountMin: minimumReceiveAmount,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const postFungibleCondition = getFungiblePostCondition(\n amount,\n \"lte\",\n params.fromAccountAddress,\n params.sourceToken.tokenAddress,\n \"example-token\"\n );\n\n const postFungibleMinReceiveCondition = getFungiblePostCondition(\n minimumReceiveAmount,\n \"gte\",\n params.destinationToken.poolAddress,\n params.destinationToken.tokenAddress,\n \"example-token\"\n );\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [postFungibleCondition, postFungibleMinReceiveCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/stx/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClarigenClient, contractFactory } from \"@clarigen/core\";\nimport {\n ContractIdString,\n makeRandomPrivKey,\n makeUnsignedContractCall,\n parseContractId,\n PostCondition,\n PostConditionMode,\n privateKeyToPublic,\n} from \"@stacks/transactions\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { MethodNotSupportedError } from \"../../../exceptions\";\nimport { FeePaymentMethod } from \"../../../models\";\nimport { RawStxTransaction, TransactionResponse } from \"../../models\";\nimport { stacksContracts as contracts } from \"../../models/stx/clarigen-types\";\nimport { getStxNetwork } from \"../../utils/stx/get-network\";\nimport { getTokenName } from \"../../utils/stx/get-token-name\";\nimport { getFungiblePostCondition, getStxPostCondition } from \"../../utils/stx/post-conditions\";\nimport { ChainBridgeService } from \"../models/bridge\";\nimport { SendParams, SwapParams } from \"../models/bridge.model\";\nimport { getNonce, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class StxBridgeService extends ChainBridgeService {\n chainType: ChainType.STX = ChainType.STX;\n\n private client: ClarigenClient;\n\n constructor(\n public nodeRpcUrl: string,\n public api: AllbridgeCoreClient\n ) {\n super();\n const network = getStxNetwork(this.nodeRpcUrl);\n this.client = new ClarigenClient(network);\n }\n\n send(_params: SendParams): Promise<TransactionResponse> {\n throw new MethodNotSupportedError();\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawStxTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const { contractAddress: bridgeAddress, messenger, toChainId, toAccountAddress, toTokenAddress } = txSendParams;\n const amount = BigInt(txSendParams.amount);\n\n const postFungiblePostCondition = getFungiblePostCondition(\n amount,\n \"lte\",\n params.fromAccountAddress,\n params.sourceToken.tokenAddress,\n getTokenName(params.sourceToken)\n );\n const postStxPostCondition = getStxPostCondition(0, \"gte\", params.sourceToken.bridgeAddress);\n const postConditions: PostCondition[] = [postFungiblePostCondition, postStxPostCondition];\n\n let totalFee = BigInt(txSendParams.fee);\n if (txSendParams.extraGas) {\n totalFee = totalFee + BigInt(txSendParams.extraGas);\n }\n\n const isPayWithStable = txSendParams.gasFeePaymentMethod === FeePaymentMethod.WITH_STABLECOIN;\n\n let feeTokenAmount: bigint;\n if (isPayWithStable) {\n feeTokenAmount = totalFee;\n } else {\n feeTokenAmount = 0n;\n const postUserStxPostCondition = getStxPostCondition(totalFee, \"lte\", params.fromAccountAddress);\n postConditions.push(postUserStxPostCondition);\n }\n\n const [contractPrincipal] = parseContractId(bridgeAddress as ContractIdString);\n\n const bridge = contractFactory(contracts.bridge, bridgeAddress);\n const { contractAddress, contractName, functionName, functionArgs } = bridge.swapAndBridge({\n ftRef: params.sourceToken.tokenAddress,\n poolRef: params.sourceToken.poolAddress,\n messengerRef: `${contractPrincipal}.messenger`,\n gasOracleRef: `${contractPrincipal}.gas-oracle`,\n amount,\n recipient: Uint8Array.from(toAccountAddress),\n destinationChainId: toChainId,\n receiveToken: Uint8Array.from(toTokenAddress),\n nonce: Uint8Array.from(getNonce()),\n messengerId: messenger,\n feeNativeAmount: totalFee,\n feeTokenAmount: feeTokenAmount,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions,\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionSwap(params: SwapParams): Promise<RawStxTransaction> {\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n const amount = BigInt(txSwapParams.amount);\n const minimumReceiveAmount = BigInt(txSwapParams.minimumReceiveAmount);\n\n const bridgeAddress = params.sourceToken.bridgeAddress;\n const bridge = contractFactory(contracts.bridge, bridgeAddress);\n const { contractAddress, contractName, functionName, functionArgs } = bridge.swap({\n amount,\n sendPoolRef: params.sourceToken.poolAddress,\n sendFtRef: params.sourceToken.tokenAddress,\n receivePoolRef: params.destinationToken.poolAddress,\n receiveFtRef: params.destinationToken.tokenAddress,\n recipient: params.toAccountAddress,\n receiveAmountMin: minimumReceiveAmount,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const postFungibleCondition = getFungiblePostCondition(\n amount,\n \"lte\",\n params.fromAccountAddress,\n params.sourceToken.tokenAddress,\n getTokenName(params.sourceToken)\n );\n\n const postFungibleMinReceiveCondition = getFungiblePostCondition(\n minimumReceiveAmount,\n \"gte\",\n params.destinationToken.poolAddress,\n params.destinationToken.tokenAddress,\n getTokenName(params.destinationToken)\n );\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [postFungibleCondition, postFungibleMinReceiveCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n}\n"]}
@@ -9,6 +9,7 @@ const exceptions_1 = require("../../../exceptions");
9
9
  const calculation_1 = require("../../../utils/calculation");
10
10
  const clarigen_types_1 = require("../../models/stx/clarigen-types");
11
11
  const get_network_1 = require("../../utils/stx/get-network");
12
+ const get_token_name_1 = require("../../utils/stx/get-token-name");
12
13
  const post_conditions_1 = require("../../utils/stx/post-conditions");
13
14
  const models_1 = require("../models");
14
15
  class StxPoolService extends models_1.ChainPoolService {
@@ -68,8 +69,8 @@ class StxPoolService extends models_1.ChainPoolService {
68
69
  });
69
70
  const privateKey = (0, transactions_1.makeRandomPrivKey)();
70
71
  const publicKey = (0, transactions_1.privateKeyToPublic)(privateKey);
71
- const userPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(params.amount, "lte", params.accountAddress, params.token.tokenAddress, "example-token");
72
- const claimRewardsPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(0, "gte", params.token.poolAddress, params.token.tokenAddress, "example-token");
72
+ const userPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(params.amount, "lte", params.accountAddress, params.token.tokenAddress, (0, get_token_name_1.getTokenName)(params.token));
73
+ const claimRewardsPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(0, "gte", params.token.poolAddress, params.token.tokenAddress, (0, get_token_name_1.getTokenName)(params.token));
73
74
  const txOptions = {
74
75
  contractAddress,
75
76
  contractName,
@@ -92,7 +93,7 @@ class StxPoolService extends models_1.ChainPoolService {
92
93
  });
93
94
  const privateKey = (0, transactions_1.makeRandomPrivKey)();
94
95
  const publicKey = (0, transactions_1.privateKeyToPublic)(privateKey);
95
- const poolPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)((0, calculation_1.fromSystemPrecision)(params.amount, params.token.decimals).toFixed(0, big_js_1.Big.roundDown), "gte", params.token.poolAddress, params.token.tokenAddress, "example-token");
96
+ const poolPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)((0, calculation_1.fromSystemPrecision)(params.amount, params.token.decimals).toFixed(0, big_js_1.Big.roundDown), "gte", params.token.poolAddress, params.token.tokenAddress, (0, get_token_name_1.getTokenName)(params.token));
96
97
  const txOptions = {
97
98
  contractAddress,
98
99
  contractName,
@@ -114,7 +115,7 @@ class StxPoolService extends models_1.ChainPoolService {
114
115
  });
115
116
  const privateKey = (0, transactions_1.makeRandomPrivKey)();
116
117
  const publicKey = (0, transactions_1.privateKeyToPublic)(privateKey);
117
- const poolPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(0, "gte", params.token.poolAddress, params.token.tokenAddress, "example-token");
118
+ const poolPostFungibleCondition = (0, post_conditions_1.getFungiblePostCondition)(0, "gte", params.token.poolAddress, params.token.tokenAddress, (0, get_token_name_1.getTokenName)(params.token));
118
119
  const txOptions = {
119
120
  contractAddress,
120
121
  contractName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/stx/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClarigenClient, contractFactory } from \"@clarigen/core\";\nimport {\n makeRandomPrivKey,\n makeUnsignedContractCall,\n PostConditionMode,\n privateKeyToPublic,\n} from \"@stacks/transactions\";\nimport { Big } from \"big.js\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance, fromSystemPrecision } from \"../../../utils/calculation\";\nimport { RawStxTransaction } from \"../../models\";\nimport { stacksContracts as contracts } from \"../../models/stx/clarigen-types\";\nimport { getStxNetwork } from \"../../utils/stx/get-network\";\nimport { getFungiblePostCondition } from \"../../utils/stx/post-conditions\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\nexport class StxPoolService extends ChainPoolService {\n chainType: ChainType.STX = ChainType.STX;\n\n private P = 48;\n private A = \"20\";\n private client: ClarigenClient;\n\n constructor(\n public nodeRpcUrl: string,\n public api: AllbridgeCoreClient\n ) {\n super();\n const network = getStxNetwork(this.nodeRpcUrl);\n this.client = new ClarigenClient(network);\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n const pool = contractFactory(contracts.pool, token.poolAddress);\n\n const lpAmount = await this.client.ro(pool.getLpBalance({ user: accountAddress }));\n const rewardDebt = await this.client.ro(pool.getUserRewardDebt({ user: accountAddress }));\n\n return new UserBalance({ lpAmount: lpAmount.toString(), rewardDebt: rewardDebt.toString() });\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n const pool = contractFactory(contracts.pool, token.poolAddress);\n\n const [dValueRaw, tokenBalanceRaw, vUsdBalanceRaw, totalLpAmountRaw, accRewardPerSharePRaw] = await Promise.all([\n this.client.ro(pool.getD()),\n this.client.ro(pool.getTokenBalance()),\n this.client.ro(pool.getVusdBalance()),\n this.client.ro(pool.getLpTotalSupply()),\n this.client.ro(pool.getAccRewardPerShareP()),\n ]);\n\n const dValue = dValueRaw.toString();\n const tokenBalance = tokenBalanceRaw.toString();\n const vUsdBalance = vUsdBalanceRaw.toString();\n const totalLpAmount = totalLpAmountRaw.toString();\n const accRewardPerShareP = accRewardPerSharePRaw.toString();\n if (dValue && tokenBalance && vUsdBalance && totalLpAmount && accRewardPerShareP) {\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n return {\n aValue: this.A,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n throw new SdkError(\"Unable to pool info from chain\");\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.deposit({\n amount: BigInt(params.amount),\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const userPostFungibleCondition = getFungiblePostCondition(\n params.amount,\n \"lte\",\n params.accountAddress,\n params.token.tokenAddress,\n \"example-token\"\n );\n\n const claimRewardsPostFungibleCondition = getFungiblePostCondition(\n 0,\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n \"example-token\"\n );\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [userPostFungibleCondition, claimRewardsPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.withdraw({\n amountLp: BigInt(params.amount),\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const poolPostFungibleCondition = getFungiblePostCondition(\n fromSystemPrecision(params.amount, params.token.decimals).toFixed(0, Big.roundDown),\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n \"example-token\"\n );\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [poolPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.claimRewards({\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const poolPostFungibleCondition = getFungiblePostCondition(\n 0,\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n \"example-token\"\n );\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [poolPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/stx/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClarigenClient, contractFactory } from \"@clarigen/core\";\nimport {\n makeRandomPrivKey,\n makeUnsignedContractCall,\n PostConditionMode,\n privateKeyToPublic,\n} from \"@stacks/transactions\";\nimport { Big } from \"big.js\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance, fromSystemPrecision } from \"../../../utils/calculation\";\nimport { RawStxTransaction } from \"../../models\";\nimport { stacksContracts as contracts } from \"../../models/stx/clarigen-types\";\nimport { getStxNetwork } from \"../../utils/stx/get-network\";\nimport { getTokenName } from \"../../utils/stx/get-token-name\";\nimport { getFungiblePostCondition } from \"../../utils/stx/post-conditions\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\nexport class StxPoolService extends ChainPoolService {\n chainType: ChainType.STX = ChainType.STX;\n\n private P = 48;\n private A = \"20\";\n private client: ClarigenClient;\n\n constructor(\n public nodeRpcUrl: string,\n public api: AllbridgeCoreClient\n ) {\n super();\n const network = getStxNetwork(this.nodeRpcUrl);\n this.client = new ClarigenClient(network);\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n const pool = contractFactory(contracts.pool, token.poolAddress);\n\n const lpAmount = await this.client.ro(pool.getLpBalance({ user: accountAddress }));\n const rewardDebt = await this.client.ro(pool.getUserRewardDebt({ user: accountAddress }));\n\n return new UserBalance({ lpAmount: lpAmount.toString(), rewardDebt: rewardDebt.toString() });\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n const pool = contractFactory(contracts.pool, token.poolAddress);\n\n const [dValueRaw, tokenBalanceRaw, vUsdBalanceRaw, totalLpAmountRaw, accRewardPerSharePRaw] = await Promise.all([\n this.client.ro(pool.getD()),\n this.client.ro(pool.getTokenBalance()),\n this.client.ro(pool.getVusdBalance()),\n this.client.ro(pool.getLpTotalSupply()),\n this.client.ro(pool.getAccRewardPerShareP()),\n ]);\n\n const dValue = dValueRaw.toString();\n const tokenBalance = tokenBalanceRaw.toString();\n const vUsdBalance = vUsdBalanceRaw.toString();\n const totalLpAmount = totalLpAmountRaw.toString();\n const accRewardPerShareP = accRewardPerSharePRaw.toString();\n if (dValue && tokenBalance && vUsdBalance && totalLpAmount && accRewardPerShareP) {\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n return {\n aValue: this.A,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n throw new SdkError(\"Unable to pool info from chain\");\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.deposit({\n amount: BigInt(params.amount),\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const userPostFungibleCondition = getFungiblePostCondition(\n params.amount,\n \"lte\",\n params.accountAddress,\n params.token.tokenAddress,\n getTokenName(params.token)\n );\n\n const claimRewardsPostFungibleCondition = getFungiblePostCondition(\n 0,\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n getTokenName(params.token)\n );\n\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [userPostFungibleCondition, claimRewardsPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.withdraw({\n amountLp: BigInt(params.amount),\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const poolPostFungibleCondition = getFungiblePostCondition(\n fromSystemPrecision(params.amount, params.token.decimals).toFixed(0, Big.roundDown),\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n getTokenName(params.token)\n );\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [poolPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawStxTransaction> {\n const pool = contractFactory(contracts.pool, params.token.poolAddress);\n\n const { contractAddress, contractName, functionName, functionArgs } = pool.claimRewards({\n ftRef: params.token.tokenAddress,\n });\n\n const privateKey = makeRandomPrivKey();\n const publicKey = privateKeyToPublic(privateKey);\n\n const poolPostFungibleCondition = getFungiblePostCondition(\n 0,\n \"gte\",\n params.token.poolAddress,\n params.token.tokenAddress,\n getTokenName(params.token)\n );\n const txOptions = {\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n publicKey,\n validateWithAbi: true,\n network: this.client.network,\n postConditions: [poolPostFungibleCondition],\n postConditionMode: PostConditionMode.Deny,\n };\n const transaction = await makeUnsignedContractCall(txOptions);\n return transaction.serialize();\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { TokenWithChainDetails } from "../../../tokens-info";
2
+ export declare function getTokenName(token: TokenWithChainDetails): string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTokenName = getTokenName;
4
+ const exceptions_1 = require("../../../exceptions");
5
+ function getTokenName(token) {
6
+ if (!token.originTokenAddress) {
7
+ throw new exceptions_1.SdkError("STX token must contain 'originTokenAddress'");
8
+ }
9
+ const [_address, name] = token.originTokenAddress.split("::");
10
+ if (!name) {
11
+ throw new exceptions_1.SdkError("STX token must contain 'originTokenAddress' ends with '::<tokenName>'");
12
+ }
13
+ return name;
14
+ }
15
+ //# sourceMappingURL=get-token-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-token-name.js","sourceRoot":"","sources":["../../../../../src/services/utils/stx/get-token-name.ts"],"names":[],"mappings":";;AAGA,oCASC;AAZD,oDAA+C;AAG/C,SAAgB,YAAY,CAAC,KAA4B;IACvD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC9B,MAAM,IAAI,qBAAQ,CAAC,6CAA6C,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,qBAAQ,CAAC,uEAAuE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { SdkError } from \"../../../exceptions\";\nimport { TokenWithChainDetails } from \"../../../tokens-info\";\n\nexport function getTokenName(token: TokenWithChainDetails): string {\n if (!token.originTokenAddress) {\n throw new SdkError(\"STX token must contain 'originTokenAddress'\");\n }\n const [_address, name] = token.originTokenAddress.split(\"::\");\n if (!name) {\n throw new SdkError(\"STX token must contain 'originTokenAddress' ends with '::<tokenName>'\");\n }\n return name;\n}\n"]}
@@ -1 +1 @@
1
- export declare const VERSION = "3.27.0-alpha.3";
1
+ export declare const VERSION = "3.27.0-alpha.4";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "3.27.0-alpha.3";
4
+ exports.VERSION = "3.27.0-alpha.4";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,gBAAgB,CAAC","sourcesContent":["export const VERSION = \"3.27.0-alpha.3\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,gBAAgB,CAAC","sourcesContent":["export const VERSION = \"3.27.0-alpha.4\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allbridge/bridge-core-sdk",
3
- "version": "3.27.0-alpha.3",
3
+ "version": "3.27.0-alpha.4",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/src/index.d.ts",