@eth-optimism/actions-sdk 0.0.4 → 0.2.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/LICENSE +1 -1
- package/dist/__mocks__/MockAssets.d.ts.map +1 -0
- package/dist/__mocks__/MockAssets.js.map +1 -0
- package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
- package/dist/__mocks__/MockPrivyClient.js.map +1 -0
- package/dist/__mocks__/utils.d.ts.map +1 -0
- package/dist/__mocks__/utils.js.map +1 -0
- package/dist/__tests__/actions.test.d.ts.map +1 -0
- package/dist/{actions.test.js → __tests__/actions.test.js} +35 -85
- package/dist/__tests__/actions.test.js.map +1 -0
- package/dist/actions.d.ts +19 -7
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +49 -19
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +19 -0
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +84 -6
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/supportedChains.d.ts +1 -1
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +7 -3
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/core/asset/__mocks__/mockAsset.js +1 -1
- package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +9 -7
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
- package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
- package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
- package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
- package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
- package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
- package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
- package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
- package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
- package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +16 -3
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +23 -2
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +20 -50
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/index.d.ts +1 -0
- package/dist/lend/index.d.ts.map +1 -1
- package/dist/lend/index.js +1 -0
- package/dist/lend/index.js.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -9
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.js +2 -11
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
- package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
- package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -9
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.js +24 -31
- package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +25 -17
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +37 -21
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +74 -0
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
- package/dist/lend/providers/aave/AaveLendProvider.js +290 -0
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
- package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
- package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
- package/dist/lend/providers/aave/abis/pool.js +79 -0
- package/dist/lend/providers/aave/abis/pool.js.map +1 -0
- package/dist/lend/providers/aave/addresses.d.ts +57 -0
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
- package/dist/lend/providers/aave/addresses.js +83 -0
- package/dist/lend/providers/aave/addresses.js.map +1 -0
- package/dist/lend/providers/aave/sdk.d.ts +57 -0
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
- package/dist/lend/providers/aave/sdk.js +201 -0
- package/dist/lend/providers/aave/sdk.js.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -4
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +6 -57
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/contracts.d.ts +19 -0
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
- package/dist/lend/providers/morpho/contracts.js +32 -0
- package/dist/lend/providers/morpho/contracts.js.map +1 -0
- package/dist/lend/providers/morpho/sdk.d.ts +4 -3
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +168 -71
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/services/ChainManager.d.ts +1 -1
- package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
- package/dist/services/__mocks__/MockChainManager.js.map +1 -0
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +4 -5
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +2 -2
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/supported/tokens.d.ts +4 -4
- package/dist/supported/tokens.d.ts.map +1 -1
- package/dist/supported/tokens.js +5 -56
- package/dist/supported/tokens.js.map +1 -1
- package/dist/types/actions.d.ts +26 -2
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +3 -3
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/lend/base.d.ts +10 -28
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/contracts.d.ts +17 -0
- package/dist/types/lend/contracts.d.ts.map +1 -0
- package/dist/types/lend/contracts.js +2 -0
- package/dist/types/lend/contracts.js.map +1 -0
- package/dist/types/lend/index.d.ts +1 -0
- package/dist/types/lend/index.d.ts.map +1 -1
- package/dist/types/lend/index.js +1 -0
- package/dist/types/lend/index.js.map +1 -1
- package/dist/utils/assets.d.ts +7 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +12 -1
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +1 -1
- package/dist/utils/assets.test.js.map +1 -1
- package/dist/utils/constants.d.ts +5 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +5 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +13 -13
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +12 -12
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +39 -16
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +4 -4
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -6
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +5 -4
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +22 -7
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +8 -4
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +7 -4
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
- package/package.json +4 -1
- package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
- package/src/{actions.test.ts → __tests__/actions.test.ts} +34 -95
- package/src/actions.ts +82 -26
- package/src/constants/assets.ts +92 -8
- package/src/constants/supportedChains.ts +10 -2
- package/src/core/asset/__mocks__/mockAsset.ts +1 -1
- package/src/index.ts +2 -3
- package/src/{test → lend/__mocks__}/MockLendProvider.ts +24 -27
- package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
- package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
- package/src/lend/core/LendProvider.ts +40 -7
- package/src/lend/core/__tests__/LendProvider.test.ts +21 -63
- package/src/lend/index.ts +1 -0
- package/src/lend/namespaces/ActionsLendNamespace.ts +2 -21
- package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
- package/src/lend/namespaces/WalletLendNamespace.ts +39 -55
- package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +29 -22
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
- package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +61 -26
- package/src/lend/providers/aave/AaveLendProvider.ts +395 -0
- package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
- package/src/lend/providers/aave/abis/pool.ts +81 -0
- package/src/lend/providers/aave/addresses.ts +95 -0
- package/src/lend/providers/aave/sdk.ts +307 -0
- package/src/lend/providers/morpho/MorphoLendProvider.ts +23 -44
- package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +13 -85
- package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
- package/src/lend/providers/morpho/contracts.ts +37 -0
- package/src/lend/providers/morpho/sdk.ts +235 -87
- package/src/services/tokenBalance.spec.ts +2 -2
- package/src/services/tokenBalance.ts +6 -7
- package/src/supported/tokens.ts +6 -57
- package/src/types/actions.ts +30 -2
- package/src/types/asset.ts +3 -3
- package/src/types/lend/base.ts +14 -33
- package/src/types/lend/contracts.ts +18 -0
- package/src/types/lend/index.ts +1 -0
- package/src/utils/assets.test.ts +1 -1
- package/src/utils/assets.ts +15 -1
- package/src/utils/constants.ts +4 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +15 -15
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +14 -14
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
- package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
- package/src/wallet/core/providers/hosted/types/index.ts +8 -2
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +45 -55
- package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
- package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +7 -10
- package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
- package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +8 -8
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +5 -5
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
- package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
- package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
- package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +31 -17
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +10 -11
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +7 -8
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
- package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
- package/dist/actions.test.d.ts.map +0 -1
- package/dist/actions.test.js.map +0 -1
- package/dist/constants/config.d.ts +0 -10
- package/dist/constants/config.d.ts.map +0 -1
- package/dist/constants/config.js +0 -10
- package/dist/constants/config.js.map +0 -1
- package/dist/test/MockAssets.d.ts.map +0 -1
- package/dist/test/MockAssets.js.map +0 -1
- package/dist/test/MockChainManager.d.ts.map +0 -1
- package/dist/test/MockChainManager.js.map +0 -1
- package/dist/test/MockLendProvider.d.ts.map +0 -1
- package/dist/test/MockLendProvider.js.map +0 -1
- package/dist/test/MockMarkets.d.ts.map +0 -1
- package/dist/test/MockMarkets.js.map +0 -1
- package/dist/test/MockPrivyClient.d.ts.map +0 -1
- package/dist/test/MockPrivyClient.js.map +0 -1
- package/dist/test/utils.d.ts.map +0 -1
- package/dist/test/utils.js.map +0 -1
- package/src/constants/config.ts +0 -9
- /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
- /package/dist/{test → __mocks__}/MockAssets.js +0 -0
- /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
- /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
- /package/dist/{test → __mocks__}/utils.d.ts +0 -0
- /package/dist/{test → __mocks__}/utils.js +0 -0
- /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
- /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
- /package/src/{test → __mocks__}/MockAssets.ts +0 -0
- /package/src/{test → __mocks__}/utils.ts +0 -0
- /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts
CHANGED
|
@@ -14,11 +14,11 @@ import type {
|
|
|
14
14
|
} from 'viem/account-abstraction'
|
|
15
15
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
16
16
|
|
|
17
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
17
18
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
19
|
+
import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
|
|
20
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
18
21
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
19
|
-
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
20
|
-
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
21
|
-
import { getRandomAddress } from '@/test/utils.js'
|
|
22
22
|
import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
|
|
23
23
|
import { createMock as createDefaultSmartWalletMock } from '@/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js'
|
|
24
24
|
import {
|
|
@@ -35,6 +35,7 @@ const mockSigner: LocalAccount = {
|
|
|
35
35
|
address: getRandomAddress(),
|
|
36
36
|
type: 'local',
|
|
37
37
|
} as unknown as LocalAccount
|
|
38
|
+
const supportedAssets = undefined
|
|
38
39
|
|
|
39
40
|
describe('DefaultSmartWalletProvider', () => {
|
|
40
41
|
const mockWallet: ReturnType<typeof createDefaultSmartWalletMock> =
|
|
@@ -75,10 +76,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
75
76
|
})
|
|
76
77
|
|
|
77
78
|
it('should create a wallet and return deployment results', async () => {
|
|
78
|
-
const provider = new DefaultSmartWalletProvider(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
)
|
|
79
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
80
|
+
morpho: mockLendProvider,
|
|
81
|
+
})
|
|
82
82
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
83
83
|
const nonce = BigInt(123)
|
|
84
84
|
|
|
@@ -117,10 +117,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
117
117
|
})
|
|
118
118
|
|
|
119
119
|
it('should report deployment successes across multiple chains', async () => {
|
|
120
|
-
const provider = new DefaultSmartWalletProvider(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
)
|
|
120
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
121
|
+
morpho: mockLendProvider,
|
|
122
|
+
})
|
|
124
123
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
125
124
|
const nonce = BigInt(123)
|
|
126
125
|
|
|
@@ -159,17 +158,15 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
159
158
|
})
|
|
160
159
|
|
|
161
160
|
it('should report deployment failures', async () => {
|
|
162
|
-
const provider = new DefaultSmartWalletProvider(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
)
|
|
161
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
162
|
+
morpho: mockLendProvider,
|
|
163
|
+
})
|
|
166
164
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
167
165
|
const nonce = BigInt(123)
|
|
168
166
|
|
|
169
167
|
// Mock deploy to fail for all chains
|
|
170
|
-
const { SmartWalletDeploymentError } =
|
|
171
|
-
'@/wallet/core/wallets/smart/error/errors.js'
|
|
172
|
-
)
|
|
168
|
+
const { SmartWalletDeploymentError } =
|
|
169
|
+
await import('@/wallet/core/wallets/smart/error/errors.js')
|
|
173
170
|
vi.mocked(mockWallet.deploy)
|
|
174
171
|
.mockRejectedValueOnce(
|
|
175
172
|
new SmartWalletDeploymentError('Deployment failed', 1),
|
|
@@ -205,16 +202,14 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
205
202
|
})
|
|
206
203
|
|
|
207
204
|
it('should handle mixed deployment successes and failures', async () => {
|
|
208
|
-
const provider = new DefaultSmartWalletProvider(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
)
|
|
205
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
206
|
+
morpho: mockLendProvider,
|
|
207
|
+
})
|
|
212
208
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
213
209
|
const nonce = BigInt(123)
|
|
214
210
|
|
|
215
|
-
const { SmartWalletDeploymentError } =
|
|
216
|
-
'@/wallet/core/wallets/smart/error/errors.js'
|
|
217
|
-
)
|
|
211
|
+
const { SmartWalletDeploymentError } =
|
|
212
|
+
await import('@/wallet/core/wallets/smart/error/errors.js')
|
|
218
213
|
|
|
219
214
|
// Mock deploy to succeed for chain 1, fail for chain 130
|
|
220
215
|
vi.mocked(mockWallet.deploy)
|
|
@@ -255,10 +250,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
255
250
|
})
|
|
256
251
|
|
|
257
252
|
it('should respect deploymentChainIds parameter', async () => {
|
|
258
|
-
const provider = new DefaultSmartWalletProvider(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
)
|
|
253
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
254
|
+
morpho: mockLendProvider,
|
|
255
|
+
})
|
|
262
256
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
263
257
|
const nonce = BigInt(123)
|
|
264
258
|
const deploymentChainIds: SupportedChainId[] = [1]
|
|
@@ -286,10 +280,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
286
280
|
})
|
|
287
281
|
|
|
288
282
|
it('should throw error for non-SmartWalletDeploymentError failures', async () => {
|
|
289
|
-
const provider = new DefaultSmartWalletProvider(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
)
|
|
283
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
284
|
+
morpho: mockLendProvider,
|
|
285
|
+
})
|
|
293
286
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
294
287
|
const nonce = BigInt(123)
|
|
295
288
|
|
|
@@ -306,10 +299,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
306
299
|
})
|
|
307
300
|
|
|
308
301
|
it('should get wallet address with correct contract call', async () => {
|
|
309
|
-
const provider = new DefaultSmartWalletProvider(
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
)
|
|
302
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
303
|
+
morpho: mockLendProvider,
|
|
304
|
+
})
|
|
313
305
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
314
306
|
const nonce = BigInt(456)
|
|
315
307
|
const mockAddress = getRandomAddress()
|
|
@@ -329,10 +321,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
329
321
|
})
|
|
330
322
|
|
|
331
323
|
it('should get wallet address with default nonce', async () => {
|
|
332
|
-
const provider = new DefaultSmartWalletProvider(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
)
|
|
324
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
325
|
+
morpho: mockLendProvider,
|
|
326
|
+
})
|
|
336
327
|
const signers = [getRandomAddress()]
|
|
337
328
|
const mockAddress = getRandomAddress()
|
|
338
329
|
|
|
@@ -351,10 +342,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
351
342
|
})
|
|
352
343
|
|
|
353
344
|
it('should handle WebAuthn accounts in wallet address calculation', async () => {
|
|
354
|
-
const provider = new DefaultSmartWalletProvider(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
)
|
|
345
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
346
|
+
morpho: mockLendProvider,
|
|
347
|
+
})
|
|
358
348
|
const webAuthnAccount: WebAuthnAccount = {
|
|
359
349
|
type: 'webAuthn',
|
|
360
350
|
publicKey: '0x123456789abcdef',
|
|
@@ -380,10 +370,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
380
370
|
})
|
|
381
371
|
|
|
382
372
|
it('should throw error for invalid signer type', async () => {
|
|
383
|
-
const provider = new DefaultSmartWalletProvider(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
)
|
|
373
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
374
|
+
morpho: mockLendProvider,
|
|
375
|
+
})
|
|
387
376
|
const invalidSigner = { type: 'invalid' } as unknown as Address
|
|
388
377
|
const signers = [invalidSigner]
|
|
389
378
|
|
|
@@ -393,10 +382,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
393
382
|
})
|
|
394
383
|
|
|
395
384
|
it('should get existing wallet', async () => {
|
|
396
|
-
const provider = new DefaultSmartWalletProvider(
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
)
|
|
385
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
386
|
+
morpho: mockLendProvider,
|
|
387
|
+
})
|
|
400
388
|
const walletAddress = getRandomAddress()
|
|
401
389
|
|
|
402
390
|
const wallet = await provider.getWallet({
|
|
@@ -424,7 +412,8 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
424
412
|
DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
|
|
425
413
|
const provider = new DefaultSmartWalletProvider(
|
|
426
414
|
mockChainManager,
|
|
427
|
-
mockLendProvider,
|
|
415
|
+
{ morpho: mockLendProvider },
|
|
416
|
+
supportedAssets,
|
|
428
417
|
attributionSeed,
|
|
429
418
|
)
|
|
430
419
|
|
|
@@ -450,7 +439,8 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
450
439
|
DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
|
|
451
440
|
const provider = new DefaultSmartWalletProvider(
|
|
452
441
|
mockChainManager,
|
|
453
|
-
mockLendProvider,
|
|
442
|
+
{ morpho: mockLendProvider },
|
|
443
|
+
supportedAssets,
|
|
454
444
|
attributionSeed,
|
|
455
445
|
)
|
|
456
446
|
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import type { Address, LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
4
5
|
import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
7
|
import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
|
|
7
8
|
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
LendConfig,
|
|
12
|
-
LendProvider,
|
|
13
|
-
TransactionData,
|
|
14
|
-
} from '@/types/lend/index.js'
|
|
9
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
10
|
+
import type { Asset, TokenBalance } from '@/types/asset.js'
|
|
11
|
+
import type { TransactionData } from '@/types/lend/index.js'
|
|
15
12
|
import type {
|
|
16
13
|
BatchTransactionReturnType,
|
|
17
14
|
TransactionReturnType,
|
|
@@ -24,11 +21,16 @@ import type {
|
|
|
24
21
|
*/
|
|
25
22
|
export abstract class Wallet {
|
|
26
23
|
/** Lend namespace with all lending operations */
|
|
27
|
-
lend?: WalletLendNamespace
|
|
28
|
-
/**
|
|
29
|
-
protected
|
|
24
|
+
lend?: WalletLendNamespace
|
|
25
|
+
/** Providers for lending market operations */
|
|
26
|
+
protected lendProviders: {
|
|
27
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
28
|
+
aave?: LendProvider<LendProviderConfig>
|
|
29
|
+
}
|
|
30
30
|
/** Manages supported blockchain networks and RPC clients */
|
|
31
31
|
protected chainManager: ChainManager
|
|
32
|
+
/** List of supported assets for this wallet */
|
|
33
|
+
protected supportedAssets: Asset[]
|
|
32
34
|
/** Promise to initialize the wallet */
|
|
33
35
|
private initPromise?: Promise<void>
|
|
34
36
|
|
|
@@ -50,27 +52,33 @@ export abstract class Wallet {
|
|
|
50
52
|
/**
|
|
51
53
|
* Create a new wallet
|
|
52
54
|
* @param chainManager - Chain manager for the wallet
|
|
53
|
-
* @param
|
|
55
|
+
* @param lendProviders - Lend providers for the wallet
|
|
56
|
+
* @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
|
|
54
57
|
*/
|
|
55
58
|
protected constructor(
|
|
56
59
|
chainManager: ChainManager,
|
|
57
|
-
|
|
60
|
+
lendProviders?: {
|
|
61
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
62
|
+
aave?: LendProvider<LendProviderConfig>
|
|
63
|
+
},
|
|
64
|
+
supportedAssets?: Asset[],
|
|
58
65
|
) {
|
|
59
66
|
this.chainManager = chainManager
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
this.lendProviders = lendProviders || {}
|
|
68
|
+
this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
|
|
69
|
+
if (this.lendProviders.morpho || this.lendProviders.aave) {
|
|
70
|
+
this.lend = new WalletLendNamespace(this.lendProviders, this)
|
|
63
71
|
}
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
/**
|
|
67
75
|
* Get asset balances across all supported chains
|
|
68
76
|
* @description Fetches ETH and ERC20 token balances for this wallet across all supported networks.
|
|
77
|
+
* Uses the configured supported assets from ActionsConfig.assets if provided.
|
|
69
78
|
* @returns Promise resolving to array of token balances with chain breakdown
|
|
70
79
|
*/
|
|
71
80
|
async getBalance(): Promise<TokenBalance[]> {
|
|
72
|
-
|
|
73
|
-
const tokenBalancePromises = SUPPORTED_TOKENS.map(async (asset) => {
|
|
81
|
+
const tokenBalancePromises = this.supportedAssets.map(async (asset) => {
|
|
74
82
|
return fetchERC20Balance(this.chainManager, this.address, asset)
|
|
75
83
|
})
|
|
76
84
|
const ethBalancePromise = fetchETHBalance(this.chainManager, this.address)
|
|
@@ -2,12 +2,12 @@ import type { LocalAccount } from 'viem'
|
|
|
2
2
|
import { unichain } from 'viem/chains'
|
|
3
3
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
4
4
|
|
|
5
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
5
6
|
import type { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
7
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
6
8
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
9
|
import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
|
|
8
10
|
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
9
|
-
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
10
|
-
import { getRandomAddress } from '@/test/utils.js'
|
|
11
11
|
import { TestWallet } from '@/wallet/core/wallets/abstract/__mocks__/TestWallet.js'
|
|
12
12
|
|
|
13
13
|
vi.mock('@/services/tokenBalance.js', async () => {
|
|
@@ -10,9 +10,9 @@ import { createWalletClient } from 'viem'
|
|
|
10
10
|
import { unichain } from 'viem/chains'
|
|
11
11
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
12
12
|
|
|
13
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
14
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
13
15
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
14
|
-
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
15
|
-
import { getRandomAddress } from '@/test/utils.js'
|
|
16
16
|
import type { TransactionData } from '@/types/lend/index.js'
|
|
17
17
|
import type { EOATransactionReceipt } from '@/wallet/core/wallets/abstract/types/index.js'
|
|
18
18
|
import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
|
|
@@ -13,13 +13,11 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
|
|
|
13
13
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
14
14
|
import { TransactionConfirmedButRevertedError } from '@/core/error/errors.js'
|
|
15
15
|
import { retryOnStaleRead } from '@/core/utils/retryOnStaleRead.js'
|
|
16
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
16
17
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
18
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
17
19
|
import type { Asset } from '@/types/asset.js'
|
|
18
|
-
import type {
|
|
19
|
-
LendConfig,
|
|
20
|
-
LendProvider,
|
|
21
|
-
TransactionData,
|
|
22
|
-
} from '@/types/lend/index.js'
|
|
20
|
+
import type { TransactionData } from '@/types/lend/index.js'
|
|
23
21
|
import { parseAssetAmount } from '@/utils/assets.js'
|
|
24
22
|
import { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
|
|
25
23
|
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
@@ -60,7 +58,7 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
60
58
|
* @param owners - Array of wallet owners (addresses or WebAuthn accounts)
|
|
61
59
|
* @param signer - Local account for signing transactions
|
|
62
60
|
* @param chainManager - Network management service
|
|
63
|
-
* @param
|
|
61
|
+
* @param lendProviders - Lending operations providers
|
|
64
62
|
* @param deploymentAddress - Known wallet address (if already deployed)
|
|
65
63
|
* @param ownerIndex - Index of signer in owners array
|
|
66
64
|
* @param nonce - Nonce for address generation
|
|
@@ -69,12 +67,16 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
69
67
|
signers: Signer[],
|
|
70
68
|
signer: LocalAccount,
|
|
71
69
|
chainManager: ChainManager,
|
|
72
|
-
|
|
70
|
+
lendProviders?: {
|
|
71
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
72
|
+
aave?: LendProvider<LendProviderConfig>
|
|
73
|
+
},
|
|
74
|
+
supportedAssets?: Asset[],
|
|
73
75
|
deploymentAddress?: Address,
|
|
74
76
|
nonce?: bigint,
|
|
75
77
|
attributionSuffix?: Hex,
|
|
76
78
|
) {
|
|
77
|
-
super(chainManager,
|
|
79
|
+
super(chainManager, lendProviders, supportedAssets)
|
|
78
80
|
|
|
79
81
|
const { signersWithLocalAccount, signerIndex } =
|
|
80
82
|
DefaultSmartWallet.ensureLocalAccountSigner(signers, signer)
|
|
@@ -115,7 +117,11 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
115
117
|
signer: LocalAccount
|
|
116
118
|
chainManager: ChainManager
|
|
117
119
|
signers?: Signer[]
|
|
118
|
-
|
|
120
|
+
lendProviders?: {
|
|
121
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
122
|
+
aave?: LendProvider<LendProviderConfig>
|
|
123
|
+
}
|
|
124
|
+
supportedAssets?: Asset[]
|
|
119
125
|
deploymentAddress?: Address
|
|
120
126
|
nonce?: bigint
|
|
121
127
|
attributionSuffix?: Hex
|
|
@@ -125,7 +131,8 @@ export class DefaultSmartWallet extends SmartWallet {
|
|
|
125
131
|
signers,
|
|
126
132
|
params.signer,
|
|
127
133
|
params.chainManager,
|
|
128
|
-
params.
|
|
134
|
+
params.lendProviders,
|
|
135
|
+
params.supportedAssets,
|
|
129
136
|
params.deploymentAddress,
|
|
130
137
|
params.nonce,
|
|
131
138
|
params.attributionSuffix,
|
|
@@ -8,16 +8,13 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
|
|
|
8
8
|
import { baseSepolia, unichain } from 'viem/chains'
|
|
9
9
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
10
10
|
|
|
11
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
12
|
+
import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
|
|
13
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
11
14
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
12
15
|
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { getRandomAddress } from '@/test/utils.js'
|
|
16
|
-
import type {
|
|
17
|
-
LendConfig,
|
|
18
|
-
LendProvider,
|
|
19
|
-
TransactionData,
|
|
20
|
-
} from '@/types/lend/index.js'
|
|
16
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
17
|
+
import type { LendProvider, TransactionData } from '@/types/lend/index.js'
|
|
21
18
|
import {
|
|
22
19
|
smartWalletAbi,
|
|
23
20
|
smartWalletFactoryAbi,
|
|
@@ -754,7 +751,7 @@ async function createAndInitDefaultSmartWallet(
|
|
|
754
751
|
signers?: Address[]
|
|
755
752
|
signer?: LocalAccount
|
|
756
753
|
chainManager?: ChainManager
|
|
757
|
-
lendProvider?: LendProvider<
|
|
754
|
+
lendProvider?: LendProvider<LendProviderConfig>
|
|
758
755
|
deploymentAddress?: Address
|
|
759
756
|
nonce?: bigint
|
|
760
757
|
attributionSuffix?: Hex
|
|
@@ -773,7 +770,7 @@ async function createAndInitDefaultSmartWallet(
|
|
|
773
770
|
signers,
|
|
774
771
|
signer,
|
|
775
772
|
chainManager,
|
|
776
|
-
lendProvider,
|
|
773
|
+
lendProviders: lendProvider ? { morpho: lendProvider } : undefined,
|
|
777
774
|
deploymentAddress,
|
|
778
775
|
nonce,
|
|
779
776
|
attributionSuffix,
|
|
@@ -3,7 +3,7 @@ import { pad } from 'viem'
|
|
|
3
3
|
import type { WebAuthnAccount } from 'viem/account-abstraction'
|
|
4
4
|
import { describe, expect, it } from 'vitest'
|
|
5
5
|
|
|
6
|
-
import { getRandomAddress } from '@/
|
|
6
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
7
7
|
import { findSignerInArray } from '@/wallet/core/wallets/smart/default/utils/findSignerInArray.js'
|
|
8
8
|
|
|
9
9
|
describe('findSignerInArray', () => {
|
|
@@ -2,7 +2,7 @@ import type { Address, Hex, LocalAccount } from 'viem'
|
|
|
2
2
|
import type { WebAuthnAccount } from 'viem/account-abstraction'
|
|
3
3
|
import { describe, expect, it } from 'vitest'
|
|
4
4
|
|
|
5
|
-
import { getRandomAddress } from '@/
|
|
5
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
6
6
|
import { getSignerPublicKey } from '@/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js'
|
|
7
7
|
|
|
8
8
|
describe('getSignerPublicKey', () => {
|
|
@@ -2,8 +2,10 @@ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
|
|
|
2
2
|
import type { LocalAccount } from 'viem'
|
|
3
3
|
import { getAddress } from 'viem'
|
|
4
4
|
|
|
5
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
-
import type {
|
|
7
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
8
|
+
import type { Asset } from '@/types/asset.js'
|
|
7
9
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
8
10
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
9
11
|
import type {
|
|
@@ -29,7 +31,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
29
31
|
* @param params - Configuration parameters
|
|
30
32
|
* @param params.privyClient - Privy client instance
|
|
31
33
|
* @param params.chainManager - Chain manager for multi-chain operations
|
|
32
|
-
* @param params.
|
|
34
|
+
* @param params.lendProviders - Optional lend providers for DeFi operations
|
|
35
|
+
* @param params.supportedAssets - Optional list of supported assets
|
|
33
36
|
* @param params.authorizationContext - Optional authorization context for the Privy client.
|
|
34
37
|
* Used when Privy needs to sign requests.
|
|
35
38
|
* See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
|
|
@@ -38,10 +41,14 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
38
41
|
constructor(params: {
|
|
39
42
|
privyClient: PrivyClient
|
|
40
43
|
chainManager: ChainManager
|
|
41
|
-
|
|
44
|
+
lendProviders?: {
|
|
45
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
46
|
+
aave?: LendProvider<LendProviderConfig>
|
|
47
|
+
}
|
|
48
|
+
supportedAssets?: Asset[]
|
|
42
49
|
authorizationContext?: AuthorizationContext
|
|
43
50
|
}) {
|
|
44
|
-
super(params.chainManager, params.
|
|
51
|
+
super(params.chainManager, params.lendProviders, params.supportedAssets)
|
|
45
52
|
this.privyClient = params.privyClient
|
|
46
53
|
this.authorizationContext = params.authorizationContext
|
|
47
54
|
}
|
|
@@ -55,7 +62,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
55
62
|
walletId: params.walletId,
|
|
56
63
|
address: getAddress(params.address),
|
|
57
64
|
chainManager: this.chainManager,
|
|
58
|
-
|
|
65
|
+
lendProviders: this.lendProviders,
|
|
66
|
+
supportedAssets: this.supportedAssets,
|
|
59
67
|
})
|
|
60
68
|
}
|
|
61
69
|
|
|
@@ -3,15 +3,15 @@ import { getAddress } from 'viem'
|
|
|
3
3
|
import { unichain } from 'viem/chains'
|
|
4
4
|
import { describe, expect, it, vi } from 'vitest'
|
|
5
5
|
|
|
6
|
-
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
6
|
import {
|
|
9
7
|
createMockPrivyClient,
|
|
10
8
|
createMockPrivyWallet,
|
|
11
9
|
getMockAuthorizationContext,
|
|
12
|
-
} from '@/
|
|
13
|
-
import { getRandomAddress } from '@/
|
|
14
|
-
import
|
|
10
|
+
} from '@/__mocks__/MockPrivyClient.js'
|
|
11
|
+
import { getRandomAddress } from '@/__mocks__/utils.js'
|
|
12
|
+
import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
|
|
13
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
14
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
15
15
|
import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
16
16
|
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
17
17
|
import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
@@ -83,12 +83,12 @@ describe('PrivyHostedWalletProvider', () => {
|
|
|
83
83
|
|
|
84
84
|
it('forwards lendProvider when provided to constructor', async () => {
|
|
85
85
|
const privy = createMockPrivyClient('app', 'secret')
|
|
86
|
-
const mockLendProvider =
|
|
86
|
+
const mockLendProvider = createMockLendProvider()
|
|
87
87
|
const provider = new PrivyHostedWalletProvider({
|
|
88
88
|
privyClient: privy,
|
|
89
89
|
authorizationContext: getMockAuthorizationContext(),
|
|
90
90
|
chainManager: mockChainManager,
|
|
91
|
-
|
|
91
|
+
lendProviders: { morpho: mockLendProvider },
|
|
92
92
|
})
|
|
93
93
|
const spy = vi.spyOn(PrivyWallet, 'create')
|
|
94
94
|
|
|
@@ -102,7 +102,7 @@ describe('PrivyHostedWalletProvider', () => {
|
|
|
102
102
|
|
|
103
103
|
expect(spy).toHaveBeenCalledWith(
|
|
104
104
|
expect.objectContaining({
|
|
105
|
-
|
|
105
|
+
lendProviders: { morpho: mockLendProvider },
|
|
106
106
|
}),
|
|
107
107
|
)
|
|
108
108
|
})
|
|
@@ -28,11 +28,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
|
|
|
28
28
|
validateOptions(options): options is NodeOptionsMap['privy'] {
|
|
29
29
|
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
|
|
30
30
|
},
|
|
31
|
-
create({ chainManager,
|
|
31
|
+
create({ chainManager, lendProviders, supportedAssets }, options) {
|
|
32
32
|
return new PrivyHostedWalletProvider({
|
|
33
33
|
privyClient: options.privyClient,
|
|
34
34
|
chainManager,
|
|
35
|
-
|
|
35
|
+
lendProviders,
|
|
36
|
+
supportedAssets,
|
|
36
37
|
authorizationContext: options.authorizationContext,
|
|
37
38
|
})
|
|
38
39
|
},
|
|
@@ -44,11 +45,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
|
|
|
44
45
|
const o = options as NodeOptionsMap['turnkey']
|
|
45
46
|
return Boolean(o?.client)
|
|
46
47
|
},
|
|
47
|
-
create({ chainManager,
|
|
48
|
+
create({ chainManager, lendProviders, supportedAssets }, options) {
|
|
48
49
|
return new TurnkeyHostedWalletProvider(
|
|
49
50
|
options.client,
|
|
50
51
|
chainManager,
|
|
51
|
-
|
|
52
|
+
lendProviders,
|
|
53
|
+
supportedAssets,
|
|
52
54
|
)
|
|
53
55
|
},
|
|
54
56
|
})
|
package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts
CHANGED
|
@@ -3,12 +3,12 @@ import type { TurnkeyClient } from '@turnkey/http'
|
|
|
3
3
|
import { unichain } from 'viem/chains'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
5
|
|
|
6
|
-
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
6
|
import {
|
|
9
7
|
createMockPrivyClient,
|
|
10
8
|
getMockAuthorizationContext,
|
|
11
|
-
} from '@/
|
|
9
|
+
} from '@/__mocks__/MockPrivyClient.js'
|
|
10
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
11
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
12
12
|
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
13
13
|
import { NodeHostedWalletProviderRegistry } from '@/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js'
|
|
14
14
|
import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
|
|
@@ -3,8 +3,10 @@ import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
|
|
|
3
3
|
import type { TurnkeyServerClient } from '@turnkey/sdk-server'
|
|
4
4
|
import type { LocalAccount } from 'viem'
|
|
5
5
|
|
|
6
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
6
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import type {
|
|
8
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
9
|
+
import type { Asset } from '@/types/asset.js'
|
|
8
10
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
9
11
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
10
12
|
import type { NodeToActionsOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
|
|
@@ -26,6 +28,8 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
|
26
28
|
* Create a new Turnkey wallet provider
|
|
27
29
|
* @param client - Turnkey client instance (HTTP, server, or core SDK base)
|
|
28
30
|
* @param chainManager - Chain manager used to resolve chains and RPC transports
|
|
31
|
+
* @param lendProviders - Optional lend providers for DeFi operations
|
|
32
|
+
* @param supportedAssets - Optional list of supported assets
|
|
29
33
|
*/
|
|
30
34
|
constructor(
|
|
31
35
|
private readonly client:
|
|
@@ -33,9 +37,13 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
|
33
37
|
| TurnkeyServerClient
|
|
34
38
|
| TurnkeySDKClientBase,
|
|
35
39
|
chainManager: ChainManager,
|
|
36
|
-
|
|
40
|
+
lendProviders?: {
|
|
41
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
42
|
+
aave?: LendProvider<LendProviderConfig>
|
|
43
|
+
},
|
|
44
|
+
supportedAssets?: Asset[],
|
|
37
45
|
) {
|
|
38
|
-
super(chainManager,
|
|
46
|
+
super(chainManager, lendProviders, supportedAssets)
|
|
39
47
|
}
|
|
40
48
|
|
|
41
49
|
/**
|
|
@@ -56,7 +64,8 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
|
56
64
|
signWith: params.signWith,
|
|
57
65
|
ethereumAddress: params.ethereumAddress,
|
|
58
66
|
chainManager: this.chainManager,
|
|
59
|
-
|
|
67
|
+
lendProviders: this.lendProviders,
|
|
68
|
+
supportedAssets: this.supportedAssets,
|
|
60
69
|
})
|
|
61
70
|
}
|
|
62
71
|
|