@startale/app-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +116 -0
- package/dist/app-sdk.js +36226 -0
- package/dist/app-sdk.js.map +1 -0
- package/dist/app-sdk.min.js +15 -0
- package/dist/app-sdk.min.js.map +1 -0
- package/dist/browser-entry.d.ts +15 -0
- package/dist/browser-entry.d.ts.map +1 -0
- package/dist/browser-entry.js +19 -0
- package/dist/browser-entry.js.map +1 -0
- package/dist/core/communicator/Communicator.d.ts +47 -0
- package/dist/core/communicator/Communicator.d.ts.map +1 -0
- package/dist/core/communicator/Communicator.js +107 -0
- package/dist/core/communicator/Communicator.js.map +1 -0
- package/dist/core/constants.d.ts +5 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +6 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/error/constants.d.ts +96 -0
- package/dist/core/error/constants.d.ts.map +1 -0
- package/dist/core/error/constants.js +94 -0
- package/dist/core/error/constants.js.map +1 -0
- package/dist/core/error/errors.d.ts +74 -0
- package/dist/core/error/errors.d.ts.map +1 -0
- package/dist/core/error/errors.js +138 -0
- package/dist/core/error/errors.js.map +1 -0
- package/dist/core/error/serialize.d.ts +13 -0
- package/dist/core/error/serialize.d.ts.map +1 -0
- package/dist/core/error/serialize.js +43 -0
- package/dist/core/error/serialize.js.map +1 -0
- package/dist/core/error/utils.d.ts +31 -0
- package/dist/core/error/utils.d.ts.map +1 -0
- package/dist/core/error/utils.js +109 -0
- package/dist/core/error/utils.js.map +1 -0
- package/dist/core/message/ConfigMessage.d.ts +6 -0
- package/dist/core/message/ConfigMessage.d.ts.map +1 -0
- package/dist/core/message/ConfigMessage.js +2 -0
- package/dist/core/message/ConfigMessage.js.map +1 -0
- package/dist/core/message/Message.d.ts +8 -0
- package/dist/core/message/Message.d.ts.map +1 -0
- package/dist/core/message/Message.js +2 -0
- package/dist/core/message/Message.js.map +1 -0
- package/dist/core/message/RPCMessage.d.ts +31 -0
- package/dist/core/message/RPCMessage.d.ts.map +1 -0
- package/dist/core/message/RPCMessage.js +2 -0
- package/dist/core/message/RPCMessage.js.map +1 -0
- package/dist/core/message/RPCRequest.d.ts +6 -0
- package/dist/core/message/RPCRequest.d.ts.map +1 -0
- package/dist/core/message/RPCRequest.js +2 -0
- package/dist/core/message/RPCRequest.js.map +1 -0
- package/dist/core/message/RPCResponse.d.ts +23 -0
- package/dist/core/message/RPCResponse.d.ts.map +1 -0
- package/dist/core/message/RPCResponse.js +2 -0
- package/dist/core/message/RPCResponse.js.map +1 -0
- package/dist/core/provider/interface.d.ts +94 -0
- package/dist/core/provider/interface.d.ts.map +1 -0
- package/dist/core/provider/interface.js +4 -0
- package/dist/core/provider/interface.js.map +1 -0
- package/dist/core/rpc/coinbase_fetchSpendPermissions.d.ts +50 -0
- package/dist/core/rpc/coinbase_fetchSpendPermissions.d.ts.map +1 -0
- package/dist/core/rpc/coinbase_fetchSpendPermissions.js +2 -0
- package/dist/core/rpc/coinbase_fetchSpendPermissions.js.map +1 -0
- package/dist/core/rpc/wallet_addSubAccount.d.ts +37 -0
- package/dist/core/rpc/wallet_addSubAccount.d.ts.map +1 -0
- package/dist/core/rpc/wallet_addSubAccount.js +2 -0
- package/dist/core/rpc/wallet_addSubAccount.js.map +1 -0
- package/dist/core/rpc/wallet_connect.d.ts +64 -0
- package/dist/core/rpc/wallet_connect.d.ts.map +1 -0
- package/dist/core/rpc/wallet_connect.js +2 -0
- package/dist/core/rpc/wallet_connect.js.map +1 -0
- package/dist/core/rpc/wallet_getSubAccount.d.ts +14 -0
- package/dist/core/rpc/wallet_getSubAccount.d.ts.map +1 -0
- package/dist/core/rpc/wallet_getSubAccount.js +2 -0
- package/dist/core/rpc/wallet_getSubAccount.js.map +1 -0
- package/dist/core/rpc/wallet_prepareCalls.d.ts +28 -0
- package/dist/core/rpc/wallet_prepareCalls.d.ts.map +1 -0
- package/dist/core/rpc/wallet_prepareCalls.js +2 -0
- package/dist/core/rpc/wallet_prepareCalls.js.map +1 -0
- package/dist/core/rpc/wallet_sendPreparedCalls.d.ts +47 -0
- package/dist/core/rpc/wallet_sendPreparedCalls.d.ts.map +1 -0
- package/dist/core/rpc/wallet_sendPreparedCalls.js +2 -0
- package/dist/core/rpc/wallet_sendPreparedCalls.js.map +1 -0
- package/dist/core/telemetry/events/communicator.d.ts +4 -0
- package/dist/core/telemetry/events/communicator.d.ts.map +1 -0
- package/dist/core/telemetry/events/communicator.js +20 -0
- package/dist/core/telemetry/events/communicator.js.map +1 -0
- package/dist/core/telemetry/events/dialog.d.ts +15 -0
- package/dist/core/telemetry/events/dialog.d.ts.map +1 -0
- package/dist/core/telemetry/events/dialog.js +24 -0
- package/dist/core/telemetry/events/dialog.js.map +1 -0
- package/dist/core/telemetry/events/payment.d.ts +31 -0
- package/dist/core/telemetry/events/payment.d.ts.map +1 -0
- package/dist/core/telemetry/events/payment.js +68 -0
- package/dist/core/telemetry/events/payment.js.map +1 -0
- package/dist/core/telemetry/events/provider.d.ts +14 -0
- package/dist/core/telemetry/events/provider.d.ts.map +1 -0
- package/dist/core/telemetry/events/provider.js +30 -0
- package/dist/core/telemetry/events/provider.js.map +1 -0
- package/dist/core/telemetry/events/scw-signer.d.ts +27 -0
- package/dist/core/telemetry/events/scw-signer.d.ts.map +1 -0
- package/dist/core/telemetry/events/scw-signer.js +65 -0
- package/dist/core/telemetry/events/scw-signer.js.map +1 -0
- package/dist/core/telemetry/events/scw-sub-account.d.ts +40 -0
- package/dist/core/telemetry/events/scw-sub-account.d.ts.map +1 -0
- package/dist/core/telemetry/events/scw-sub-account.js +96 -0
- package/dist/core/telemetry/events/scw-sub-account.js.map +1 -0
- package/dist/core/telemetry/events/spend-permission.d.ts +6 -0
- package/dist/core/telemetry/events/spend-permission.d.ts.map +1 -0
- package/dist/core/telemetry/events/spend-permission.js +21 -0
- package/dist/core/telemetry/events/spend-permission.js.map +1 -0
- package/dist/core/telemetry/initCCA.d.ts +2 -0
- package/dist/core/telemetry/initCCA.d.ts.map +1 -0
- package/dist/core/telemetry/initCCA.js +43 -0
- package/dist/core/telemetry/initCCA.js.map +1 -0
- package/dist/core/telemetry/logEvent.d.ts +72 -0
- package/dist/core/telemetry/logEvent.d.ts.map +1 -0
- package/dist/core/telemetry/logEvent.js +62 -0
- package/dist/core/telemetry/logEvent.js.map +1 -0
- package/dist/core/telemetry/telemetry-content.d.ts +2 -0
- package/dist/core/telemetry/telemetry-content.d.ts.map +1 -0
- package/dist/core/telemetry/telemetry-content.js +5526 -0
- package/dist/core/telemetry/telemetry-content.js.map +1 -0
- package/dist/core/telemetry/utils.d.ts +2 -0
- package/dist/core/telemetry/utils.d.ts.map +1 -0
- package/dist/core/telemetry/utils.js +7 -0
- package/dist/core/telemetry/utils.js.map +1 -0
- package/dist/core/type/index.d.ts +21 -0
- package/dist/core/type/index.d.ts.map +1 -0
- package/dist/core/type/index.js +10 -0
- package/dist/core/type/index.js.map +1 -0
- package/dist/core/type/util.d.ts +28 -0
- package/dist/core/type/util.d.ts.map +1 -0
- package/dist/core/type/util.js +158 -0
- package/dist/core/type/util.js.map +1 -0
- package/dist/core/username/getDisplayableUsername.d.ts +3 -0
- package/dist/core/username/getDisplayableUsername.d.ts.map +1 -0
- package/dist/core/username/getDisplayableUsername.js +7 -0
- package/dist/core/username/getDisplayableUsername.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/interface/builder/core/BaseAccountProvider.d.ts +11 -0
- package/dist/interface/builder/core/BaseAccountProvider.d.ts.map +1 -0
- package/dist/interface/builder/core/BaseAccountProvider.js +141 -0
- package/dist/interface/builder/core/BaseAccountProvider.js.map +1 -0
- package/dist/interface/builder/core/createBaseAccountSDK.d.ts +27 -0
- package/dist/interface/builder/core/createBaseAccountSDK.d.ts.map +1 -0
- package/dist/interface/builder/core/createBaseAccountSDK.js +149 -0
- package/dist/interface/builder/core/createBaseAccountSDK.js.map +1 -0
- package/dist/interface/builder/core/getInjectedProvider.d.ts +13 -0
- package/dist/interface/builder/core/getInjectedProvider.d.ts.map +1 -0
- package/dist/interface/builder/core/getInjectedProvider.js +10 -0
- package/dist/interface/builder/core/getInjectedProvider.js.map +1 -0
- package/dist/interface/payment/base.d.ts +32 -0
- package/dist/interface/payment/base.d.ts.map +1 -0
- package/dist/interface/payment/base.js +16 -0
- package/dist/interface/payment/base.js.map +1 -0
- package/dist/interface/payment/constants.d.ts +56 -0
- package/dist/interface/payment/constants.d.ts.map +1 -0
- package/dist/interface/payment/constants.js +45 -0
- package/dist/interface/payment/constants.js.map +1 -0
- package/dist/interface/payment/getPaymentStatus.d.ts +28 -0
- package/dist/interface/payment/getPaymentStatus.d.ts.map +1 -0
- package/dist/interface/payment/getPaymentStatus.js +243 -0
- package/dist/interface/payment/getPaymentStatus.js.map +1 -0
- package/dist/interface/payment/index.d.ts +9 -0
- package/dist/interface/payment/index.d.ts.map +1 -0
- package/dist/interface/payment/index.js +9 -0
- package/dist/interface/payment/index.js.map +1 -0
- package/dist/interface/payment/pay.d.ts +29 -0
- package/dist/interface/payment/pay.d.ts.map +1 -0
- package/dist/interface/payment/pay.js +90 -0
- package/dist/interface/payment/pay.js.map +1 -0
- package/dist/interface/payment/types.d.ts +123 -0
- package/dist/interface/payment/types.d.ts.map +1 -0
- package/dist/interface/payment/types.js +5 -0
- package/dist/interface/payment/types.js.map +1 -0
- package/dist/interface/payment/utils/sdkManager.d.ts +61 -0
- package/dist/interface/payment/utils/sdkManager.d.ts.map +1 -0
- package/dist/interface/payment/utils/sdkManager.js +84 -0
- package/dist/interface/payment/utils/sdkManager.js.map +1 -0
- package/dist/interface/payment/utils/translatePayment.d.ts +45 -0
- package/dist/interface/payment/utils/translatePayment.d.ts.map +1 -0
- package/dist/interface/payment/utils/translatePayment.js +70 -0
- package/dist/interface/payment/utils/translatePayment.js.map +1 -0
- package/dist/interface/payment/utils/validation.d.ts +16 -0
- package/dist/interface/payment/utils/validation.d.ts.map +1 -0
- package/dist/interface/payment/utils/validation.js +47 -0
- package/dist/interface/payment/utils/validation.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/index.d.ts +8 -0
- package/dist/interface/public-utilities/spend-permission/index.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/index.js +8 -0
- package/dist/interface/public-utilities/spend-permission/index.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.d.ts +14 -0
- package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.js +52 -0
- package/dist/interface/public-utilities/spend-permission/methods/fetchPermissions.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/getHash.d.ts +9 -0
- package/dist/interface/public-utilities/spend-permission/methods/getHash.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/getHash.js +54 -0
- package/dist/interface/public-utilities/spend-permission/methods/getHash.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.d.ts +8 -0
- package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.js +85 -0
- package/dist/interface/public-utilities/spend-permission/methods/getPermissionStatus.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.d.ts +10 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.js +51 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.d.ts +11 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.js +104 -0
- package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.d.ts +11 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.js +64 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestRevoke.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.d.ts +20 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.js +67 -0
- package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/utils.d.ts +81 -0
- package/dist/interface/public-utilities/spend-permission/utils.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/utils.js +130 -0
- package/dist/interface/public-utilities/spend-permission/utils.js.map +1 -0
- package/dist/interface/public-utilities/spend-permission/withTelemetry.d.ts +2 -0
- package/dist/interface/public-utilities/spend-permission/withTelemetry.d.ts.map +1 -0
- package/dist/interface/public-utilities/spend-permission/withTelemetry.js +30 -0
- package/dist/interface/public-utilities/spend-permission/withTelemetry.js.map +1 -0
- package/dist/kms/crypto-key/index.d.ts +18 -0
- package/dist/kms/crypto-key/index.d.ts.map +1 -0
- package/dist/kms/crypto-key/index.js +97 -0
- package/dist/kms/crypto-key/index.js.map +1 -0
- package/dist/kms/crypto-key/storage.d.ts +7 -0
- package/dist/kms/crypto-key/storage.d.ts.map +1 -0
- package/dist/kms/crypto-key/storage.js +20 -0
- package/dist/kms/crypto-key/storage.js.map +1 -0
- package/dist/sign/app-sdk/SCWKeyManager.d.ts +15 -0
- package/dist/sign/app-sdk/SCWKeyManager.d.ts.map +1 -0
- package/dist/sign/app-sdk/SCWKeyManager.js +82 -0
- package/dist/sign/app-sdk/SCWKeyManager.js.map +1 -0
- package/dist/sign/app-sdk/Signer.d.ts +38 -0
- package/dist/sign/app-sdk/Signer.d.ts.map +1 -0
- package/dist/sign/app-sdk/Signer.js +659 -0
- package/dist/sign/app-sdk/Signer.js.map +1 -0
- package/dist/sign/app-sdk/utils/constants.d.ts +1945 -0
- package/dist/sign/app-sdk/utils/constants.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/constants.js +1321 -0
- package/dist/sign/app-sdk/utils/constants.js.map +1 -0
- package/dist/sign/app-sdk/utils/createSmartAccount.d.ts +63 -0
- package/dist/sign/app-sdk/utils/createSmartAccount.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/createSmartAccount.js +291 -0
- package/dist/sign/app-sdk/utils/createSmartAccount.js.map +1 -0
- package/dist/sign/app-sdk/utils/createSubAccountSigner.d.ts +23 -0
- package/dist/sign/app-sdk/utils/createSubAccountSigner.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/createSubAccountSigner.js +233 -0
- package/dist/sign/app-sdk/utils/createSubAccountSigner.js.map +1 -0
- package/dist/sign/app-sdk/utils/findOwnerIndex.d.ts +32 -0
- package/dist/sign/app-sdk/utils/findOwnerIndex.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/findOwnerIndex.js +56 -0
- package/dist/sign/app-sdk/utils/findOwnerIndex.js.map +1 -0
- package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.d.ts +8 -0
- package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.js +78 -0
- package/dist/sign/app-sdk/utils/handleAddSubAccountOwner.js.map +1 -0
- package/dist/sign/app-sdk/utils/handleInsufficientBalance.d.ts +18 -0
- package/dist/sign/app-sdk/utils/handleInsufficientBalance.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/handleInsufficientBalance.js +27 -0
- package/dist/sign/app-sdk/utils/handleInsufficientBalance.js.map +1 -0
- package/dist/sign/app-sdk/utils/presentAddOwnerDialog.d.ts +2 -0
- package/dist/sign/app-sdk/utils/presentAddOwnerDialog.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/presentAddOwnerDialog.js +46 -0
- package/dist/sign/app-sdk/utils/presentAddOwnerDialog.js.map +1 -0
- package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.d.ts +33 -0
- package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.js +76 -0
- package/dist/sign/app-sdk/utils/routeThroughGlobalAccount.js.map +1 -0
- package/dist/sign/app-sdk/utils.d.ts +220 -0
- package/dist/sign/app-sdk/utils.d.ts.map +1 -0
- package/dist/sign/app-sdk/utils.js +439 -0
- package/dist/sign/app-sdk/utils.js.map +1 -0
- package/dist/store/chain-clients/store.d.ts +10 -0
- package/dist/store/chain-clients/store.d.ts.map +1 -0
- package/dist/store/chain-clients/store.js +3 -0
- package/dist/store/chain-clients/store.js.map +1 -0
- package/dist/store/chain-clients/utils.d.ts +13 -0
- package/dist/store/chain-clients/utils.d.ts.map +1 -0
- package/dist/store/chain-clients/utils.js +77 -0
- package/dist/store/chain-clients/utils.js.map +1 -0
- package/dist/store/correlation-ids/store.d.ts +7 -0
- package/dist/store/correlation-ids/store.d.ts.map +1 -0
- package/dist/store/correlation-ids/store.js +32 -0
- package/dist/store/correlation-ids/store.js.map +1 -0
- package/dist/store/store.d.ts +186 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +167 -0
- package/dist/store/store.js.map +1 -0
- package/dist/ui/Dialog/Dialog-css.d.ts +3 -0
- package/dist/ui/Dialog/Dialog-css.d.ts.map +1 -0
- package/dist/ui/Dialog/Dialog-css.js +2 -0
- package/dist/ui/Dialog/Dialog-css.js.map +1 -0
- package/dist/ui/Dialog/Dialog.d.ts +28 -0
- package/dist/ui/Dialog/Dialog.d.ts.map +1 -0
- package/dist/ui/Dialog/Dialog.js +150 -0
- package/dist/ui/Dialog/Dialog.js.map +1 -0
- package/dist/ui/Dialog/index.d.ts +3 -0
- package/dist/ui/Dialog/index.d.ts.map +1 -0
- package/dist/ui/Dialog/index.js +15 -0
- package/dist/ui/Dialog/index.js.map +1 -0
- package/dist/ui/assets/BaseLogo.d.ts +4 -0
- package/dist/ui/assets/BaseLogo.d.ts.map +1 -0
- package/dist/ui/assets/BaseLogo.js +7 -0
- package/dist/ui/assets/BaseLogo.js.map +1 -0
- package/dist/ui/assets/BasePayLogo.d.ts +3 -0
- package/dist/ui/assets/BasePayLogo.d.ts.map +1 -0
- package/dist/ui/assets/BasePayLogo.js +4 -0
- package/dist/ui/assets/BasePayLogo.js.map +1 -0
- package/dist/ui/assets/colors.d.ts +18 -0
- package/dist/ui/assets/colors.d.ts.map +1 -0
- package/dist/ui/assets/colors.js +19 -0
- package/dist/ui/assets/colors.js.map +1 -0
- package/dist/ui/assets/fontFaceCSS.d.ts +2 -0
- package/dist/ui/assets/fontFaceCSS.d.ts.map +1 -0
- package/dist/ui/assets/fontFaceCSS.js +11 -0
- package/dist/ui/assets/fontFaceCSS.js.map +1 -0
- package/dist/ui/assets/index.d.ts +6 -0
- package/dist/ui/assets/index.d.ts.map +1 -0
- package/dist/ui/assets/index.js +6 -0
- package/dist/ui/assets/index.js.map +1 -0
- package/dist/ui/assets/injectFontStyle.d.ts +2 -0
- package/dist/ui/assets/injectFontStyle.d.ts.map +1 -0
- package/dist/ui/assets/injectFontStyle.js +12 -0
- package/dist/ui/assets/injectFontStyle.js.map +1 -0
- package/dist/util/assertPresence.d.ts +3 -0
- package/dist/util/assertPresence.d.ts.map +1 -0
- package/dist/util/assertPresence.js +18 -0
- package/dist/util/assertPresence.js.map +1 -0
- package/dist/util/assertSubAccount.d.ts +3 -0
- package/dist/util/assertSubAccount.d.ts.map +1 -0
- package/dist/util/assertSubAccount.js +26 -0
- package/dist/util/assertSubAccount.js.map +1 -0
- package/dist/util/checkCrossOriginOpenerPolicy.d.ts +2 -0
- package/dist/util/checkCrossOriginOpenerPolicy.d.ts.map +1 -0
- package/dist/util/checkCrossOriginOpenerPolicy.js +56 -0
- package/dist/util/checkCrossOriginOpenerPolicy.js.map +1 -0
- package/dist/util/cipher.d.ts +12 -0
- package/dist/util/cipher.d.ts.map +1 -0
- package/dist/util/cipher.js +65 -0
- package/dist/util/cipher.js.map +1 -0
- package/dist/util/encoding.d.ts +20 -0
- package/dist/util/encoding.d.ts.map +1 -0
- package/dist/util/encoding.js +48 -0
- package/dist/util/encoding.js.map +1 -0
- package/dist/util/get.d.ts +2 -0
- package/dist/util/get.d.ts.map +1 -0
- package/dist/util/get.js +14 -0
- package/dist/util/get.js.map +1 -0
- package/dist/util/provider.d.ts +10 -0
- package/dist/util/provider.d.ts.map +1 -0
- package/dist/util/provider.js +56 -0
- package/dist/util/provider.js.map +1 -0
- package/dist/util/validatePreferences.d.ts +13 -0
- package/dist/util/validatePreferences.d.ts.map +1 -0
- package/dist/util/validatePreferences.js +30 -0
- package/dist/util/validatePreferences.js.map +1 -0
- package/dist/util/web.d.ts +3 -0
- package/dist/util/web.d.ts.map +1 -0
- package/dist/util/web.js +100 -0
- package/dist/util/web.js.map +1 -0
- package/dist/vendor-js/CCA/ca.d.ts +2 -0
- package/dist/vendor-js/CCA/ca.d.ts.map +1 -0
- package/dist/vendor-js/CCA/ca.js +4608 -0
- package/dist/vendor-js/CCA/ca.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { isViemError, standardErrors, viemHttpErrorToProviderError, } from '../../../core/error/errors.js';
|
|
2
|
+
import { ensureHexString } from '../../../core/type/util.js';
|
|
3
|
+
import { assertArrayPresence, assertPresence } from '../../../util/assertPresence.js';
|
|
4
|
+
import { convertCredentialToJSON } from '../../../util/encoding.js';
|
|
5
|
+
import { get } from '../../../util/get.js';
|
|
6
|
+
import { hexToString, isHex, numberToHex, } from 'viem';
|
|
7
|
+
import { createWalletSendCallsRequest, injectRequestCapabilities, waitForCallsTransactionHash, } from '../utils.js';
|
|
8
|
+
import { createSmartAccount } from './createSmartAccount.js';
|
|
9
|
+
export async function createSubAccountSigner({ address, client, factory, factoryData, owner, ownerIndex, parentAddress, attribution, }) {
|
|
10
|
+
var _a;
|
|
11
|
+
const subAccount = {
|
|
12
|
+
address,
|
|
13
|
+
factory,
|
|
14
|
+
factoryData,
|
|
15
|
+
};
|
|
16
|
+
const chainId = (_a = client.chain) === null || _a === void 0 ? void 0 : _a.id;
|
|
17
|
+
if (!chainId) {
|
|
18
|
+
throw standardErrors.rpc.internal('chainId not found');
|
|
19
|
+
}
|
|
20
|
+
const account = await createSmartAccount({
|
|
21
|
+
owner,
|
|
22
|
+
ownerIndex: ownerIndex !== null && ownerIndex !== void 0 ? ownerIndex : 1,
|
|
23
|
+
address,
|
|
24
|
+
client,
|
|
25
|
+
factoryData,
|
|
26
|
+
});
|
|
27
|
+
const request = async (args) => {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
29
|
+
try {
|
|
30
|
+
switch (args.method) {
|
|
31
|
+
case 'wallet_addSubAccount':
|
|
32
|
+
return subAccount;
|
|
33
|
+
case 'eth_accounts':
|
|
34
|
+
return [subAccount.address];
|
|
35
|
+
case 'eth_coinbase':
|
|
36
|
+
return subAccount.address;
|
|
37
|
+
case 'net_version':
|
|
38
|
+
return chainId.toString();
|
|
39
|
+
case 'eth_chainId':
|
|
40
|
+
return numberToHex(chainId);
|
|
41
|
+
case 'eth_sendTransaction': {
|
|
42
|
+
assertArrayPresence(args.params);
|
|
43
|
+
const rawParams = args.params[0];
|
|
44
|
+
assertPresence(rawParams.to, standardErrors.rpc.invalidParams('to is required'));
|
|
45
|
+
const params = {
|
|
46
|
+
to: rawParams.to,
|
|
47
|
+
data: ensureHexString((_a = rawParams.data) !== null && _a !== void 0 ? _a : '0x', true),
|
|
48
|
+
value: ensureHexString((_b = rawParams.value) !== null && _b !== void 0 ? _b : '0x', true),
|
|
49
|
+
from: (_c = rawParams.from) !== null && _c !== void 0 ? _c : subAccount.address,
|
|
50
|
+
};
|
|
51
|
+
// Transform into wallet_sendCalls request
|
|
52
|
+
const sendCallsRequest = createWalletSendCallsRequest({
|
|
53
|
+
calls: [params],
|
|
54
|
+
chainId,
|
|
55
|
+
from: params.from,
|
|
56
|
+
});
|
|
57
|
+
const response = (await request(sendCallsRequest));
|
|
58
|
+
return waitForCallsTransactionHash({
|
|
59
|
+
client,
|
|
60
|
+
id: response,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
case 'wallet_sendCalls': {
|
|
64
|
+
assertArrayPresence(args.params);
|
|
65
|
+
// Get the client for the chain
|
|
66
|
+
const chainId = get(args.params[0], 'chainId');
|
|
67
|
+
if (!chainId) {
|
|
68
|
+
throw standardErrors.rpc.invalidParams('chainId is required');
|
|
69
|
+
}
|
|
70
|
+
if (!isHex(chainId)) {
|
|
71
|
+
throw standardErrors.rpc.invalidParams('chainId must be a hex encoded integer');
|
|
72
|
+
}
|
|
73
|
+
if (!args.params[0]) {
|
|
74
|
+
throw standardErrors.rpc.invalidParams('params are required');
|
|
75
|
+
}
|
|
76
|
+
if (!('calls' in args.params[0])) {
|
|
77
|
+
throw standardErrors.rpc.invalidParams('calls are required');
|
|
78
|
+
}
|
|
79
|
+
let prepareCallsRequest = {
|
|
80
|
+
method: 'wallet_prepareCalls',
|
|
81
|
+
params: [
|
|
82
|
+
{
|
|
83
|
+
version: '1.0',
|
|
84
|
+
calls: args.params[0].calls,
|
|
85
|
+
chainId: chainId,
|
|
86
|
+
from: subAccount.address,
|
|
87
|
+
capabilities: 'capabilities' in args.params[0]
|
|
88
|
+
? args.params[0].capabilities
|
|
89
|
+
: {},
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
if (parentAddress) {
|
|
94
|
+
prepareCallsRequest = injectRequestCapabilities(prepareCallsRequest, {
|
|
95
|
+
funding: [
|
|
96
|
+
{
|
|
97
|
+
type: 'spendPermission',
|
|
98
|
+
data: {
|
|
99
|
+
autoApply: true,
|
|
100
|
+
sources: [parentAddress],
|
|
101
|
+
preference: 'PREFER_DIRECT_BALANCE',
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
let prepareCallsResponse = (await request(prepareCallsRequest));
|
|
108
|
+
const signResponse = await ((_e = (_d = owner).sign) === null || _e === void 0 ? void 0 : _e.call(_d, {
|
|
109
|
+
// Hash returned from wallet_prepareCalls is double hex encoded
|
|
110
|
+
hash: hexToString(prepareCallsResponse.signatureRequest.hash),
|
|
111
|
+
}));
|
|
112
|
+
let signatureData;
|
|
113
|
+
if (!signResponse) {
|
|
114
|
+
throw standardErrors.rpc.internal('signature not found');
|
|
115
|
+
}
|
|
116
|
+
if (isHex(signResponse)) {
|
|
117
|
+
signatureData = {
|
|
118
|
+
type: 'secp256k1',
|
|
119
|
+
data: {
|
|
120
|
+
address: owner.address,
|
|
121
|
+
signature: signResponse,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
signatureData = {
|
|
127
|
+
type: 'webauthn',
|
|
128
|
+
data: {
|
|
129
|
+
signature: JSON.stringify(convertCredentialToJSON(Object.assign({ id: (_f = owner.id) !== null && _f !== void 0 ? _f : '1' }, signResponse))),
|
|
130
|
+
publicKey: owner.publicKey,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const sendPreparedCallsResponse = (await request({
|
|
135
|
+
method: 'wallet_sendPreparedCalls',
|
|
136
|
+
params: [
|
|
137
|
+
{
|
|
138
|
+
version: '1.0',
|
|
139
|
+
type: prepareCallsResponse.type,
|
|
140
|
+
data: prepareCallsResponse.userOp,
|
|
141
|
+
chainId: prepareCallsResponse.chainId,
|
|
142
|
+
signature: signatureData,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
}));
|
|
146
|
+
return sendPreparedCallsResponse[0];
|
|
147
|
+
}
|
|
148
|
+
case 'wallet_sendPreparedCalls': {
|
|
149
|
+
assertArrayPresence(args.params);
|
|
150
|
+
// Get the client for the chain
|
|
151
|
+
const chainId = get(args.params[0], 'chainId');
|
|
152
|
+
if (!chainId) {
|
|
153
|
+
throw standardErrors.rpc.invalidParams('chainId is required');
|
|
154
|
+
}
|
|
155
|
+
if (!isHex(chainId)) {
|
|
156
|
+
throw standardErrors.rpc.invalidParams('chainId must be a hex encoded integer');
|
|
157
|
+
}
|
|
158
|
+
const sendPreparedCallsResponse = await client.request({
|
|
159
|
+
method: 'wallet_sendPreparedCalls',
|
|
160
|
+
params: args.params,
|
|
161
|
+
});
|
|
162
|
+
return sendPreparedCallsResponse;
|
|
163
|
+
}
|
|
164
|
+
case 'wallet_prepareCalls': {
|
|
165
|
+
assertArrayPresence(args.params);
|
|
166
|
+
// Get the client for the chain
|
|
167
|
+
const chainId = get(args.params[0], 'chainId');
|
|
168
|
+
if (!chainId) {
|
|
169
|
+
throw standardErrors.rpc.invalidParams('chainId is required');
|
|
170
|
+
}
|
|
171
|
+
if (!isHex(chainId)) {
|
|
172
|
+
throw standardErrors.rpc.invalidParams('chainId must be a hex encoded integer');
|
|
173
|
+
}
|
|
174
|
+
if (!args.params[0]) {
|
|
175
|
+
throw standardErrors.rpc.invalidParams('params are required');
|
|
176
|
+
}
|
|
177
|
+
if (!get(args.params[0], 'calls')) {
|
|
178
|
+
throw standardErrors.rpc.invalidParams('calls are required');
|
|
179
|
+
}
|
|
180
|
+
const prepareCallsParams = args
|
|
181
|
+
.params[0];
|
|
182
|
+
if (attribution &&
|
|
183
|
+
prepareCallsParams.capabilities &&
|
|
184
|
+
!('attribution' in prepareCallsParams.capabilities)) {
|
|
185
|
+
prepareCallsParams.capabilities.attribution = attribution;
|
|
186
|
+
}
|
|
187
|
+
const prepareCallsResponse = await client.request({
|
|
188
|
+
method: 'wallet_prepareCalls',
|
|
189
|
+
params: [
|
|
190
|
+
Object.assign(Object.assign({}, args.params[0]), { chainId: chainId }),
|
|
191
|
+
],
|
|
192
|
+
});
|
|
193
|
+
return prepareCallsResponse;
|
|
194
|
+
}
|
|
195
|
+
case 'personal_sign': {
|
|
196
|
+
assertArrayPresence(args.params);
|
|
197
|
+
// Param is expected to be a hex encoded string
|
|
198
|
+
if (!isHex(args.params[0])) {
|
|
199
|
+
throw standardErrors.rpc.invalidParams('message must be a hex encoded string');
|
|
200
|
+
}
|
|
201
|
+
// signMessage expects the unencoded message
|
|
202
|
+
const message = hexToString(args.params[0]);
|
|
203
|
+
return account.signMessage({ message });
|
|
204
|
+
}
|
|
205
|
+
case 'eth_signTypedData_v4': {
|
|
206
|
+
assertArrayPresence(args.params);
|
|
207
|
+
const typedData = typeof args.params[1] === 'string'
|
|
208
|
+
? JSON.parse(args.params[1])
|
|
209
|
+
: args.params[1];
|
|
210
|
+
return account.signTypedData(typedData);
|
|
211
|
+
}
|
|
212
|
+
case 'eth_signTypedData_v1':
|
|
213
|
+
case 'eth_signTypedData_v3':
|
|
214
|
+
case 'wallet_addEthereumChain':
|
|
215
|
+
case 'wallet_switchEthereumChain':
|
|
216
|
+
default:
|
|
217
|
+
throw standardErrors.rpc.methodNotSupported();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
// Convert error to RPC error if possible
|
|
222
|
+
if (isViemError(error)) {
|
|
223
|
+
const newError = viemHttpErrorToProviderError(error);
|
|
224
|
+
if (newError) {
|
|
225
|
+
throw newError;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
throw error;
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return { request };
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=createSubAccountSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSubAccountSigner.js","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/createSubAccountSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Client, Hex } from 'viem';
|
|
2
|
+
type FindOwnerIndexParams = {
|
|
3
|
+
/**
|
|
4
|
+
* The address of the account to get the owner index for
|
|
5
|
+
*/
|
|
6
|
+
address: `0x${string}`;
|
|
7
|
+
/**
|
|
8
|
+
* The client to use to get the code and read the contract
|
|
9
|
+
*/
|
|
10
|
+
client: Client;
|
|
11
|
+
/**
|
|
12
|
+
* The public key of the owner
|
|
13
|
+
*/
|
|
14
|
+
publicKey: Hex;
|
|
15
|
+
/**
|
|
16
|
+
* The address of the factory
|
|
17
|
+
*/
|
|
18
|
+
factory?: `0x${string}`;
|
|
19
|
+
/**
|
|
20
|
+
* The data of the factory
|
|
21
|
+
*/
|
|
22
|
+
factoryData?: Hex;
|
|
23
|
+
};
|
|
24
|
+
export declare function findOwnerIndex({ address, client, publicKey, factory, factoryData, }: FindOwnerIndexParams): Promise<number>;
|
|
25
|
+
/**
|
|
26
|
+
* Formats 20 byte addresses to 32 byte public keys. Contract uses 32 byte keys for owners.
|
|
27
|
+
* @param publicKey - The public key to format
|
|
28
|
+
* @returns The formatted public key
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatPublicKey(publicKey: Hex): Hex;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=findOwnerIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findOwnerIndex.d.ts","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/findOwnerIndex.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,GAAG,EAAsC,MAAM,MAAM,CAAA;AAI/E,KAAK,oBAAoB,GAAG;IAC3B;;OAEG;IACH,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,SAAS,EAAE,GAAG,CAAA;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,wBAAsB,cAAc,CAAC,EACpC,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,GACX,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CxC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAKnD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { standardErrors } from '../../../core/error/errors.js';
|
|
2
|
+
import { decodeFunctionData, isAddress, pad } from 'viem';
|
|
3
|
+
import { getCode, readContract } from 'viem/actions';
|
|
4
|
+
import { abi, factoryAbi } from './constants.js';
|
|
5
|
+
export async function findOwnerIndex({ address, client, publicKey, factory, factoryData, }) {
|
|
6
|
+
const code = await getCode(client, {
|
|
7
|
+
address,
|
|
8
|
+
});
|
|
9
|
+
// Check index of owner in the factoryData
|
|
10
|
+
// Note: importing an undeployed contract might need to be handled differently
|
|
11
|
+
// The implemention will likely require the signer to tell us the index
|
|
12
|
+
if (!code && factory && factoryData) {
|
|
13
|
+
const initData = decodeFunctionData({
|
|
14
|
+
abi: factoryAbi,
|
|
15
|
+
data: factoryData,
|
|
16
|
+
});
|
|
17
|
+
if (initData.functionName !== 'createAccount') {
|
|
18
|
+
throw standardErrors.rpc.internal('unknown factory function');
|
|
19
|
+
}
|
|
20
|
+
const [owners] = initData.args;
|
|
21
|
+
return owners.findIndex((owner) => {
|
|
22
|
+
return owner.toLowerCase() === formatPublicKey(publicKey).toLowerCase();
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const ownerCount = await readContract(client, {
|
|
26
|
+
address,
|
|
27
|
+
abi,
|
|
28
|
+
functionName: 'ownerCount',
|
|
29
|
+
});
|
|
30
|
+
// Iterate from highest index down and return early when found
|
|
31
|
+
for (let i = Number(ownerCount) - 1; i >= 0; i--) {
|
|
32
|
+
const owner = await readContract(client, {
|
|
33
|
+
address,
|
|
34
|
+
abi,
|
|
35
|
+
functionName: 'ownerAtIndex',
|
|
36
|
+
args: [BigInt(i)],
|
|
37
|
+
});
|
|
38
|
+
const formatted = formatPublicKey(publicKey);
|
|
39
|
+
if (owner.toLowerCase() === formatted.toLowerCase()) {
|
|
40
|
+
return i;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return -1;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Formats 20 byte addresses to 32 byte public keys. Contract uses 32 byte keys for owners.
|
|
47
|
+
* @param publicKey - The public key to format
|
|
48
|
+
* @returns The formatted public key
|
|
49
|
+
*/
|
|
50
|
+
export function formatPublicKey(publicKey) {
|
|
51
|
+
if (isAddress(publicKey)) {
|
|
52
|
+
return pad(publicKey);
|
|
53
|
+
}
|
|
54
|
+
return publicKey;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=findOwnerIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findOwnerIndex.js","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/findOwnerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAwB,kBAAkB,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAyBhD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACpC,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,GACW;IACtB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE;QAClC,OAAO;KACP,CAAC,CAAA;IAEF,0CAA0C;IAC1C,8EAA8E;IAC9E,uEAAuE;IACvE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YACnC,GAAG,EAAE,UAAU;YACf,IAAI,EAAE,WAAW;SACjB,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;YAC/C,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAA;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,KAAoB,EAAE,EAAE;YAChD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACxE,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QAC7C,OAAO;QACP,GAAG;QACH,YAAY,EAAE,YAAY;KAC1B,CAAC,CAAA;IAEF,8DAA8D;IAC9D,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;YACxC,OAAO;YACP,GAAG;YACH,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjB,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YACrD,OAAO,CAAC,CAAA;QACT,CAAC;IACF,CAAC;IAED,OAAO,CAAC,CAAC,CAAA;AACV,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAc;IAC7C,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RequestArguments } from '../../../core/provider/interface.js';
|
|
2
|
+
import { OwnerAccount } from '../../../core/type/index.js';
|
|
3
|
+
export declare function handleAddSubAccountOwner({ ownerAccount, globalAccountRequest, chainId, }: {
|
|
4
|
+
ownerAccount: OwnerAccount;
|
|
5
|
+
globalAccountRequest: (request: RequestArguments) => Promise<unknown>;
|
|
6
|
+
chainId: number;
|
|
7
|
+
}): Promise<number>;
|
|
8
|
+
//# sourceMappingURL=handleAddSubAccountOwner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAddSubAccountOwner.d.ts","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/handleAddSubAccountOwner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAelD,wBAAsB,wBAAwB,CAAC,EAC9C,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACP,EAAE;IACF,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,OAAO,EAAE,MAAM,CAAA;CACf,mBAkGA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { standardErrors } from '../../../core/error/errors.js';
|
|
2
|
+
import { getClient } from '../../../store/chain-clients/utils.js';
|
|
3
|
+
import { store } from '../../../store/store.js';
|
|
4
|
+
import { assertPresence } from '../../../util/assertPresence.js';
|
|
5
|
+
import { decodeAbiParameters, encodeFunctionData, numberToHex, toHex, } from 'viem';
|
|
6
|
+
import { waitForCallsStatus } from 'viem/experimental';
|
|
7
|
+
import { abi } from './constants.js';
|
|
8
|
+
import { findOwnerIndex } from './findOwnerIndex.js';
|
|
9
|
+
import { presentAddOwnerDialog } from './presentAddOwnerDialog.js';
|
|
10
|
+
export async function handleAddSubAccountOwner({ ownerAccount, globalAccountRequest, chainId, }) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const account = store.account.get();
|
|
13
|
+
const subAccount = store.subAccounts.get();
|
|
14
|
+
const globalAccount = (_a = account.accounts) === null || _a === void 0 ? void 0 : _a.find((account) => account.toLowerCase() !== (subAccount === null || subAccount === void 0 ? void 0 : subAccount.address.toLowerCase()));
|
|
15
|
+
assertPresence(globalAccount, standardErrors.provider.unauthorized('no global account'));
|
|
16
|
+
assertPresence((_b = account.chain) === null || _b === void 0 ? void 0 : _b.id, standardErrors.provider.unauthorized('no chain id'));
|
|
17
|
+
assertPresence(subAccount === null || subAccount === void 0 ? void 0 : subAccount.address, standardErrors.provider.unauthorized('no sub account'));
|
|
18
|
+
const calls = [];
|
|
19
|
+
if (ownerAccount.type === 'local' && ownerAccount.address) {
|
|
20
|
+
calls.push({
|
|
21
|
+
to: subAccount.address,
|
|
22
|
+
data: encodeFunctionData({
|
|
23
|
+
abi,
|
|
24
|
+
functionName: 'addOwnerAddress',
|
|
25
|
+
args: [ownerAccount.address],
|
|
26
|
+
}),
|
|
27
|
+
value: toHex(0),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (ownerAccount.publicKey) {
|
|
31
|
+
const [x, y] = decodeAbiParameters([{ type: 'bytes32' }, { type: 'bytes32' }], ownerAccount.publicKey);
|
|
32
|
+
calls.push({
|
|
33
|
+
to: subAccount.address,
|
|
34
|
+
data: encodeFunctionData({
|
|
35
|
+
abi,
|
|
36
|
+
functionName: 'addOwnerPublicKey',
|
|
37
|
+
args: [x, y],
|
|
38
|
+
}),
|
|
39
|
+
value: toHex(0),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const request = {
|
|
43
|
+
method: 'wallet_sendCalls',
|
|
44
|
+
params: [
|
|
45
|
+
{
|
|
46
|
+
version: '1',
|
|
47
|
+
calls,
|
|
48
|
+
chainId: numberToHex(chainId),
|
|
49
|
+
from: globalAccount,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
const selection = await presentAddOwnerDialog();
|
|
54
|
+
if (selection === 'cancel') {
|
|
55
|
+
throw standardErrors.provider.unauthorized('user cancelled');
|
|
56
|
+
}
|
|
57
|
+
const callsId = (await globalAccountRequest(request));
|
|
58
|
+
const client = getClient(account.chain.id);
|
|
59
|
+
assertPresence(client, standardErrors.rpc.internal(`client not found for chainId ${account.chain.id}`));
|
|
60
|
+
const callsResult = await waitForCallsStatus(client, {
|
|
61
|
+
id: callsId,
|
|
62
|
+
});
|
|
63
|
+
if (callsResult.status !== 'success') {
|
|
64
|
+
throw standardErrors.rpc.internal('add owner call failed');
|
|
65
|
+
}
|
|
66
|
+
const ownerIndex = await findOwnerIndex({
|
|
67
|
+
address: subAccount.address,
|
|
68
|
+
publicKey: ownerAccount.type === 'local' && ownerAccount.address
|
|
69
|
+
? ownerAccount.address
|
|
70
|
+
: ownerAccount.publicKey,
|
|
71
|
+
client,
|
|
72
|
+
});
|
|
73
|
+
if (ownerIndex === -1) {
|
|
74
|
+
throw standardErrors.rpc.internal('failed to find owner index');
|
|
75
|
+
}
|
|
76
|
+
return ownerIndex;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=handleAddSubAccountOwner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAddSubAccountOwner.js","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/handleAddSubAccountOwner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,KAAK,GACL,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC9C,YAAY,EACZ,oBAAoB,EACpB,OAAO,GAKP;;IACA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA;IAC1C,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,QAAQ,0CAAE,IAAI,CAC3C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,MAAK,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC,WAAW,EAAE,CAAA,CACxE,CAAA;IAED,cAAc,CACb,aAAa,EACb,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CACzD,CAAA;IACD,cAAc,CACb,MAAA,OAAO,CAAC,KAAK,0CAAE,EAAE,EACjB,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CACnD,CAAA;IACD,cAAc,CACb,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,EACnB,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CACtD,CAAA;IAED,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,UAAU,CAAC,OAAO;YACtB,IAAI,EAAE,kBAAkB,CAAC;gBACxB,GAAG;gBACH,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAU;aACrC,CAAC;YACF,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACf,CAAC,CAAA;IACH,CAAC;IAED,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CACjC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC1C,YAAY,CAAC,SAAS,CACtB,CAAA;QACD,KAAK,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,UAAU,CAAC,OAAO;YACtB,IAAI,EAAE,kBAAkB,CAAC;gBACxB,GAAG;gBACH,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU;aACrB,CAAC;YACF,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACf,CAAC,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAqB;QACjC,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE;YACP;gBACC,OAAO,EAAE,GAAG;gBACZ,KAAK;gBACL,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;gBAC7B,IAAI,EAAE,aAAa;aACnB;SACD;KACD,CAAA;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAA;IAC/C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAW,CAAA;IAE/D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1C,cAAc,CACb,MAAM,EACN,cAAc,CAAC,GAAG,CAAC,QAAQ,CAC1B,gCAAgC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAClD,CACD,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE;QACpD,EAAE,EAAE,OAAO;KACX,CAAC,CAAA;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACvC,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,SAAS,EACR,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,OAAO;YACpD,CAAC,CAAC,YAAY,CAAC,OAAO;YACtB,CAAC,CAAC,YAAY,CAAC,SAAS;QAC1B,MAAM;KACN,CAAC,CAAA;IAEF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,UAAU,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InsufficientBalanceErrorData } from '../../../core/error/errors.js';
|
|
2
|
+
import { RequestArguments } from '../../../core/provider/interface.js';
|
|
3
|
+
import { Address } from '../../../core/type/index.js';
|
|
4
|
+
import { PublicClient } from 'viem';
|
|
5
|
+
export declare function handleInsufficientBalanceError({ globalAccountAddress, subAccountAddress, client, request, globalAccountRequest, }: {
|
|
6
|
+
errorData: InsufficientBalanceErrorData;
|
|
7
|
+
globalAccountAddress: Address;
|
|
8
|
+
subAccountAddress: Address;
|
|
9
|
+
request: RequestArguments;
|
|
10
|
+
client: PublicClient;
|
|
11
|
+
globalAccountRequest: (request: RequestArguments) => Promise<unknown>;
|
|
12
|
+
}): Promise<`0x${string}` | {
|
|
13
|
+
capabilities?: {
|
|
14
|
+
[x: string]: any;
|
|
15
|
+
} | undefined;
|
|
16
|
+
id: string;
|
|
17
|
+
} | undefined>;
|
|
18
|
+
//# sourceMappingURL=handleInsufficientBalance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleInsufficientBalance.d.ts","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/handleInsufficientBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,4BAA4B,EAE5B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAInC,wBAAsB,8BAA8B,CAAC,EACpD,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,oBAAoB,GACpB,EAAE;IACF,SAAS,EAAE,4BAA4B,CAAA;IACvC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,gBAAgB,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,oBAAoB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACrE;;;;;eAsBA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { standardErrors, } from '../../../core/error/errors.js';
|
|
2
|
+
import { assertPresence } from '../../../util/assertPresence.js';
|
|
3
|
+
import { presentSubAccountFundingDialog } from '../utils.js';
|
|
4
|
+
import { routeThroughGlobalAccount } from './routeThroughGlobalAccount.js';
|
|
5
|
+
export async function handleInsufficientBalanceError({ globalAccountAddress, subAccountAddress, client, request, globalAccountRequest, }) {
|
|
6
|
+
var _a;
|
|
7
|
+
const chainId = (_a = client.chain) === null || _a === void 0 ? void 0 : _a.id;
|
|
8
|
+
assertPresence(chainId, standardErrors.rpc.internal(`invalid chainId`));
|
|
9
|
+
try {
|
|
10
|
+
await presentSubAccountFundingDialog();
|
|
11
|
+
}
|
|
12
|
+
catch (_b) {
|
|
13
|
+
throw standardErrors.provider.userRejectedRequest({
|
|
14
|
+
message: 'User cancelled funding',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const result = await routeThroughGlobalAccount({
|
|
18
|
+
request,
|
|
19
|
+
globalAccountAddress,
|
|
20
|
+
subAccountAddress,
|
|
21
|
+
client,
|
|
22
|
+
globalAccountRequest,
|
|
23
|
+
chainId,
|
|
24
|
+
});
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=handleInsufficientBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleInsufficientBalance.js","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/handleInsufficientBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,cAAc,GACd,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE1E,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,EACpD,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,oBAAoB,GAQpB;;IACA,MAAM,OAAO,GAAG,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA;IAChC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEvE,IAAI,CAAC;QACJ,MAAM,8BAA8B,EAAE,CAAA;IACvC,CAAC;IAAC,WAAM,CAAC;QACR,MAAM,cAAc,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACjD,OAAO,EAAE,wBAAwB;SACjC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;QAC9C,OAAO;QACP,oBAAoB;QACpB,iBAAiB;QACjB,MAAM;QACN,oBAAoB;QACpB,OAAO;KACP,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentAddOwnerDialog.d.ts","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/presentAddOwnerDialog.ts"],"names":[],"mappings":"AAQA,wBAAsB,qBAAqB,uCAwC1C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { logDialogActionClicked, logDialogDismissed, logDialogShown, } from '../../../core/telemetry/events/dialog.js';
|
|
2
|
+
import { store } from '../../../store/store.js';
|
|
3
|
+
import { initDialog } from '../../../ui/Dialog/index.js';
|
|
4
|
+
export async function presentAddOwnerDialog() {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
const appName = (_b = (_a = store.config.get().metadata) === null || _a === void 0 ? void 0 : _a.appName) !== null && _b !== void 0 ? _b : 'App';
|
|
7
|
+
const dialog = initDialog();
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
logDialogShown({ dialogContext: 'sub_account_add_owner' });
|
|
10
|
+
dialog.presentItem({
|
|
11
|
+
title: `Re-authorize ${appName}`,
|
|
12
|
+
message: `${appName} has lost access to your account. Please sign at the next step to re-authorize ${appName}`,
|
|
13
|
+
onClose: () => {
|
|
14
|
+
logDialogDismissed({ dialogContext: 'sub_account_add_owner' });
|
|
15
|
+
resolve('cancel');
|
|
16
|
+
},
|
|
17
|
+
actionItems: [
|
|
18
|
+
{
|
|
19
|
+
text: 'Continue',
|
|
20
|
+
variant: 'primary',
|
|
21
|
+
onClick: () => {
|
|
22
|
+
logDialogActionClicked({
|
|
23
|
+
dialogContext: 'sub_account_add_owner',
|
|
24
|
+
dialogAction: 'confirm',
|
|
25
|
+
});
|
|
26
|
+
dialog.clear();
|
|
27
|
+
resolve('authenticate');
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
text: 'Not now',
|
|
32
|
+
variant: 'secondary',
|
|
33
|
+
onClick: () => {
|
|
34
|
+
logDialogActionClicked({
|
|
35
|
+
dialogContext: 'sub_account_add_owner',
|
|
36
|
+
dialogAction: 'cancel',
|
|
37
|
+
});
|
|
38
|
+
dialog.clear();
|
|
39
|
+
resolve('cancel');
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=presentAddOwnerDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentAddOwnerDialog.js","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/presentAddOwnerDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,GACd,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,qBAAqB;;IAC1C,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,0CAAE,OAAO,mCAAI,KAAK,CAAA;IAC7D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,EAAE;QACzD,cAAc,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAA;QAC1D,MAAM,CAAC,WAAW,CAAC;YAClB,KAAK,EAAE,gBAAgB,OAAO,EAAE;YAChC,OAAO,EAAE,GAAG,OAAO,kFAAkF,OAAO,EAAE;YAC9G,OAAO,EAAE,GAAG,EAAE;gBACb,kBAAkB,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAA;gBAC9D,OAAO,CAAC,QAAQ,CAAC,CAAA;YAClB,CAAC;YACD,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,GAAG,EAAE;wBACb,sBAAsB,CAAC;4BACtB,aAAa,EAAE,uBAAuB;4BACtC,YAAY,EAAE,SAAS;yBACvB,CAAC,CAAA;wBACF,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAO,CAAC,cAAc,CAAC,CAAA;oBACxB,CAAC;iBACD;gBACD;oBACC,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,GAAG,EAAE;wBACb,sBAAsB,CAAC;4BACtB,aAAa,EAAE,uBAAuB;4BACtC,YAAY,EAAE,QAAQ;yBACtB,CAAC,CAAA;wBACF,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAO,CAAC,QAAQ,CAAC,CAAA;oBAClB,CAAC;iBACD;aACD;SACD,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RequestArguments } from '../../../core/provider/interface.js';
|
|
2
|
+
import { Address, Hex, PublicClient } from 'viem';
|
|
3
|
+
/**
|
|
4
|
+
* This function is used to send a request to the global account.
|
|
5
|
+
* It is used to execute a request that requires a spend permission through the global account.
|
|
6
|
+
* @returns The result of the request.
|
|
7
|
+
*/
|
|
8
|
+
export declare function routeThroughGlobalAccount({ request, globalAccountAddress, subAccountAddress, client, globalAccountRequest, chainId, prependCalls, }: {
|
|
9
|
+
/** The request to send to the global account. */
|
|
10
|
+
request: RequestArguments;
|
|
11
|
+
/** The address of the global account. */
|
|
12
|
+
globalAccountAddress: Address;
|
|
13
|
+
/** The address of the sub account. */
|
|
14
|
+
subAccountAddress: Address;
|
|
15
|
+
/** The client to use to send the request. */
|
|
16
|
+
client: PublicClient;
|
|
17
|
+
/** The chain id to use to send the request. */
|
|
18
|
+
chainId: number;
|
|
19
|
+
/** Optional calls to prepend to the request. */
|
|
20
|
+
prependCalls?: {
|
|
21
|
+
to: Address;
|
|
22
|
+
data: Hex;
|
|
23
|
+
value: Hex;
|
|
24
|
+
}[] | undefined;
|
|
25
|
+
/** The function to use to send the request to the global account. */
|
|
26
|
+
globalAccountRequest: (request: RequestArguments) => Promise<any>;
|
|
27
|
+
}): Promise<`0x${string}` | {
|
|
28
|
+
capabilities?: {
|
|
29
|
+
[x: string]: any;
|
|
30
|
+
} | undefined;
|
|
31
|
+
id: string;
|
|
32
|
+
} | undefined>;
|
|
33
|
+
//# sourceMappingURL=routeThroughGlobalAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeThroughGlobalAccount.d.ts","sourceRoot":"","sources":["../../../../src/sign/app-sdk/utils/routeThroughGlobalAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EACN,OAAO,EACP,GAAG,EACH,YAAY,EAKZ,MAAM,MAAM,CAAA;AAWb;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,EAC/C,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACN,oBAAoB,EACpB,OAAO,EACP,YAAY,GACZ,EAAE;IACF,iDAAiD;IACjD,OAAO,EAAE,gBAAgB,CAAA;IACzB,yCAAyC;IACzC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,6CAA6C;IAC7C,MAAM,EAAE,YAAY,CAAA;IACpB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,GAAG,SAAS,CAAA;IACnE,qEAAqE;IACrE,oBAAoB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACjE;;;;;eAsFA"}
|