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,385 @@
|
|
|
1
|
+
import * as Secp256k1 from 'ox/Secp256k1';
|
|
2
|
+
import { createClient, http, } from 'viem';
|
|
3
|
+
import * as Account from "./Account.js";
|
|
4
|
+
import * as RelayActions from "./internal/relayActions.js";
|
|
5
|
+
import * as Key from "./Key.js";
|
|
6
|
+
export { addFaucetFunds, getAssets, getAuthorization, getCallsStatus, getCapabilities, health, verifySignature, } from "./internal/relayActions.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new Porto Account using an ephemeral EOA.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* TODO
|
|
12
|
+
*
|
|
13
|
+
* @param client - Client.
|
|
14
|
+
* @param parameters - Parameters.
|
|
15
|
+
* @returns Result.
|
|
16
|
+
*/
|
|
17
|
+
export async function createAccount(client, parameters) {
|
|
18
|
+
const account = Account.fromPrivateKey(Secp256k1.randomPrivateKey(), {
|
|
19
|
+
keys: parameters.authorizeKeys,
|
|
20
|
+
});
|
|
21
|
+
return await upgradeAccount(client, {
|
|
22
|
+
...parameters,
|
|
23
|
+
account,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets the keys for an account.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* TODO
|
|
31
|
+
*
|
|
32
|
+
* @param client - Client.
|
|
33
|
+
* @param parameters - Parameters.
|
|
34
|
+
* @returns Account keys.
|
|
35
|
+
*/
|
|
36
|
+
export async function getKeys(client, parameters) {
|
|
37
|
+
const { account = client.account, chainIds } = parameters;
|
|
38
|
+
const account_ = account ? Account.from(account) : undefined;
|
|
39
|
+
if (!account_)
|
|
40
|
+
throw new Error('account is required.');
|
|
41
|
+
const keys = await RelayActions.getKeys(client, {
|
|
42
|
+
address: account_.address,
|
|
43
|
+
chainIds,
|
|
44
|
+
});
|
|
45
|
+
return Object.entries(keys).flatMap(([chainId, keys]) => keys.map((key) => Key.fromRelay(key, { chainId: Number(chainId) })));
|
|
46
|
+
}
|
|
47
|
+
export async function getOnrampContactInfo(client, parameters) {
|
|
48
|
+
const { address, secret } = parameters;
|
|
49
|
+
return await RelayActions.getOnrampContactInfo(client, {
|
|
50
|
+
address,
|
|
51
|
+
secret,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export async function onrampStatus(client, parameters) {
|
|
55
|
+
const { address } = parameters;
|
|
56
|
+
return await RelayActions.onrampStatus(client, {
|
|
57
|
+
address,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Prepares the digest to sign over and fills the request to send a call bundle.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* TODO
|
|
65
|
+
*
|
|
66
|
+
* @param client - Client.
|
|
67
|
+
* @param parameters - Prepare call bundle parameters.
|
|
68
|
+
* @returns Prepared properties.
|
|
69
|
+
*/
|
|
70
|
+
export async function prepareCalls(client, parameters) {
|
|
71
|
+
const { account = client.account, calls, chain = client.chain, feePayer, merchantUrl, nonce, preCalls, requiredFunds, revokeKeys, } = parameters;
|
|
72
|
+
const account_ = account ? Account.from(account) : undefined;
|
|
73
|
+
const key = parameters.key ??
|
|
74
|
+
(account_ ? Account.getKey(account_, { role: 'admin' }) : undefined);
|
|
75
|
+
const hasSessionKey = parameters.authorizeKeys?.some((x) => x.role === 'session');
|
|
76
|
+
const { contracts, fees: { tokens }, } = await RelayActions.getCapabilities(client, { chainId: chain?.id });
|
|
77
|
+
const orchestrator = hasSessionKey
|
|
78
|
+
? contracts.orchestrator.address
|
|
79
|
+
: undefined;
|
|
80
|
+
const authorizeKeys = (parameters.authorizeKeys ?? []).map((key) => Key.toRelay(key, { feeTokens: tokens, orchestrator }));
|
|
81
|
+
// If a fee token is provided, use it.
|
|
82
|
+
// Otherwise, if there are spend permissions set, we cannot predictably
|
|
83
|
+
// infer the fee token (not pass it) as the fee token needs to have
|
|
84
|
+
// an assigned spend permission set. It is assumed that the first spend
|
|
85
|
+
// permission is the one that is used for the fee token.
|
|
86
|
+
const feeToken = (() => {
|
|
87
|
+
if (parameters.feeToken)
|
|
88
|
+
return parameters.feeToken;
|
|
89
|
+
return key?.permissions?.spend?.[0]?.token;
|
|
90
|
+
})();
|
|
91
|
+
const preCall = typeof preCalls === 'boolean' ? preCalls : false;
|
|
92
|
+
const signedPreCalls = typeof preCalls === 'object'
|
|
93
|
+
? preCalls.map(({ context, signature }) => ({
|
|
94
|
+
...context.preCall,
|
|
95
|
+
signature,
|
|
96
|
+
}))
|
|
97
|
+
: undefined;
|
|
98
|
+
const args = {
|
|
99
|
+
address: account_?.address,
|
|
100
|
+
calls: (calls ?? []),
|
|
101
|
+
capabilities: {
|
|
102
|
+
authorizeKeys,
|
|
103
|
+
meta: {
|
|
104
|
+
feePayer,
|
|
105
|
+
feeToken,
|
|
106
|
+
nonce,
|
|
107
|
+
},
|
|
108
|
+
preCall,
|
|
109
|
+
preCalls: signedPreCalls,
|
|
110
|
+
requiredFunds,
|
|
111
|
+
revokeKeys: revokeKeys?.map((key) => ({
|
|
112
|
+
hash: key.hash,
|
|
113
|
+
})),
|
|
114
|
+
},
|
|
115
|
+
chain: chain,
|
|
116
|
+
key: key ? Key.toRelay(key, { feeTokens: tokens }) : undefined,
|
|
117
|
+
};
|
|
118
|
+
const result = await (async () => {
|
|
119
|
+
if (merchantUrl) {
|
|
120
|
+
const client_ = createClient({
|
|
121
|
+
chain: client.chain,
|
|
122
|
+
transport: http(merchantUrl),
|
|
123
|
+
});
|
|
124
|
+
// Prepare with Merchant RPC.
|
|
125
|
+
return await RelayActions.prepareCalls(client_, args).catch((e) => {
|
|
126
|
+
console.error(e);
|
|
127
|
+
// Fall back to default client.
|
|
128
|
+
return RelayActions.prepareCalls(client, args);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return await RelayActions.prepareCalls(client, args);
|
|
132
|
+
})();
|
|
133
|
+
const { capabilities, context, digest, signature, typedData } = result;
|
|
134
|
+
if (merchantUrl) {
|
|
135
|
+
const isValid = await RelayActions.verifyPrepareCallsResponse(client, {
|
|
136
|
+
response: result._raw,
|
|
137
|
+
signature,
|
|
138
|
+
});
|
|
139
|
+
if (!isValid)
|
|
140
|
+
throw new Error(`cannot verify integrity of \`wallet_prepareCalls\` response from ${merchantUrl}`);
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
capabilities: { ...capabilities, quote: context.quote },
|
|
144
|
+
context,
|
|
145
|
+
digest,
|
|
146
|
+
key,
|
|
147
|
+
typedData,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Prepares an account upgrade.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* TODO
|
|
155
|
+
*
|
|
156
|
+
* @param client - Client to use.
|
|
157
|
+
* @param parameters - Parameters.
|
|
158
|
+
* @returns Result.
|
|
159
|
+
*/
|
|
160
|
+
export async function prepareUpgradeAccount(client, parameters) {
|
|
161
|
+
const { address, authorizeKeys: keys, chain = client.chain } = parameters;
|
|
162
|
+
if (!chain)
|
|
163
|
+
throw new Error('chain is required.');
|
|
164
|
+
const { contracts, fees: { tokens }, } = await RelayActions.getCapabilities(client, { chainId: chain.id });
|
|
165
|
+
const delegation = parameters.delegation ?? contracts.accountProxy.address;
|
|
166
|
+
const hasSessionKey = keys.some((x) => x.role === 'session');
|
|
167
|
+
const orchestrator = hasSessionKey
|
|
168
|
+
? contracts.orchestrator.address
|
|
169
|
+
: undefined;
|
|
170
|
+
const authorizeKeys = keys.map((key) => {
|
|
171
|
+
const permissions = key.role === 'session' ? key.permissions : {};
|
|
172
|
+
return Key.toRelay({ ...key, permissions }, { feeTokens: tokens, orchestrator });
|
|
173
|
+
});
|
|
174
|
+
const { capabilities, chainId, context, digests, typedData } = await RelayActions.prepareUpgradeAccount(client, {
|
|
175
|
+
address,
|
|
176
|
+
authorizeKeys,
|
|
177
|
+
chain,
|
|
178
|
+
delegation,
|
|
179
|
+
});
|
|
180
|
+
const account = Account.from({
|
|
181
|
+
address,
|
|
182
|
+
keys,
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
capabilities,
|
|
186
|
+
chainId,
|
|
187
|
+
context: {
|
|
188
|
+
...context,
|
|
189
|
+
account,
|
|
190
|
+
},
|
|
191
|
+
digests,
|
|
192
|
+
typedData,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export async function resendVerifyPhone(client, parameters) {
|
|
196
|
+
const { phone, walletAddress } = parameters;
|
|
197
|
+
return await RelayActions.resendVerifyPhone(client, {
|
|
198
|
+
phone,
|
|
199
|
+
walletAddress,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Broadcasts a call bundle to the Relay.
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* TODO
|
|
207
|
+
*
|
|
208
|
+
* @param client - Client.
|
|
209
|
+
* @param parameters - Parameters.
|
|
210
|
+
* @returns Bundle identifier.
|
|
211
|
+
*/
|
|
212
|
+
export async function sendCalls(client, parameters) {
|
|
213
|
+
const { account = client.account, chain = client.chain, webAuthn, } = parameters;
|
|
214
|
+
if (!chain)
|
|
215
|
+
throw new Error('`chain` is required.');
|
|
216
|
+
// If no signature is provided, prepare the calls and sign them.
|
|
217
|
+
const account_ = account ? Account.from(account) : undefined;
|
|
218
|
+
if (!account_)
|
|
219
|
+
throw new Error('`account` is required.');
|
|
220
|
+
const key = parameters.key ?? Account.getKey(account_, parameters);
|
|
221
|
+
if (!key && !account_.sign)
|
|
222
|
+
throw new Error('`key` or `account` with `sign` is required');
|
|
223
|
+
// Prepare pre-calls.
|
|
224
|
+
const preCalls = await Promise.all((parameters.preCalls ?? []).map(async (pre) => {
|
|
225
|
+
if (pre.signature)
|
|
226
|
+
return pre;
|
|
227
|
+
const { authorizeKeys, key, calls, revokeKeys } = pre;
|
|
228
|
+
const { context, digest } = await prepareCalls(client, {
|
|
229
|
+
account: account_,
|
|
230
|
+
authorizeKeys,
|
|
231
|
+
calls,
|
|
232
|
+
chain,
|
|
233
|
+
feeToken: parameters.feeToken,
|
|
234
|
+
key,
|
|
235
|
+
preCalls: true,
|
|
236
|
+
revokeKeys,
|
|
237
|
+
});
|
|
238
|
+
const signature = await Key.sign(key, {
|
|
239
|
+
address: null,
|
|
240
|
+
payload: digest,
|
|
241
|
+
webAuthn,
|
|
242
|
+
});
|
|
243
|
+
return { context, signature };
|
|
244
|
+
}));
|
|
245
|
+
// Prepare main bundle.
|
|
246
|
+
const { capabilities, context, digest } = await prepareCalls(client, {
|
|
247
|
+
...parameters,
|
|
248
|
+
account: account_,
|
|
249
|
+
chain,
|
|
250
|
+
key,
|
|
251
|
+
preCalls,
|
|
252
|
+
});
|
|
253
|
+
// Sign over the bundles.
|
|
254
|
+
const signature = await (async () => {
|
|
255
|
+
if (key)
|
|
256
|
+
return await Key.sign(key, {
|
|
257
|
+
address: null,
|
|
258
|
+
payload: digest,
|
|
259
|
+
webAuthn,
|
|
260
|
+
wrap: false,
|
|
261
|
+
});
|
|
262
|
+
return await account_.sign({
|
|
263
|
+
hash: digest,
|
|
264
|
+
});
|
|
265
|
+
})();
|
|
266
|
+
// Broadcast the bundle to the Relay.
|
|
267
|
+
return await sendPreparedCalls(client, {
|
|
268
|
+
capabilities: capabilities.feeSignature
|
|
269
|
+
? {
|
|
270
|
+
feeSignature: capabilities.feeSignature,
|
|
271
|
+
}
|
|
272
|
+
: undefined,
|
|
273
|
+
context,
|
|
274
|
+
key,
|
|
275
|
+
signature,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
export async function signCalls(request, options) {
|
|
279
|
+
const isPrecall = Boolean(request.context.preCall);
|
|
280
|
+
const { account, key } = options;
|
|
281
|
+
if (account) {
|
|
282
|
+
const keyIndex = account.keys?.findIndex((k) => k.publicKey === request.key?.publicKey);
|
|
283
|
+
if (keyIndex === -1)
|
|
284
|
+
throw new Error('key not found');
|
|
285
|
+
return await Account.sign(account, {
|
|
286
|
+
key: keyIndex,
|
|
287
|
+
payload: request.digest,
|
|
288
|
+
replaySafe: false,
|
|
289
|
+
wrap: isPrecall,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
if (key)
|
|
293
|
+
return await Key.sign(key, {
|
|
294
|
+
address: null,
|
|
295
|
+
payload: request.digest,
|
|
296
|
+
wrap: isPrecall,
|
|
297
|
+
});
|
|
298
|
+
throw new Error('no key or account provided');
|
|
299
|
+
}
|
|
300
|
+
export async function sendPreparedCalls(client, parameters) {
|
|
301
|
+
const { capabilities, context, key, signature } = parameters;
|
|
302
|
+
return await RelayActions.sendPreparedCalls(client, {
|
|
303
|
+
capabilities,
|
|
304
|
+
context,
|
|
305
|
+
key: key ? Key.toRelay(key) : undefined,
|
|
306
|
+
signature,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
export async function setEmail(client, parameters) {
|
|
310
|
+
const { email, walletAddress } = parameters;
|
|
311
|
+
return await RelayActions.setEmail(client, {
|
|
312
|
+
email,
|
|
313
|
+
walletAddress,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
export async function setPhone(client, parameters) {
|
|
317
|
+
const { phone, walletAddress } = parameters;
|
|
318
|
+
return await RelayActions.setPhone(client, {
|
|
319
|
+
phone,
|
|
320
|
+
walletAddress,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
export async function upgradeAccount(client, parameters) {
|
|
324
|
+
if (parameters.account) {
|
|
325
|
+
const { account } = parameters;
|
|
326
|
+
const authorizeKeys = [
|
|
327
|
+
...(account.keys ?? []),
|
|
328
|
+
...(parameters.authorizeKeys ?? []),
|
|
329
|
+
].filter((key, index, array) => array.findIndex((k) => k.id === key.id) === index);
|
|
330
|
+
const { digests, ...request } = await prepareUpgradeAccount(client, {
|
|
331
|
+
...parameters,
|
|
332
|
+
address: account.address,
|
|
333
|
+
authorizeKeys,
|
|
334
|
+
});
|
|
335
|
+
const signatures = {
|
|
336
|
+
auth: await account.sign({ hash: digests.auth }),
|
|
337
|
+
exec: await account.sign({ hash: digests.exec }),
|
|
338
|
+
};
|
|
339
|
+
return await upgradeAccount(client, {
|
|
340
|
+
...request,
|
|
341
|
+
signatures,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
const { context, signatures } = parameters;
|
|
345
|
+
const account = Account.from(context.account);
|
|
346
|
+
await RelayActions.upgradeAccount(client, {
|
|
347
|
+
context,
|
|
348
|
+
signatures,
|
|
349
|
+
});
|
|
350
|
+
return account;
|
|
351
|
+
}
|
|
352
|
+
export async function verifyEmail(client, parameters) {
|
|
353
|
+
const { chainId, email, signature, token, walletAddress } = parameters;
|
|
354
|
+
return await RelayActions.verifyEmail(client, {
|
|
355
|
+
chainId,
|
|
356
|
+
email,
|
|
357
|
+
signature,
|
|
358
|
+
token,
|
|
359
|
+
walletAddress,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
export async function verifyPhone(client, parameters) {
|
|
363
|
+
const { code, phone, walletAddress } = parameters;
|
|
364
|
+
return await RelayActions.verifyPhone(client, {
|
|
365
|
+
code,
|
|
366
|
+
phone,
|
|
367
|
+
walletAddress,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
export function decorator(client) {
|
|
371
|
+
return {
|
|
372
|
+
createAccount: (parameters) => createAccount(client, parameters),
|
|
373
|
+
getCallsStatus: (parameters) => RelayActions.getCallsStatus(client, parameters),
|
|
374
|
+
getCapabilities: () => RelayActions.getCapabilities(client),
|
|
375
|
+
getKeys: (parameters) => getKeys(client, parameters),
|
|
376
|
+
health: () => RelayActions.health(client),
|
|
377
|
+
prepareCalls: (parameters) => prepareCalls(client, parameters),
|
|
378
|
+
prepareUpgradeAccount: (parameters) => prepareUpgradeAccount(client, parameters),
|
|
379
|
+
sendCalls: (parameters) => sendCalls(client, parameters),
|
|
380
|
+
sendPreparedCalls: (parameters) => sendPreparedCalls(client, parameters),
|
|
381
|
+
upgradeAccount: (parameters) => upgradeAccount(client, parameters),
|
|
382
|
+
verifySignature: (parameters) => RelayActions.verifySignature(client, parameters),
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=RelayActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelayActions.js","sourceRoot":"","sources":["../../src/viem/RelayActions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AACzC,OAAO,EAGL,YAAY,EACZ,IAAI,GAGL,MAAM,MAAM,CAAA;AAMb,OAAO,KAAK,OAAO,qBAAoB;AACvC,OAAO,KAAK,YAAY,mCAAkC;AAK1D,OAAO,KAAK,GAAG,iBAAgB;AAE/B,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,MAAM,EACN,eAAe,GAChB,mCAAkC;AAEnC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAgC,EAChC,UAA2C;IAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE;QACnE,IAAI,EAAE,UAAU,CAAC,aAAa;KAC/B,CAAC,CAAA;IACF,OAAO,MAAM,cAAc,CAAC,MAAM,EAAE;QAClC,GAAI,UAAkB;QACtB,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAI3B,MAAyC,EACzC,UAAuC;IAEvC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;IACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE;QAC9C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ;KACT,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CACpE,CAAA;AACH,CAAC;AA2BD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,UAA2C;IAE3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IACtC,OAAO,MAAM,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE;QACrD,OAAO;QACP,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AA0BD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,UAAmC;IAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;IAC9B,OAAO,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE;QAC7C,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAYD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAKhC,MAAyC,EACzC,UAA0D;IAE1D,MAAM,EACJ,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,KAAK,EACL,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,GACX,GAAG,UAAU,CAAA;IAEd,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,MAAM,GAAG,GACP,UAAU,CAAC,GAAG;QACd,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEtE,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAA;IACD,MAAM,EACJ,SAAS,EACT,IAAI,EAAE,EAAE,MAAM,EAAE,GACjB,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IACtE,MAAM,YAAY,GAAG,aAAa;QAChC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO;QAChC,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CACtD,CAAA;IAED,sCAAsC;IACtC,uEAAuE;IACvE,mEAAmE;IACnE,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,UAAU,CAAC,QAAQ;YAAE,OAAO,UAAU,CAAC,QAAQ,CAAA;QACnD,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAA;IAC5C,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;IAChE,MAAM,cAAc,GAClB,OAAO,QAAQ,KAAK,QAAQ;QAC1B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,GAAI,OAAO,CAAC,OAAe;YAC3B,SAAS;SACV,CAAC,CAAC;QACL,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,QAAQ,EAAE,OAAO;QAC1B,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAU;QAC7B,YAAY,EAAE;YACZ,aAAa;YACb,IAAI,EAAE;gBACJ,QAAQ;gBACR,QAAQ;gBACR,KAAK;aACN;YACD,OAAO;YACP,QAAQ,EAAE,cAAc;YACxB,aAAa;YACb,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;SACJ;QACD,KAAK,EAAE,KAAc;QACrB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KACtD,CAAA;IAEV,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,YAAY,CAAC;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;aAC7B,CAAC,CAAA;YACF,6BAA6B;YAC7B,OAAO,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAChB,+BAA+B;gBAC/B,OAAO,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAEtE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,0BAA0B,CAAC,MAAM,EAAE;YACpE,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,SAAS;SACV,CAAC,CAAA;QACF,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,KAAK,CACb,oEAAoE,WAAW,EAAE,CAClF,CAAA;IACL,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAY,EAAE;QAC9D,OAAO;QACP,MAAM;QACN,GAAG;QACH,SAAS;KACD,CAAA;AACZ,CAAC;AAuDD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAgC,EAChC,UAAmD;IAEnD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,UAAU,CAAA;IAEzE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAEjD,MAAM,EACJ,SAAS,EACT,IAAI,EAAE,EAAE,MAAM,EAAE,GACjB,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAErE,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,OAAO,CAAA;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,aAAa;QAChC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO;QAChC,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;QACjE,OAAO,GAAG,CAAC,OAAO,CAChB,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,EACvB,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CACpC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAC1D,MAAM,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE;QAC/C,OAAO;QACP,aAAa;QACb,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IAEJ,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,OAAO;QACP,IAAI;KACL,CAAC,CAAA;IAEF,OAAO;QACL,YAAY;QACZ,OAAO;QACP,OAAO,EAAE;YACP,GAAG,OAAO;YACV,OAAO;SACR;QACD,OAAO;QACP,SAAS;KACV,CAAA;AACH,CAAC;AA2CD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,UAAwC;IAExC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IAC3C,OAAO,MAAM,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAClD,KAAK;QACL,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AAYD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAK7B,MAAyC,EACzC,UAAuD;IAEvD,MAAM,EACJ,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,QAAQ,GACT,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAEnD,gEAAgE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAExD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAClE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAE/D,qBAAqB;IACrB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,GAAG,CAAC,SAAS;YAAE,OAAO,GAAG,CAAA;QAE7B,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QACrD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;YACrD,OAAO,EAAE,QAAQ;YACjB,aAAa;YACb,KAAK;YACL,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,GAAG;YACH,QAAQ,EAAE,IAAI;YACd,UAAU;SACX,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YACpC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;YACf,QAAQ;SACT,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IAC/B,CAAC,CAAC,CACH,CAAA;IAED,uBAAuB;IACvB,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QACnE,GAAG,UAAU;QACb,OAAO,EAAE,QAAQ;QACjB,KAAK;QACL,GAAG;QACH,QAAQ;KACA,CAAC,CAAA;IAEX,yBAAyB;IACzB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,GAAG;YACL,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,MAAM;gBACf,QAAQ;gBACR,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;QACJ,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;IACJ,CAAC,CAAC,EAAE,CAAA;IAEJ,qCAAqC;IACrC,OAAO,MAAM,iBAAiB,CAAC,MAAM,EAAE;QACrC,YAAY,EAAE,YAAY,CAAC,YAAY;YACrC,CAAC,CAAC;gBACE,YAAY,EAAE,YAAY,CAAC,YAAY;aACxC;YACH,CAAC,CAAC,SAAS;QACb,OAAO;QACP,GAAG;QACH,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AA4CD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAgC,EAChC,OAA0B;IAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAEhC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE,SAAS,CAC9C,CAAA;QACD,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QACrD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG;QACL,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;IACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,UAAwC;IAExC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;IAC5D,OAAO,MAAM,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAClD,YAAY;QACZ,OAAO;QACP,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACvC,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AAmCD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,UAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IAC3C,OAAO,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QACzC,KAAK;QACL,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AA0BD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,UAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IAC3C,OAAO,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QACzC,KAAK;QACL,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AA2BD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,UAAqC;IAErC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;QAC9B,MAAM,aAAa,GAAG;YACpB,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;SACpC,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CACzE,CAAA;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;YAClE,GAAG,UAAU;YACb,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa;SACd,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;SACjD,CAAA;QAED,OAAO,MAAM,cAAc,CAAC,MAAM,EAAE;YAClC,GAAG,OAAO;YACV,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,CAAA;IAE1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE;QACxC,OAAO;QACP,UAAU;KACX,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC;AA0CD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,UAAkC;IAElC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IACtE,OAAO,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE;QAC5C,OAAO;QACP,KAAK;QACL,SAAS;QACT,KAAK;QACL,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AA0BD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,UAAkC;IAElC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IACjD,OAAO,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE;QAC5C,IAAI;QACJ,KAAK;QACL,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AA+JD,MAAM,UAAU,SAAS,CAIvB,MAAyC;IACzC,OAAO;QACL,aAAa,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;QAChE,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAC7B,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC;QACjD,eAAe,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QAC3D,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;QACpD,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9D,qBAAqB,EAAE,CAAC,UAAU,EAAE,EAAE,CACpC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC;QAC3C,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;QACxD,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC;QACxE,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC;QAClE,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE,CAC9B,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC;KACnD,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ClientConfig, type Client as viem_Client } from 'viem';
|
|
2
|
+
import type * as Chains from "../core/Chains.js";
|
|
3
|
+
import type { Internal } from "../core/internal/porto.js";
|
|
4
|
+
import * as Transport from "../core/Transport.js";
|
|
5
|
+
import type * as Account from "./Account.js";
|
|
6
|
+
import type * as RpcSchema from "./RpcSchema.js";
|
|
7
|
+
export type RelayClient<transport extends Transport.Transport = Transport.Transport, chain extends Chains.Chain = Chains.Chain, account extends Account.Account | undefined = Account.Account | undefined> = viem_Client<transport, chain, account, RpcSchema.Relay>;
|
|
8
|
+
/**
|
|
9
|
+
* Extracts a Viem Client from a Porto instance, and an optional chain ID.
|
|
10
|
+
* By default, the Client for the current chain ID will be extracted.
|
|
11
|
+
*
|
|
12
|
+
* @param porto - Porto instance.
|
|
13
|
+
* @param parameters - Parameters.
|
|
14
|
+
* @returns Client.
|
|
15
|
+
*/
|
|
16
|
+
export declare function fromPorto<chains extends readonly [Chains.Chain, ...Chains.Chain[]], account extends Account.Account | undefined = undefined>(porto: {
|
|
17
|
+
_internal: Internal<chains>;
|
|
18
|
+
}, config?: fromPorto.Config<chains, account>): RelayClient<Transport.Transport, chains[number], account>;
|
|
19
|
+
export declare namespace fromPorto {
|
|
20
|
+
type Config<chains extends readonly [Chains.Chain, ...Chains.Chain[]] = readonly [
|
|
21
|
+
Chains.Chain,
|
|
22
|
+
...Chains.Chain[]
|
|
23
|
+
], account extends Account.Account | undefined = Account.Account | undefined> = Pick<ClientConfig<Transport.Transport, Chains.Chain | undefined, account>, 'account' | 'cacheTime' | 'key' | 'name' | 'pollingInterval'> & {
|
|
24
|
+
chainId?: chains[number]['id'] | undefined;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as Json from 'ox/Json';
|
|
2
|
+
import { createClient, fallback, http, } from 'viem';
|
|
3
|
+
import * as Transport from "../core/Transport.js";
|
|
4
|
+
const clientCache = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* Extracts a Viem Client from a Porto instance, and an optional chain ID.
|
|
7
|
+
* By default, the Client for the current chain ID will be extracted.
|
|
8
|
+
*
|
|
9
|
+
* @param porto - Porto instance.
|
|
10
|
+
* @param parameters - Parameters.
|
|
11
|
+
* @returns Client.
|
|
12
|
+
*/
|
|
13
|
+
export function fromPorto(porto, config = {}) {
|
|
14
|
+
const { config: config_, id, store } = porto._internal;
|
|
15
|
+
const { chains, relay } = config_;
|
|
16
|
+
const state = store.getState();
|
|
17
|
+
const chainId = config.chainId ?? state.chainIds[0];
|
|
18
|
+
const chain = chains.find((chain) => chain.id === chainId);
|
|
19
|
+
if (!chain)
|
|
20
|
+
throw new Error([
|
|
21
|
+
'Could not find a compatible Porto chain on the given chain configuration.',
|
|
22
|
+
'',
|
|
23
|
+
`Provided chains: [${chains.map((chain) => `${chain.name} (id: ${chain.id})`).join(', ')}]`,
|
|
24
|
+
`Needed chain (id): ${chainId}`,
|
|
25
|
+
'Please add this chain (id) to your chain configuration.',
|
|
26
|
+
].join('\n'));
|
|
27
|
+
const transport = Transport.relayProxy({
|
|
28
|
+
public: config_.transports[chain.id] ??
|
|
29
|
+
fallback(chain.rpcUrls.default.http.map((url) => http(url))),
|
|
30
|
+
relay,
|
|
31
|
+
});
|
|
32
|
+
const key = [id, Json.stringify(chain)].filter(Boolean).join(':');
|
|
33
|
+
if (clientCache.has(key))
|
|
34
|
+
return clientCache.get(key);
|
|
35
|
+
const client = createClient({
|
|
36
|
+
...config,
|
|
37
|
+
chain,
|
|
38
|
+
pollingInterval: 1_000,
|
|
39
|
+
transport,
|
|
40
|
+
});
|
|
41
|
+
clientCache.set(key, client);
|
|
42
|
+
return client;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=RelayClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelayClient.js","sourceRoot":"","sources":["../../src/viem/RelayClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAC/B,OAAO,EAEL,YAAY,EACZ,QAAQ,EACR,IAAI,GAEL,MAAM,MAAM,CAAA;AAGb,OAAO,KAAK,SAAS,6BAA4B;AAUjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAe,CAAA;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAIvB,KAAsC,EACtC,SAA4C,EAAE;IAE9C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;IACtD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAEjC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK;QACR,MAAM,IAAI,KAAK,CACb;YACE,2EAA2E;YAC3E,EAAE;YACF,qBAAqB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC3F,sBAAsB,OAAO,EAAE;YAC/B,yDAAyD;SAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;IAEH,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;QACrC,MAAM,EACH,OAAO,CAAC,UAAkD,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,KAAK;KACN,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjE,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,GAAG,MAAM;QACT,KAAK;QACL,eAAe,EAAE,KAAK;QACtB,SAAS;KACV,CAAC,CAAA;IACF,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,MAAe,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as RpcSchema_ox from 'ox/RpcSchema';
|
|
2
|
+
import type { PublicRpcSchema } from 'viem';
|
|
3
|
+
import type { Schema as Schema_relay } from "../core/internal/relay/rpcSchema.js";
|
|
4
|
+
import type { UnionToTuple } from "../core/internal/types.js";
|
|
5
|
+
import type { Schema } from "../core/RpcSchema.js";
|
|
6
|
+
export type Relay = [...PublicRpcSchema, ...ToViem<Schema_relay>];
|
|
7
|
+
export type Wallet = [
|
|
8
|
+
...PublicRpcSchema,
|
|
9
|
+
...ToViem<Exclude<Schema, RpcSchema_ox.Eth>>
|
|
10
|
+
];
|
|
11
|
+
type ToViem<schema extends RpcSchema_ox.Generic> = UnionToTuple<schema> extends [
|
|
12
|
+
infer head extends RpcSchema_ox.Generic,
|
|
13
|
+
...infer tail extends RpcSchema_ox.Generic[]
|
|
14
|
+
] ? [
|
|
15
|
+
{
|
|
16
|
+
Method: head['Request']['method'];
|
|
17
|
+
Parameters: head['Request']['params'];
|
|
18
|
+
ReturnType: head['ReturnType'];
|
|
19
|
+
},
|
|
20
|
+
...ToViem<tail[number]>
|
|
21
|
+
] : [];
|
|
22
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RpcSchema.js","sourceRoot":"","sources":["../../src/viem/RpcSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porto Wallet Actions.
|
|
3
|
+
*
|
|
4
|
+
* Note: These Actions will eventually be upstreamed into `viem` once an
|
|
5
|
+
* API is solidified & stable.
|
|
6
|
+
*/
|
|
7
|
+
import { type Calls, type Chain, type Client, type Narrow, type PrivateKeyAccount, type Transport, type WalletActions as viem_WalletActions } from 'viem';
|
|
8
|
+
import * as RpcSchema from "../core/RpcSchema.js";
|
|
9
|
+
import * as Account from "./Account.js";
|
|
10
|
+
import type { GetAccountParameter } from "./internal/utils.js";
|
|
11
|
+
declare const supportedWalletActions: ["getAddresses", "getCallsStatus", "getCapabilities", "getChainId", "requestAddresses", "sendCalls", "showCallsStatus", "signMessage", "signTypedData", "showCallsStatus", "waitForCallsStatus", "writeContract"];
|
|
12
|
+
export declare function addFunds(client: Client, parameters: addFunds.Parameters): Promise<addFunds.ReturnType>;
|
|
13
|
+
export declare namespace addFunds {
|
|
14
|
+
type Parameters = RpcSchema.wallet_addFunds.Parameters;
|
|
15
|
+
type ReturnType = RpcSchema.wallet_addFunds.Response;
|
|
16
|
+
}
|
|
17
|
+
export declare function getAssets<chain extends Chain | undefined, account extends Account.Account | undefined>(client: Client<Transport, chain, account>, ...parameters: account extends undefined ? [getAssets.Parameters<account>] : [getAssets.Parameters<account>] | []): Promise<getAssets.ReturnType>;
|
|
18
|
+
export declare namespace getAssets {
|
|
19
|
+
type Parameters<account extends Account.Account | undefined = undefined> = Omit<RpcSchema.wallet_getAssets.Parameters, 'account'> & GetAccountParameter<account>;
|
|
20
|
+
type ReturnType = RpcSchema.wallet_getAssets.Response;
|
|
21
|
+
}
|
|
22
|
+
export declare function connect(client: Client, parameters?: connect.Parameters): Promise<connect.ReturnType>;
|
|
23
|
+
export declare namespace connect {
|
|
24
|
+
type Parameters = RpcSchema.wallet_connect.Capabilities & Omit<RpcSchema.wallet_connect.Parameters, 'capabilities'>;
|
|
25
|
+
type ReturnType = RpcSchema.wallet_connect.Response;
|
|
26
|
+
}
|
|
27
|
+
export declare function disconnect(client: Client): Promise<void>;
|
|
28
|
+
export declare function getAdmins(client: Client, parameters?: getAdmins.Parameters): Promise<getAdmins.ReturnType>;
|
|
29
|
+
export declare namespace getAdmins {
|
|
30
|
+
type Parameters = RpcSchema.wallet_getAdmins.Parameters;
|
|
31
|
+
type ReturnType = RpcSchema.wallet_getAdmins.Response;
|
|
32
|
+
}
|
|
33
|
+
export declare function getPermissions(client: Client, parameters?: getPermissions.Parameters): Promise<getPermissions.ReturnType>;
|
|
34
|
+
export declare namespace getPermissions {
|
|
35
|
+
type Parameters = RpcSchema.wallet_getPermissions.Parameters;
|
|
36
|
+
type ReturnType = RpcSchema.wallet_getPermissions.Response;
|
|
37
|
+
}
|
|
38
|
+
export declare function grantAdmin(client: Client, parameters: grantAdmin.Parameters): Promise<grantAdmin.ReturnType>;
|
|
39
|
+
export declare namespace grantAdmin {
|
|
40
|
+
type Parameters = RpcSchema.wallet_grantAdmin.Capabilities & Omit<RpcSchema.wallet_grantAdmin.Parameters, 'capabilities'>;
|
|
41
|
+
type ReturnType = RpcSchema.wallet_grantAdmin.Response;
|
|
42
|
+
}
|
|
43
|
+
export declare function grantPermissions(client: Client, parameters: grantPermissions.Parameters): Promise<grantPermissions.ReturnType>;
|
|
44
|
+
export declare namespace grantPermissions {
|
|
45
|
+
type Parameters = RpcSchema.wallet_grantPermissions.Parameters;
|
|
46
|
+
type ReturnType = RpcSchema.wallet_grantPermissions.Response;
|
|
47
|
+
}
|
|
48
|
+
export declare function prepareCalls<const calls extends readonly unknown[] = readonly unknown[]>(client: Client, parameters: prepareCalls.Parameters<calls>): Promise<prepareCalls.ReturnType>;
|
|
49
|
+
export declare namespace prepareCalls {
|
|
50
|
+
type Parameters<calls extends readonly unknown[] = readonly unknown[]> = Omit<RpcSchema.wallet_prepareCalls.Parameters, 'calls'> & {
|
|
51
|
+
calls?: Calls<Narrow<calls>> | undefined;
|
|
52
|
+
};
|
|
53
|
+
type ReturnType = RpcSchema.wallet_prepareCalls.Response;
|
|
54
|
+
}
|
|
55
|
+
export declare function revokeAdmin(client: Client, parameters: revokeAdmin.Parameters): Promise<undefined>;
|
|
56
|
+
export declare namespace revokeAdmin {
|
|
57
|
+
type Parameters = RpcSchema.wallet_revokeAdmin.Parameters;
|
|
58
|
+
}
|
|
59
|
+
export declare function revokePermissions(client: Client, parameters: revokePermissions.Parameters): Promise<undefined>;
|
|
60
|
+
export declare namespace revokePermissions {
|
|
61
|
+
type Parameters = RpcSchema.wallet_revokePermissions.Capabilities & Omit<RpcSchema.wallet_revokePermissions.Parameters, 'capabilities'>;
|
|
62
|
+
}
|
|
63
|
+
export declare function sendPreparedCalls(client: Client, parameters: sendPreparedCalls.Parameters): Promise<sendPreparedCalls.ReturnType>;
|
|
64
|
+
export declare namespace sendPreparedCalls {
|
|
65
|
+
type Parameters = RpcSchema.wallet_sendPreparedCalls.Parameters;
|
|
66
|
+
type ReturnType = RpcSchema.wallet_sendPreparedCalls.Response;
|
|
67
|
+
}
|
|
68
|
+
export declare function upgradeAccount(client: Client, parameters: upgradeAccount.Parameters): Promise<upgradeAccount.ReturnType>;
|
|
69
|
+
export declare namespace upgradeAccount {
|
|
70
|
+
type Parameters = RpcSchema.wallet_prepareUpgradeAccount.Capabilities & Omit<RpcSchema.wallet_prepareUpgradeAccount.Parameters, 'address' | 'capabilities'> & {
|
|
71
|
+
account: PrivateKeyAccount | Account.Account;
|
|
72
|
+
};
|
|
73
|
+
type ReturnType = RpcSchema.wallet_upgradeAccount.Response;
|
|
74
|
+
}
|
|
75
|
+
export type Decorator<chain extends Chain | undefined = Chain | undefined, account extends Account.Account | undefined = Account.Account | undefined> = Pick<viem_WalletActions<chain, account>, (typeof supportedWalletActions)[number]> & {
|
|
76
|
+
connect: (parameters: connect.Parameters) => Promise<connect.ReturnType>;
|
|
77
|
+
disconnect: () => Promise<void>;
|
|
78
|
+
getPermissions: (parameters: getPermissions.Parameters) => Promise<getPermissions.ReturnType>;
|
|
79
|
+
grantPermissions: (parameters: grantPermissions.Parameters) => Promise<grantPermissions.ReturnType>;
|
|
80
|
+
prepareCalls: (parameters: prepareCalls.Parameters) => Promise<prepareCalls.ReturnType>;
|
|
81
|
+
revokePermissions: (parameters: revokePermissions.Parameters) => Promise<void>;
|
|
82
|
+
sendPreparedCalls: (parameters: sendPreparedCalls.Parameters) => Promise<sendPreparedCalls.ReturnType>;
|
|
83
|
+
upgradeAccount: (parameters: upgradeAccount.Parameters) => Promise<upgradeAccount.ReturnType>;
|
|
84
|
+
};
|
|
85
|
+
export declare function decorator<chain extends Chain | undefined, account extends Account.Account | undefined>(client: Client<Transport, chain, account>): Decorator<chain, account>;
|
|
86
|
+
export {};
|