@paxoslabs/amplify-sdk 0.2.0-alpha.1 → 0.2.0-alpha.2
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 +18 -7
- package/dist/{chunk-TF3S7T6P.js → chunk-4ZYCWOFI.js} +8 -8
- package/dist/{chunk-TF3S7T6P.js.map → chunk-4ZYCWOFI.js.map} +1 -1
- package/dist/{chunk-EWJDKRSY.js → chunk-CK3BIPWI.js} +2 -2
- package/dist/{chunk-EWJDKRSY.js.map → chunk-CK3BIPWI.js.map} +1 -1
- package/dist/{chunk-4ORV7PFT.mjs → chunk-E3JM2RCC.mjs} +3 -3
- package/dist/{chunk-4ORV7PFT.mjs.map → chunk-E3JM2RCC.mjs.map} +1 -1
- package/dist/{chunk-SMIA4ULA.js → chunk-IJBG5TTI.js} +19 -19
- package/dist/{chunk-SMIA4ULA.js.map → chunk-IJBG5TTI.js.map} +1 -1
- package/dist/{chunk-YDMFT2R7.mjs → chunk-NZDHFDPQ.mjs} +2 -2
- package/dist/{chunk-YDMFT2R7.mjs.map → chunk-NZDHFDPQ.mjs.map} +1 -1
- package/dist/{chunk-WWTNCRXX.js → chunk-RSQQMUEQ.js} +4 -4
- package/dist/{chunk-WWTNCRXX.js.map → chunk-RSQQMUEQ.js.map} +1 -1
- package/dist/{chunk-UURNMLRT.mjs → chunk-RZN7S23Z.mjs} +3 -3
- package/dist/{chunk-UURNMLRT.mjs.map → chunk-RZN7S23Z.mjs.map} +1 -1
- package/dist/{chunk-Y3QNUDV6.mjs → chunk-VZ3D7CNR.mjs} +3 -3
- package/dist/{chunk-Y3QNUDV6.mjs.map → chunk-VZ3D7CNR.mjs.map} +1 -1
- package/dist/{chunk-LJPJWJ2Y.mjs → chunk-WDPR2NKT.mjs} +4 -4
- package/dist/{chunk-LJPJWJ2Y.mjs.map → chunk-WDPR2NKT.mjs.map} +1 -1
- package/dist/{chunk-76SRRIGW.js → chunk-ZRI7KBQ6.js} +8 -8
- package/dist/{chunk-76SRRIGW.js.map → chunk-ZRI7KBQ6.js.map} +1 -1
- package/dist/core.js +14 -14
- package/dist/core.mjs +4 -4
- package/dist/display.js +12 -12
- package/dist/display.mjs +4 -4
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +115 -115
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/dist/utils.js +5 -5
- package/dist/utils.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getTokenPermitInfoWithAllowance, getErc20AllowanceWithDecimals, getRateInQuoteWithAssetDecimals } from './chunk-
|
|
1
|
+
import { getTokenPermitInfoWithAllowance, getErc20AllowanceWithDecimals, getRateInQuoteWithAssetDecimals } from './chunk-VZ3D7CNR.mjs';
|
|
2
2
|
import { getVaultByKey } from './chunk-R663BFAZ.mjs';
|
|
3
3
|
import { toChainId } from './chunk-J3662HYT.mjs';
|
|
4
4
|
import { bigIntToNumberAsString } from './chunk-7RWWVUHP.mjs';
|
|
5
|
-
import { findVaultByConfig, APIError, ATOMIC_QUEUE_CONTRACT_ADDRESS } from './chunk-
|
|
5
|
+
import { findVaultByConfig, APIError, ATOMIC_QUEUE_CONTRACT_ADDRESS } from './chunk-NZDHFDPQ.mjs';
|
|
6
6
|
import { formatUnits } from 'viem';
|
|
7
7
|
|
|
8
8
|
var isDepositSpendApproved = async ({
|
|
@@ -229,5 +229,5 @@ var getWithdrawExchangeRate = async ({
|
|
|
229
229
|
};
|
|
230
230
|
|
|
231
231
|
export { getDepositExchangeRate, getWithdrawExchangeRate, isDepositSpendApproved, isWithdrawalSpendApproved };
|
|
232
|
-
//# sourceMappingURL=chunk-
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
232
|
+
//# sourceMappingURL=chunk-WDPR2NKT.mjs.map
|
|
233
|
+
//# sourceMappingURL=chunk-WDPR2NKT.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/display/approvals.ts","../src/display/exchange-rate.ts"],"names":[],"mappings":"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","file":"chunk-LJPJWJ2Y.mjs","sourcesContent":["import type { Address } from \"viem\";\nimport { formatUnits } from \"viem\";\nimport { findVaultByConfig } from \"../api/amplify-sdk-client\";\nimport {\n getErc20AllowanceWithDecimals,\n getTokenPermitInfoWithAllowance,\n} from \"../api/erc20\";\nimport { type ChainId, toChainId } from \"../api/vault-config\";\nimport { ATOMIC_QUEUE_CONTRACT_ADDRESS } from \"../constants\";\nimport { APIError, type YieldType } from \"../types/amplify-sdk-api\";\n\nexport const isDepositSpendApproved = async ({\n yieldType,\n chainId,\n depositAssetAddress,\n recipientAddress,\n}: {\n yieldType: YieldType;\n chainId: ChainId;\n depositAssetAddress: Address;\n recipientAddress: Address;\n}) => {\n try {\n const normalizedChainId = toChainId(chainId);\n const config = await findVaultByConfig({\n yieldType,\n chainId: normalizedChainId,\n assetAddress: depositAssetAddress,\n });\n\n if (!config) {\n throw new APIError(\n `Vault not found for ${yieldType} on chain ${normalizedChainId}`,\n {\n endpoint: \"isDepositSpendApproved\",\n }\n );\n }\n\n const boringVaultAddress = config.vault.boringVaultAddress;\n if (!boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n {\n endpoint: \"isDepositSpendApproved\",\n }\n );\n }\n\n const {\n decimals,\n allowance,\n supportsPermit,\n nonce,\n domainSeparator,\n tokenName,\n tokenVersion,\n } = await getTokenPermitInfoWithAllowance({\n chainId: normalizedChainId,\n tokenAddress: depositAssetAddress,\n owner: recipientAddress,\n spender: boringVaultAddress,\n });\n\n return {\n isApproved: allowance > 0n,\n allowance: formatUnits(allowance, decimals),\n allowanceAsBigInt: allowance.toString(),\n decimals,\n supportsPermit,\n nonce,\n domainSeparator,\n tokenName,\n tokenVersion,\n error: null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n // Wrap other errors\n throw new APIError(\n `Failed to check deposit approval: ${\n error instanceof Error ? error.message : String(error)\n }`,\n {\n endpoint: \"isDepositSpendApproved\",\n cause: error,\n }\n );\n }\n};\n\nexport const isWithdrawalSpendApproved = async ({\n yieldType,\n chainId,\n wantAssetAddress,\n recipientAddress,\n}: {\n yieldType: YieldType;\n chainId: ChainId;\n wantAssetAddress: Address;\n recipientAddress: Address;\n}) => {\n try {\n const normalizedChainId = toChainId(chainId);\n\n const config = await findVaultByConfig({\n yieldType,\n chainId: normalizedChainId,\n assetAddress: wantAssetAddress,\n });\n\n if (!config) {\n throw new APIError(\n `Vault not found for ${yieldType} on chain ${normalizedChainId}`,\n {\n endpoint: \"isWithdrawalSpendApproved\",\n }\n );\n }\n\n const boringVaultAddress = config.vault.boringVaultAddress;\n\n if (!boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n {\n endpoint: \"isWithdrawalSpendApproved\",\n }\n );\n }\n\n const [allowance, decimals] = await getErc20AllowanceWithDecimals({\n chainId: normalizedChainId,\n tokenAddress: boringVaultAddress,\n recipientAddress: recipientAddress,\n spenderAddress: ATOMIC_QUEUE_CONTRACT_ADDRESS,\n });\n\n if (allowance.status === \"failure\" || decimals.status === \"failure\") {\n return {\n isApproved: false,\n allowance: \"0\",\n allowanceAsBigInt: \"0\",\n decimals: \"0\",\n error: allowance.error || decimals.error,\n };\n }\n\n return {\n isApproved: allowance.result > 0n,\n allowance: formatUnits(allowance.result, decimals.result),\n allowanceAsBigInt: allowance.result.toString(),\n decimals: decimals.result,\n error: null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n throw new APIError(\n `Failed to check withdrawal approval: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"isWithdrawalSpendApproved\", cause: error }\n );\n }\n};\n","import { getRateInQuoteWithAssetDecimals } from \"../api/accountant\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { bigIntToNumberAsString } from \"../utils/bigint\";\nimport { getVaultByKey } from \"../vaults\";\nimport type { VaultKey } from \"../vaults/config\";\n\ninterface GetDepositExchangeRateParams {\n vaultKey: VaultKey;\n sourceChainId: ChainId;\n depositTokenSymbol: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n}\n\n/**\n * Gets the deposit exchange rate for a vault (tokens per share)\n * @throws {Error} If the token address is not found or if there's an error fetching the rate\n * @returns Promise<string> The exchange rate as a formatted string representing how many deposit tokens are worth 1 share\n */\nconst getDepositExchangeRate = async ({\n vaultKey,\n sourceChainId,\n depositTokenSymbol,\n minimumFractionDigits,\n maximumFractionDigits = 3,\n}: GetDepositExchangeRateParams) => {\n const vault = await getVaultByKey(vaultKey);\n\n const sourceChain = vault.deposit.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(\n `Source chain ${sourceChainId} not found for vault ${vaultKey}`\n );\n }\n\n const depositToken = sourceChain.depositTokens?.[depositTokenSymbol];\n if (!depositToken) {\n throw new Error(\n `Deposit token ${depositTokenSymbol} not found for chain ${sourceChainId}`\n );\n }\n\n const tokenAddress = depositToken.address;\n if (!tokenAddress) {\n throw new Error(`Token address not found for ${depositTokenSymbol}`);\n }\n\n const [decimals, rate] = await getRateInQuoteWithAssetDecimals({\n assetAddress: tokenAddress,\n accountantAddress: vault.contracts.accountant,\n chainId: sourceChainId,\n });\n\n if (rate.status === \"failure\") {\n throw new Error(`Failed to get rate: ${rate.error.message}`);\n }\n if (decimals.status === \"failure\") {\n throw new Error(`Failed to get decimals: ${decimals.error.message}`);\n }\n\n return bigIntToNumberAsString(rate.result, {\n decimals: decimals.result,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n};\n\ninterface GetWithdrawExchangeRateParams {\n vaultKey: VaultKey;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n wantTokenSymbol: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n}\n\n/**\n * Gets the withdraw exchange rate for a vault (tokens per share)\n * @throws {Error} If the token address is not found or if there's an error fetching the rate\n * @returns Promise<string> The exchange rate as a formatted string representing how many want tokens are worth 1 share\n */\nconst getWithdrawExchangeRate = async ({\n vaultKey,\n sourceChainId,\n destinationChainId,\n wantTokenSymbol,\n minimumFractionDigits,\n maximumFractionDigits = 3,\n}: GetWithdrawExchangeRateParams) => {\n const vault = await getVaultByKey(vaultKey);\n\n const sourceChain = vault.withdraw.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(\n `Source chain ${sourceChainId} not found for vault ${vaultKey}`\n );\n }\n\n const destinationChain = sourceChain.destinationChains[destinationChainId];\n if (!destinationChain) {\n throw new Error(\n `Destination chain ${destinationChainId} not found for source chain ${sourceChainId}`\n );\n }\n\n const wantToken = destinationChain.wantTokens?.[wantTokenSymbol];\n if (!wantToken) {\n throw new Error(\n `Want token ${wantTokenSymbol} not found for chain ${destinationChainId}`\n );\n }\n\n const tokenAddress = wantToken.address;\n if (!tokenAddress) {\n throw new Error(`Token address not found for ${wantTokenSymbol}`);\n }\n\n const [decimals, rate] = await getRateInQuoteWithAssetDecimals({\n assetAddress: tokenAddress,\n accountantAddress: vault.contracts.accountant,\n chainId: sourceChainId,\n });\n\n if (rate.status === \"failure\") {\n throw new Error(`Failed to get rate: ${rate.error.message}`);\n }\n if (decimals.status === \"failure\") {\n throw new Error(`Failed to get decimals: ${decimals.error.message}`);\n }\n\n return bigIntToNumberAsString(rate.result, {\n decimals: decimals.result,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n};\n\nexport { getDepositExchangeRate, getWithdrawExchangeRate };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/display/approvals.ts","../src/display/exchange-rate.ts"],"names":[],"mappings":"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","file":"chunk-WDPR2NKT.mjs","sourcesContent":["import type { Address } from \"viem\";\nimport { formatUnits } from \"viem\";\nimport { findVaultByConfig } from \"../api/amplify-sdk-client\";\nimport {\n getErc20AllowanceWithDecimals,\n getTokenPermitInfoWithAllowance,\n} from \"../api/erc20\";\nimport { type ChainId, toChainId } from \"../api/vault-config\";\nimport { ATOMIC_QUEUE_CONTRACT_ADDRESS } from \"../constants\";\nimport { APIError, type YieldType } from \"../types/amplify-sdk-api\";\n\nexport const isDepositSpendApproved = async ({\n yieldType,\n chainId,\n depositAssetAddress,\n recipientAddress,\n}: {\n yieldType: YieldType;\n chainId: ChainId;\n depositAssetAddress: Address;\n recipientAddress: Address;\n}) => {\n try {\n const normalizedChainId = toChainId(chainId);\n const config = await findVaultByConfig({\n yieldType,\n chainId: normalizedChainId,\n assetAddress: depositAssetAddress,\n });\n\n if (!config) {\n throw new APIError(\n `Vault not found for ${yieldType} on chain ${normalizedChainId}`,\n {\n endpoint: \"isDepositSpendApproved\",\n }\n );\n }\n\n const boringVaultAddress = config.vault.boringVaultAddress;\n if (!boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n {\n endpoint: \"isDepositSpendApproved\",\n }\n );\n }\n\n const {\n decimals,\n allowance,\n supportsPermit,\n nonce,\n domainSeparator,\n tokenName,\n tokenVersion,\n } = await getTokenPermitInfoWithAllowance({\n chainId: normalizedChainId,\n tokenAddress: depositAssetAddress,\n owner: recipientAddress,\n spender: boringVaultAddress,\n });\n\n return {\n isApproved: allowance > 0n,\n allowance: formatUnits(allowance, decimals),\n allowanceAsBigInt: allowance.toString(),\n decimals,\n supportsPermit,\n nonce,\n domainSeparator,\n tokenName,\n tokenVersion,\n error: null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n // Wrap other errors\n throw new APIError(\n `Failed to check deposit approval: ${\n error instanceof Error ? error.message : String(error)\n }`,\n {\n endpoint: \"isDepositSpendApproved\",\n cause: error,\n }\n );\n }\n};\n\nexport const isWithdrawalSpendApproved = async ({\n yieldType,\n chainId,\n wantAssetAddress,\n recipientAddress,\n}: {\n yieldType: YieldType;\n chainId: ChainId;\n wantAssetAddress: Address;\n recipientAddress: Address;\n}) => {\n try {\n const normalizedChainId = toChainId(chainId);\n\n const config = await findVaultByConfig({\n yieldType,\n chainId: normalizedChainId,\n assetAddress: wantAssetAddress,\n });\n\n if (!config) {\n throw new APIError(\n `Vault not found for ${yieldType} on chain ${normalizedChainId}`,\n {\n endpoint: \"isWithdrawalSpendApproved\",\n }\n );\n }\n\n const boringVaultAddress = config.vault.boringVaultAddress;\n\n if (!boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n {\n endpoint: \"isWithdrawalSpendApproved\",\n }\n );\n }\n\n const [allowance, decimals] = await getErc20AllowanceWithDecimals({\n chainId: normalizedChainId,\n tokenAddress: boringVaultAddress,\n recipientAddress: recipientAddress,\n spenderAddress: ATOMIC_QUEUE_CONTRACT_ADDRESS,\n });\n\n if (allowance.status === \"failure\" || decimals.status === \"failure\") {\n return {\n isApproved: false,\n allowance: \"0\",\n allowanceAsBigInt: \"0\",\n decimals: \"0\",\n error: allowance.error || decimals.error,\n };\n }\n\n return {\n isApproved: allowance.result > 0n,\n allowance: formatUnits(allowance.result, decimals.result),\n allowanceAsBigInt: allowance.result.toString(),\n decimals: decimals.result,\n error: null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n throw new APIError(\n `Failed to check withdrawal approval: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"isWithdrawalSpendApproved\", cause: error }\n );\n }\n};\n","import { getRateInQuoteWithAssetDecimals } from \"../api/accountant\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { bigIntToNumberAsString } from \"../utils/bigint\";\nimport { getVaultByKey } from \"../vaults\";\nimport type { VaultKey } from \"../vaults/config\";\n\ninterface GetDepositExchangeRateParams {\n vaultKey: VaultKey;\n sourceChainId: ChainId;\n depositTokenSymbol: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n}\n\n/**\n * Gets the deposit exchange rate for a vault (tokens per share)\n * @throws {Error} If the token address is not found or if there's an error fetching the rate\n * @returns Promise<string> The exchange rate as a formatted string representing how many deposit tokens are worth 1 share\n */\nconst getDepositExchangeRate = async ({\n vaultKey,\n sourceChainId,\n depositTokenSymbol,\n minimumFractionDigits,\n maximumFractionDigits = 3,\n}: GetDepositExchangeRateParams) => {\n const vault = await getVaultByKey(vaultKey);\n\n const sourceChain = vault.deposit.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(\n `Source chain ${sourceChainId} not found for vault ${vaultKey}`\n );\n }\n\n const depositToken = sourceChain.depositTokens?.[depositTokenSymbol];\n if (!depositToken) {\n throw new Error(\n `Deposit token ${depositTokenSymbol} not found for chain ${sourceChainId}`\n );\n }\n\n const tokenAddress = depositToken.address;\n if (!tokenAddress) {\n throw new Error(`Token address not found for ${depositTokenSymbol}`);\n }\n\n const [decimals, rate] = await getRateInQuoteWithAssetDecimals({\n assetAddress: tokenAddress,\n accountantAddress: vault.contracts.accountant,\n chainId: sourceChainId,\n });\n\n if (rate.status === \"failure\") {\n throw new Error(`Failed to get rate: ${rate.error.message}`);\n }\n if (decimals.status === \"failure\") {\n throw new Error(`Failed to get decimals: ${decimals.error.message}`);\n }\n\n return bigIntToNumberAsString(rate.result, {\n decimals: decimals.result,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n};\n\ninterface GetWithdrawExchangeRateParams {\n vaultKey: VaultKey;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n wantTokenSymbol: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n}\n\n/**\n * Gets the withdraw exchange rate for a vault (tokens per share)\n * @throws {Error} If the token address is not found or if there's an error fetching the rate\n * @returns Promise<string> The exchange rate as a formatted string representing how many want tokens are worth 1 share\n */\nconst getWithdrawExchangeRate = async ({\n vaultKey,\n sourceChainId,\n destinationChainId,\n wantTokenSymbol,\n minimumFractionDigits,\n maximumFractionDigits = 3,\n}: GetWithdrawExchangeRateParams) => {\n const vault = await getVaultByKey(vaultKey);\n\n const sourceChain = vault.withdraw.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(\n `Source chain ${sourceChainId} not found for vault ${vaultKey}`\n );\n }\n\n const destinationChain = sourceChain.destinationChains[destinationChainId];\n if (!destinationChain) {\n throw new Error(\n `Destination chain ${destinationChainId} not found for source chain ${sourceChainId}`\n );\n }\n\n const wantToken = destinationChain.wantTokens?.[wantTokenSymbol];\n if (!wantToken) {\n throw new Error(\n `Want token ${wantTokenSymbol} not found for chain ${destinationChainId}`\n );\n }\n\n const tokenAddress = wantToken.address;\n if (!tokenAddress) {\n throw new Error(`Token address not found for ${wantTokenSymbol}`);\n }\n\n const [decimals, rate] = await getRateInQuoteWithAssetDecimals({\n assetAddress: tokenAddress,\n accountantAddress: vault.contracts.accountant,\n chainId: sourceChainId,\n });\n\n if (rate.status === \"failure\") {\n throw new Error(`Failed to get rate: ${rate.error.message}`);\n }\n if (decimals.status === \"failure\") {\n throw new Error(`Failed to get decimals: ${decimals.error.message}`);\n }\n\n return bigIntToNumberAsString(rate.result, {\n decimals: decimals.result,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n};\n\nexport { getDepositExchangeRate, getWithdrawExchangeRate };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4ZYCWOFI_js = require('./chunk-4ZYCWOFI.js');
|
|
4
4
|
require('viem');
|
|
5
5
|
|
|
6
6
|
var getPausedStates = async ({
|
|
@@ -8,16 +8,16 @@ var getPausedStates = async ({
|
|
|
8
8
|
tellerAddress,
|
|
9
9
|
chainId
|
|
10
10
|
}) => {
|
|
11
|
-
const client = await
|
|
11
|
+
const client = await chunk4ZYCWOFI_js.getClient(chainId);
|
|
12
12
|
const results = await client.multicall({
|
|
13
13
|
contracts: [
|
|
14
14
|
{
|
|
15
|
-
abi:
|
|
15
|
+
abi: chunk4ZYCWOFI_js.TellerAbi,
|
|
16
16
|
address: tellerAddress,
|
|
17
17
|
functionName: "isPaused"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
abi:
|
|
20
|
+
abi: chunk4ZYCWOFI_js.AccountantAbi,
|
|
21
21
|
address: accountantAddress,
|
|
22
22
|
functionName: "accountantState"
|
|
23
23
|
}
|
|
@@ -33,9 +33,9 @@ var getPreviewFee = async ({
|
|
|
33
33
|
contractAddress,
|
|
34
34
|
chainId
|
|
35
35
|
}) => {
|
|
36
|
-
const client = await
|
|
36
|
+
const client = await chunk4ZYCWOFI_js.getClient(chainId);
|
|
37
37
|
const rate = await client.readContract({
|
|
38
|
-
abi:
|
|
38
|
+
abi: chunk4ZYCWOFI_js.TellerAbi,
|
|
39
39
|
address: contractAddress,
|
|
40
40
|
functionName: "previewFee",
|
|
41
41
|
args: [shareAmount, bridgeData]
|
|
@@ -45,5 +45,5 @@ var getPreviewFee = async ({
|
|
|
45
45
|
|
|
46
46
|
exports.getPausedStates = getPausedStates;
|
|
47
47
|
exports.getPreviewFee = getPreviewFee;
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-ZRI7KBQ6.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-ZRI7KBQ6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/multi-call.ts","../src/api/teller.ts"],"names":["getClient","TellerAbi","AccountantAbi"],"mappings":";;;;;AA2CA,IAAM,kBAAkB,OAAO;AAAA,EAC7B,iBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,MAAA,GAAS,MAAMA,0BAAA,CAAU,OAAO,CAAA;AAEtC,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,IACrC,SAAA,EAAW;AAAA,MACT;AAAA,QACE,GAAA,EAAKC,0BAAA;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,GAAA,EAAKC,8BAAA;AAAA,QACL,OAAA,EAAS,iBAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACD,CAAA;AACD,EAAA,OAAO,OAAA;AACT;;;ACjCA,IAAM,gBAAgB,OAAO;AAAA,EAC3B,WAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAA2C;AACzC,EAAA,MAAM,MAAA,GAAS,MAAMF,0BAAA,CAAU,OAAO,CAAA;AAEtC,EAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,IACrC,GAAA,EAAKC,0BAAA;AAAA,IACL,OAAA,EAAS,eAAA;AAAA,IACT,YAAA,EAAc,YAAA;AAAA,IACd,IAAA,EAAM,CAAC,WAAA,EAAa,UAAU;AAAA,GAC/B,CAAA;AAED,EAAA,OAAO,IAAA;AACT","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/api/multi-call.ts","../src/api/teller.ts"],"names":["getClient","TellerAbi","AccountantAbi"],"mappings":";;;;;AA2CA,IAAM,kBAAkB,OAAO;AAAA,EAC7B,iBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,MAAA,GAAS,MAAMA,0BAAA,CAAU,OAAO,CAAA;AAEtC,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,IACrC,SAAA,EAAW;AAAA,MACT;AAAA,QACE,GAAA,EAAKC,0BAAA;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA;AAAA,QACE,GAAA,EAAKC,8BAAA;AAAA,QACL,OAAA,EAAS,iBAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAChB;AACF,GACD,CAAA;AACD,EAAA,OAAO,OAAA;AACT;;;ACjCA,IAAM,gBAAgB,OAAO;AAAA,EAC3B,WAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAA2C;AACzC,EAAA,MAAM,MAAA,GAAS,MAAMF,0BAAA,CAAU,OAAO,CAAA;AAEtC,EAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,IACrC,GAAA,EAAKC,0BAAA;AAAA,IACL,OAAA,EAAS,eAAA;AAAA,IACT,YAAA,EAAc,YAAA;AAAA,IACd,IAAA,EAAM,CAAC,WAAA,EAAa,UAAU;AAAA,GAC/B,CAAA;AAED,EAAA,OAAO,IAAA;AACT","file":"chunk-ZRI7KBQ6.js","sourcesContent":["import { type Address, erc20Abi } from \"viem\";\nimport { AccountantAbi } from \"../abi/accountant-abi\";\nimport { TellerAbi } from \"../abi/teller-abi\";\nimport { getClient } from \"../lib/viem/client\";\nimport type { ChainId } from \"./vault-config\";\n\ntype RateInQuoteWithAssetDecimalsProps = {\n assetAddress: Address;\n accountantAddress: Address;\n chainId: ChainId;\n};\n\nconst getRateInQuoteWithAssetDecimals = async ({\n assetAddress,\n accountantAddress,\n chainId,\n}: RateInQuoteWithAssetDecimalsProps) => {\n const client = await getClient(chainId);\n\n const results = await client.multicall({\n contracts: [\n {\n abi: erc20Abi,\n address: assetAddress,\n functionName: \"decimals\",\n },\n {\n abi: AccountantAbi,\n address: accountantAddress,\n functionName: \"getRateInQuote\",\n args: [assetAddress],\n },\n ],\n });\n return results;\n};\n\ntype PausedStatusProps = {\n accountantAddress: Address;\n tellerAddress: Address;\n chainId: ChainId;\n};\n\nconst getPausedStates = async ({\n accountantAddress,\n tellerAddress,\n chainId,\n}: PausedStatusProps) => {\n const client = await getClient(chainId);\n\n const results = await client.multicall({\n contracts: [\n {\n abi: TellerAbi,\n address: tellerAddress,\n functionName: \"isPaused\",\n },\n {\n abi: AccountantAbi,\n address: accountantAddress,\n functionName: \"accountantState\",\n },\n ],\n });\n return results;\n};\n\nexport { getPausedStates, getRateInQuoteWithAssetDecimals };\n","/**\n * @fileoverview Functions for interacting with the Teller contract\n */\nimport type { Address } from \"viem\";\nimport { TellerAbi } from \"../abi/teller-abi\";\nimport { getClient } from \"../lib/viem/client\";\nimport type { ChainId } from \"./vault-config\";\n\n/**\n * Arguments required by the bridge contract for cross-chain transfers\n * @interface BridgeData\n * @property {number} chainSelector - Unique identifier for the destination chain\n * @property {Address} destinationChainReceiver - Address that will receive the bridged tokens\n * @property {Address} bridgeFeeToken - Token used to pay the bridge fee\n * @property {bigint} messageGas - Amount of gas allocated for the cross-chain message\n * @property {`0x${string}`} data - Additional data required for the bridge operation (hex encoded)\n */\nexport type BridgeData = {\n chainSelector: number;\n destinationChainReceiver: Address;\n bridgeFeeToken: Address;\n messageGas: bigint;\n data: `0x${string}`;\n};\n\ntype GetPreviewFeeProps = {\n shareAmount: bigint;\n bridgeData: BridgeData;\n contractAddress: Address;\n chainId: ChainId;\n};\n\nconst getPreviewFee = async ({\n shareAmount,\n bridgeData,\n contractAddress,\n chainId,\n}: GetPreviewFeeProps): Promise<bigint> => {\n const client = await getClient(chainId);\n\n const rate = await client.readContract({\n abi: TellerAbi,\n address: contractAddress,\n functionName: \"previewFee\",\n args: [shareAmount, bridgeData],\n });\n\n return rate;\n};\n\nexport { getPreviewFee };\n"]}
|
package/dist/core.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkOJOKPBK7_js = require('./chunk-OJOKPBK7.js');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkZRI7KBQ6_js = require('./chunk-ZRI7KBQ6.js');
|
|
5
|
+
var chunk4ZYCWOFI_js = require('./chunk-4ZYCWOFI.js');
|
|
6
6
|
var chunkRUIAH5HY_js = require('./chunk-RUIAH5HY.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkCK3BIPWI_js = require('./chunk-CK3BIPWI.js');
|
|
8
8
|
var viem = require('viem');
|
|
9
9
|
|
|
10
10
|
async function getVaultAllowance({
|
|
@@ -13,7 +13,7 @@ async function getVaultAllowance({
|
|
|
13
13
|
recipientAddress,
|
|
14
14
|
chainId
|
|
15
15
|
}) {
|
|
16
|
-
const client = await
|
|
16
|
+
const client = await chunk4ZYCWOFI_js.getClient(chainId);
|
|
17
17
|
const allowance = await client.readContract({
|
|
18
18
|
abi: viem.erc20Abi,
|
|
19
19
|
address: tokenAddress,
|
|
@@ -26,7 +26,7 @@ async function getTotalSupply({
|
|
|
26
26
|
tokenAddress,
|
|
27
27
|
chainId
|
|
28
28
|
}) {
|
|
29
|
-
const client = await
|
|
29
|
+
const client = await chunk4ZYCWOFI_js.getClient(chainId);
|
|
30
30
|
const totalSupply = await client.readContract({
|
|
31
31
|
abi: viem.erc20Abi,
|
|
32
32
|
address: tokenAddress,
|
|
@@ -76,10 +76,10 @@ var ChainlinkAbi = [
|
|
|
76
76
|
async function getEthPrice({
|
|
77
77
|
chainId
|
|
78
78
|
}) {
|
|
79
|
-
const client = await
|
|
79
|
+
const client = await chunk4ZYCWOFI_js.getClient(chainId);
|
|
80
80
|
const priceData = await client.readContract({
|
|
81
81
|
abi: ChainlinkAbi,
|
|
82
|
-
address:
|
|
82
|
+
address: chunkCK3BIPWI_js.CHAINLINK_ADDRESS,
|
|
83
83
|
functionName: "latestRoundData",
|
|
84
84
|
args: []
|
|
85
85
|
});
|
|
@@ -92,7 +92,7 @@ async function getEthPrice({
|
|
|
92
92
|
// src/api/withdraw-assets.ts
|
|
93
93
|
var assetsCache = null;
|
|
94
94
|
function constructUrl(params) {
|
|
95
|
-
const withdrawAssetsUrl = `${
|
|
95
|
+
const withdrawAssetsUrl = `${chunkCK3BIPWI_js.API_BASE_URL}/v1/protocol/withdraw-assets`;
|
|
96
96
|
if (!params) return withdrawAssetsUrl;
|
|
97
97
|
const queryParams = new URLSearchParams();
|
|
98
98
|
if (params.chainId) queryParams.append("chainId", params.chainId.toString());
|
|
@@ -148,27 +148,27 @@ async function getAssetSlippage(chainId, vaultAddress, tokenAddress, defaultSlip
|
|
|
148
148
|
|
|
149
149
|
Object.defineProperty(exports, "getPausedStates", {
|
|
150
150
|
enumerable: true,
|
|
151
|
-
get: function () { return
|
|
151
|
+
get: function () { return chunkZRI7KBQ6_js.getPausedStates; }
|
|
152
152
|
});
|
|
153
153
|
Object.defineProperty(exports, "getPreviewFee", {
|
|
154
154
|
enumerable: true,
|
|
155
|
-
get: function () { return
|
|
155
|
+
get: function () { return chunkZRI7KBQ6_js.getPreviewFee; }
|
|
156
156
|
});
|
|
157
157
|
Object.defineProperty(exports, "getErc20Allowance", {
|
|
158
158
|
enumerable: true,
|
|
159
|
-
get: function () { return
|
|
159
|
+
get: function () { return chunk4ZYCWOFI_js.getErc20Allowance; }
|
|
160
160
|
});
|
|
161
161
|
Object.defineProperty(exports, "getErc20Balance", {
|
|
162
162
|
enumerable: true,
|
|
163
|
-
get: function () { return
|
|
163
|
+
get: function () { return chunk4ZYCWOFI_js.getErc20Balance; }
|
|
164
164
|
});
|
|
165
165
|
Object.defineProperty(exports, "getErc20Decimals", {
|
|
166
166
|
enumerable: true,
|
|
167
|
-
get: function () { return
|
|
167
|
+
get: function () { return chunk4ZYCWOFI_js.getErc20Decimals; }
|
|
168
168
|
});
|
|
169
169
|
Object.defineProperty(exports, "getRateInQuoteWithAssetDecimals", {
|
|
170
170
|
enumerable: true,
|
|
171
|
-
get: function () { return
|
|
171
|
+
get: function () { return chunk4ZYCWOFI_js.getRateInQuoteWithAssetDecimals; }
|
|
172
172
|
});
|
|
173
173
|
Object.defineProperty(exports, "fetchVaultConfig", {
|
|
174
174
|
enumerable: true,
|
package/dist/core.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DEFAULT_SLIPPAGE_BPS } from './chunk-AQFFMJX7.mjs';
|
|
2
|
-
export { getPausedStates, getPreviewFee } from './chunk-
|
|
3
|
-
import { getClient } from './chunk-
|
|
4
|
-
export { getErc20Allowance, getErc20Balance, getErc20Decimals, getRateInQuoteWithAssetDecimals } from './chunk-
|
|
2
|
+
export { getPausedStates, getPreviewFee } from './chunk-RZN7S23Z.mjs';
|
|
3
|
+
import { getClient } from './chunk-VZ3D7CNR.mjs';
|
|
4
|
+
export { getErc20Allowance, getErc20Balance, getErc20Decimals, getRateInQuoteWithAssetDecimals } from './chunk-VZ3D7CNR.mjs';
|
|
5
5
|
export { fetchVaultConfig, toChainId } from './chunk-J3662HYT.mjs';
|
|
6
|
-
import { CHAINLINK_ADDRESS, API_BASE_URL } from './chunk-
|
|
6
|
+
import { CHAINLINK_ADDRESS, API_BASE_URL } from './chunk-NZDHFDPQ.mjs';
|
|
7
7
|
import { erc20Abi } from 'viem';
|
|
8
8
|
|
|
9
9
|
async function getVaultAllowance({
|
package/dist/display.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
3
|
+
var chunkIJBG5TTI_js = require('./chunk-IJBG5TTI.js');
|
|
4
|
+
var chunkZRI7KBQ6_js = require('./chunk-ZRI7KBQ6.js');
|
|
5
|
+
require('./chunk-4ZYCWOFI.js');
|
|
6
6
|
var chunkICKDAKVS_js = require('./chunk-ICKDAKVS.js');
|
|
7
7
|
require('./chunk-RUIAH5HY.js');
|
|
8
8
|
require('./chunk-3I3PYX2F.js');
|
|
9
|
-
var
|
|
9
|
+
var chunkCK3BIPWI_js = require('./chunk-CK3BIPWI.js');
|
|
10
10
|
|
|
11
11
|
// src/vaults/bridge.ts
|
|
12
12
|
var prepareBridgeContractArg = ({
|
|
13
13
|
bridgeChainIdentifier,
|
|
14
14
|
recipientAddress,
|
|
15
|
-
nativeTokenForBridgeFee =
|
|
15
|
+
nativeTokenForBridgeFee = chunkCK3BIPWI_js.NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
16
16
|
}) => {
|
|
17
17
|
return {
|
|
18
18
|
chainSelector: bridgeChainIdentifier,
|
|
@@ -30,7 +30,7 @@ var getBridgeFee = async ({
|
|
|
30
30
|
sourceChainId,
|
|
31
31
|
destinationChainId,
|
|
32
32
|
recipientAddress,
|
|
33
|
-
nativeTokenForBridgeFee =
|
|
33
|
+
nativeTokenForBridgeFee = chunkCK3BIPWI_js.NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
34
34
|
}) => {
|
|
35
35
|
const vault = await chunkICKDAKVS_js.getVaultByKey(vaultKey);
|
|
36
36
|
if (!vault) {
|
|
@@ -64,7 +64,7 @@ var getBridgeFee = async ({
|
|
|
64
64
|
recipientAddress,
|
|
65
65
|
nativeTokenForBridgeFee
|
|
66
66
|
});
|
|
67
|
-
const previewFee = await
|
|
67
|
+
const previewFee = await chunkZRI7KBQ6_js.getPreviewFee({
|
|
68
68
|
shareAmount: bridgeAmount,
|
|
69
69
|
bridgeData: bridgeContractArg,
|
|
70
70
|
contractAddress: vault.contracts.teller,
|
|
@@ -81,7 +81,7 @@ var getVaultStatus = async ({ vaultKey, chainId }) => {
|
|
|
81
81
|
}
|
|
82
82
|
const tellerAddress = vault.contracts.teller;
|
|
83
83
|
const accountantAddress = vault.contracts.accountant;
|
|
84
|
-
const [tellerStatus, accountantStatus] = await
|
|
84
|
+
const [tellerStatus, accountantStatus] = await chunkZRI7KBQ6_js.getPausedStates({
|
|
85
85
|
accountantAddress,
|
|
86
86
|
tellerAddress,
|
|
87
87
|
chainId
|
|
@@ -104,19 +104,19 @@ var getVaultStatus = async ({ vaultKey, chainId }) => {
|
|
|
104
104
|
|
|
105
105
|
Object.defineProperty(exports, "getDepositExchangeRate", {
|
|
106
106
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
107
|
+
get: function () { return chunkIJBG5TTI_js.getDepositExchangeRate; }
|
|
108
108
|
});
|
|
109
109
|
Object.defineProperty(exports, "getWithdrawExchangeRate", {
|
|
110
110
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
111
|
+
get: function () { return chunkIJBG5TTI_js.getWithdrawExchangeRate; }
|
|
112
112
|
});
|
|
113
113
|
Object.defineProperty(exports, "isDepositSpendApproved", {
|
|
114
114
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
115
|
+
get: function () { return chunkIJBG5TTI_js.isDepositSpendApproved; }
|
|
116
116
|
});
|
|
117
117
|
Object.defineProperty(exports, "isWithdrawalSpendApproved", {
|
|
118
118
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
119
|
+
get: function () { return chunkIJBG5TTI_js.isWithdrawalSpendApproved; }
|
|
120
120
|
});
|
|
121
121
|
exports.getBridgeFee = getBridgeFee;
|
|
122
122
|
exports.getVaultStatus = getVaultStatus;
|
package/dist/display.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { getDepositExchangeRate, getWithdrawExchangeRate, isDepositSpendApproved, isWithdrawalSpendApproved } from './chunk-
|
|
2
|
-
import { getPreviewFee, getPausedStates } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { getDepositExchangeRate, getWithdrawExchangeRate, isDepositSpendApproved, isWithdrawalSpendApproved } from './chunk-WDPR2NKT.mjs';
|
|
2
|
+
import { getPreviewFee, getPausedStates } from './chunk-RZN7S23Z.mjs';
|
|
3
|
+
import './chunk-VZ3D7CNR.mjs';
|
|
4
4
|
import { getVaultByKey } from './chunk-R663BFAZ.mjs';
|
|
5
5
|
import './chunk-J3662HYT.mjs';
|
|
6
6
|
import './chunk-7RWWVUHP.mjs';
|
|
7
|
-
import { NATIVE_TOKEN_FOR_BRIDGE_FEE } from './chunk-
|
|
7
|
+
import { NATIVE_TOKEN_FOR_BRIDGE_FEE } from './chunk-NZDHFDPQ.mjs';
|
|
8
8
|
|
|
9
9
|
// src/vaults/bridge.ts
|
|
10
10
|
var prepareBridgeContractArg = ({
|
package/dist/index.d.mts
CHANGED
|
@@ -3922,24 +3922,24 @@ type UserRequest = {
|
|
|
3922
3922
|
* @property {ChainId} chainId - ID of the chain where the withdrawal will occur
|
|
3923
3923
|
* @property {string} offerAmount - Amount of vault shares to withdraw as a decimal string
|
|
3924
3924
|
* @property {number} [deadline] - Unix timestamp when the request expires (optional)
|
|
3925
|
-
* @property {number} [slippage] - Maximum acceptable slippage in basis points (optional, default:
|
|
3925
|
+
* @property {number} [slippage] - Maximum acceptable slippage in basis points (optional, default: 50 for 0.5%)
|
|
3926
3926
|
*
|
|
3927
3927
|
* **Slippage Protection**:
|
|
3928
3928
|
* The slippage parameter protects users from unfavorable price movements during the withdrawal.
|
|
3929
3929
|
* It defines the maximum acceptable loss as a percentage of the initial share amount.
|
|
3930
3930
|
*
|
|
3931
|
-
* - Default:
|
|
3931
|
+
* - Default: 50 basis points (0.5% slippage tolerance, DEFAULT_SLIPPAGE_BPS)
|
|
3932
3932
|
* - Range: 0-10000 basis points (0-100%)
|
|
3933
3933
|
* - Formula: minimumAssets = shareAmount * (10000 - slippage) / 10000
|
|
3934
3934
|
*
|
|
3935
3935
|
* @example
|
|
3936
3936
|
* ```typescript
|
|
3937
|
-
* //
|
|
3938
|
-
* { slippage: 100 }
|
|
3939
|
-
*
|
|
3940
|
-
* // 0.5% slippage - conservative, tighter protection
|
|
3937
|
+
* // 0.5% slippage (default) - allows price to move 0.5% unfavorably
|
|
3941
3938
|
* { slippage: 50 }
|
|
3942
3939
|
*
|
|
3940
|
+
* // 1% slippage - slightly more flexible
|
|
3941
|
+
* { slippage: 100 }
|
|
3942
|
+
*
|
|
3943
3943
|
* // 5% slippage - aggressive, more lenient
|
|
3944
3944
|
* { slippage: 500 }
|
|
3945
3945
|
*
|
|
@@ -3987,7 +3987,7 @@ interface WithdrawTxData {
|
|
|
3987
3987
|
* chainId: 1,
|
|
3988
3988
|
* offerAmount: "1.0", // 1 vault share
|
|
3989
3989
|
* deadline: Math.floor(Date.now() / 1000) + 3600, // Optional: Defaults to 3 days from now
|
|
3990
|
-
* slippage:
|
|
3990
|
+
* slippage: 50, // Optional: Defaults to 0.5% slippage (DEFAULT_SLIPPAGE_BPS)
|
|
3991
3991
|
* });
|
|
3992
3992
|
* ```
|
|
3993
3993
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -3922,24 +3922,24 @@ type UserRequest = {
|
|
|
3922
3922
|
* @property {ChainId} chainId - ID of the chain where the withdrawal will occur
|
|
3923
3923
|
* @property {string} offerAmount - Amount of vault shares to withdraw as a decimal string
|
|
3924
3924
|
* @property {number} [deadline] - Unix timestamp when the request expires (optional)
|
|
3925
|
-
* @property {number} [slippage] - Maximum acceptable slippage in basis points (optional, default:
|
|
3925
|
+
* @property {number} [slippage] - Maximum acceptable slippage in basis points (optional, default: 50 for 0.5%)
|
|
3926
3926
|
*
|
|
3927
3927
|
* **Slippage Protection**:
|
|
3928
3928
|
* The slippage parameter protects users from unfavorable price movements during the withdrawal.
|
|
3929
3929
|
* It defines the maximum acceptable loss as a percentage of the initial share amount.
|
|
3930
3930
|
*
|
|
3931
|
-
* - Default:
|
|
3931
|
+
* - Default: 50 basis points (0.5% slippage tolerance, DEFAULT_SLIPPAGE_BPS)
|
|
3932
3932
|
* - Range: 0-10000 basis points (0-100%)
|
|
3933
3933
|
* - Formula: minimumAssets = shareAmount * (10000 - slippage) / 10000
|
|
3934
3934
|
*
|
|
3935
3935
|
* @example
|
|
3936
3936
|
* ```typescript
|
|
3937
|
-
* //
|
|
3938
|
-
* { slippage: 100 }
|
|
3939
|
-
*
|
|
3940
|
-
* // 0.5% slippage - conservative, tighter protection
|
|
3937
|
+
* // 0.5% slippage (default) - allows price to move 0.5% unfavorably
|
|
3941
3938
|
* { slippage: 50 }
|
|
3942
3939
|
*
|
|
3940
|
+
* // 1% slippage - slightly more flexible
|
|
3941
|
+
* { slippage: 100 }
|
|
3942
|
+
*
|
|
3943
3943
|
* // 5% slippage - aggressive, more lenient
|
|
3944
3944
|
* { slippage: 500 }
|
|
3945
3945
|
*
|
|
@@ -3987,7 +3987,7 @@ interface WithdrawTxData {
|
|
|
3987
3987
|
* chainId: 1,
|
|
3988
3988
|
* offerAmount: "1.0", // 1 vault share
|
|
3989
3989
|
* deadline: Math.floor(Date.now() / 1000) + 3600, // Optional: Defaults to 3 days from now
|
|
3990
|
-
* slippage:
|
|
3990
|
+
* slippage: 50, // Optional: Defaults to 0.5% slippage (DEFAULT_SLIPPAGE_BPS)
|
|
3991
3991
|
* });
|
|
3992
3992
|
* ```
|
|
3993
3993
|
*
|