rise-wallet 0.1.4-beta.1 → 0.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -34
- package/dist/cli/Dialog.d.ts +34 -0
- package/dist/cli/Dialog.js +60 -0
- package/dist/cli/Dialog.js.map +1 -0
- package/dist/cli/Messenger.d.ts +7 -0
- package/dist/cli/Messenger.js +123 -0
- package/dist/cli/Messenger.js.map +1 -0
- package/dist/cli/bin/commands-D7N5ucUu.js +50 -0
- package/dist/cli/bin/index.js +9 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/internal/http.d.ts +6 -0
- package/dist/cli/internal/http.js +17 -0
- package/dist/cli/internal/http.js.map +1 -0
- package/dist/cli/tsdown.config.d.ts +2 -0
- package/dist/cli/tsdown.config.js +28 -0
- package/dist/cli/tsdown.config.js.map +1 -0
- package/dist/core/Chains.d.ts +210 -0
- package/dist/core/Chains.js +20 -0
- package/dist/core/Chains.js.map +1 -0
- package/dist/core/Dialog.d.ts +307 -0
- package/dist/core/Dialog.js +809 -0
- package/dist/core/Dialog.js.map +1 -0
- package/dist/core/Messenger.d.ts +164 -0
- package/dist/core/Messenger.js +207 -0
- package/dist/core/Messenger.js.map +1 -0
- package/dist/core/Mode.d.ts +4 -0
- package/dist/core/Mode.js +5 -0
- package/dist/core/Mode.js.map +1 -0
- package/dist/core/Porto.d.ts +1608 -0
- package/dist/core/Porto.js +105 -0
- package/dist/core/Porto.js.map +1 -0
- package/dist/core/RpcSchema.d.ts +81 -0
- package/dist/core/RpcSchema.js +2 -0
- package/dist/core/RpcSchema.js.map +1 -0
- package/dist/core/Storage.d.ts +14 -0
- package/dist/core/Storage.js +109 -0
- package/dist/core/Storage.js.map +1 -0
- package/dist/core/Transport.d.ts +22 -0
- package/dist/core/Transport.js +37 -0
- package/dist/core/Transport.js.map +1 -0
- package/dist/core/internal/_generated/chains.d.ts +1 -0
- package/dist/core/internal/_generated/chains.js +3 -0
- package/dist/core/internal/_generated/chains.js.map +1 -0
- package/dist/core/internal/_generated/contracts/IthacaAccount.d.ts +1120 -0
- package/dist/core/internal/_generated/contracts/IthacaAccount.js +1453 -0
- package/dist/core/internal/_generated/contracts/IthacaAccount.js.map +1 -0
- package/dist/core/internal/call.d.ts +163 -0
- package/dist/core/internal/call.js +115 -0
- package/dist/core/internal/call.js.map +1 -0
- package/dist/core/internal/erc8010.d.ts +17 -0
- package/dist/core/internal/erc8010.js +29 -0
- package/dist/core/internal/erc8010.js.map +1 -0
- package/dist/core/internal/intersectionObserver.d.ts +1 -0
- package/dist/core/internal/intersectionObserver.js +5 -0
- package/dist/core/internal/intersectionObserver.js.map +1 -0
- package/dist/core/internal/logger.d.ts +21 -0
- package/dist/core/internal/logger.js +24 -0
- package/dist/core/internal/logger.js.map +1 -0
- package/dist/core/internal/mode.d.ts +344 -0
- package/dist/core/internal/mode.js +110 -0
- package/dist/core/internal/mode.js.map +1 -0
- package/dist/core/internal/modes/dialog.d.ts +799 -0
- package/dist/core/internal/modes/dialog.js +760 -0
- package/dist/core/internal/modes/dialog.js.map +1 -0
- package/dist/core/internal/modes/reactNative.d.ts +1401 -0
- package/dist/core/internal/modes/reactNative.js +19 -0
- package/dist/core/internal/modes/reactNative.js.map +1 -0
- package/dist/core/internal/modes/relay.d.ts +684 -0
- package/dist/core/internal/modes/relay.js +708 -0
- package/dist/core/internal/modes/relay.js.map +1 -0
- package/dist/core/internal/permissions.d.ts +59 -0
- package/dist/core/internal/permissions.js +30 -0
- package/dist/core/internal/permissions.js.map +1 -0
- package/dist/core/internal/permissionsRequest.d.ts +71 -0
- package/dist/core/internal/permissionsRequest.js +58 -0
- package/dist/core/internal/permissionsRequest.js.map +1 -0
- package/dist/core/internal/porto.d.ts +13 -0
- package/dist/core/internal/porto.js +2 -0
- package/dist/core/internal/porto.js.map +1 -0
- package/dist/core/internal/promise.d.ts +8 -0
- package/dist/core/internal/promise.js +11 -0
- package/dist/core/internal/promise.js.map +1 -0
- package/dist/core/internal/provider.d.ts +29 -0
- package/dist/core/internal/provider.js +941 -0
- package/dist/core/internal/provider.js.map +1 -0
- package/dist/core/internal/relay/rpcSchema.d.ts +75 -0
- package/dist/core/internal/relay/rpcSchema.js +7 -0
- package/dist/core/internal/relay/rpcSchema.js.map +1 -0
- package/dist/core/internal/relay/schema/capabilities.d.ts +164 -0
- package/dist/core/internal/relay/schema/capabilities.js +112 -0
- package/dist/core/internal/relay/schema/capabilities.js.map +1 -0
- package/dist/core/internal/relay/schema/intent.d.ts +167 -0
- package/dist/core/internal/relay/schema/intent.js +170 -0
- package/dist/core/internal/relay/schema/intent.js.map +1 -0
- package/dist/core/internal/relay/schema/key.d.ts +43 -0
- package/dist/core/internal/relay/schema/key.js +30 -0
- package/dist/core/internal/relay/schema/key.js.map +1 -0
- package/dist/core/internal/relay/schema/permission.d.ts +39 -0
- package/dist/core/internal/relay/schema/permission.js +29 -0
- package/dist/core/internal/relay/schema/permission.js.map +1 -0
- package/dist/core/internal/relay/schema/preCall.d.ts +62 -0
- package/dist/core/internal/relay/schema/preCall.js +36 -0
- package/dist/core/internal/relay/schema/preCall.js.map +1 -0
- package/dist/core/internal/relay/schema/quotes.d.ts +369 -0
- package/dist/core/internal/relay/schema/quotes.js +89 -0
- package/dist/core/internal/relay/schema/quotes.js.map +1 -0
- package/dist/core/internal/relay/schema/rpc.d.ts +1528 -0
- package/dist/core/internal/relay/schema/rpc.js +638 -0
- package/dist/core/internal/relay/schema/rpc.js.map +1 -0
- package/dist/core/internal/relay/schema/token.d.ts +13 -0
- package/dist/core/internal/relay/schema/token.js +13 -0
- package/dist/core/internal/relay/schema/token.js.map +1 -0
- package/dist/core/internal/requiredFunds.d.ts +18 -0
- package/dist/core/internal/requiredFunds.js +25 -0
- package/dist/core/internal/requiredFunds.js.map +1 -0
- package/dist/core/internal/schema/capabilities.d.ts +313 -0
- package/dist/core/internal/schema/capabilities.js +133 -0
- package/dist/core/internal/schema/capabilities.js.map +1 -0
- package/dist/core/internal/schema/key.d.ts +164 -0
- package/dist/core/internal/schema/key.js +75 -0
- package/dist/core/internal/schema/key.js.map +1 -0
- package/dist/core/internal/schema/permissions.d.ts +102 -0
- package/dist/core/internal/schema/permissions.js +28 -0
- package/dist/core/internal/schema/permissions.js.map +1 -0
- package/dist/core/internal/schema/request.d.ts +937 -0
- package/dist/core/internal/schema/request.js +57 -0
- package/dist/core/internal/schema/request.js.map +1 -0
- package/dist/core/internal/schema/rpc.d.ts +3314 -0
- package/dist/core/internal/schema/rpc.js +599 -0
- package/dist/core/internal/schema/rpc.js.map +1 -0
- package/dist/core/internal/schema/token.d.ts +1 -0
- package/dist/core/internal/schema/token.js +2 -0
- package/dist/core/internal/schema/token.js.map +1 -0
- package/dist/core/internal/schema/utils.d.ts +18 -0
- package/dist/core/internal/schema/utils.js +213 -0
- package/dist/core/internal/schema/utils.js.map +1 -0
- package/dist/core/internal/siwe.d.ts +32 -0
- package/dist/core/internal/siwe.js +92 -0
- package/dist/core/internal/siwe.js.map +1 -0
- package/dist/core/internal/store.d.ts +2 -0
- package/dist/core/internal/store.js +9 -0
- package/dist/core/internal/store.js.map +1 -0
- package/dist/core/internal/tokens.d.ts +57 -0
- package/dist/core/internal/tokens.js +69 -0
- package/dist/core/internal/tokens.js.map +1 -0
- package/dist/core/internal/types.d.ts +298 -0
- package/dist/core/internal/types.js +2 -0
- package/dist/core/internal/types.js.map +1 -0
- package/dist/core/internal/urlString.d.ts +1 -0
- package/dist/core/internal/urlString.js +8 -0
- package/dist/core/internal/urlString.js.map +1 -0
- package/dist/core/internal/userAgent.d.ts +10 -0
- package/dist/core/internal/userAgent.js +19 -0
- package/dist/core/internal/userAgent.js.map +1 -0
- package/dist/core/internal/utils.d.ts +24 -0
- package/dist/core/internal/utils.js +62 -0
- package/dist/core/internal/utils.js.map +1 -0
- package/dist/core/react-native/Porto.d.ts +1480 -0
- package/dist/core/react-native/Porto.js +17 -0
- package/dist/core/react-native/Porto.js.map +1 -0
- package/dist/core/react-native/configure.d.ts +9 -0
- package/dist/core/react-native/configure.js +24 -0
- package/dist/core/react-native/configure.js.map +1 -0
- package/dist/core/react-native/environment.d.ts +26 -0
- package/dist/core/react-native/environment.js +13 -0
- package/dist/core/react-native/environment.js.map +1 -0
- package/dist/core/react-native/index.d.ts +4 -0
- package/dist/core/react-native/index.js +5 -0
- package/dist/core/react-native/index.js.map +1 -0
- package/dist/core/react-native/utils.d.ts +1 -0
- package/dist/core/react-native/utils.js +12 -0
- package/dist/core/react-native/utils.js.map +1 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -0
- package/dist/internal/index.d.ts +3 -0
- package/dist/internal/index.js +4 -0
- package/dist/internal/index.js.map +1 -0
- package/dist/react-native/crypto.d.ts +1 -0
- package/dist/react-native/crypto.js +12 -0
- package/dist/react-native/crypto.js.map +1 -0
- package/dist/react-native/index.d.ts +7 -0
- package/dist/react-native/index.js +12 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/register.d.ts +2 -0
- package/dist/react-native/register.js +15 -0
- package/dist/react-native/register.js.map +1 -0
- package/dist/register/index.d.ts +14 -0
- package/dist/register/index.js +2 -0
- package/dist/register/index.js.map +1 -0
- package/dist/remote/Actions.d.ts +33 -0
- package/dist/remote/Actions.js +76 -0
- package/dist/remote/Actions.js.map +1 -0
- package/dist/remote/Events.d.ts +46 -0
- package/dist/remote/Events.js +132 -0
- package/dist/remote/Events.js.map +1 -0
- package/dist/remote/Hooks.d.ts +3800 -0
- package/dist/remote/Hooks.js +106 -0
- package/dist/remote/Hooks.js.map +1 -0
- package/dist/remote/Porto.d.ts +857 -0
- package/dist/remote/Porto.js +66 -0
- package/dist/remote/Porto.js.map +1 -0
- package/dist/remote/index.d.ts +4 -0
- package/dist/remote/index.js +5 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote/internal/methodPolicies.d.ts +96 -0
- package/dist/remote/internal/methodPolicies.js +102 -0
- package/dist/remote/internal/methodPolicies.js.map +1 -0
- package/dist/server/Route.d.ts +87 -0
- package/dist/server/Route.js +189 -0
- package/dist/server/Route.js.map +1 -0
- package/dist/server/Router.d.ts +23 -0
- package/dist/server/Router.js +29 -0
- package/dist/server/Router.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/internal/merchantSchema.d.ts +64 -0
- package/dist/server/internal/merchantSchema.js +7 -0
- package/dist/server/internal/merchantSchema.js.map +1 -0
- package/dist/server/internal/requestListener.d.ts +123 -0
- package/dist/server/internal/requestListener.js +172 -0
- package/dist/server/internal/requestListener.js.map +1 -0
- package/dist/theme/Theme.d.ts +121 -0
- package/dist/theme/Theme.js +18 -0
- package/dist/theme/Theme.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.js +2 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/trusted-hosts.d.ts +1 -0
- package/dist/trusted-hosts.js +41 -0
- package/dist/trusted-hosts.js.map +1 -0
- package/dist/viem/Account.d.ts +110 -0
- package/dist/viem/Account.js +132 -0
- package/dist/viem/Account.js.map +1 -0
- package/dist/viem/AccountActions.d.ts +10 -0
- package/dist/viem/AccountActions.js +14 -0
- package/dist/viem/AccountActions.js.map +1 -0
- package/dist/viem/CapabilitiesSchema.d.ts +14 -0
- package/dist/viem/CapabilitiesSchema.js +2 -0
- package/dist/viem/CapabilitiesSchema.js.map +1 -0
- package/dist/viem/ContractActions.d.ts +208 -0
- package/dist/viem/ContractActions.js +350 -0
- package/dist/viem/ContractActions.js.map +1 -0
- package/dist/viem/Key.d.ts +1155 -0
- package/dist/viem/Key.js +924 -0
- package/dist/viem/Key.js.map +1 -0
- package/dist/viem/RelayActions.d.ts +435 -0
- package/dist/viem/RelayActions.js +385 -0
- package/dist/viem/RelayActions.js.map +1 -0
- package/dist/viem/RelayClient.d.ts +26 -0
- package/dist/viem/RelayClient.js +44 -0
- package/dist/viem/RelayClient.js.map +1 -0
- package/dist/viem/RpcSchema.d.ts +22 -0
- package/dist/viem/RpcSchema.js +2 -0
- package/dist/viem/RpcSchema.js.map +1 -0
- package/dist/viem/WalletActions.d.ts +86 -0
- package/dist/viem/WalletActions.js +220 -0
- package/dist/viem/WalletActions.js.map +1 -0
- package/dist/viem/WalletClient.d.ts +20 -0
- package/dist/viem/WalletClient.js +23 -0
- package/dist/viem/WalletClient.js.map +1 -0
- package/dist/viem/index.d.ts +13 -0
- package/dist/viem/index.js +12 -0
- package/dist/viem/index.js.map +1 -0
- package/dist/viem/internal/relayActions.d.ts +364 -0
- package/dist/viem/internal/relayActions.js +783 -0
- package/dist/viem/internal/relayActions.js.map +1 -0
- package/dist/viem/internal/utils.d.ts +15 -0
- package/dist/viem/internal/utils.js +2 -0
- package/dist/viem/internal/utils.js.map +1 -0
- package/dist/wagmi/Actions.d.ts +1 -0
- package/dist/wagmi/Actions.js +2 -0
- package/dist/wagmi/Actions.js.map +1 -0
- package/dist/wagmi/Connector.d.ts +26 -0
- package/dist/wagmi/Connector.js +238 -0
- package/dist/wagmi/Connector.js.map +1 -0
- package/dist/wagmi/Hooks.d.ts +1 -0
- package/dist/wagmi/Hooks.js +2 -0
- package/dist/wagmi/Hooks.js.map +1 -0
- package/dist/wagmi/Query.d.ts +1 -0
- package/dist/wagmi/Query.js +2 -0
- package/dist/wagmi/Query.js.map +1 -0
- package/dist/wagmi/index.d.ts +4 -0
- package/dist/wagmi/index.js +5 -0
- package/dist/wagmi/index.js.map +1 -0
- package/dist/wagmi/internal/core.d.ts +83 -0
- package/dist/wagmi/internal/core.js +229 -0
- package/dist/wagmi/internal/core.js.map +1 -0
- package/dist/wagmi/internal/query.d.ts +32 -0
- package/dist/wagmi/internal/query.js +23 -0
- package/dist/wagmi/internal/query.js.map +1 -0
- package/dist/wagmi/internal/react.d.ts +90 -0
- package/dist/wagmi/internal/react.js +256 -0
- package/dist/wagmi/internal/react.js.map +1 -0
- package/dist/wagmi/internal/types.d.ts +10 -0
- package/dist/wagmi/internal/types.js +2 -0
- package/dist/wagmi/internal/types.js.map +1 -0
- package/dist/wagmi/internal/utils.d.ts +1 -0
- package/dist/wagmi/internal/utils.js +18 -0
- package/dist/wagmi/internal/utils.js.map +1 -0
- package/package.json +286 -34
- package/src/cli/Dialog.ts +75 -0
- package/src/cli/Messenger.ts +148 -0
- package/src/cli/bin/index.ts +37 -0
- package/src/cli/bin/tsconfig.json +8 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/internal/commands.ts +212 -0
- package/src/cli/internal/context.ts +56 -0
- package/src/cli/internal/http.ts +28 -0
- package/src/cli/internal/utils.ts +28 -0
- package/src/cli/tsdown.config.ts +37 -0
- package/src/core/Chains.ts +25 -0
- package/src/core/Dialog.ts +1059 -0
- package/src/core/Messenger.ts +394 -0
- package/src/core/Mode.ts +4 -0
- package/src/core/Porto.ts +287 -0
- package/src/core/RpcSchema.ts +124 -0
- package/src/core/Storage.ts +122 -0
- package/src/core/Transport.ts +45 -0
- package/src/core/internal/_generated/chains.ts +2 -0
- package/src/core/internal/_generated/contracts/EIP7702Proxy.ts +25 -0
- package/src/core/internal/_generated/contracts/Escrow.ts +330 -0
- package/src/core/internal/_generated/contracts/ExperimentERC20.ts +569 -0
- package/src/core/internal/_generated/contracts/ExperimentERC721.ts +588 -0
- package/src/core/internal/_generated/contracts/GuardedExecutor.ts +623 -0
- package/src/core/internal/_generated/contracts/ICallChecker.ts +34 -0
- package/src/core/internal/_generated/contracts/ICommon.ts +4 -0
- package/src/core/internal/_generated/contracts/IEscrow.ts +114 -0
- package/src/core/internal/_generated/contracts/IFunder.ts +80 -0
- package/src/core/internal/_generated/contracts/IFunderV4.ts +45 -0
- package/src/core/internal/_generated/contracts/IIthacaAccount.ts +107 -0
- package/src/core/internal/_generated/contracts/IOAppCore.ts +142 -0
- package/src/core/internal/_generated/contracts/IOAppMsgInspector.ts +45 -0
- package/src/core/internal/_generated/contracts/IOAppReceiver.ts +161 -0
- package/src/core/internal/_generated/contracts/IOrchestrator.ts +95 -0
- package/src/core/internal/_generated/contracts/ISettler.ts +52 -0
- package/src/core/internal/_generated/contracts/ISigner.ts +34 -0
- package/src/core/internal/_generated/contracts/IthacaAccount.ts +1454 -0
- package/src/core/internal/_generated/contracts/IthacaAccountNew.ts +1454 -0
- package/src/core/internal/_generated/contracts/IthacaAccountOld.ts +1454 -0
- package/src/core/internal/_generated/contracts/LayerZeroSettler.ts +811 -0
- package/src/core/internal/_generated/contracts/LibNonce.ts +15 -0
- package/src/core/internal/_generated/contracts/LibTStack.ts +4 -0
- package/src/core/internal/_generated/contracts/MultiSigSigner.ts +203 -0
- package/src/core/internal/_generated/contracts/OApp.ts +412 -0
- package/src/core/internal/_generated/contracts/OAppCore.ts +229 -0
- package/src/core/internal/_generated/contracts/OAppReceiver.ts +396 -0
- package/src/core/internal/_generated/contracts/OAppSender.ts +245 -0
- package/src/core/internal/_generated/contracts/Orchestrator.ts +390 -0
- package/src/core/internal/_generated/contracts/SimpleFunder.ts +534 -0
- package/src/core/internal/_generated/contracts/SimpleSettler.ts +360 -0
- package/src/core/internal/_generated/contracts/Simulator.ts +170 -0
- package/src/core/internal/_generated/contracts/TokenTransferLib.ts +4 -0
- package/src/core/internal/_snapshots/provider.browser.test.ts.snap +119 -0
- package/src/core/internal/_snapshots/provider.test.ts.snap +1103 -0
- package/src/core/internal/call.test.ts +116 -0
- package/src/core/internal/call.ts +245 -0
- package/src/core/internal/erc8010.test.ts +74 -0
- package/src/core/internal/erc8010.ts +44 -0
- package/src/core/internal/intersectionObserver.ts +5 -0
- package/src/core/internal/logger.ts +42 -0
- package/src/core/internal/mode.ts +498 -0
- package/src/core/internal/modes/dialog.ts +1051 -0
- package/src/core/internal/modes/reactNative.ts +29 -0
- package/src/core/internal/modes/relay.ts +893 -0
- package/src/core/internal/permissions.ts +43 -0
- package/src/core/internal/permissionsRequest.ts +88 -0
- package/src/core/internal/porto.ts +16 -0
- package/src/core/internal/promise.ts +19 -0
- package/src/core/internal/provider.browser.test.ts +311 -0
- package/src/core/internal/provider.test.ts +3552 -0
- package/src/core/internal/provider.ts +1277 -0
- package/src/core/internal/relay/rpcSchema.ts +101 -0
- package/src/core/internal/relay/schema/capabilities.test.ts +663 -0
- package/src/core/internal/relay/schema/capabilities.ts +156 -0
- package/src/core/internal/relay/schema/intent.test.ts +433 -0
- package/src/core/internal/relay/schema/intent.ts +174 -0
- package/src/core/internal/relay/schema/key.test.ts +424 -0
- package/src/core/internal/relay/schema/key.ts +34 -0
- package/src/core/internal/relay/schema/permission.test.ts +499 -0
- package/src/core/internal/relay/schema/permission.ts +34 -0
- package/src/core/internal/relay/schema/preCall.ts +39 -0
- package/src/core/internal/relay/schema/quotes.test.ts +901 -0
- package/src/core/internal/relay/schema/quotes.ts +98 -0
- package/src/core/internal/relay/schema/rpc.ts +822 -0
- package/src/core/internal/relay/schema/token.ts +16 -0
- package/src/core/internal/requiredFunds.test.ts +141 -0
- package/src/core/internal/requiredFunds.ts +45 -0
- package/src/core/internal/schema/capabilities.test.ts +1334 -0
- package/src/core/internal/schema/capabilities.ts +162 -0
- package/src/core/internal/schema/key.test.ts +570 -0
- package/src/core/internal/schema/key.ts +98 -0
- package/src/core/internal/schema/permissions.test.ts +948 -0
- package/src/core/internal/schema/permissions.ts +31 -0
- package/src/core/internal/schema/request.bench.ts +35 -0
- package/src/core/internal/schema/request.ts +90 -0
- package/src/core/internal/schema/rpc.ts +821 -0
- package/src/core/internal/schema/token.ts +1 -0
- package/src/core/internal/schema/utils.test.ts +572 -0
- package/src/core/internal/schema/utils.ts +236 -0
- package/src/core/internal/siwe.test.ts +473 -0
- package/src/core/internal/siwe.ts +144 -0
- package/src/core/internal/store.ts +9 -0
- package/src/core/internal/tokens.test.ts +317 -0
- package/src/core/internal/tokens.ts +125 -0
- package/src/core/internal/types.ts +448 -0
- package/src/core/internal/urlString.ts +5 -0
- package/src/core/internal/userAgent.ts +35 -0
- package/src/core/internal/utils.test.ts +35 -0
- package/src/core/internal/utils.ts +67 -0
- package/src/core/react-native/Porto.ts +22 -0
- package/src/core/react-native/configure.ts +31 -0
- package/src/core/react-native/environment.ts +43 -0
- package/src/core/react-native/index.ts +4 -0
- package/src/core/react-native/utils.ts +18 -0
- package/src/index.ts +17 -0
- package/src/internal/index.ts +3 -0
- package/src/react-native/crypto.ts +19 -0
- package/src/react-native/index.ts +15 -0
- package/src/react-native/register.ts +24 -0
- package/src/register/index.ts +17 -0
- package/src/remote/Actions.ts +115 -0
- package/src/remote/Events.ts +193 -0
- package/src/remote/Hooks.ts +194 -0
- package/src/remote/Porto.ts +144 -0
- package/src/remote/index.ts +4 -0
- package/src/remote/internal/methodPolicies.ts +124 -0
- package/src/server/Route.test.ts +347 -0
- package/src/server/Route.ts +259 -0
- package/src/server/Router.test.ts +32 -0
- package/src/server/Router.ts +59 -0
- package/src/server/index.ts +2 -0
- package/src/server/internal/merchantSchema.ts +11 -0
- package/src/server/internal/requestListener.ts +284 -0
- package/src/theme/Theme.ts +163 -0
- package/src/theme/index.ts +2 -0
- package/src/trusted-hosts.ts +40 -0
- package/src/tsconfig.build.tsbuildinfo +1 -0
- package/src/tsconfig.json +15 -0
- package/src/viem/Account.test.ts +270 -0
- package/src/viem/Account.ts +278 -0
- package/src/viem/AccountActions.test.ts +3 -0
- package/src/viem/AccountActions.ts +30 -0
- package/src/viem/CapabilitiesSchema.ts +18 -0
- package/src/viem/ContractActions.test.ts +980 -0
- package/src/viem/ContractActions.ts +624 -0
- package/src/viem/Key.test.ts +1420 -0
- package/src/viem/Key.ts +1318 -0
- package/src/viem/RelayActions.test.ts +1730 -0
- package/src/viem/RelayActions.ts +1082 -0
- package/src/viem/RelayClient.test.ts +127 -0
- package/src/viem/RelayClient.ts +87 -0
- package/src/viem/RpcSchema.ts +27 -0
- package/src/viem/WalletActions.test.ts +646 -0
- package/src/viem/WalletActions.ts +476 -0
- package/src/viem/WalletClient.test.ts +36 -0
- package/src/viem/WalletClient.ts +74 -0
- package/src/viem/index.ts +13 -0
- package/src/viem/internal/relayActions.test.ts +1296 -0
- package/src/viem/internal/relayActions.ts +1222 -0
- package/src/viem/internal/utils.ts +27 -0
- package/src/wagmi/Actions.ts +13 -0
- package/src/wagmi/Connector.ts +304 -0
- package/src/wagmi/Hooks.ts +14 -0
- package/src/wagmi/Query.ts +5 -0
- package/src/wagmi/index.ts +4 -0
- package/src/wagmi/internal/core.test.ts +12 -0
- package/src/wagmi/internal/core.ts +468 -0
- package/src/wagmi/internal/query.ts +52 -0
- package/src/wagmi/internal/react.test.ts +12 -0
- package/src/wagmi/internal/react.ts +705 -0
- package/src/wagmi/internal/types.ts +21 -0
- package/src/wagmi/internal/utils.ts +25 -0
- package/dist/chain.cjs +0 -17
- package/dist/chain.d.cts +0 -41
- package/dist/chain.d.ts +0 -41
- package/dist/chain.js +0 -13
- package/dist/config.cjs +0 -19
- package/dist/config.d.cts +0 -3
- package/dist/config.d.ts +0 -3
- package/dist/config.js +0 -16
- package/dist/index.cjs +0 -18
- package/dist/index.d.cts +0 -2
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
import * as AbiError from 'ox/AbiError'
|
|
2
|
+
import * as AbiParameters from 'ox/AbiParameters'
|
|
3
|
+
import type * as Address from 'ox/Address'
|
|
4
|
+
import * as Authorization from 'ox/Authorization'
|
|
5
|
+
import * as Errors from 'ox/Errors'
|
|
6
|
+
import * as Hex from 'ox/Hex'
|
|
7
|
+
import * as Signature from 'ox/Signature'
|
|
8
|
+
import * as TypedData from 'ox/TypedData'
|
|
9
|
+
import {
|
|
10
|
+
type Account as Account_viem,
|
|
11
|
+
type Authorization as Authorization_viem,
|
|
12
|
+
BaseError,
|
|
13
|
+
type Chain,
|
|
14
|
+
type Client,
|
|
15
|
+
encodeFunctionData,
|
|
16
|
+
parseAbi,
|
|
17
|
+
type SendTransactionParameters,
|
|
18
|
+
type Transport,
|
|
19
|
+
} from 'viem'
|
|
20
|
+
import {
|
|
21
|
+
call,
|
|
22
|
+
getEip712Domain as getEip712Domain_viem,
|
|
23
|
+
prepareAuthorization,
|
|
24
|
+
readContract,
|
|
25
|
+
sendTransaction,
|
|
26
|
+
} from 'viem/actions'
|
|
27
|
+
import {
|
|
28
|
+
type EncodeExecuteDataParameters,
|
|
29
|
+
encodeExecuteData,
|
|
30
|
+
getExecuteError as getExecuteError_viem,
|
|
31
|
+
} from 'viem/experimental/erc7821'
|
|
32
|
+
import * as IthacaAccount from '../core/internal/_generated/contracts/IthacaAccount.js'
|
|
33
|
+
import * as Call from '../core/internal/call.js'
|
|
34
|
+
import type { OneOf } from '../core/internal/types.js'
|
|
35
|
+
import type * as Storage from '../core/Storage.js'
|
|
36
|
+
import * as Account from './Account.js'
|
|
37
|
+
import type { GetAccountParameter } from './internal/utils.js'
|
|
38
|
+
import * as Key from './Key.js'
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
abi,
|
|
42
|
+
code,
|
|
43
|
+
} from '../core/internal/_generated/contracts/IthacaAccount.js'
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Executes a set of calls on a delegated account.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* TODO
|
|
50
|
+
*
|
|
51
|
+
* @param client - Client.
|
|
52
|
+
* @param parameters - Execution parameters.
|
|
53
|
+
* @returns Transaction hash.
|
|
54
|
+
*/
|
|
55
|
+
export async function execute<
|
|
56
|
+
const calls extends readonly unknown[],
|
|
57
|
+
chain extends Chain | undefined,
|
|
58
|
+
account extends Account.Account | undefined,
|
|
59
|
+
>(
|
|
60
|
+
client: Client<Transport, chain, account>,
|
|
61
|
+
parameters: execute.Parameters<calls, account>,
|
|
62
|
+
): Promise<execute.ReturnType> {
|
|
63
|
+
const { account = client.account } = parameters
|
|
64
|
+
|
|
65
|
+
const account_ = account ? Account.from(account) : undefined
|
|
66
|
+
if (!account_) throw new Error('account is required.')
|
|
67
|
+
|
|
68
|
+
// Block expression to obtain the execution request and signatures.
|
|
69
|
+
const { request, signatures } = await (async () => {
|
|
70
|
+
const { nonce, key, signatures, storage } = parameters
|
|
71
|
+
|
|
72
|
+
// If an execution has been prepared, we can early return the request and signatures.
|
|
73
|
+
if (nonce && signatures) return { request: parameters, signatures }
|
|
74
|
+
|
|
75
|
+
// Otherwise, we need to prepare the execution (compute digests and sign over them).
|
|
76
|
+
const { digests, request } = await prepareExecute(client, {
|
|
77
|
+
...parameters,
|
|
78
|
+
account: account_,
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
const exec = await Account.sign(account_, {
|
|
82
|
+
key: digests.auth ? null : key,
|
|
83
|
+
payload: digests.exec,
|
|
84
|
+
replaySafe: false,
|
|
85
|
+
storage,
|
|
86
|
+
})
|
|
87
|
+
const auth = await (async () => {
|
|
88
|
+
if (!digests.auth) return undefined
|
|
89
|
+
if (account_.source !== 'privateKey')
|
|
90
|
+
throw new Error('cannot sign authorization without root key.')
|
|
91
|
+
return account_.sign?.({
|
|
92
|
+
hash: digests.auth,
|
|
93
|
+
})
|
|
94
|
+
})()
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
request,
|
|
98
|
+
signatures: {
|
|
99
|
+
auth,
|
|
100
|
+
exec,
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
})()
|
|
104
|
+
|
|
105
|
+
const { authorization, calls, executor, nonce } = request
|
|
106
|
+
|
|
107
|
+
// If an authorization signature is provided, it means that we will need to designate
|
|
108
|
+
// the EOA to the delegation contract. We will need to construct an authorization list
|
|
109
|
+
// to do so.
|
|
110
|
+
const authorizationList = (() => {
|
|
111
|
+
if (!signatures.auth) return undefined
|
|
112
|
+
const signature = Signature.from(signatures.auth)
|
|
113
|
+
return [
|
|
114
|
+
{
|
|
115
|
+
...authorization,
|
|
116
|
+
r: Hex.fromNumber(signature.r),
|
|
117
|
+
s: Hex.fromNumber(signature.s),
|
|
118
|
+
yParity: signature.yParity,
|
|
119
|
+
},
|
|
120
|
+
]
|
|
121
|
+
})()
|
|
122
|
+
|
|
123
|
+
// Structure the operation data to be passed to EIP-7821 execution.
|
|
124
|
+
// The operation data contains the nonce of the execution, as well as the
|
|
125
|
+
// signature.
|
|
126
|
+
const opData = AbiParameters.encodePacked(
|
|
127
|
+
['uint256', 'bytes'],
|
|
128
|
+
[nonce, signatures.exec],
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
return await sendTransaction(client, {
|
|
133
|
+
account: typeof executor === 'undefined' ? null : executor,
|
|
134
|
+
authorizationList,
|
|
135
|
+
data: encodeExecuteData({ calls, opData }),
|
|
136
|
+
to: account_.address,
|
|
137
|
+
} as SendTransactionParameters)
|
|
138
|
+
} catch (e) {
|
|
139
|
+
parseExecutionError(e, { calls })
|
|
140
|
+
throw e
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export declare namespace execute {
|
|
145
|
+
export type Parameters<
|
|
146
|
+
calls extends readonly unknown[] = readonly unknown[],
|
|
147
|
+
account extends Account.Account | undefined = Account.Account | undefined,
|
|
148
|
+
> = Pick<EncodeExecuteDataParameters<calls>, 'calls'> &
|
|
149
|
+
GetAccountParameter<account> & {
|
|
150
|
+
/**
|
|
151
|
+
* Contract address to delegate to.
|
|
152
|
+
*/
|
|
153
|
+
delegation?: Address.Address | undefined
|
|
154
|
+
/**
|
|
155
|
+
* The executor of the execute transaction.
|
|
156
|
+
*
|
|
157
|
+
* - `Account`: execution will be attempted with the specified account.
|
|
158
|
+
* - `undefined`: the transaction will be filled by the JSON-RPC server.
|
|
159
|
+
*/
|
|
160
|
+
executor?: Account_viem | undefined
|
|
161
|
+
/**
|
|
162
|
+
* Storage to use for keytype-specific caching (e.g. WebAuthn user verification).
|
|
163
|
+
*/
|
|
164
|
+
storage?: Storage.Storage | undefined
|
|
165
|
+
} & OneOf<
|
|
166
|
+
| {
|
|
167
|
+
/**
|
|
168
|
+
* EIP-7702 Authorization to use for delegation.
|
|
169
|
+
*/
|
|
170
|
+
authorization?: Authorization_viem | undefined
|
|
171
|
+
/**
|
|
172
|
+
* Nonce to use for execution that will be invalidated by the delegated account.
|
|
173
|
+
*/
|
|
174
|
+
nonce: bigint
|
|
175
|
+
/**
|
|
176
|
+
* Signature for execution. Required if the `executor` is not the EOA.
|
|
177
|
+
*/
|
|
178
|
+
signatures: {
|
|
179
|
+
auth?: Hex.Hex | undefined
|
|
180
|
+
exec: Hex.Hex
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
| {
|
|
184
|
+
/**
|
|
185
|
+
* Key to use for execution.
|
|
186
|
+
*/
|
|
187
|
+
key?: number | Key.Key | undefined
|
|
188
|
+
}
|
|
189
|
+
| {}
|
|
190
|
+
>
|
|
191
|
+
|
|
192
|
+
export type ReturnType = Hex.Hex
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns the EIP-712 domain for a delegated account. Used for the execution
|
|
197
|
+
* signing payload.
|
|
198
|
+
*
|
|
199
|
+
* @param client - Client.
|
|
200
|
+
* @param parameters - Parameters.
|
|
201
|
+
* @returns EIP-712 domain.
|
|
202
|
+
*/
|
|
203
|
+
export async function getEip712Domain<
|
|
204
|
+
chain extends Chain | undefined,
|
|
205
|
+
account extends Account.Account | undefined,
|
|
206
|
+
>(
|
|
207
|
+
client: Client<Transport, chain, account>,
|
|
208
|
+
parameters: getEip712Domain.Parameters<account>,
|
|
209
|
+
): Promise<TypedData.Domain> {
|
|
210
|
+
const { account = client.account } = parameters
|
|
211
|
+
const account_ = account ? Account.from(account) : undefined
|
|
212
|
+
if (!account_) throw new Error('account is required.')
|
|
213
|
+
|
|
214
|
+
const {
|
|
215
|
+
domain: { name, version },
|
|
216
|
+
} = await getEip712Domain_viem(client, {
|
|
217
|
+
address: account_.address,
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
if (!client.chain) throw new Error('client.chain is required')
|
|
221
|
+
return {
|
|
222
|
+
chainId: client.chain.id,
|
|
223
|
+
name,
|
|
224
|
+
verifyingContract: account_.address,
|
|
225
|
+
version,
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export declare namespace getEip712Domain {
|
|
230
|
+
export type Parameters<
|
|
231
|
+
account extends Account.Account | undefined = Account.Account | undefined,
|
|
232
|
+
> = GetAccountParameter<account>
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Returns the key at the given index.
|
|
237
|
+
*
|
|
238
|
+
* @param client - Client.
|
|
239
|
+
* @param parameters - Parameters.
|
|
240
|
+
* @returns Key.
|
|
241
|
+
*/
|
|
242
|
+
export async function keyAt<
|
|
243
|
+
chain extends Chain | undefined,
|
|
244
|
+
account extends Account.Account | undefined,
|
|
245
|
+
>(
|
|
246
|
+
client: Client<Transport, chain, account>,
|
|
247
|
+
parameters: keyAt.Parameters<account>,
|
|
248
|
+
) {
|
|
249
|
+
const { account = client.account, index } = parameters
|
|
250
|
+
|
|
251
|
+
const account_ = account ? Account.from(account) : undefined
|
|
252
|
+
if (!account_) throw new Error('account is required.')
|
|
253
|
+
|
|
254
|
+
const key = await readContract(client, {
|
|
255
|
+
abi: IthacaAccount.abi,
|
|
256
|
+
address: account_.address,
|
|
257
|
+
args: [BigInt(index)],
|
|
258
|
+
functionName: 'keyAt',
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
return Key.deserialize(key, { chainId: client.chain?.id ?? 0 })
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export declare namespace keyAt {
|
|
265
|
+
export type Parameters<
|
|
266
|
+
account extends Account.Account | undefined = Account.Account | undefined,
|
|
267
|
+
> = GetAccountParameter<account> & {
|
|
268
|
+
/**
|
|
269
|
+
* Index of the key to extract.
|
|
270
|
+
*/
|
|
271
|
+
index: number
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Prepares the payloads to sign over and fills the request to execute a set of calls.
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* TODO
|
|
280
|
+
*
|
|
281
|
+
* @param client - Client.
|
|
282
|
+
* @param parameters - Parameters.
|
|
283
|
+
* @returns Prepared properties.
|
|
284
|
+
*/
|
|
285
|
+
export async function prepareExecute<
|
|
286
|
+
const calls extends readonly unknown[],
|
|
287
|
+
chain extends Chain | undefined,
|
|
288
|
+
account extends Account.Account | undefined,
|
|
289
|
+
>(
|
|
290
|
+
client: Client<Transport, chain, account>,
|
|
291
|
+
parameters: prepareExecute.Parameters<calls, account>,
|
|
292
|
+
): Promise<prepareExecute.ReturnType<calls>> {
|
|
293
|
+
const { account = client.account, delegation, executor, ...rest } = parameters
|
|
294
|
+
|
|
295
|
+
const account_ = account ? Account.from(account) : undefined
|
|
296
|
+
if (!account_) throw new Error('account is required.')
|
|
297
|
+
|
|
298
|
+
const calls = parameters.calls.map((call: any) => ({
|
|
299
|
+
data: call.data ?? '0x',
|
|
300
|
+
to: call.to === Call.selfAddress ? account_.address : call.to,
|
|
301
|
+
value: call.value ?? 0n,
|
|
302
|
+
}))
|
|
303
|
+
|
|
304
|
+
const nonce = Hex.toBigInt(
|
|
305
|
+
Hex.concat(
|
|
306
|
+
// multichain flag (0 = single chain, 0xc1d0 = multi-chain) // TODO: enable multi-chain
|
|
307
|
+
Hex.fromNumber(0, { size: 2 }),
|
|
308
|
+
// sequence key
|
|
309
|
+
Hex.random(22),
|
|
310
|
+
// sequential nonce
|
|
311
|
+
Hex.fromNumber(0, { size: 8 }),
|
|
312
|
+
),
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
// Compute the signing payloads for execution and EIP-7702 authorization (optional).
|
|
316
|
+
const [executePayload, [authorization, authorizationPayload]] =
|
|
317
|
+
await Promise.all([
|
|
318
|
+
getExecuteDigest(client, {
|
|
319
|
+
account: account_,
|
|
320
|
+
calls,
|
|
321
|
+
delegation,
|
|
322
|
+
nonce,
|
|
323
|
+
}),
|
|
324
|
+
|
|
325
|
+
// Only need to compute an authorization payload if we are delegating to an EOA.
|
|
326
|
+
(async () => {
|
|
327
|
+
if (!delegation) return []
|
|
328
|
+
|
|
329
|
+
const authorization = await prepareAuthorization(client, {
|
|
330
|
+
account: account_.address,
|
|
331
|
+
// chainId: 0,
|
|
332
|
+
contractAddress: delegation,
|
|
333
|
+
executor,
|
|
334
|
+
})
|
|
335
|
+
return [
|
|
336
|
+
authorization,
|
|
337
|
+
Authorization.getSignPayload({
|
|
338
|
+
address: authorization.address,
|
|
339
|
+
chainId: authorization.chainId,
|
|
340
|
+
nonce: BigInt(authorization.nonce),
|
|
341
|
+
}),
|
|
342
|
+
]
|
|
343
|
+
})(),
|
|
344
|
+
])
|
|
345
|
+
|
|
346
|
+
return {
|
|
347
|
+
digests: {
|
|
348
|
+
auth: authorizationPayload,
|
|
349
|
+
exec: executePayload.digest,
|
|
350
|
+
},
|
|
351
|
+
request: {
|
|
352
|
+
...rest,
|
|
353
|
+
account: account_,
|
|
354
|
+
authorization,
|
|
355
|
+
calls,
|
|
356
|
+
executor,
|
|
357
|
+
nonce,
|
|
358
|
+
},
|
|
359
|
+
typedData: executePayload.typedData,
|
|
360
|
+
} as never
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export declare namespace prepareExecute {
|
|
364
|
+
export type Parameters<
|
|
365
|
+
calls extends readonly unknown[] = readonly unknown[],
|
|
366
|
+
account extends Account.Account | undefined = Account.Account | undefined,
|
|
367
|
+
> = Pick<execute.Parameters<calls, account>, 'calls'> &
|
|
368
|
+
GetAccountParameter<account> & {
|
|
369
|
+
/**
|
|
370
|
+
* Contract address to delegate to.
|
|
371
|
+
*/
|
|
372
|
+
delegation?: Address.Address | undefined
|
|
373
|
+
/**
|
|
374
|
+
* The executor of the execute transaction.
|
|
375
|
+
*
|
|
376
|
+
* - `Account`: execution will be attempted with the specified account.
|
|
377
|
+
* - `undefined`: the transaction will be filled by the JSON-RPC server.
|
|
378
|
+
*/
|
|
379
|
+
executor?: Account_viem | undefined
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export type ReturnType<
|
|
383
|
+
calls extends readonly unknown[] = readonly unknown[],
|
|
384
|
+
> = {
|
|
385
|
+
digests: {
|
|
386
|
+
auth?: Hex.Hex | undefined
|
|
387
|
+
exec: Hex.Hex
|
|
388
|
+
}
|
|
389
|
+
request: Omit<Parameters<calls>, 'account' | 'delegation'> & {
|
|
390
|
+
account: Account.Account
|
|
391
|
+
authorization?: Authorization_viem | undefined
|
|
392
|
+
nonce: bigint
|
|
393
|
+
}
|
|
394
|
+
typedData: TypedData.Definition
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
export function parseExecutionError<const calls extends readonly unknown[]>(
|
|
399
|
+
e: unknown,
|
|
400
|
+
{ calls }: { calls?: execute.Parameters<calls>['calls'] | undefined } = {},
|
|
401
|
+
) {
|
|
402
|
+
if (!(e instanceof BaseError)) return
|
|
403
|
+
|
|
404
|
+
const getAbiError = (error: BaseError) => {
|
|
405
|
+
const cause = error.walk((e) => 'data' in (e as BaseError))
|
|
406
|
+
if (!cause) return undefined
|
|
407
|
+
|
|
408
|
+
let data: Hex.Hex | undefined
|
|
409
|
+
if (cause instanceof BaseError) {
|
|
410
|
+
const [, match] = cause.details?.match(/"(0x[0-9a-f]{8})"/) || []
|
|
411
|
+
if (match) data = match as Hex.Hex
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
if (!data) {
|
|
415
|
+
if (!('data' in cause)) return undefined
|
|
416
|
+
if (cause.data instanceof BaseError) return getAbiError(cause.data)
|
|
417
|
+
if (typeof cause.data !== 'string') return undefined
|
|
418
|
+
if (cause.data === '0x') return undefined
|
|
419
|
+
data = cause.data as Hex.Hex
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
try {
|
|
423
|
+
if (data === '0xd0d5039b') return AbiError.from('error Unauthorized()')
|
|
424
|
+
return AbiError.fromAbi(
|
|
425
|
+
[...IthacaAccount.abi, AbiError.from('error CallError()')],
|
|
426
|
+
data,
|
|
427
|
+
)
|
|
428
|
+
} catch {
|
|
429
|
+
return undefined
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
const error = getExecuteError_viem(e as BaseError, {
|
|
433
|
+
calls: (calls ?? []) as any,
|
|
434
|
+
})
|
|
435
|
+
const abiError = getAbiError(error)
|
|
436
|
+
if (error === e && !abiError) return
|
|
437
|
+
throw new ExecutionError(Object.assign(error, { abiError }))
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
export declare namespace parseExecutionError {
|
|
441
|
+
export type ErrorType = ExecutionError | Errors.GlobalErrorType
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/** Thrown when the execution fails. */
|
|
445
|
+
export class ExecutionError extends Errors.BaseError<BaseError> {
|
|
446
|
+
override readonly name = 'AccountContract.ExecutionError'
|
|
447
|
+
|
|
448
|
+
abiError?: AbiError.AbiError | undefined
|
|
449
|
+
|
|
450
|
+
constructor(cause: BaseError & { abiError?: AbiError.AbiError | undefined }) {
|
|
451
|
+
super('An error occurred while executing calls.', {
|
|
452
|
+
cause,
|
|
453
|
+
metaMessages: [cause.abiError && 'Reason: ' + cause.abiError.name].filter(
|
|
454
|
+
Boolean,
|
|
455
|
+
),
|
|
456
|
+
})
|
|
457
|
+
|
|
458
|
+
this.abiError = cause.abiError
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
export type Decorator<
|
|
463
|
+
account extends Account.Account | undefined = Account.Account | undefined,
|
|
464
|
+
> = {
|
|
465
|
+
/**
|
|
466
|
+
* Executes a set of calls on a delegated account.
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* TODO
|
|
470
|
+
*
|
|
471
|
+
* @param client - Client.
|
|
472
|
+
* @param parameters - Execution parameters.
|
|
473
|
+
* @returns Transaction hash.
|
|
474
|
+
*/
|
|
475
|
+
execute: <const calls extends readonly unknown[]>(
|
|
476
|
+
parameters: execute.Parameters<calls, account>,
|
|
477
|
+
) => Promise<execute.ReturnType>
|
|
478
|
+
/**
|
|
479
|
+
* Returns the EIP-712 domain for a delegated account. Used for the execution
|
|
480
|
+
* signing payload.
|
|
481
|
+
*
|
|
482
|
+
* @param client - Client.
|
|
483
|
+
* @param parameters - Parameters.
|
|
484
|
+
* @returns EIP-712 domain.
|
|
485
|
+
*/
|
|
486
|
+
getEip712Domain: (
|
|
487
|
+
parameters: getEip712Domain.Parameters<account>,
|
|
488
|
+
) => Promise<TypedData.Domain>
|
|
489
|
+
/**
|
|
490
|
+
* Returns the key at the given index.
|
|
491
|
+
*
|
|
492
|
+
* @param client - Client.
|
|
493
|
+
* @param parameters - Parameters.
|
|
494
|
+
* @returns Key.
|
|
495
|
+
*/
|
|
496
|
+
keyAt: (parameters: keyAt.Parameters<account>) => Promise<Key.Key>
|
|
497
|
+
/**
|
|
498
|
+
* Prepares the payloads to sign over and fills the request to execute a set of calls.
|
|
499
|
+
*
|
|
500
|
+
* @param client - Client.
|
|
501
|
+
* @param parameters - Parameters.
|
|
502
|
+
* @returns Prepared properties.
|
|
503
|
+
*/
|
|
504
|
+
prepareExecute: <calls extends readonly unknown[] = readonly unknown[]>(
|
|
505
|
+
parameters: prepareExecute.Parameters<calls, account>,
|
|
506
|
+
) => Promise<prepareExecute.ReturnType<calls>>
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
export function decorator<
|
|
510
|
+
transport extends Transport,
|
|
511
|
+
chain extends Chain | undefined,
|
|
512
|
+
account extends Account.Account | undefined,
|
|
513
|
+
>(client: Client<transport, chain, account>): Decorator<account> {
|
|
514
|
+
return {
|
|
515
|
+
execute: (parameters) => execute(client, parameters),
|
|
516
|
+
getEip712Domain: (parameters) => getEip712Domain(client, parameters),
|
|
517
|
+
keyAt: (parameters) => keyAt(client, parameters),
|
|
518
|
+
prepareExecute: (parameters) => prepareExecute(client, parameters),
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
///////////////////////////////////////////////////////////////////////////
|
|
523
|
+
// Internal
|
|
524
|
+
///////////////////////////////////////////////////////////////////////////
|
|
525
|
+
|
|
526
|
+
/** @internal */
|
|
527
|
+
async function getExecuteDigest<
|
|
528
|
+
const calls extends readonly unknown[],
|
|
529
|
+
chain extends Chain | undefined,
|
|
530
|
+
account extends Account.Account | undefined,
|
|
531
|
+
>(
|
|
532
|
+
client: Client<Transport, chain, account>,
|
|
533
|
+
parameters: getExecuteDigest.Parameters<calls>,
|
|
534
|
+
): Promise<{ digest: Hex.Hex; typedData: TypedData.Definition }> {
|
|
535
|
+
const { account = client.account, delegation, nonce } = parameters
|
|
536
|
+
|
|
537
|
+
const account_ = account ? Account.from(account) : undefined
|
|
538
|
+
if (!account_) throw new Error('account is required.')
|
|
539
|
+
|
|
540
|
+
// Structure calls into EIP-7821 execution format.
|
|
541
|
+
const calls = parameters.calls.map((call: any) => ({
|
|
542
|
+
data: call.data ?? '0x',
|
|
543
|
+
to: call.to === Call.selfAddress ? account_.address : call.to,
|
|
544
|
+
value: call.value ?? 0n,
|
|
545
|
+
}))
|
|
546
|
+
|
|
547
|
+
const address = await (async () => {
|
|
548
|
+
if (!delegation) return account_.address
|
|
549
|
+
const { data } = await call(client, {
|
|
550
|
+
data: encodeFunctionData({
|
|
551
|
+
abi: parseAbi(['function implementation() view returns (address)']),
|
|
552
|
+
functionName: 'implementation',
|
|
553
|
+
}),
|
|
554
|
+
to: delegation!,
|
|
555
|
+
} as never).catch(() => ({ data: undefined }))
|
|
556
|
+
if (!data) throw new Error('delegation address not found.')
|
|
557
|
+
return Hex.slice(data, 12)
|
|
558
|
+
})()
|
|
559
|
+
|
|
560
|
+
const domain = await getEip712Domain(client, { account: address })
|
|
561
|
+
|
|
562
|
+
const multichain = nonce & 1n
|
|
563
|
+
|
|
564
|
+
if (!client.chain) throw new Error('chain is required.')
|
|
565
|
+
|
|
566
|
+
const typedData = {
|
|
567
|
+
domain: {
|
|
568
|
+
chainId: client.chain.id,
|
|
569
|
+
name: domain.name,
|
|
570
|
+
verifyingContract: account_.address,
|
|
571
|
+
version: domain.version,
|
|
572
|
+
},
|
|
573
|
+
message: {
|
|
574
|
+
calls,
|
|
575
|
+
multichain: Boolean(multichain),
|
|
576
|
+
nonce,
|
|
577
|
+
},
|
|
578
|
+
primaryType: 'Execute',
|
|
579
|
+
types: {
|
|
580
|
+
Call: [
|
|
581
|
+
{ name: 'to', type: 'address' },
|
|
582
|
+
{ name: 'value', type: 'uint256' },
|
|
583
|
+
{ name: 'data', type: 'bytes' },
|
|
584
|
+
],
|
|
585
|
+
Execute: [
|
|
586
|
+
{ name: 'multichain', type: 'bool' },
|
|
587
|
+
{ name: 'calls', type: 'Call[]' },
|
|
588
|
+
{ name: 'nonce', type: 'uint256' },
|
|
589
|
+
],
|
|
590
|
+
},
|
|
591
|
+
} as const
|
|
592
|
+
|
|
593
|
+
return {
|
|
594
|
+
digest: TypedData.getSignPayload(typedData),
|
|
595
|
+
typedData,
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
export declare namespace getExecuteDigest {
|
|
600
|
+
export type Parameters<
|
|
601
|
+
calls extends readonly unknown[] = readonly unknown[],
|
|
602
|
+
> = {
|
|
603
|
+
/**
|
|
604
|
+
* The delegated account to execute the calls on.
|
|
605
|
+
*/
|
|
606
|
+
account: Account.Account
|
|
607
|
+
/**
|
|
608
|
+
* Contract address to delegate to.
|
|
609
|
+
*/
|
|
610
|
+
delegation?: Address.Address | undefined
|
|
611
|
+
/**
|
|
612
|
+
* Calls to execute.
|
|
613
|
+
*/
|
|
614
|
+
calls: calls
|
|
615
|
+
/**
|
|
616
|
+
* Nonce to use for execution that will be invalidated by the delegated account.
|
|
617
|
+
*/
|
|
618
|
+
nonce: bigint
|
|
619
|
+
/**
|
|
620
|
+
* Nonce salt.
|
|
621
|
+
*/
|
|
622
|
+
nonceSalt?: bigint | undefined
|
|
623
|
+
}
|
|
624
|
+
}
|