@paxoslabs/amplify-sdk 0.5.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3158 -725
- package/dist/index.d.ts +3158 -725
- package/dist/index.js +15013 -171
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15067 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +25 -86
- package/CHANGELOG.md +0 -320
- package/LICENSE +0 -28
- package/README.md +0 -119
- package/dist/chain-utils-BdJecHBA.d.mts +0 -334
- package/dist/chain-utils-BdJecHBA.d.ts +0 -334
- package/dist/chunk-5OK753GA.js +0 -1989
- package/dist/chunk-5OK753GA.js.map +0 -1
- package/dist/chunk-6CU533DM.mjs +0 -39
- package/dist/chunk-6CU533DM.mjs.map +0 -1
- package/dist/chunk-7JQQ2TH4.mjs +0 -1231
- package/dist/chunk-7JQQ2TH4.mjs.map +0 -1
- package/dist/chunk-HU5CTL4C.mjs +0 -1962
- package/dist/chunk-HU5CTL4C.mjs.map +0 -1
- package/dist/chunk-NNDY5TID.js +0 -1143
- package/dist/chunk-NNDY5TID.js.map +0 -1
- package/dist/chunk-Q5FXJU5Y.mjs +0 -1133
- package/dist/chunk-Q5FXJU5Y.mjs.map +0 -1
- package/dist/chunk-QZHI2T7O.mjs +0 -457
- package/dist/chunk-QZHI2T7O.mjs.map +0 -1
- package/dist/chunk-SWUG4PTB.js +0 -464
- package/dist/chunk-SWUG4PTB.js.map +0 -1
- package/dist/chunk-TNL23CO2.js +0 -45
- package/dist/chunk-TNL23CO2.js.map +0 -1
- package/dist/chunk-WK7EJRBB.mjs +0 -1482
- package/dist/chunk-WK7EJRBB.mjs.map +0 -1
- package/dist/chunk-WYBYBPX5.js +0 -1518
- package/dist/chunk-WYBYBPX5.js.map +0 -1
- package/dist/chunk-ZKDXRGI5.js +0 -1239
- package/dist/chunk-ZKDXRGI5.js.map +0 -1
- package/dist/core.d.mts +0 -152
- package/dist/core.d.ts +0 -152
- package/dist/core.js +0 -1220
- package/dist/core.js.map +0 -1
- package/dist/core.mjs +0 -1194
- package/dist/core.mjs.map +0 -1
- package/dist/display.d.mts +0 -263
- package/dist/display.d.ts +0 -263
- package/dist/display.js +0 -36
- package/dist/display.js.map +0 -1
- package/dist/display.mjs +0 -7
- package/dist/display.mjs.map +0 -1
- package/dist/index-DXXA8gEA.d.mts +0 -5026
- package/dist/index-aE5lTOUH.d.ts +0 -5026
- package/dist/utils.d.mts +0 -112
- package/dist/utils.d.ts +0 -112
- package/dist/utils.js +0 -67
- package/dist/utils.js.map +0 -1
- package/dist/utils.mjs +0 -25
- package/dist/utils.mjs.map +0 -1
- package/dist/vaults.d.mts +0 -4
- package/dist/vaults.d.ts +0 -4
- package/dist/vaults.js +0 -96
- package/dist/vaults.js.map +0 -1
- package/dist/vaults.mjs +0 -7
- package/dist/vaults.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/abi/accountant-abi.ts","../src/abi/boring-vault-abi.ts","../src/api/accountant.ts","../src/abi/erc2612-abi.ts","../src/api/erc20.ts"],"names":["erc20Abi"],"mappings":"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","file":"chunk-Q5FXJU5Y.mjs","sourcesContent":["export const AccountantAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_owner', type: 'address', internalType: 'address' },\n { name: '_vault', type: 'address', internalType: 'address' },\n { name: 'payoutAddress', type: 'address', internalType: 'address' },\n { name: 'startingExchangeRate', type: 'uint96', internalType: 'uint96' },\n { name: '_base', type: 'address', internalType: 'address' },\n {\n name: 'allowedExchangeRateChangeUpper',\n type: 'uint16',\n internalType: 'uint16',\n },\n {\n name: 'allowedExchangeRateChangeLower',\n type: 'uint16',\n internalType: 'uint16',\n },\n {\n name: 'minimumUpdateDelayInSeconds',\n type: 'uint32',\n internalType: 'uint32',\n },\n { name: 'managementFee', type: 'uint16', internalType: 'uint16' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'accountantState',\n inputs: [],\n outputs: [\n { name: 'payoutAddress', type: 'address', internalType: 'address' },\n { name: 'feesOwedInBase', type: 'uint128', internalType: 'uint128' },\n {\n name: 'totalSharesLastUpdate',\n type: 'uint128',\n internalType: 'uint128',\n },\n { name: 'exchangeRate', type: 'uint96', internalType: 'uint96' },\n {\n name: 'allowedExchangeRateChangeUpper',\n type: 'uint16',\n internalType: 'uint16',\n },\n {\n name: 'allowedExchangeRateChangeLower',\n type: 'uint16',\n internalType: 'uint16',\n },\n { name: 'lastUpdateTimestamp', type: 'uint64', internalType: 'uint64' },\n { name: 'isPaused', type: 'bool', internalType: 'bool' },\n {\n name: 'minimumUpdateDelayInSeconds',\n type: 'uint32',\n internalType: 'uint32',\n },\n { name: 'managementFee', type: 'uint16', internalType: 'uint16' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'authority',\n inputs: [],\n outputs: [\n { name: '', type: 'address', internalType: 'contract Authority' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'base',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract ERC20' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'claimFees',\n inputs: [\n { name: 'feeAsset', type: 'address', internalType: 'contract ERC20' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRate',\n inputs: [],\n outputs: [{ name: 'rate', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRateInQuote',\n inputs: [\n { name: 'quote', type: 'address', internalType: 'contract ERC20' },\n ],\n outputs: [\n { name: 'rateInQuote', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRateInQuoteSafe',\n inputs: [\n { name: 'quote', type: 'address', internalType: 'contract ERC20' },\n ],\n outputs: [\n { name: 'rateInQuote', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRateSafe',\n inputs: [],\n outputs: [{ name: 'rate', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'rateProviderData',\n inputs: [{ name: '', type: 'address', internalType: 'contract ERC20' }],\n outputs: [\n { name: 'isPeggedToBase', type: 'bool', internalType: 'bool' },\n {\n name: 'rateProvider',\n type: 'address',\n internalType: 'contract IRateProvider',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setAuthority',\n inputs: [\n {\n name: 'newAuthority',\n type: 'address',\n internalType: 'contract Authority',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setRateProviderData',\n inputs: [\n { name: 'asset', type: 'address', internalType: 'contract ERC20' },\n { name: 'isPeggedToBase', type: 'bool', internalType: 'bool' },\n { name: 'rateProvider', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateDelay',\n inputs: [\n {\n name: 'minimumUpdateDelayInSeconds',\n type: 'uint32',\n internalType: 'uint32',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateExchangeRate',\n inputs: [\n { name: 'newExchangeRate', type: 'uint96', internalType: 'uint96' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateLower',\n inputs: [\n {\n name: 'allowedExchangeRateChangeLower',\n type: 'uint16',\n internalType: 'uint16',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateManagementFee',\n inputs: [{ name: 'managementFee', type: 'uint16', internalType: 'uint16' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updatePayoutAddress',\n inputs: [\n { name: 'payoutAddress', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateUpper',\n inputs: [\n {\n name: 'allowedExchangeRateChangeUpper',\n type: 'uint16',\n internalType: 'uint16',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vault',\n inputs: [],\n outputs: [\n { name: '', type: 'address', internalType: 'contract BoringVault' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AuthorityUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newAuthority',\n type: 'address',\n indexed: true,\n internalType: 'contract Authority',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DelayInSecondsUpdated',\n inputs: [\n {\n name: 'oldDelay',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n {\n name: 'newDelay',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ExchangeRateUpdated',\n inputs: [\n {\n name: 'oldRate',\n type: 'uint96',\n indexed: false,\n internalType: 'uint96',\n },\n {\n name: 'newRate',\n type: 'uint96',\n indexed: false,\n internalType: 'uint96',\n },\n {\n name: 'currentTime',\n type: 'uint64',\n indexed: false,\n internalType: 'uint64',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'FeesClaimed',\n inputs: [\n {\n name: 'feeAsset',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'LowerBoundUpdated',\n inputs: [\n {\n name: 'oldBound',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n {\n name: 'newBound',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ManagementFeeUpdated',\n inputs: [\n {\n name: 'oldFee',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n {\n name: 'newFee',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n { type: 'event', name: 'Paused', inputs: [], anonymous: false },\n {\n type: 'event',\n name: 'PayoutAddressUpdated',\n inputs: [\n {\n name: 'oldPayout',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n {\n name: 'newPayout',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RateProviderUpdated',\n inputs: [\n {\n name: 'asset',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n { name: 'isPegged', type: 'bool', indexed: false, internalType: 'bool' },\n {\n name: 'rateProvider',\n type: 'address',\n indexed: false,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n { type: 'event', name: 'Unpaused', inputs: [], anonymous: false },\n {\n type: 'event',\n name: 'UpperBoundUpdated',\n inputs: [\n {\n name: 'oldBound',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n {\n name: 'newBound',\n type: 'uint16',\n indexed: false,\n internalType: 'uint16',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__LowerBoundTooLarge',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__ManagementFeeTooLarge',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__OnlyCallableByBoringVault',\n inputs: [],\n },\n { type: 'error', name: 'AccountantWithRateProviders__Paused', inputs: [] },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__UpdateDelayTooLarge',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__UpperBoundTooSmall',\n inputs: [],\n },\n {\n type: 'error',\n name: 'AccountantWithRateProviders__ZeroFeesOwed',\n inputs: [],\n },\n] as const\n","export const BoringVaultAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_owner', type: 'address', internalType: 'address' },\n { name: '_name', type: 'string', internalType: 'string' },\n { name: '_symbol', type: 'string', internalType: 'string' },\n { name: '_decimals', type: 'uint8', internalType: 'uint8' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'receive', stateMutability: 'payable' },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authority',\n inputs: [],\n outputs: [\n { name: '', type: 'address', internalType: 'contract Authority' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'enter',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'asset', type: 'address', internalType: 'contract ERC20' },\n { name: 'assetAmount', type: 'uint256', internalType: 'uint256' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'shareAmount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exit',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'asset', type: 'address', internalType: 'contract ERC20' },\n { name: 'assetAmount', type: 'uint256', internalType: 'uint256' },\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'shareAmount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'hook',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract BeforeTransferHook',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'targets', type: 'address[]', internalType: 'address[]' },\n { name: 'data', type: 'bytes[]', internalType: 'bytes[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'nonces',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC721Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'permit',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n { name: 'deadline', type: 'uint256', internalType: 'uint256' },\n { name: 'v', type: 'uint8', internalType: 'uint8' },\n { name: 'r', type: 'bytes32', internalType: 'bytes32' },\n { name: 's', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAuthority',\n inputs: [\n {\n name: 'newAuthority',\n type: 'address',\n internalType: 'contract Authority',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setBeforeTransferHook',\n inputs: [{ name: '_hook', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'AuthorityUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newAuthority',\n type: 'address',\n indexed: true,\n internalType: 'contract Authority',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Enter',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'asset',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Exit',\n inputs: [\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'asset',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'AddressInsufficientBalance',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'FailedInnerCall', inputs: [] },\n] as const\n","import { type Address, erc20Abi } from 'viem'\nimport { AccountantAbi } from '../abi/accountant-abi'\nimport { BoringVaultAbi } from '../abi/boring-vault-abi'\nimport { getClient } from '../lib/viem/client'\nimport type { ChainId } from '../utils/chain-utils'\n\ntype AccountantBaseProps = {\n accountantAddress: Address\n chainId: ChainId\n}\n\ntype RateInQuoteWithAssetDecimalsProps = AccountantBaseProps & {\n assetAddress: Address\n}\n\n// TODO: Duplicated in multicall compare and remove\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 RateInQuoteAndSharesAndWantAssetDecimalsParams = {\n sharesAssetAddress: Address\n wantAssetAddress: Address\n accountantAddress: Address\n chainId: ChainId\n}\n\n// TODO: Move to multicall\nconst getRateInQuoteAndSharesAndWantAssetDecimals = async ({\n sharesAssetAddress,\n wantAssetAddress,\n accountantAddress,\n chainId,\n}: RateInQuoteAndSharesAndWantAssetDecimalsParams) => {\n const client = await getClient(chainId)\n\n const results = await client.multicall({\n contracts: [\n {\n abi: erc20Abi,\n address: wantAssetAddress,\n functionName: 'decimals',\n },\n {\n abi: BoringVaultAbi,\n address: sharesAssetAddress,\n functionName: 'decimals',\n },\n {\n abi: AccountantAbi,\n address: accountantAddress,\n functionName: 'getRateInQuote',\n args: [wantAssetAddress],\n },\n ],\n })\n return results\n}\n\nexport {\n getRateInQuoteAndSharesAndWantAssetDecimals,\n getRateInQuoteWithAssetDecimals,\n}\n","/**\n * ERC2612 Permit ABI\n *\n * Standard ERC20 + ERC2612 permit extension interface.\n * Enables off-chain signed approval (permit) to combine approval + transfer in single transaction.\n *\n * Reference: https://eips.ethereum.org/EIPS/eip-2612\n */\n\nexport const erc2612Abi = [\n // Standard ERC20 functions (subset needed for permit flow)\n {\n constant: true,\n inputs: [{ name: '_owner', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', type: 'uint256' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', type: 'bytes32' }],\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'name',\n outputs: [{ name: '', type: 'string' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'version',\n outputs: [{ name: '', type: 'string' }],\n type: 'function',\n },\n] as const\n\n/**\n * Standard ERC20 ABI (subset for basic token operations)\n */\nexport const erc20Abi = [\n {\n constant: true,\n inputs: [{ name: '_owner', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: 'balance', type: 'uint256' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [\n { name: '_owner', type: 'address' },\n { name: '_spender', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: 'remaining', type: 'uint256' }],\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: '_spender', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: '_to', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', type: 'bool' }],\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: '_from', type: 'address' },\n { name: '_to', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', type: 'bool' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', type: 'string' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', type: 'uint256' }],\n type: 'function',\n },\n] as const\n\n/**\n * Permit-capable ERC20 ABI (combined ERC20 + ERC2612)\n */\nexport const permitCapableErc20Abi = [\n ...erc20Abi,\n // Add permit-specific functions\n {\n constant: true,\n inputs: [{ name: '_owner', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', type: 'uint256' }],\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', type: 'bytes32' }],\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n type: 'function',\n },\n] as const\n","import { type Address, erc20Abi, type Hex } from 'viem'\nimport { erc2612Abi } from '../abi/erc2612-abi'\nimport { getClient } from '../lib/viem/client'\nimport { APIError } from '../types/amplify-sdk-api'\nimport type { ChainId } from '../utils/chain-utils'\n\ninterface GetErc20BalanceParams {\n chainId: ChainId\n tokenAddress: Address\n recipientAddress: Address\n}\n\nconst getErc20Balance = async ({\n chainId,\n tokenAddress,\n recipientAddress,\n}: GetErc20BalanceParams): Promise<bigint> => {\n const client = await getClient(chainId)\n\n const balance = await client.readContract({\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'balanceOf',\n args: [recipientAddress],\n })\n\n return balance\n}\n\ninterface GetErc20DecimalsParams {\n chainId: ChainId\n tokenAddress: Address\n}\nconst getErc20Decimals = async ({\n chainId,\n tokenAddress,\n}: GetErc20DecimalsParams) => {\n const client = await getClient(chainId)\n\n const balance = await client.readContract({\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'decimals',\n })\n\n return balance\n}\n\ninterface GetErc20AllowanceParams {\n chainId: ChainId\n tokenAddress: Address\n recipientAddress: Address\n spenderAddress: Address\n}\n\nconst getErc20Allowance = async ({\n chainId,\n tokenAddress,\n recipientAddress,\n spenderAddress,\n}: GetErc20AllowanceParams) => {\n const client = await getClient(chainId)\n\n const allowance = await client.readContract({\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'allowance',\n args: [recipientAddress, spenderAddress],\n })\n\n return allowance\n}\n\nconst getErc20AllowanceWithDecimals = async ({\n chainId,\n tokenAddress,\n recipientAddress,\n spenderAddress,\n}: GetErc20AllowanceParams) => {\n const client = await getClient(chainId)\n\n const allowance = await client.multicall({\n contracts: [\n {\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'allowance',\n args: [recipientAddress, spenderAddress],\n },\n {\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'decimals',\n },\n ],\n })\n return allowance\n}\n\n/**\n * Parameters for getTokenPermitInfoWithAllowance\n */\ninterface GetTokenPermitInfoWithAllowanceParams {\n /** Chain ID where the token is deployed */\n chainId: ChainId\n /** Token contract address */\n tokenAddress: Address\n /** Token owner address (for nonce and allowance lookup) */\n owner: Address\n /** Spender address (for allowance lookup) */\n spender: Address\n}\n\n/**\n * Token permit and allowance information\n *\n * Contains decimals, allowance, and EIP-2612 permit support detection.\n * When supportsPermit is true, nonce and domainSeparator are guaranteed present.\n */\ninterface TokenPermitInfoWithAllowance {\n /** Token decimals */\n decimals: number\n /** Current allowance for spender */\n allowance: bigint\n /** Whether the token supports EIP-2612 permit */\n supportsPermit: boolean\n /** Current nonce for owner (null if permit not supported) */\n nonce: bigint | null\n /** EIP-712 domain separator (null if permit not supported) */\n domainSeparator: Hex | null\n /** Token name (for EIP-712 domain) */\n tokenName: string\n /** Token version for EIP-712 (defaults to \"1\" if not available) */\n tokenVersion: string\n}\n\n/**\n * Retrieves token decimals, allowance, and permit support in a single multicall\n *\n * Uses a single multicall to efficiently query:\n * - decimals() - MUST succeed (throws if fails)\n * - allowance(owner, spender) - MUST succeed (throws if fails)\n * - nonces(owner) - Optional, indicates permit support\n * - DOMAIN_SEPARATOR() - Optional, confirms permit support\n *\n * Permit support requires BOTH nonces() AND DOMAIN_SEPARATOR() to succeed.\n *\n * @param params - Query parameters\n * @returns Combined token info with permit support detection\n * @throws {APIError} If critical calls (decimals, allowance) fail\n *\n * @example\n * ```typescript\n * const info = await getTokenPermitInfoWithAllowance({\n * chainId: 1,\n * tokenAddress: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n * owner: \"0x1234...\",\n * spender: \"0x5678...\",\n * });\n *\n * if (info.supportsPermit) {\n * // Use permit deposit flow\n * console.log(\"Nonce:\", info.nonce);\n * console.log(\"Domain:\", info.domainSeparator);\n * } else if (info.allowance < depositAmount) {\n * // Request approval\n * }\n * ```\n */\nconst getTokenPermitInfoWithAllowance = async ({\n chainId,\n tokenAddress,\n owner,\n spender,\n}: GetTokenPermitInfoWithAllowanceParams): Promise<TokenPermitInfoWithAllowance> => {\n const client = await getClient(chainId)\n\n const results = await client.multicall({\n contracts: [\n {\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'decimals',\n },\n {\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'allowance',\n args: [owner, spender],\n },\n {\n abi: erc2612Abi,\n address: tokenAddress,\n functionName: 'nonces',\n args: [owner],\n },\n {\n abi: erc2612Abi,\n address: tokenAddress,\n functionName: 'DOMAIN_SEPARATOR',\n },\n {\n abi: erc20Abi,\n address: tokenAddress,\n functionName: 'name',\n },\n {\n abi: erc2612Abi,\n address: tokenAddress,\n functionName: 'version',\n },\n ],\n allowFailure: true,\n })\n\n const [\n decimalsResult,\n allowanceResult,\n nonceResult,\n domainSeparatorResult,\n nameResult,\n versionResult,\n ] = results\n\n // Required calls must succeed\n if (decimalsResult.status === 'failure') {\n throw new APIError(\n `Failed to read decimals from token ${tokenAddress}: ${\n decimalsResult.error?.message || 'Unknown error'\n }`,\n {\n endpoint: 'getTokenPermitInfoWithAllowance',\n cause: decimalsResult.error,\n }\n )\n }\n\n if (allowanceResult.status === 'failure') {\n throw new APIError(\n `Failed to read allowance from token ${tokenAddress}: ${\n allowanceResult.error?.message || 'Unknown error'\n }`,\n {\n endpoint: 'getTokenPermitInfoWithAllowance',\n cause: allowanceResult.error,\n }\n )\n }\n\n // Token name is required (standard ERC20)\n if (nameResult.status === 'failure') {\n throw new APIError(\n `Failed to read name from token ${tokenAddress}: ${\n nameResult.error?.message || 'Unknown error'\n }`,\n {\n endpoint: 'getTokenPermitInfoWithAllowance',\n cause: nameResult.error,\n }\n )\n }\n\n // Optional permit support detection\n // Both nonces AND DOMAIN_SEPARATOR must succeed for permit support\n const nonce =\n nonceResult.status === 'success' ? (nonceResult.result as bigint) : null\n const domainSeparator =\n domainSeparatorResult.status === 'success'\n ? (domainSeparatorResult.result as Hex)\n : null\n\n const supportsPermit = nonce !== null && domainSeparator !== null\n\n // Token version is optional (EIP-2612), defaults to \"1\"\n const tokenVersion =\n versionResult.status === 'success' ? (versionResult.result as string) : '1'\n\n return {\n decimals: decimalsResult.result,\n allowance: allowanceResult.result,\n supportsPermit,\n nonce,\n domainSeparator,\n tokenName: nameResult.result,\n tokenVersion,\n }\n}\n\nexport {\n getErc20Allowance,\n getErc20AllowanceWithDecimals,\n getErc20Balance,\n getErc20Decimals,\n getTokenPermitInfoWithAllowance,\n}\n\nexport type {\n GetTokenPermitInfoWithAllowanceParams,\n TokenPermitInfoWithAllowance,\n}\n"]}
|
package/dist/chunk-QZHI2T7O.mjs
DELETED
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
import { resolveVault, VaultNotFoundByNameError, WithdrawQueueAbi } from './chunk-7JQQ2TH4.mjs';
|
|
2
|
-
import { getRateInQuoteWithAssetDecimals, getErc20Decimals } from './chunk-Q5FXJU5Y.mjs';
|
|
3
|
-
import { calculateExpectedSharesMinted } from './chunk-6CU533DM.mjs';
|
|
4
|
-
import { toChainId, APIError, getRestV2BaseURL, DEFAULT_TIMEOUT, getRequestHeaders, isValidAddress, getCache, getClient } from './chunk-WK7EJRBB.mjs';
|
|
5
|
-
import { parseUnits } from 'viem';
|
|
6
|
-
|
|
7
|
-
async function getMinimumMint(params) {
|
|
8
|
-
try {
|
|
9
|
-
const normalizedChainId = toChainId(params.chainId);
|
|
10
|
-
const config = await resolveVault({
|
|
11
|
-
vaultName: params.vaultName,
|
|
12
|
-
assetAddress: params.depositAssetAddress,
|
|
13
|
-
chainId: normalizedChainId,
|
|
14
|
-
callerEndpoint: "getMinimumMint"
|
|
15
|
-
});
|
|
16
|
-
if (!config.vault.accountantAddress) {
|
|
17
|
-
throw new APIError(
|
|
18
|
-
`Accountant contract address not configured for vault ${config.id}`,
|
|
19
|
-
{ endpoint: "getMinimumMint" }
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
if (!config.vault.boringVaultAddress) {
|
|
23
|
-
throw new APIError(
|
|
24
|
-
`BoringVault contract address not configured for vault ${config.id}`,
|
|
25
|
-
{ endpoint: "getMinimumMint" }
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
const rateResults = await getRateInQuoteWithAssetDecimals({
|
|
29
|
-
assetAddress: params.depositAssetAddress,
|
|
30
|
-
accountantAddress: config.vault.accountantAddress,
|
|
31
|
-
chainId: normalizedChainId
|
|
32
|
-
});
|
|
33
|
-
const [assetDecimalsResult, exchangeRateResult] = rateResults;
|
|
34
|
-
if (assetDecimalsResult.status === "failure" || exchangeRateResult.status === "failure") {
|
|
35
|
-
throw new APIError(
|
|
36
|
-
`Failed to get exchange rate or asset decimals: ${assetDecimalsResult.error?.message || exchangeRateResult.error?.message}`,
|
|
37
|
-
{ endpoint: "getMinimumMint" }
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
const assetDecimals = assetDecimalsResult.result;
|
|
41
|
-
const exchangeRate = exchangeRateResult.result;
|
|
42
|
-
const shareDecimals = await getErc20Decimals({
|
|
43
|
-
tokenAddress: config.vault.boringVaultAddress,
|
|
44
|
-
chainId: normalizedChainId
|
|
45
|
-
});
|
|
46
|
-
const depositAmountBigInt = parseUnits(params.depositAmount, assetDecimals);
|
|
47
|
-
const expectedShares = calculateExpectedSharesMinted(
|
|
48
|
-
depositAmountBigInt,
|
|
49
|
-
exchangeRate,
|
|
50
|
-
shareDecimals
|
|
51
|
-
);
|
|
52
|
-
return {
|
|
53
|
-
expectedShares,
|
|
54
|
-
exchangeRate,
|
|
55
|
-
shareDecimals,
|
|
56
|
-
assetDecimals
|
|
57
|
-
};
|
|
58
|
-
} catch (error) {
|
|
59
|
-
if (error instanceof APIError) {
|
|
60
|
-
throw error;
|
|
61
|
-
}
|
|
62
|
-
throw new APIError(
|
|
63
|
-
`Failed to calculate minimum mint: ${error instanceof Error ? error.message : String(error)}`,
|
|
64
|
-
{ endpoint: "getMinimumMint", cause: error }
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// src/display/vault-display.ts
|
|
70
|
-
async function resolveVaultAddressForDisplay(params, callerEndpoint) {
|
|
71
|
-
if (params.vaultAddress) {
|
|
72
|
-
if (!isValidAddress(params.vaultAddress)) {
|
|
73
|
-
throw new APIError(
|
|
74
|
-
`Invalid vaultAddress: ${params.vaultAddress}. Must be a valid Ethereum address.`,
|
|
75
|
-
{ endpoint: callerEndpoint }
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
return params.vaultAddress;
|
|
79
|
-
}
|
|
80
|
-
if (params.vaultName) {
|
|
81
|
-
const cache = getCache();
|
|
82
|
-
if (cache.isEmpty() || cache.isExpired()) {
|
|
83
|
-
await cache.refresh();
|
|
84
|
-
}
|
|
85
|
-
const vault = cache.getVaultByName(params.vaultName);
|
|
86
|
-
if (!vault) {
|
|
87
|
-
throw new VaultNotFoundByNameError(
|
|
88
|
-
`No vault found with name "${params.vaultName}". The vault may not exist or may not be available for your organization.`,
|
|
89
|
-
{ vaultName: params.vaultName, endpoint: callerEndpoint }
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
return vault.vault.boringVaultAddress;
|
|
93
|
-
}
|
|
94
|
-
throw new APIError("Either vaultAddress or vaultName must be provided.", {
|
|
95
|
-
endpoint: callerEndpoint
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
async function getVaultAPY(params) {
|
|
99
|
-
try {
|
|
100
|
-
const resolvedAddress = await resolveVaultAddressForDisplay(
|
|
101
|
-
params,
|
|
102
|
-
"getVaultAPY"
|
|
103
|
-
);
|
|
104
|
-
const queryParams = new URLSearchParams({
|
|
105
|
-
filter: `vaultAddress=${resolvedAddress}`,
|
|
106
|
-
orderByTimestamp: "desc",
|
|
107
|
-
pageSize: "1"
|
|
108
|
-
});
|
|
109
|
-
const url = `${getRestV2BaseURL()}/amplify/vaultApys?${queryParams.toString()}`;
|
|
110
|
-
const controller = new AbortController();
|
|
111
|
-
const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT);
|
|
112
|
-
const response = await fetch(url, {
|
|
113
|
-
method: "GET",
|
|
114
|
-
headers: getRequestHeaders(),
|
|
115
|
-
signal: controller.signal
|
|
116
|
-
});
|
|
117
|
-
clearTimeout(timeout);
|
|
118
|
-
if (!response.ok) {
|
|
119
|
-
throw new APIError(
|
|
120
|
-
`Failed to fetch vault APY: ${response.status} ${response.statusText}`,
|
|
121
|
-
{ endpoint: "getVaultAPY", statusCode: response.status }
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
const data = await response.json();
|
|
125
|
-
if (!data.vaultApys || data.vaultApys.length === 0) {
|
|
126
|
-
throw new APIError(`No APY data found for vault ${resolvedAddress}`, {
|
|
127
|
-
endpoint: "getVaultAPY"
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
const latest = data.vaultApys[0];
|
|
131
|
-
const apyNumber = Number.parseFloat(latest.apy);
|
|
132
|
-
return {
|
|
133
|
-
apy: apyNumber,
|
|
134
|
-
apyFormatted: `${apyNumber.toFixed(2)}%`,
|
|
135
|
-
vaultAddress: latest.vaultAddress,
|
|
136
|
-
timestamp: latest.timestamp
|
|
137
|
-
};
|
|
138
|
-
} catch (error) {
|
|
139
|
-
if (error instanceof APIError) {
|
|
140
|
-
throw error;
|
|
141
|
-
}
|
|
142
|
-
throw new APIError(
|
|
143
|
-
`Failed to fetch vault APY: ${error instanceof Error ? error.message : String(error)}`,
|
|
144
|
-
{ endpoint: "getVaultAPY", cause: error }
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async function getVaultTVL(params) {
|
|
149
|
-
try {
|
|
150
|
-
const resolvedAddress = await resolveVaultAddressForDisplay(
|
|
151
|
-
params,
|
|
152
|
-
"getVaultTVL"
|
|
153
|
-
);
|
|
154
|
-
const filterParts = [`vaultAddress=${resolvedAddress}`];
|
|
155
|
-
if (params.chainId !== void 0) {
|
|
156
|
-
filterParts.push(`chainId=${params.chainId}`);
|
|
157
|
-
}
|
|
158
|
-
const queryParams = new URLSearchParams({
|
|
159
|
-
filter: filterParts.join(" AND "),
|
|
160
|
-
includeCurrent: "true",
|
|
161
|
-
orderByTimestamp: "desc",
|
|
162
|
-
pageSize: "1"
|
|
163
|
-
});
|
|
164
|
-
const url = `${getRestV2BaseURL()}/amplify/vaultTvls?${queryParams.toString()}`;
|
|
165
|
-
const controller = new AbortController();
|
|
166
|
-
const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT);
|
|
167
|
-
const response = await fetch(url, {
|
|
168
|
-
method: "GET",
|
|
169
|
-
headers: getRequestHeaders(),
|
|
170
|
-
signal: controller.signal
|
|
171
|
-
});
|
|
172
|
-
clearTimeout(timeout);
|
|
173
|
-
if (!response.ok) {
|
|
174
|
-
throw new APIError(
|
|
175
|
-
`Failed to fetch vault TVL: ${response.status} ${response.statusText}`,
|
|
176
|
-
{ endpoint: "getVaultTVL", statusCode: response.status }
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
const data = await response.json();
|
|
180
|
-
if (!data.vaultTvls || data.vaultTvls.length === 0) {
|
|
181
|
-
throw new APIError(`No TVL data found for vault ${resolvedAddress}`, {
|
|
182
|
-
endpoint: "getVaultTVL"
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
const latest = data.vaultTvls[0];
|
|
186
|
-
return {
|
|
187
|
-
tvl: latest.tvl,
|
|
188
|
-
tvlAsset: latest.tvlAsset,
|
|
189
|
-
vaultAddress: latest.vaultAddress,
|
|
190
|
-
chainId: latest.chainId,
|
|
191
|
-
timestamp: latest.timestamp
|
|
192
|
-
};
|
|
193
|
-
} catch (error) {
|
|
194
|
-
if (error instanceof APIError) {
|
|
195
|
-
throw error;
|
|
196
|
-
}
|
|
197
|
-
throw new APIError(
|
|
198
|
-
`Failed to fetch vault TVL: ${error instanceof Error ? error.message : String(error)}`,
|
|
199
|
-
{ endpoint: "getVaultTVL", cause: error }
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// src/abi/fee-module-abi.ts
|
|
205
|
-
var FeeModuleAbi = [
|
|
206
|
-
{
|
|
207
|
-
inputs: [
|
|
208
|
-
{ internalType: "uint256", name: "_offerFeePercentage", type: "uint256" }
|
|
209
|
-
],
|
|
210
|
-
stateMutability: "nonpayable",
|
|
211
|
-
type: "constructor"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
inputs: [
|
|
215
|
-
{ internalType: "uint256", name: "feePercentage", type: "uint256" },
|
|
216
|
-
{ internalType: "uint256", name: "maxAllowed", type: "uint256" }
|
|
217
|
-
],
|
|
218
|
-
name: "FeePercentageTooHigh",
|
|
219
|
-
type: "error"
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
inputs: [
|
|
223
|
-
{ internalType: "uint256", name: "amount", type: "uint256" },
|
|
224
|
-
{ internalType: "contract IERC20", name: "offerAsset", type: "address" },
|
|
225
|
-
{ internalType: "contract IERC20", name: "wantAsset", type: "address" },
|
|
226
|
-
{ internalType: "address", name: "receiver", type: "address" }
|
|
227
|
-
],
|
|
228
|
-
name: "calculateOfferFees",
|
|
229
|
-
outputs: [{ internalType: "uint256", name: "feeAmount", type: "uint256" }],
|
|
230
|
-
stateMutability: "view",
|
|
231
|
-
type: "function"
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
inputs: [],
|
|
235
|
-
name: "offerFeePercentage",
|
|
236
|
-
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
237
|
-
stateMutability: "view",
|
|
238
|
-
type: "function"
|
|
239
|
-
}
|
|
240
|
-
];
|
|
241
|
-
|
|
242
|
-
// src/display/withdrawal-display.ts
|
|
243
|
-
function buildFilterString(params) {
|
|
244
|
-
return Object.entries(params).filter(([, v]) => v !== void 0).map(([k, v]) => `${k}=${v}`).join(" AND ");
|
|
245
|
-
}
|
|
246
|
-
async function getWithdrawalRequests(params) {
|
|
247
|
-
try {
|
|
248
|
-
if (!isValidAddress(params.userAddress)) {
|
|
249
|
-
throw new APIError(
|
|
250
|
-
`Invalid userAddress: ${params.userAddress}. Must be a valid Ethereum address.`,
|
|
251
|
-
{ endpoint: "getWithdrawalRequests" }
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
let resolvedVaultAddress = params.vaultAddress;
|
|
255
|
-
if (!resolvedVaultAddress && params.vaultName) {
|
|
256
|
-
const cache = getCache();
|
|
257
|
-
if (cache.isEmpty() || cache.isExpired()) {
|
|
258
|
-
await cache.refresh();
|
|
259
|
-
}
|
|
260
|
-
const vault = cache.getVaultByName(params.vaultName);
|
|
261
|
-
if (!vault) {
|
|
262
|
-
throw new VaultNotFoundByNameError(
|
|
263
|
-
`No vault found with name "${params.vaultName}". The vault may not exist or may not be available for your organization.`,
|
|
264
|
-
{ vaultName: params.vaultName, endpoint: "getWithdrawalRequests" }
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
|
-
resolvedVaultAddress = vault.vault.boringVaultAddress;
|
|
268
|
-
}
|
|
269
|
-
const filter = buildFilterString({
|
|
270
|
-
userAddress: params.userAddress,
|
|
271
|
-
chainId: params.chainId,
|
|
272
|
-
vaultAddress: resolvedVaultAddress,
|
|
273
|
-
status: params.status
|
|
274
|
-
});
|
|
275
|
-
const queryParams = new URLSearchParams();
|
|
276
|
-
if (filter) queryParams.set("filter", filter);
|
|
277
|
-
if (params.pageSize) queryParams.set("pageSize", String(params.pageSize));
|
|
278
|
-
if (params.pageToken) queryParams.set("pageToken", params.pageToken);
|
|
279
|
-
const url = `${getRestV2BaseURL()}/amplify/withdrawalRequests?${queryParams.toString()}`;
|
|
280
|
-
const controller = new AbortController();
|
|
281
|
-
const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT);
|
|
282
|
-
const response = await fetch(url, {
|
|
283
|
-
method: "GET",
|
|
284
|
-
headers: getRequestHeaders(),
|
|
285
|
-
signal: controller.signal
|
|
286
|
-
});
|
|
287
|
-
clearTimeout(timeout);
|
|
288
|
-
if (!response.ok) {
|
|
289
|
-
throw new APIError(
|
|
290
|
-
`Failed to fetch withdrawal requests: ${response.status} ${response.statusText}`,
|
|
291
|
-
{
|
|
292
|
-
endpoint: "getWithdrawalRequests",
|
|
293
|
-
statusCode: response.status
|
|
294
|
-
}
|
|
295
|
-
);
|
|
296
|
-
}
|
|
297
|
-
const data = await response.json();
|
|
298
|
-
return {
|
|
299
|
-
withdrawalRequests: data.withdrawalRequests ?? [],
|
|
300
|
-
nextPageToken: data.nextPageToken ?? null
|
|
301
|
-
};
|
|
302
|
-
} catch (error) {
|
|
303
|
-
if (error instanceof APIError) {
|
|
304
|
-
throw error;
|
|
305
|
-
}
|
|
306
|
-
throw new APIError(
|
|
307
|
-
`Failed to fetch withdrawal requests: ${error instanceof Error ? error.message : String(error)}`,
|
|
308
|
-
{ endpoint: "getWithdrawalRequests", cause: error }
|
|
309
|
-
);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
async function getWithdrawalFee(params) {
|
|
313
|
-
try {
|
|
314
|
-
const normalizedChainId = toChainId(params.chainId);
|
|
315
|
-
const config = await resolveVault({
|
|
316
|
-
vaultName: params.vaultName,
|
|
317
|
-
assetAddress: params.assetAddress,
|
|
318
|
-
chainId: normalizedChainId,
|
|
319
|
-
callerEndpoint: "getWithdrawalFee"
|
|
320
|
-
});
|
|
321
|
-
if (!config.vault.withdrawQueueAddress) {
|
|
322
|
-
throw new APIError(
|
|
323
|
-
`WithdrawQueue contract address not configured for vault ${config.id}`,
|
|
324
|
-
{ endpoint: "getWithdrawalFee" }
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
if (!config.vault.boringVaultAddress) {
|
|
328
|
-
throw new APIError(
|
|
329
|
-
`BoringVault contract address not configured for vault ${config.id}`,
|
|
330
|
-
{ endpoint: "getWithdrawalFee" }
|
|
331
|
-
);
|
|
332
|
-
}
|
|
333
|
-
const client = await getClient(normalizedChainId);
|
|
334
|
-
const feeModuleAddress = await client.readContract({
|
|
335
|
-
abi: WithdrawQueueAbi,
|
|
336
|
-
address: config.vault.withdrawQueueAddress,
|
|
337
|
-
functionName: "feeModule"
|
|
338
|
-
});
|
|
339
|
-
const shareDecimals = await getErc20Decimals({
|
|
340
|
-
tokenAddress: config.vault.boringVaultAddress,
|
|
341
|
-
chainId: normalizedChainId
|
|
342
|
-
});
|
|
343
|
-
const amountBigInt = parseUnits(params.amount, shareDecimals);
|
|
344
|
-
const results = await client.multicall({
|
|
345
|
-
contracts: [
|
|
346
|
-
{
|
|
347
|
-
abi: FeeModuleAbi,
|
|
348
|
-
address: feeModuleAddress,
|
|
349
|
-
functionName: "calculateOfferFees",
|
|
350
|
-
args: [
|
|
351
|
-
amountBigInt,
|
|
352
|
-
params.offerAsset,
|
|
353
|
-
params.wantAsset,
|
|
354
|
-
params.receiver
|
|
355
|
-
]
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
abi: FeeModuleAbi,
|
|
359
|
-
address: feeModuleAddress,
|
|
360
|
-
functionName: "offerFeePercentage"
|
|
361
|
-
}
|
|
362
|
-
]
|
|
363
|
-
});
|
|
364
|
-
const [feeAmountResult, feePercentageResult] = results;
|
|
365
|
-
if (feeAmountResult.status === "failure" || feePercentageResult.status === "failure") {
|
|
366
|
-
throw new APIError("Failed to read fee data from FeeModule contract", {
|
|
367
|
-
endpoint: "getWithdrawalFee"
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
return {
|
|
371
|
-
feeAmount: feeAmountResult.result,
|
|
372
|
-
feePercentage: feePercentageResult.result
|
|
373
|
-
};
|
|
374
|
-
} catch (error) {
|
|
375
|
-
if (error instanceof APIError) {
|
|
376
|
-
throw error;
|
|
377
|
-
}
|
|
378
|
-
throw new APIError(
|
|
379
|
-
`Failed to get withdrawal fee: ${error instanceof Error ? error.message : String(error)}`,
|
|
380
|
-
{ endpoint: "getWithdrawalFee", cause: error }
|
|
381
|
-
);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
async function getMinimumWithdrawalOrderSize(params) {
|
|
385
|
-
try {
|
|
386
|
-
const normalizedChainId = toChainId(params.chainId);
|
|
387
|
-
const config = await resolveVault({
|
|
388
|
-
vaultName: params.vaultName,
|
|
389
|
-
assetAddress: params.assetAddress,
|
|
390
|
-
chainId: normalizedChainId,
|
|
391
|
-
callerEndpoint: "getMinimumWithdrawalOrderSize"
|
|
392
|
-
});
|
|
393
|
-
if (!config.vault.withdrawQueueAddress) {
|
|
394
|
-
throw new APIError(
|
|
395
|
-
`WithdrawQueue contract address not configured for vault ${config.id}`,
|
|
396
|
-
{ endpoint: "getMinimumWithdrawalOrderSize" }
|
|
397
|
-
);
|
|
398
|
-
}
|
|
399
|
-
if (!config.vault.boringVaultAddress) {
|
|
400
|
-
throw new APIError(
|
|
401
|
-
`BoringVault contract address not configured for vault ${config.id}`,
|
|
402
|
-
{ endpoint: "getMinimumWithdrawalOrderSize" }
|
|
403
|
-
);
|
|
404
|
-
}
|
|
405
|
-
const client = await getClient(normalizedChainId);
|
|
406
|
-
const [minOrderResult, shareDecimalsResult] = await client.multicall({
|
|
407
|
-
contracts: [
|
|
408
|
-
{
|
|
409
|
-
abi: WithdrawQueueAbi,
|
|
410
|
-
address: config.vault.withdrawQueueAddress,
|
|
411
|
-
functionName: "minimumOrderSize"
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
abi: [
|
|
415
|
-
{
|
|
416
|
-
inputs: [],
|
|
417
|
-
name: "decimals",
|
|
418
|
-
outputs: [
|
|
419
|
-
{
|
|
420
|
-
internalType: "uint8",
|
|
421
|
-
name: "",
|
|
422
|
-
type: "uint8"
|
|
423
|
-
}
|
|
424
|
-
],
|
|
425
|
-
stateMutability: "view",
|
|
426
|
-
type: "function"
|
|
427
|
-
}
|
|
428
|
-
],
|
|
429
|
-
address: config.vault.boringVaultAddress,
|
|
430
|
-
functionName: "decimals"
|
|
431
|
-
}
|
|
432
|
-
]
|
|
433
|
-
});
|
|
434
|
-
if (minOrderResult.status === "failure" || shareDecimalsResult.status === "failure") {
|
|
435
|
-
throw new APIError(
|
|
436
|
-
"Failed to read minimum order size from WithdrawQueue contract",
|
|
437
|
-
{ endpoint: "getMinimumWithdrawalOrderSize" }
|
|
438
|
-
);
|
|
439
|
-
}
|
|
440
|
-
return {
|
|
441
|
-
minimumOrderSize: minOrderResult.result,
|
|
442
|
-
shareDecimals: shareDecimalsResult.result
|
|
443
|
-
};
|
|
444
|
-
} catch (error) {
|
|
445
|
-
if (error instanceof APIError) {
|
|
446
|
-
throw error;
|
|
447
|
-
}
|
|
448
|
-
throw new APIError(
|
|
449
|
-
`Failed to get minimum withdrawal order size: ${error instanceof Error ? error.message : String(error)}`,
|
|
450
|
-
{ endpoint: "getMinimumWithdrawalOrderSize", cause: error }
|
|
451
|
-
);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
export { getMinimumMint, getMinimumWithdrawalOrderSize, getVaultAPY, getVaultTVL, getWithdrawalFee, getWithdrawalRequests };
|
|
456
|
-
//# sourceMappingURL=chunk-QZHI2T7O.mjs.map
|
|
457
|
-
//# sourceMappingURL=chunk-QZHI2T7O.mjs.map
|