@paxoslabs/amplify-sdk 0.0.1-alpha.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/CHANGELOG.md +112 -0
- package/LICENSE +28 -0
- package/README.md +533 -0
- package/dist/amplify-sdk-api-B5hBTGrB.d.ts +258 -0
- package/dist/amplify-sdk-api-DPrRhynk.d.mts +258 -0
- package/dist/chunk-3I3PYX2F.js +45 -0
- package/dist/chunk-3I3PYX2F.js.map +1 -0
- package/dist/chunk-7RWWVUHP.mjs +39 -0
- package/dist/chunk-7RWWVUHP.mjs.map +1 -0
- package/dist/chunk-AFWUOS3M.js +15 -0
- package/dist/chunk-AFWUOS3M.js.map +1 -0
- package/dist/chunk-BDXS57YH.js +828 -0
- package/dist/chunk-BDXS57YH.js.map +1 -0
- package/dist/chunk-FYNPQXCR.mjs +46 -0
- package/dist/chunk-FYNPQXCR.mjs.map +1 -0
- package/dist/chunk-GE2VQUPP.mjs +228 -0
- package/dist/chunk-GE2VQUPP.mjs.map +1 -0
- package/dist/chunk-ICKDAKVS.js +16 -0
- package/dist/chunk-ICKDAKVS.js.map +1 -0
- package/dist/chunk-ISO6Z7LD.mjs +809 -0
- package/dist/chunk-ISO6Z7LD.mjs.map +1 -0
- package/dist/chunk-ITB7FXG4.js +14 -0
- package/dist/chunk-ITB7FXG4.js.map +1 -0
- package/dist/chunk-J3662HYT.mjs +29 -0
- package/dist/chunk-J3662HYT.mjs.map +1 -0
- package/dist/chunk-JLXNOGZB.js +2061 -0
- package/dist/chunk-JLXNOGZB.js.map +1 -0
- package/dist/chunk-O5P6SP2O.js +233 -0
- package/dist/chunk-O5P6SP2O.js.map +1 -0
- package/dist/chunk-R663BFAZ.mjs +14 -0
- package/dist/chunk-R663BFAZ.mjs.map +1 -0
- package/dist/chunk-RUIAH5HY.js +32 -0
- package/dist/chunk-RUIAH5HY.js.map +1 -0
- package/dist/chunk-SIR2TCAR.mjs +13 -0
- package/dist/chunk-SIR2TCAR.mjs.map +1 -0
- package/dist/chunk-XXHRCCZS.mjs +11 -0
- package/dist/chunk-XXHRCCZS.mjs.map +1 -0
- package/dist/chunk-ZSFIOWWT.js +49 -0
- package/dist/chunk-ZSFIOWWT.js.map +1 -0
- package/dist/chunk-ZZBZIDZP.mjs +2050 -0
- package/dist/chunk-ZZBZIDZP.mjs.map +1 -0
- package/dist/config-B-u3VqEX.d.mts +21 -0
- package/dist/config-B-u3VqEX.d.ts +21 -0
- package/dist/config-BQynVNDC.d.mts +101 -0
- package/dist/config-BQynVNDC.d.ts +101 -0
- package/dist/core.d.mts +152 -0
- package/dist/core.d.ts +152 -0
- package/dist/core.js +187 -0
- package/dist/core.js.map +1 -0
- package/dist/core.mjs +150 -0
- package/dist/core.mjs.map +1 -0
- package/dist/display.d.mts +25 -0
- package/dist/display.d.ts +25 -0
- package/dist/display.js +124 -0
- package/dist/display.js.map +1 -0
- package/dist/display.mjs +105 -0
- package/dist/display.mjs.map +1 -0
- package/dist/exchange-rate-CRA_CMaX.d.mts +65 -0
- package/dist/exchange-rate-D3_FVgqa.d.ts +65 -0
- package/dist/index.d.mts +3236 -0
- package/dist/index.d.ts +3236 -0
- package/dist/index.js +1115 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1047 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils.d.mts +111 -0
- package/dist/utils.d.ts +111 -0
- package/dist/utils.js +51 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +17 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/vault-config-BNzhv3QV.d.ts +15 -0
- package/dist/vault-config-BjSE7oL8.d.mts +15 -0
- package/dist/vaults.d.mts +6 -0
- package/dist/vaults.d.ts +6 -0
- package/dist/vaults.js +13 -0
- package/dist/vaults.js.map +1 -0
- package/dist/vaults.mjs +4 -0
- package/dist/vaults.mjs.map +1 -0
- package/package.json +142 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/boring-vault.ts","../src/abi/chainlink-abi.ts","../src/api/chainlink.ts","../src/api/withdraw-assets.ts","../src/api/solver-slippage.ts"],"names":[],"mappings":"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","file":"core.mjs","sourcesContent":["import { type Address, erc20Abi } from \"viem\";\nimport { getClient } from \"../lib/viem/client\";\nimport type { ChainId } from \"./vault-config\";\n\ntype AllowanceProps = {\n tokenAddress: Address;\n spenderAddress: Address;\n userAddress: Address;\n chainId: ChainId;\n};\n\nexport async function getVaultAllowance({\n tokenAddress,\n spenderAddress,\n userAddress,\n chainId,\n}: AllowanceProps): Promise<bigint> {\n const client = await getClient(chainId);\n const allowance = await client.readContract({\n abi: erc20Abi,\n address: tokenAddress,\n functionName: \"allowance\",\n args: [userAddress, spenderAddress],\n });\n\n return allowance;\n}\n\ntype TotalSupplyProps = {\n tokenAddress: Address;\n chainId: ChainId;\n};\n\nexport async function getTotalSupply({\n tokenAddress,\n chainId,\n}: TotalSupplyProps): Promise<bigint> {\n const client = await getClient(chainId);\n const totalSupply = await client.readContract({\n abi: erc20Abi,\n address: tokenAddress,\n functionName: \"totalSupply\",\n });\n\n return totalSupply;\n}\n","export const ChainlinkAbi = [\n {\n type: \"function\",\n name: \"latestRoundData\",\n inputs: [],\n outputs: [\n {\n name: \"roundId\",\n type: \"uint80\",\n internalType: \"uint80\",\n },\n {\n name: \"answer\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"startedAt\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"updatedAt\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"answeredInRound\",\n type: \"uint80\",\n internalType: \"uint80\",\n },\n ],\n stateMutability: \"view\",\n },\n];\n","import { ChainlinkAbi } from \"../abi/chainlink-abi\";\nimport { CHAINLINK_ADDRESS } from \"../constants\";\nimport { getClient } from \"../lib/viem/client\";\nimport type { ChainId } from \"./vault-config\";\n\ninterface GetEthPriceProps {\n chainId: ChainId;\n}\n\nexport async function getEthPrice({\n chainId,\n}: GetEthPriceProps): Promise<bigint> {\n const client = await getClient(chainId);\n const priceData = (await client.readContract({\n abi: ChainlinkAbi,\n address: CHAINLINK_ADDRESS,\n functionName: \"latestRoundData\",\n args: [],\n })) as Array<bigint>;\n\n if (!priceData || !priceData[1]) {\n throw new Error(\"Failed to fetch ETH price from Chainlink\");\n }\n\n return priceData[1];\n}\n","import type { Address } from \"viem\";\nimport { NUCLEUS_BASE_URL } from \"../constants\";\nimport type { ChainId } from \"./vault-config\";\n\nexport interface WithdrawAssetsResponse {\n [chainId: string]: {\n [vaultAddress: string]: {\n [tokenAddress: string]: number;\n };\n };\n}\n\nlet assetsCache: WithdrawAssetsResponse | null = null;\n\n/**\n * Interface for optional parameters when fetching withdraw assets\n */\ninterface FetchWithdrawAssetsParams {\n chainId?: ChainId;\n vaultAddress?: Address;\n}\n\n/**\n * Constructs the URL with optional query parameters\n */\nfunction constructUrl(params?: FetchWithdrawAssetsParams): string {\n const withdrawAssetsUrl = `${NUCLEUS_BASE_URL}/withdraw-assets`;\n if (!params) return withdrawAssetsUrl;\n\n const queryParams = new URLSearchParams();\n if (params.chainId) queryParams.append(\"chainId\", params.chainId.toString());\n if (params.vaultAddress)\n queryParams.append(\"vaultAddress\", params.vaultAddress.toLowerCase());\n\n return `${withdrawAssetsUrl}?${queryParams.toString()}`;\n}\n\n/**\n * Fetches withdraw assets configuration from the API\n * @param params Optional parameters for chainId and vaultAddress\n * @returns Promise<WithdrawAssetsResponse>\n */\nasync function fetchWithdrawAssets(\n params?: FetchWithdrawAssetsParams\n): Promise<WithdrawAssetsResponse> {\n // If no specific params are provided and we have cached data, return it\n if (!params && assetsCache) {\n return assetsCache;\n }\n\n try {\n const url = constructUrl(params);\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: WithdrawAssetsResponse = await response.json();\n\n // Only cache the full response (when no params are provided)\n if (!params) {\n assetsCache = data;\n }\n\n return data;\n } catch (error: unknown) {\n throw new Error(\n `An unknown error occurred while fetching withdraw assets: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n}\n\n/**\n * Fetches withdraw assets for a specific chain\n * @param chainId The chain ID to fetch assets for\n * @returns Promise<WithdrawAssetsResponse[string]>\n */\nasync function fetchChainWithdrawAssets(\n chainId: ChainId\n): Promise<WithdrawAssetsResponse[string]> {\n const assets = await fetchWithdrawAssets({ chainId });\n return assets[chainId.toString()];\n}\n\n/**\n * Fetches withdraw assets for a specific vault on a chain\n * @param chainId The chain ID\n * @param vaultAddress The vault address\n * @returns Promise<WithdrawAssetsResponse[string][string]>\n */\nasync function fetchVaultWithdrawAssets(\n chainId: ChainId,\n vaultAddress: Address\n): Promise<WithdrawAssetsResponse[string][string]> {\n const assets = await fetchWithdrawAssets({ chainId, vaultAddress });\n return assets[chainId.toString()]?.[vaultAddress.toLowerCase()];\n}\n\n/**\n * Clears the assets cache\n */\nfunction clearAssetsCache(): void {\n assetsCache = null;\n}\n\nexport {\n clearAssetsCache,\n fetchChainWithdrawAssets,\n fetchVaultWithdrawAssets,\n fetchWithdrawAssets,\n type FetchWithdrawAssetsParams,\n};\n","import type { Address } from \"viem\";\nimport { DEFAULT_SLIPPAGE_BPS } from \"../constants/config\";\nimport type { ChainId } from \"./vault-config\";\nimport { fetchWithdrawAssets } from \"./withdraw-assets\";\n\n/**\n * Gets the slippage value for a specific asset in a vault\n * @param chainId The chain ID\n * @param vaultAddress The boring vault address\n * @param tokenAddress The token address\n * @param defaultSlippage Optional default slippage value if none is found (defaults to 0)\n * @returns Promise<number> The slippage value\n * @throws {AssetSlippageError} If there's an error fetching or processing the slippage data\n */\nexport async function getAssetSlippage(\n chainId: ChainId,\n vaultAddress: Address,\n tokenAddress: Address,\n defaultSlippage: number = DEFAULT_SLIPPAGE_BPS\n) {\n try {\n // Fetch withdraw assets data, using cache if available\n const withdrawAssets = await fetchWithdrawAssets();\n if (!withdrawAssets) {\n return defaultSlippage;\n }\n if (!withdrawAssets[chainId.toString()]) {\n return defaultSlippage;\n }\n if (!withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()]) {\n return defaultSlippage;\n }\n if (\n !withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()][\n tokenAddress.toLowerCase()\n ]\n ) {\n return defaultSlippage;\n }\n\n return withdrawAssets[chainId.toString()][vaultAddress.toLowerCase()][\n tokenAddress.toLowerCase()\n ];\n } catch (error) {\n // Re-throw with contextual information\n throw new Error(\n `Error fetching asset slippage for chain ${chainId}: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { g as getDepositExchangeRate, a as getWithdrawExchangeRate, i as isDepositSpendApproved, b as isWithdrawalSpendApproved } from './exchange-rate-CRA_CMaX.mjs';
|
|
2
|
+
import { Address } from 'viem';
|
|
3
|
+
import { C as ChainId } from './vault-config-BjSE7oL8.mjs';
|
|
4
|
+
import { V as VaultKey } from './config-BQynVNDC.mjs';
|
|
5
|
+
import './config-B-u3VqEX.mjs';
|
|
6
|
+
|
|
7
|
+
interface GetPreviewFeeParams {
|
|
8
|
+
vaultKey: VaultKey;
|
|
9
|
+
bridgeAmount: bigint;
|
|
10
|
+
sourceChainId: ChainId;
|
|
11
|
+
destinationChainId: ChainId;
|
|
12
|
+
userAddress: Address;
|
|
13
|
+
nativeTokenForBridgeFee?: Address;
|
|
14
|
+
}
|
|
15
|
+
declare const getBridgeFee: ({ vaultKey, bridgeAmount, sourceChainId, destinationChainId, userAddress, nativeTokenForBridgeFee, }: GetPreviewFeeParams) => Promise<bigint>;
|
|
16
|
+
|
|
17
|
+
type VaultStatusParams = {
|
|
18
|
+
vaultKey: VaultKey;
|
|
19
|
+
chainId: ChainId;
|
|
20
|
+
};
|
|
21
|
+
declare const getVaultStatus: ({ vaultKey, chainId }: VaultStatusParams) => Promise<{
|
|
22
|
+
isPaused: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
|
|
25
|
+
export { getBridgeFee, getVaultStatus };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { g as getDepositExchangeRate, a as getWithdrawExchangeRate, i as isDepositSpendApproved, b as isWithdrawalSpendApproved } from './exchange-rate-D3_FVgqa.js';
|
|
2
|
+
import { Address } from 'viem';
|
|
3
|
+
import { C as ChainId } from './vault-config-BNzhv3QV.js';
|
|
4
|
+
import { V as VaultKey } from './config-BQynVNDC.js';
|
|
5
|
+
import './config-B-u3VqEX.js';
|
|
6
|
+
|
|
7
|
+
interface GetPreviewFeeParams {
|
|
8
|
+
vaultKey: VaultKey;
|
|
9
|
+
bridgeAmount: bigint;
|
|
10
|
+
sourceChainId: ChainId;
|
|
11
|
+
destinationChainId: ChainId;
|
|
12
|
+
userAddress: Address;
|
|
13
|
+
nativeTokenForBridgeFee?: Address;
|
|
14
|
+
}
|
|
15
|
+
declare const getBridgeFee: ({ vaultKey, bridgeAmount, sourceChainId, destinationChainId, userAddress, nativeTokenForBridgeFee, }: GetPreviewFeeParams) => Promise<bigint>;
|
|
16
|
+
|
|
17
|
+
type VaultStatusParams = {
|
|
18
|
+
vaultKey: VaultKey;
|
|
19
|
+
chainId: ChainId;
|
|
20
|
+
};
|
|
21
|
+
declare const getVaultStatus: ({ vaultKey, chainId }: VaultStatusParams) => Promise<{
|
|
22
|
+
isPaused: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
|
|
25
|
+
export { getBridgeFee, getVaultStatus };
|
package/dist/display.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkO5P6SP2O_js = require('./chunk-O5P6SP2O.js');
|
|
4
|
+
var chunkZSFIOWWT_js = require('./chunk-ZSFIOWWT.js');
|
|
5
|
+
require('./chunk-JLXNOGZB.js');
|
|
6
|
+
var chunkICKDAKVS_js = require('./chunk-ICKDAKVS.js');
|
|
7
|
+
require('./chunk-RUIAH5HY.js');
|
|
8
|
+
require('./chunk-3I3PYX2F.js');
|
|
9
|
+
var chunkBDXS57YH_js = require('./chunk-BDXS57YH.js');
|
|
10
|
+
|
|
11
|
+
// src/vaults/bridge.ts
|
|
12
|
+
var prepareBridgeContractArg = ({
|
|
13
|
+
bridgeChainIdentifier,
|
|
14
|
+
userAddress,
|
|
15
|
+
nativeTokenForBridgeFee = chunkBDXS57YH_js.NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
16
|
+
}) => {
|
|
17
|
+
return {
|
|
18
|
+
chainSelector: bridgeChainIdentifier,
|
|
19
|
+
destinationChainReceiver: userAddress,
|
|
20
|
+
bridgeFeeToken: nativeTokenForBridgeFee,
|
|
21
|
+
messageGas: BigInt(1e5),
|
|
22
|
+
data: "0x"
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/display/bridge-fees.ts
|
|
27
|
+
var getBridgeFee = async ({
|
|
28
|
+
vaultKey,
|
|
29
|
+
bridgeAmount,
|
|
30
|
+
sourceChainId,
|
|
31
|
+
destinationChainId,
|
|
32
|
+
userAddress,
|
|
33
|
+
nativeTokenForBridgeFee = chunkBDXS57YH_js.NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
34
|
+
}) => {
|
|
35
|
+
const vault = await chunkICKDAKVS_js.getVaultByKey(vaultKey);
|
|
36
|
+
if (!vault) {
|
|
37
|
+
throw new Error(`Invalid vault key: ${vaultKey}`);
|
|
38
|
+
}
|
|
39
|
+
if (!vault.contracts) {
|
|
40
|
+
throw new Error(`Contracts not configured for vault ${vaultKey}`);
|
|
41
|
+
}
|
|
42
|
+
if (!vault.contracts.boringVault) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
`BoringVault contract not configured for vault ${vaultKey}`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
if (!vault.contracts.accountant) {
|
|
48
|
+
throw new Error(`Accountant contract not configured for vault ${vaultKey}`);
|
|
49
|
+
}
|
|
50
|
+
if (!vault.contracts.teller) {
|
|
51
|
+
throw new Error(`Teller contract not configured for vault ${vaultKey}`);
|
|
52
|
+
}
|
|
53
|
+
const sourceChain = vault.withdraw.sourceChains[sourceChainId];
|
|
54
|
+
if (!sourceChain) {
|
|
55
|
+
throw new Error(`Source chain not configured for vault ${vaultKey}`);
|
|
56
|
+
}
|
|
57
|
+
const destinationChain = sourceChain.destinationChains[destinationChainId];
|
|
58
|
+
if (!destinationChain) {
|
|
59
|
+
throw new Error(`Destination chain not configured for vault ${vaultKey}`);
|
|
60
|
+
}
|
|
61
|
+
const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;
|
|
62
|
+
const bridgeContractArg = prepareBridgeContractArg({
|
|
63
|
+
bridgeChainIdentifier,
|
|
64
|
+
userAddress,
|
|
65
|
+
nativeTokenForBridgeFee
|
|
66
|
+
});
|
|
67
|
+
const previewFee = await chunkZSFIOWWT_js.getPreviewFee({
|
|
68
|
+
shareAmount: bridgeAmount,
|
|
69
|
+
bridgeData: bridgeContractArg,
|
|
70
|
+
contractAddress: vault.contracts.teller,
|
|
71
|
+
chainId: sourceChainId
|
|
72
|
+
});
|
|
73
|
+
return previewFee;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// src/display/vault-status.ts
|
|
77
|
+
var getVaultStatus = async ({ vaultKey, chainId }) => {
|
|
78
|
+
const vault = await chunkICKDAKVS_js.getVaultByKey(vaultKey);
|
|
79
|
+
if (!vault) {
|
|
80
|
+
throw new Error(`Vault not found: ${vaultKey}`);
|
|
81
|
+
}
|
|
82
|
+
const tellerAddress = vault.contracts.teller;
|
|
83
|
+
const accountantAddress = vault.contracts.accountant;
|
|
84
|
+
const [tellerStatus, accountantStatus] = await chunkZSFIOWWT_js.getPausedStates({
|
|
85
|
+
accountantAddress,
|
|
86
|
+
tellerAddress,
|
|
87
|
+
chainId
|
|
88
|
+
});
|
|
89
|
+
if (tellerStatus.status === "failure") {
|
|
90
|
+
throw new Error(tellerStatus.error.message);
|
|
91
|
+
}
|
|
92
|
+
if (accountantStatus.status === "failure") {
|
|
93
|
+
throw new Error(accountantStatus.error.message);
|
|
94
|
+
}
|
|
95
|
+
if (tellerStatus.result === true || accountantStatus.result[7] === true) {
|
|
96
|
+
return {
|
|
97
|
+
isPaused: true
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
isPaused: false
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
Object.defineProperty(exports, "getDepositExchangeRate", {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () { return chunkO5P6SP2O_js.getDepositExchangeRate; }
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(exports, "getWithdrawExchangeRate", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function () { return chunkO5P6SP2O_js.getWithdrawExchangeRate; }
|
|
112
|
+
});
|
|
113
|
+
Object.defineProperty(exports, "isDepositSpendApproved", {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: function () { return chunkO5P6SP2O_js.isDepositSpendApproved; }
|
|
116
|
+
});
|
|
117
|
+
Object.defineProperty(exports, "isWithdrawalSpendApproved", {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
get: function () { return chunkO5P6SP2O_js.isWithdrawalSpendApproved; }
|
|
120
|
+
});
|
|
121
|
+
exports.getBridgeFee = getBridgeFee;
|
|
122
|
+
exports.getVaultStatus = getVaultStatus;
|
|
123
|
+
//# sourceMappingURL=display.js.map
|
|
124
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vaults/bridge.ts","../src/display/bridge-fees.ts","../src/display/vault-status.ts"],"names":["NATIVE_TOKEN_FOR_BRIDGE_FEE","getVaultByKey","getPreviewFee","getPausedStates"],"mappings":"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","file":"display.js","sourcesContent":["/**\n * @file Bridge functionality for cross-chain operations\n * @module vaults/bridge\n */\n\nimport type { Address } from \"viem\";\nimport { getVaultByKey } from \".\";\nimport { TellerAbi } from \"../abi/teller-abi\";\nimport type { BridgeData } from \"../api/teller\";\nimport { getPreviewFee } from \"../api/teller\";\nimport { type ChainId, toChainId } from \"../api/vault-config\";\nimport { NATIVE_TOKEN_FOR_BRIDGE_FEE } from \"../constants\";\nimport type { VaultKey } from \"./config\";\n\n/**\n * Parameters for preparing bridge contract arguments\n * @interface PrepareBridgeContractArgParams\n * @property {number} bridgeChainIdentifier - Chain identifier for the bridge protocol\n * @property {Address} userAddress - Ethereum address of the user initiating the bridge\n * @property {Address} [nativeTokenForBridgeFee] - Optional address of the native token used for bridge fees\n */\ninterface PrepareBridgeContractArgParams {\n bridgeChainIdentifier: number;\n userAddress: Address;\n nativeTokenForBridgeFee?: Address;\n}\n\n// Creates a standardized bridge data object for cross-chain transactions\n// with default values for gas limits and other bridge protocol parameters\nconst prepareBridgeContractArg = ({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE,\n}: PrepareBridgeContractArgParams): BridgeData => {\n return {\n chainSelector: bridgeChainIdentifier,\n destinationChainReceiver: userAddress,\n bridgeFeeToken: nativeTokenForBridgeFee,\n messageGas: BigInt(100000),\n data: \"0x\" as never,\n };\n};\n\n/**\n * Parameters for preparing a cross-chain bridge transaction\n * @interface PrepareBridgeTransactionParams\n * @property {VaultKey} vaultKey - Unique identifier for the vault\n * @property {bigint} bridgeAmount - Amount of shares to bridge (in base units)\n * @property {ChainId} sourceChainId - Chain ID where shares currently exist\n * @property {ChainId} destinationChainId - Chain ID where shares will be bridged to\n * @property {Address} userAddress - Ethereum address of the user initiating the bridge\n */\ninterface PrepareBridgeTransactionParams {\n vaultKey: VaultKey;\n bridgeAmount: bigint;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n userAddress: Address;\n}\n\n/**\n * Transaction data for executing a cross-chain bridge operation\n * @interface BridgeTransactionData\n * @property {typeof TellerAbi} abi - ABI for the CrossChainTeller contract\n * @property {Address} address - Address of the CrossChainTeller contract\n * @property {string} functionName - Name of the function to call on the contract\n * @property {[bigint, BridgeData]} args - Arguments for the bridge function:\n * [amount, bridgeArgs]\n * @property {number} chainId - ID of the chain where the transaction should be executed\n * @property {bigint} value - Amount of native token to send with the transaction\n */\ninterface BridgeTransactionData {\n abi: typeof TellerAbi;\n address: Address;\n functionName: \"bridge\";\n args: [bigint, BridgeData];\n chainId: number;\n value: bigint;\n}\n\n// Example usage:\n// const bridgeData = await prepareBridgeData({\n// vaultKey: 'bobaeth',\n// bridgeAmount: BigInt('1000000000000000000'), // 1 token\n// sourceChainId: 288, // Boba network\n// userAddress: '0x1234...',\n// });\nconst prepareBridgeTransactionData = async ({\n vaultKey,\n bridgeAmount,\n sourceChainId,\n destinationChainId,\n userAddress,\n}: PrepareBridgeTransactionParams): Promise<BridgeTransactionData> => {\n const nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE;\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Invalid vault key: ${vaultKey}`);\n }\n\n if (!vault.contracts) {\n throw new Error(`Contracts not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.boringVault) {\n throw new Error(\n `BoringVault contract not configured for vault ${vaultKey}`\n );\n }\n\n if (!vault.contracts.accountant) {\n throw new Error(`Accountant contract not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.teller) {\n throw new Error(`Teller contract not configured for vault ${vaultKey}`);\n }\n\n const normalizedSourceChainId = toChainId(sourceChainId);\n const sourceChain = vault.withdraw.sourceChains[normalizedSourceChainId];\n if (!sourceChain) {\n throw new Error(`Source chain not configured for vault ${vaultKey}`);\n }\n\n const normalizedDestinationChainId = toChainId(destinationChainId);\n const destinationChain =\n sourceChain.destinationChains[normalizedDestinationChainId];\n if (!destinationChain) {\n throw new Error(`Destination chain not configured for vault ${vaultKey}`);\n }\n\n const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;\n\n const bridgeContractArg = prepareBridgeContractArg({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee,\n });\n\n const previewFee = await getPreviewFee({\n shareAmount: bridgeAmount,\n bridgeData: bridgeContractArg,\n contractAddress: vault.contracts.teller,\n chainId: normalizedSourceChainId,\n });\n\n return {\n abi: TellerAbi,\n address: vault.contracts.teller,\n functionName: \"bridge\",\n args: [bridgeAmount, bridgeContractArg],\n chainId: normalizedSourceChainId,\n value: previewFee,\n };\n};\n\nexport { prepareBridgeContractArg, prepareBridgeTransactionData };\nexport type { BridgeTransactionData };\n","import type { Address } from \"viem\";\nimport { getPreviewFee } from \"../api/teller\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { NATIVE_TOKEN_FOR_BRIDGE_FEE } from \"../constants\";\nimport { getVaultByKey } from \"../vaults\";\nimport { prepareBridgeContractArg } from \"../vaults/bridge\";\nimport type { VaultKey } from \"../vaults/config\";\n\ninterface GetPreviewFeeParams {\n vaultKey: VaultKey;\n bridgeAmount: bigint;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n userAddress: Address;\n nativeTokenForBridgeFee?: Address;\n}\n\nconst getBridgeFee = async ({\n vaultKey,\n bridgeAmount,\n sourceChainId,\n destinationChainId,\n userAddress,\n nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE,\n}: GetPreviewFeeParams) => {\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Invalid vault key: ${vaultKey}`);\n }\n\n if (!vault.contracts) {\n throw new Error(`Contracts not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.boringVault) {\n throw new Error(\n `BoringVault contract not configured for vault ${vaultKey}`\n );\n }\n\n if (!vault.contracts.accountant) {\n throw new Error(`Accountant contract not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.teller) {\n throw new Error(`Teller contract not configured for vault ${vaultKey}`);\n }\n\n const sourceChain = vault.withdraw.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(`Source chain not configured for vault ${vaultKey}`);\n }\n\n const destinationChain = sourceChain.destinationChains[destinationChainId];\n if (!destinationChain) {\n throw new Error(`Destination chain not configured for vault ${vaultKey}`);\n }\n\n const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;\n\n const bridgeContractArg = prepareBridgeContractArg({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee,\n });\n\n const previewFee = await getPreviewFee({\n shareAmount: bridgeAmount,\n bridgeData: bridgeContractArg,\n contractAddress: vault.contracts.teller,\n chainId: sourceChainId,\n });\n\n // TODO: use native currency from chains object returned from API\n return previewFee;\n};\n\nexport { getBridgeFee };\n","import { getPausedStates } from \"../api/multi-call\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { getVaultByKey } from \"../vaults\";\nimport type { VaultKey } from \"../vaults/config\";\n\ntype VaultStatusParams = {\n vaultKey: VaultKey;\n chainId: ChainId;\n};\n\nconst getVaultStatus = async ({ vaultKey, chainId }: VaultStatusParams) => {\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Vault not found: ${vaultKey}`);\n }\n\n const tellerAddress = vault.contracts.teller;\n const accountantAddress = vault.contracts.accountant;\n\n const [tellerStatus, accountantStatus] = await getPausedStates({\n accountantAddress,\n tellerAddress,\n chainId,\n });\n\n if (tellerStatus.status === \"failure\") {\n throw new Error(tellerStatus.error.message);\n }\n\n if (accountantStatus.status === \"failure\") {\n throw new Error(accountantStatus.error.message);\n }\n\n if (tellerStatus.result === true || accountantStatus.result[7] === true) {\n return {\n isPaused: true,\n };\n }\n\n return {\n isPaused: false,\n };\n};\n\nexport { getVaultStatus };\n"]}
|
package/dist/display.mjs
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export { getDepositExchangeRate, getWithdrawExchangeRate, isDepositSpendApproved, isWithdrawalSpendApproved } from './chunk-GE2VQUPP.mjs';
|
|
2
|
+
import { getPreviewFee, getPausedStates } from './chunk-FYNPQXCR.mjs';
|
|
3
|
+
import './chunk-ZZBZIDZP.mjs';
|
|
4
|
+
import { getVaultByKey } from './chunk-R663BFAZ.mjs';
|
|
5
|
+
import './chunk-J3662HYT.mjs';
|
|
6
|
+
import './chunk-7RWWVUHP.mjs';
|
|
7
|
+
import { NATIVE_TOKEN_FOR_BRIDGE_FEE } from './chunk-ISO6Z7LD.mjs';
|
|
8
|
+
|
|
9
|
+
// src/vaults/bridge.ts
|
|
10
|
+
var prepareBridgeContractArg = ({
|
|
11
|
+
bridgeChainIdentifier,
|
|
12
|
+
userAddress,
|
|
13
|
+
nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
14
|
+
}) => {
|
|
15
|
+
return {
|
|
16
|
+
chainSelector: bridgeChainIdentifier,
|
|
17
|
+
destinationChainReceiver: userAddress,
|
|
18
|
+
bridgeFeeToken: nativeTokenForBridgeFee,
|
|
19
|
+
messageGas: BigInt(1e5),
|
|
20
|
+
data: "0x"
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/display/bridge-fees.ts
|
|
25
|
+
var getBridgeFee = async ({
|
|
26
|
+
vaultKey,
|
|
27
|
+
bridgeAmount,
|
|
28
|
+
sourceChainId,
|
|
29
|
+
destinationChainId,
|
|
30
|
+
userAddress,
|
|
31
|
+
nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE
|
|
32
|
+
}) => {
|
|
33
|
+
const vault = await getVaultByKey(vaultKey);
|
|
34
|
+
if (!vault) {
|
|
35
|
+
throw new Error(`Invalid vault key: ${vaultKey}`);
|
|
36
|
+
}
|
|
37
|
+
if (!vault.contracts) {
|
|
38
|
+
throw new Error(`Contracts not configured for vault ${vaultKey}`);
|
|
39
|
+
}
|
|
40
|
+
if (!vault.contracts.boringVault) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`BoringVault contract not configured for vault ${vaultKey}`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
if (!vault.contracts.accountant) {
|
|
46
|
+
throw new Error(`Accountant contract not configured for vault ${vaultKey}`);
|
|
47
|
+
}
|
|
48
|
+
if (!vault.contracts.teller) {
|
|
49
|
+
throw new Error(`Teller contract not configured for vault ${vaultKey}`);
|
|
50
|
+
}
|
|
51
|
+
const sourceChain = vault.withdraw.sourceChains[sourceChainId];
|
|
52
|
+
if (!sourceChain) {
|
|
53
|
+
throw new Error(`Source chain not configured for vault ${vaultKey}`);
|
|
54
|
+
}
|
|
55
|
+
const destinationChain = sourceChain.destinationChains[destinationChainId];
|
|
56
|
+
if (!destinationChain) {
|
|
57
|
+
throw new Error(`Destination chain not configured for vault ${vaultKey}`);
|
|
58
|
+
}
|
|
59
|
+
const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;
|
|
60
|
+
const bridgeContractArg = prepareBridgeContractArg({
|
|
61
|
+
bridgeChainIdentifier,
|
|
62
|
+
userAddress,
|
|
63
|
+
nativeTokenForBridgeFee
|
|
64
|
+
});
|
|
65
|
+
const previewFee = await getPreviewFee({
|
|
66
|
+
shareAmount: bridgeAmount,
|
|
67
|
+
bridgeData: bridgeContractArg,
|
|
68
|
+
contractAddress: vault.contracts.teller,
|
|
69
|
+
chainId: sourceChainId
|
|
70
|
+
});
|
|
71
|
+
return previewFee;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/display/vault-status.ts
|
|
75
|
+
var getVaultStatus = async ({ vaultKey, chainId }) => {
|
|
76
|
+
const vault = await getVaultByKey(vaultKey);
|
|
77
|
+
if (!vault) {
|
|
78
|
+
throw new Error(`Vault not found: ${vaultKey}`);
|
|
79
|
+
}
|
|
80
|
+
const tellerAddress = vault.contracts.teller;
|
|
81
|
+
const accountantAddress = vault.contracts.accountant;
|
|
82
|
+
const [tellerStatus, accountantStatus] = await getPausedStates({
|
|
83
|
+
accountantAddress,
|
|
84
|
+
tellerAddress,
|
|
85
|
+
chainId
|
|
86
|
+
});
|
|
87
|
+
if (tellerStatus.status === "failure") {
|
|
88
|
+
throw new Error(tellerStatus.error.message);
|
|
89
|
+
}
|
|
90
|
+
if (accountantStatus.status === "failure") {
|
|
91
|
+
throw new Error(accountantStatus.error.message);
|
|
92
|
+
}
|
|
93
|
+
if (tellerStatus.result === true || accountantStatus.result[7] === true) {
|
|
94
|
+
return {
|
|
95
|
+
isPaused: true
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
isPaused: false
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export { getBridgeFee, getVaultStatus };
|
|
104
|
+
//# sourceMappingURL=display.mjs.map
|
|
105
|
+
//# sourceMappingURL=display.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vaults/bridge.ts","../src/display/bridge-fees.ts","../src/display/vault-status.ts"],"names":[],"mappings":"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","file":"display.mjs","sourcesContent":["/**\n * @file Bridge functionality for cross-chain operations\n * @module vaults/bridge\n */\n\nimport type { Address } from \"viem\";\nimport { getVaultByKey } from \".\";\nimport { TellerAbi } from \"../abi/teller-abi\";\nimport type { BridgeData } from \"../api/teller\";\nimport { getPreviewFee } from \"../api/teller\";\nimport { type ChainId, toChainId } from \"../api/vault-config\";\nimport { NATIVE_TOKEN_FOR_BRIDGE_FEE } from \"../constants\";\nimport type { VaultKey } from \"./config\";\n\n/**\n * Parameters for preparing bridge contract arguments\n * @interface PrepareBridgeContractArgParams\n * @property {number} bridgeChainIdentifier - Chain identifier for the bridge protocol\n * @property {Address} userAddress - Ethereum address of the user initiating the bridge\n * @property {Address} [nativeTokenForBridgeFee] - Optional address of the native token used for bridge fees\n */\ninterface PrepareBridgeContractArgParams {\n bridgeChainIdentifier: number;\n userAddress: Address;\n nativeTokenForBridgeFee?: Address;\n}\n\n// Creates a standardized bridge data object for cross-chain transactions\n// with default values for gas limits and other bridge protocol parameters\nconst prepareBridgeContractArg = ({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE,\n}: PrepareBridgeContractArgParams): BridgeData => {\n return {\n chainSelector: bridgeChainIdentifier,\n destinationChainReceiver: userAddress,\n bridgeFeeToken: nativeTokenForBridgeFee,\n messageGas: BigInt(100000),\n data: \"0x\" as never,\n };\n};\n\n/**\n * Parameters for preparing a cross-chain bridge transaction\n * @interface PrepareBridgeTransactionParams\n * @property {VaultKey} vaultKey - Unique identifier for the vault\n * @property {bigint} bridgeAmount - Amount of shares to bridge (in base units)\n * @property {ChainId} sourceChainId - Chain ID where shares currently exist\n * @property {ChainId} destinationChainId - Chain ID where shares will be bridged to\n * @property {Address} userAddress - Ethereum address of the user initiating the bridge\n */\ninterface PrepareBridgeTransactionParams {\n vaultKey: VaultKey;\n bridgeAmount: bigint;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n userAddress: Address;\n}\n\n/**\n * Transaction data for executing a cross-chain bridge operation\n * @interface BridgeTransactionData\n * @property {typeof TellerAbi} abi - ABI for the CrossChainTeller contract\n * @property {Address} address - Address of the CrossChainTeller contract\n * @property {string} functionName - Name of the function to call on the contract\n * @property {[bigint, BridgeData]} args - Arguments for the bridge function:\n * [amount, bridgeArgs]\n * @property {number} chainId - ID of the chain where the transaction should be executed\n * @property {bigint} value - Amount of native token to send with the transaction\n */\ninterface BridgeTransactionData {\n abi: typeof TellerAbi;\n address: Address;\n functionName: \"bridge\";\n args: [bigint, BridgeData];\n chainId: number;\n value: bigint;\n}\n\n// Example usage:\n// const bridgeData = await prepareBridgeData({\n// vaultKey: 'bobaeth',\n// bridgeAmount: BigInt('1000000000000000000'), // 1 token\n// sourceChainId: 288, // Boba network\n// userAddress: '0x1234...',\n// });\nconst prepareBridgeTransactionData = async ({\n vaultKey,\n bridgeAmount,\n sourceChainId,\n destinationChainId,\n userAddress,\n}: PrepareBridgeTransactionParams): Promise<BridgeTransactionData> => {\n const nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE;\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Invalid vault key: ${vaultKey}`);\n }\n\n if (!vault.contracts) {\n throw new Error(`Contracts not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.boringVault) {\n throw new Error(\n `BoringVault contract not configured for vault ${vaultKey}`\n );\n }\n\n if (!vault.contracts.accountant) {\n throw new Error(`Accountant contract not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.teller) {\n throw new Error(`Teller contract not configured for vault ${vaultKey}`);\n }\n\n const normalizedSourceChainId = toChainId(sourceChainId);\n const sourceChain = vault.withdraw.sourceChains[normalizedSourceChainId];\n if (!sourceChain) {\n throw new Error(`Source chain not configured for vault ${vaultKey}`);\n }\n\n const normalizedDestinationChainId = toChainId(destinationChainId);\n const destinationChain =\n sourceChain.destinationChains[normalizedDestinationChainId];\n if (!destinationChain) {\n throw new Error(`Destination chain not configured for vault ${vaultKey}`);\n }\n\n const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;\n\n const bridgeContractArg = prepareBridgeContractArg({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee,\n });\n\n const previewFee = await getPreviewFee({\n shareAmount: bridgeAmount,\n bridgeData: bridgeContractArg,\n contractAddress: vault.contracts.teller,\n chainId: normalizedSourceChainId,\n });\n\n return {\n abi: TellerAbi,\n address: vault.contracts.teller,\n functionName: \"bridge\",\n args: [bridgeAmount, bridgeContractArg],\n chainId: normalizedSourceChainId,\n value: previewFee,\n };\n};\n\nexport { prepareBridgeContractArg, prepareBridgeTransactionData };\nexport type { BridgeTransactionData };\n","import type { Address } from \"viem\";\nimport { getPreviewFee } from \"../api/teller\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { NATIVE_TOKEN_FOR_BRIDGE_FEE } from \"../constants\";\nimport { getVaultByKey } from \"../vaults\";\nimport { prepareBridgeContractArg } from \"../vaults/bridge\";\nimport type { VaultKey } from \"../vaults/config\";\n\ninterface GetPreviewFeeParams {\n vaultKey: VaultKey;\n bridgeAmount: bigint;\n sourceChainId: ChainId;\n destinationChainId: ChainId;\n userAddress: Address;\n nativeTokenForBridgeFee?: Address;\n}\n\nconst getBridgeFee = async ({\n vaultKey,\n bridgeAmount,\n sourceChainId,\n destinationChainId,\n userAddress,\n nativeTokenForBridgeFee = NATIVE_TOKEN_FOR_BRIDGE_FEE,\n}: GetPreviewFeeParams) => {\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Invalid vault key: ${vaultKey}`);\n }\n\n if (!vault.contracts) {\n throw new Error(`Contracts not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.boringVault) {\n throw new Error(\n `BoringVault contract not configured for vault ${vaultKey}`\n );\n }\n\n if (!vault.contracts.accountant) {\n throw new Error(`Accountant contract not configured for vault ${vaultKey}`);\n }\n\n if (!vault.contracts.teller) {\n throw new Error(`Teller contract not configured for vault ${vaultKey}`);\n }\n\n const sourceChain = vault.withdraw.sourceChains[sourceChainId];\n if (!sourceChain) {\n throw new Error(`Source chain not configured for vault ${vaultKey}`);\n }\n\n const destinationChain = sourceChain.destinationChains[destinationChainId];\n if (!destinationChain) {\n throw new Error(`Destination chain not configured for vault ${vaultKey}`);\n }\n\n const bridgeChainIdentifier = destinationChain.bridge.chainIdentifier;\n\n const bridgeContractArg = prepareBridgeContractArg({\n bridgeChainIdentifier,\n userAddress,\n nativeTokenForBridgeFee,\n });\n\n const previewFee = await getPreviewFee({\n shareAmount: bridgeAmount,\n bridgeData: bridgeContractArg,\n contractAddress: vault.contracts.teller,\n chainId: sourceChainId,\n });\n\n // TODO: use native currency from chains object returned from API\n return previewFee;\n};\n\nexport { getBridgeFee };\n","import { getPausedStates } from \"../api/multi-call\";\nimport type { ChainId } from \"../api/vault-config\";\nimport { getVaultByKey } from \"../vaults\";\nimport type { VaultKey } from \"../vaults/config\";\n\ntype VaultStatusParams = {\n vaultKey: VaultKey;\n chainId: ChainId;\n};\n\nconst getVaultStatus = async ({ vaultKey, chainId }: VaultStatusParams) => {\n const vault = await getVaultByKey(vaultKey);\n if (!vault) {\n throw new Error(`Vault not found: ${vaultKey}`);\n }\n\n const tellerAddress = vault.contracts.teller;\n const accountantAddress = vault.contracts.accountant;\n\n const [tellerStatus, accountantStatus] = await getPausedStates({\n accountantAddress,\n tellerAddress,\n chainId,\n });\n\n if (tellerStatus.status === \"failure\") {\n throw new Error(tellerStatus.error.message);\n }\n\n if (accountantStatus.status === \"failure\") {\n throw new Error(accountantStatus.error.message);\n }\n\n if (tellerStatus.result === true || accountantStatus.result[7] === true) {\n return {\n isPaused: true,\n };\n }\n\n return {\n isPaused: false,\n };\n};\n\nexport { getVaultStatus };\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
import { C as ChainId } from './vault-config-BjSE7oL8.mjs';
|
|
3
|
+
import { Y as YieldType } from './config-B-u3VqEX.mjs';
|
|
4
|
+
import { V as VaultKey } from './config-BQynVNDC.mjs';
|
|
5
|
+
|
|
6
|
+
declare const isDepositSpendApproved: ({ yieldType, chainId, depositAssetAddress, userAddress, }: {
|
|
7
|
+
yieldType: YieldType;
|
|
8
|
+
chainId: ChainId;
|
|
9
|
+
depositAssetAddress: Address;
|
|
10
|
+
userAddress: Address;
|
|
11
|
+
}) => Promise<{
|
|
12
|
+
isApproved: boolean;
|
|
13
|
+
allowance: string;
|
|
14
|
+
allowanceAsBigInt: string;
|
|
15
|
+
decimals: number;
|
|
16
|
+
error: null;
|
|
17
|
+
}>;
|
|
18
|
+
declare const isWithdrawalSpendApproved: ({ yieldType, chainId, wantAssetAddress, userAddress, }: {
|
|
19
|
+
yieldType: YieldType;
|
|
20
|
+
chainId: ChainId;
|
|
21
|
+
wantAssetAddress: Address;
|
|
22
|
+
userAddress: Address;
|
|
23
|
+
}) => Promise<{
|
|
24
|
+
isApproved: boolean;
|
|
25
|
+
allowance: string;
|
|
26
|
+
allowanceAsBigInt: string;
|
|
27
|
+
decimals: string;
|
|
28
|
+
error: Error | undefined;
|
|
29
|
+
} | {
|
|
30
|
+
isApproved: boolean;
|
|
31
|
+
allowance: string;
|
|
32
|
+
allowanceAsBigInt: string;
|
|
33
|
+
decimals: number;
|
|
34
|
+
error: null;
|
|
35
|
+
}>;
|
|
36
|
+
|
|
37
|
+
interface GetDepositExchangeRateParams {
|
|
38
|
+
vaultKey: VaultKey;
|
|
39
|
+
sourceChainId: ChainId;
|
|
40
|
+
depositTokenSymbol: string;
|
|
41
|
+
minimumFractionDigits?: number;
|
|
42
|
+
maximumFractionDigits?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gets the deposit exchange rate for a vault (tokens per share)
|
|
46
|
+
* @throws {Error} If the token address is not found or if there's an error fetching the rate
|
|
47
|
+
* @returns Promise<string> The exchange rate as a formatted string representing how many deposit tokens are worth 1 share
|
|
48
|
+
*/
|
|
49
|
+
declare const getDepositExchangeRate: ({ vaultKey, sourceChainId, depositTokenSymbol, minimumFractionDigits, maximumFractionDigits, }: GetDepositExchangeRateParams) => Promise<string>;
|
|
50
|
+
interface GetWithdrawExchangeRateParams {
|
|
51
|
+
vaultKey: VaultKey;
|
|
52
|
+
sourceChainId: ChainId;
|
|
53
|
+
destinationChainId: ChainId;
|
|
54
|
+
wantTokenSymbol: string;
|
|
55
|
+
minimumFractionDigits?: number;
|
|
56
|
+
maximumFractionDigits?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the withdraw exchange rate for a vault (tokens per share)
|
|
60
|
+
* @throws {Error} If the token address is not found or if there's an error fetching the rate
|
|
61
|
+
* @returns Promise<string> The exchange rate as a formatted string representing how many want tokens are worth 1 share
|
|
62
|
+
*/
|
|
63
|
+
declare const getWithdrawExchangeRate: ({ vaultKey, sourceChainId, destinationChainId, wantTokenSymbol, minimumFractionDigits, maximumFractionDigits, }: GetWithdrawExchangeRateParams) => Promise<string>;
|
|
64
|
+
|
|
65
|
+
export { getWithdrawExchangeRate as a, isWithdrawalSpendApproved as b, getDepositExchangeRate as g, isDepositSpendApproved as i };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
import { C as ChainId } from './vault-config-BNzhv3QV.js';
|
|
3
|
+
import { Y as YieldType } from './config-B-u3VqEX.js';
|
|
4
|
+
import { V as VaultKey } from './config-BQynVNDC.js';
|
|
5
|
+
|
|
6
|
+
declare const isDepositSpendApproved: ({ yieldType, chainId, depositAssetAddress, userAddress, }: {
|
|
7
|
+
yieldType: YieldType;
|
|
8
|
+
chainId: ChainId;
|
|
9
|
+
depositAssetAddress: Address;
|
|
10
|
+
userAddress: Address;
|
|
11
|
+
}) => Promise<{
|
|
12
|
+
isApproved: boolean;
|
|
13
|
+
allowance: string;
|
|
14
|
+
allowanceAsBigInt: string;
|
|
15
|
+
decimals: number;
|
|
16
|
+
error: null;
|
|
17
|
+
}>;
|
|
18
|
+
declare const isWithdrawalSpendApproved: ({ yieldType, chainId, wantAssetAddress, userAddress, }: {
|
|
19
|
+
yieldType: YieldType;
|
|
20
|
+
chainId: ChainId;
|
|
21
|
+
wantAssetAddress: Address;
|
|
22
|
+
userAddress: Address;
|
|
23
|
+
}) => Promise<{
|
|
24
|
+
isApproved: boolean;
|
|
25
|
+
allowance: string;
|
|
26
|
+
allowanceAsBigInt: string;
|
|
27
|
+
decimals: string;
|
|
28
|
+
error: Error | undefined;
|
|
29
|
+
} | {
|
|
30
|
+
isApproved: boolean;
|
|
31
|
+
allowance: string;
|
|
32
|
+
allowanceAsBigInt: string;
|
|
33
|
+
decimals: number;
|
|
34
|
+
error: null;
|
|
35
|
+
}>;
|
|
36
|
+
|
|
37
|
+
interface GetDepositExchangeRateParams {
|
|
38
|
+
vaultKey: VaultKey;
|
|
39
|
+
sourceChainId: ChainId;
|
|
40
|
+
depositTokenSymbol: string;
|
|
41
|
+
minimumFractionDigits?: number;
|
|
42
|
+
maximumFractionDigits?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gets the deposit exchange rate for a vault (tokens per share)
|
|
46
|
+
* @throws {Error} If the token address is not found or if there's an error fetching the rate
|
|
47
|
+
* @returns Promise<string> The exchange rate as a formatted string representing how many deposit tokens are worth 1 share
|
|
48
|
+
*/
|
|
49
|
+
declare const getDepositExchangeRate: ({ vaultKey, sourceChainId, depositTokenSymbol, minimumFractionDigits, maximumFractionDigits, }: GetDepositExchangeRateParams) => Promise<string>;
|
|
50
|
+
interface GetWithdrawExchangeRateParams {
|
|
51
|
+
vaultKey: VaultKey;
|
|
52
|
+
sourceChainId: ChainId;
|
|
53
|
+
destinationChainId: ChainId;
|
|
54
|
+
wantTokenSymbol: string;
|
|
55
|
+
minimumFractionDigits?: number;
|
|
56
|
+
maximumFractionDigits?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the withdraw exchange rate for a vault (tokens per share)
|
|
60
|
+
* @throws {Error} If the token address is not found or if there's an error fetching the rate
|
|
61
|
+
* @returns Promise<string> The exchange rate as a formatted string representing how many want tokens are worth 1 share
|
|
62
|
+
*/
|
|
63
|
+
declare const getWithdrawExchangeRate: ({ vaultKey, sourceChainId, destinationChainId, wantTokenSymbol, minimumFractionDigits, maximumFractionDigits, }: GetWithdrawExchangeRateParams) => Promise<string>;
|
|
64
|
+
|
|
65
|
+
export { getWithdrawExchangeRate as a, isWithdrawalSpendApproved as b, getDepositExchangeRate as g, isDepositSpendApproved as i };
|