@paxoslabs/amplify-sdk 0.2.0-beta.0 → 0.2.0-beta.1
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,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4ZYCWOFI_js = require('./chunk-4ZYCWOFI.js');
|
|
4
4
|
var chunkICKDAKVS_js = require('./chunk-ICKDAKVS.js');
|
|
5
5
|
var chunkRUIAH5HY_js = require('./chunk-RUIAH5HY.js');
|
|
6
6
|
var chunk3I3PYX2F_js = require('./chunk-3I3PYX2F.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkCK3BIPWI_js = require('./chunk-CK3BIPWI.js');
|
|
8
8
|
var viem = require('viem');
|
|
9
9
|
|
|
10
10
|
var isDepositSpendApproved = async ({
|
|
@@ -15,13 +15,13 @@ var isDepositSpendApproved = async ({
|
|
|
15
15
|
}) => {
|
|
16
16
|
try {
|
|
17
17
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
18
|
-
const config = await
|
|
18
|
+
const config = await chunkCK3BIPWI_js.findVaultByConfig({
|
|
19
19
|
yieldType,
|
|
20
20
|
chainId: normalizedChainId,
|
|
21
21
|
assetAddress: depositAssetAddress
|
|
22
22
|
});
|
|
23
23
|
if (!config) {
|
|
24
|
-
throw new
|
|
24
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
25
25
|
`Vault not found for ${yieldType} on chain ${normalizedChainId}`,
|
|
26
26
|
{
|
|
27
27
|
endpoint: "isDepositSpendApproved"
|
|
@@ -30,7 +30,7 @@ var isDepositSpendApproved = async ({
|
|
|
30
30
|
}
|
|
31
31
|
const boringVaultAddress = config.vault.boringVaultAddress;
|
|
32
32
|
if (!boringVaultAddress) {
|
|
33
|
-
throw new
|
|
33
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
34
34
|
`BoringVault contract address not configured for vault ${config.id}`,
|
|
35
35
|
{
|
|
36
36
|
endpoint: "isDepositSpendApproved"
|
|
@@ -45,7 +45,7 @@ var isDepositSpendApproved = async ({
|
|
|
45
45
|
domainSeparator,
|
|
46
46
|
tokenName,
|
|
47
47
|
tokenVersion
|
|
48
|
-
} = await
|
|
48
|
+
} = await chunk4ZYCWOFI_js.getTokenPermitInfoWithAllowance({
|
|
49
49
|
chainId: normalizedChainId,
|
|
50
50
|
tokenAddress: depositAssetAddress,
|
|
51
51
|
owner: recipientAddress,
|
|
@@ -64,10 +64,10 @@ var isDepositSpendApproved = async ({
|
|
|
64
64
|
error: null
|
|
65
65
|
};
|
|
66
66
|
} catch (error) {
|
|
67
|
-
if (error instanceof
|
|
67
|
+
if (error instanceof chunkCK3BIPWI_js.APIError) {
|
|
68
68
|
throw error;
|
|
69
69
|
}
|
|
70
|
-
throw new
|
|
70
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
71
71
|
`Failed to check deposit approval: ${error instanceof Error ? error.message : String(error)}`,
|
|
72
72
|
{
|
|
73
73
|
endpoint: "isDepositSpendApproved",
|
|
@@ -84,13 +84,13 @@ var isWithdrawalSpendApproved = async ({
|
|
|
84
84
|
}) => {
|
|
85
85
|
try {
|
|
86
86
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
87
|
-
const config = await
|
|
87
|
+
const config = await chunkCK3BIPWI_js.findVaultByConfig({
|
|
88
88
|
yieldType,
|
|
89
89
|
chainId: normalizedChainId,
|
|
90
90
|
assetAddress: wantAssetAddress
|
|
91
91
|
});
|
|
92
92
|
if (!config) {
|
|
93
|
-
throw new
|
|
93
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
94
94
|
`Vault not found for ${yieldType} on chain ${normalizedChainId}`,
|
|
95
95
|
{
|
|
96
96
|
endpoint: "isWithdrawalSpendApproved"
|
|
@@ -99,18 +99,18 @@ var isWithdrawalSpendApproved = async ({
|
|
|
99
99
|
}
|
|
100
100
|
const boringVaultAddress = config.vault.boringVaultAddress;
|
|
101
101
|
if (!boringVaultAddress) {
|
|
102
|
-
throw new
|
|
102
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
103
103
|
`BoringVault contract address not configured for vault ${config.id}`,
|
|
104
104
|
{
|
|
105
105
|
endpoint: "isWithdrawalSpendApproved"
|
|
106
106
|
}
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
|
-
const [allowance, decimals] = await
|
|
109
|
+
const [allowance, decimals] = await chunk4ZYCWOFI_js.getErc20AllowanceWithDecimals({
|
|
110
110
|
chainId: normalizedChainId,
|
|
111
111
|
tokenAddress: boringVaultAddress,
|
|
112
112
|
recipientAddress,
|
|
113
|
-
spenderAddress:
|
|
113
|
+
spenderAddress: chunkCK3BIPWI_js.ATOMIC_QUEUE_CONTRACT_ADDRESS
|
|
114
114
|
});
|
|
115
115
|
if (allowance.status === "failure" || decimals.status === "failure") {
|
|
116
116
|
return {
|
|
@@ -129,10 +129,10 @@ var isWithdrawalSpendApproved = async ({
|
|
|
129
129
|
error: null
|
|
130
130
|
};
|
|
131
131
|
} catch (error) {
|
|
132
|
-
if (error instanceof
|
|
132
|
+
if (error instanceof chunkCK3BIPWI_js.APIError) {
|
|
133
133
|
throw error;
|
|
134
134
|
}
|
|
135
|
-
throw new
|
|
135
|
+
throw new chunkCK3BIPWI_js.APIError(
|
|
136
136
|
`Failed to check withdrawal approval: ${error instanceof Error ? error.message : String(error)}`,
|
|
137
137
|
{ endpoint: "isWithdrawalSpendApproved", cause: error }
|
|
138
138
|
);
|
|
@@ -164,7 +164,7 @@ var getDepositExchangeRate = async ({
|
|
|
164
164
|
if (!tokenAddress) {
|
|
165
165
|
throw new Error(`Token address not found for ${depositTokenSymbol}`);
|
|
166
166
|
}
|
|
167
|
-
const [decimals, rate] = await
|
|
167
|
+
const [decimals, rate] = await chunk4ZYCWOFI_js.getRateInQuoteWithAssetDecimals({
|
|
168
168
|
assetAddress: tokenAddress,
|
|
169
169
|
accountantAddress: vault.contracts.accountant,
|
|
170
170
|
chainId: sourceChainId
|
|
@@ -212,7 +212,7 @@ var getWithdrawExchangeRate = async ({
|
|
|
212
212
|
if (!tokenAddress) {
|
|
213
213
|
throw new Error(`Token address not found for ${wantTokenSymbol}`);
|
|
214
214
|
}
|
|
215
|
-
const [decimals, rate] = await
|
|
215
|
+
const [decimals, rate] = await chunk4ZYCWOFI_js.getRateInQuoteWithAssetDecimals({
|
|
216
216
|
assetAddress: tokenAddress,
|
|
217
217
|
accountantAddress: vault.contracts.accountant,
|
|
218
218
|
chainId: sourceChainId
|
|
@@ -234,5 +234,5 @@ exports.getDepositExchangeRate = getDepositExchangeRate;
|
|
|
234
234
|
exports.getWithdrawExchangeRate = getWithdrawExchangeRate;
|
|
235
235
|
exports.isDepositSpendApproved = isDepositSpendApproved;
|
|
236
236
|
exports.isWithdrawalSpendApproved = isWithdrawalSpendApproved;
|
|
237
|
-
//# sourceMappingURL=chunk-
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
237
|
+
//# sourceMappingURL=chunk-IJBG5TTI.js.map
|
|
238
|
+
//# sourceMappingURL=chunk-IJBG5TTI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/display/approvals.ts","../src/display/exchange-rate.ts"],"names":["toChainId","findVaultByConfig","APIError","getTokenPermitInfoWithAllowance","formatUnits","getErc20AllowanceWithDecimals","ATOMIC_QUEUE_CONTRACT_ADDRESS","getVaultByKey","getRateInQuoteWithAssetDecimals","bigIntToNumberAsString"],"mappings":"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","file":"chunk-SMIA4ULA.js","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":["toChainId","findVaultByConfig","APIError","getTokenPermitInfoWithAllowance","formatUnits","getErc20AllowanceWithDecimals","ATOMIC_QUEUE_CONTRACT_ADDRESS","getVaultByKey","getRateInQuoteWithAssetDecimals","bigIntToNumberAsString"],"mappings":"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","file":"chunk-IJBG5TTI.js","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"]}
|
|
@@ -1084,5 +1084,5 @@ function clearChainsCache() {
|
|
|
1084
1084
|
}
|
|
1085
1085
|
|
|
1086
1086
|
export { APIError, API_BASE_URL, ATOMIC_QUEUE_CONTRACT_ADDRESS, CHAINLINK_ADDRESS, DEFAULT_APPROVAL_AMOUNT, DEFAULT_DEADLINE, LogLevel, NATIVE_TOKEN_FOR_BRIDGE_FEE, clearChainsCache, fetchSupportedAssets, fetchVaults, findVaultByConfig, getAssetsFromCache, getCache, getChainFromConfig, getLogger, getWithdrawSupportedAssets, initAmplifySDK, initializeCache, refreshVaultCache, setLogLevel, setLogger };
|
|
1087
|
-
//# sourceMappingURL=chunk-
|
|
1088
|
-
//# sourceMappingURL=chunk-
|
|
1087
|
+
//# sourceMappingURL=chunk-NZDHFDPQ.mjs.map
|
|
1088
|
+
//# sourceMappingURL=chunk-NZDHFDPQ.mjs.map
|