@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.
Files changed (62) hide show
  1. package/dist/index.d.mts +3158 -725
  2. package/dist/index.d.ts +3158 -725
  3. package/dist/index.js +15013 -171
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +15067 -6
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +25 -86
  8. package/CHANGELOG.md +0 -320
  9. package/LICENSE +0 -28
  10. package/README.md +0 -119
  11. package/dist/chain-utils-BdJecHBA.d.mts +0 -334
  12. package/dist/chain-utils-BdJecHBA.d.ts +0 -334
  13. package/dist/chunk-5OK753GA.js +0 -1989
  14. package/dist/chunk-5OK753GA.js.map +0 -1
  15. package/dist/chunk-6CU533DM.mjs +0 -39
  16. package/dist/chunk-6CU533DM.mjs.map +0 -1
  17. package/dist/chunk-7JQQ2TH4.mjs +0 -1231
  18. package/dist/chunk-7JQQ2TH4.mjs.map +0 -1
  19. package/dist/chunk-HU5CTL4C.mjs +0 -1962
  20. package/dist/chunk-HU5CTL4C.mjs.map +0 -1
  21. package/dist/chunk-NNDY5TID.js +0 -1143
  22. package/dist/chunk-NNDY5TID.js.map +0 -1
  23. package/dist/chunk-Q5FXJU5Y.mjs +0 -1133
  24. package/dist/chunk-Q5FXJU5Y.mjs.map +0 -1
  25. package/dist/chunk-QZHI2T7O.mjs +0 -457
  26. package/dist/chunk-QZHI2T7O.mjs.map +0 -1
  27. package/dist/chunk-SWUG4PTB.js +0 -464
  28. package/dist/chunk-SWUG4PTB.js.map +0 -1
  29. package/dist/chunk-TNL23CO2.js +0 -45
  30. package/dist/chunk-TNL23CO2.js.map +0 -1
  31. package/dist/chunk-WK7EJRBB.mjs +0 -1482
  32. package/dist/chunk-WK7EJRBB.mjs.map +0 -1
  33. package/dist/chunk-WYBYBPX5.js +0 -1518
  34. package/dist/chunk-WYBYBPX5.js.map +0 -1
  35. package/dist/chunk-ZKDXRGI5.js +0 -1239
  36. package/dist/chunk-ZKDXRGI5.js.map +0 -1
  37. package/dist/core.d.mts +0 -152
  38. package/dist/core.d.ts +0 -152
  39. package/dist/core.js +0 -1220
  40. package/dist/core.js.map +0 -1
  41. package/dist/core.mjs +0 -1194
  42. package/dist/core.mjs.map +0 -1
  43. package/dist/display.d.mts +0 -263
  44. package/dist/display.d.ts +0 -263
  45. package/dist/display.js +0 -36
  46. package/dist/display.js.map +0 -1
  47. package/dist/display.mjs +0 -7
  48. package/dist/display.mjs.map +0 -1
  49. package/dist/index-DXXA8gEA.d.mts +0 -5026
  50. package/dist/index-aE5lTOUH.d.ts +0 -5026
  51. package/dist/utils.d.mts +0 -112
  52. package/dist/utils.d.ts +0 -112
  53. package/dist/utils.js +0 -67
  54. package/dist/utils.js.map +0 -1
  55. package/dist/utils.mjs +0 -25
  56. package/dist/utils.mjs.map +0 -1
  57. package/dist/vaults.d.mts +0 -4
  58. package/dist/vaults.d.ts +0 -4
  59. package/dist/vaults.js +0 -96
  60. package/dist/vaults.js.map +0 -1
  61. package/dist/vaults.mjs +0 -7
  62. 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"]}
@@ -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