@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,67 @@
|
|
|
1
|
+
import { createSpendPermissionTypedData, dateToTimestampInSeconds, } from '../utils.js';
|
|
2
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
3
|
+
import { getHash } from './getHash.js';
|
|
4
|
+
/**
|
|
5
|
+
* Requests user approval to create a new spend permission.
|
|
6
|
+
*
|
|
7
|
+
* This helper method opens a prompt to ask the user to sign a spend permission.
|
|
8
|
+
* To learn more about spend permissions, see the [Spend Permission documentation](https://docs.base.org/base-account/improve-ux/spend-permissions).
|
|
9
|
+
*
|
|
10
|
+
* The method uses EIP-712 typed data signing to create a cryptographically secure
|
|
11
|
+
* permission that can be verified on-chain. The resulting permission object contains
|
|
12
|
+
* the signature and all necessary data for later use.
|
|
13
|
+
*
|
|
14
|
+
* @param params - The parameters for the requestSpendPermission method.
|
|
15
|
+
* @param params.provider - Base Account Provider
|
|
16
|
+
* @param params.account - The account to request a spend permission for.
|
|
17
|
+
* @param params.spender - The spender to request a spend permission for.
|
|
18
|
+
* @param params.token - The token to request a spend permission for.
|
|
19
|
+
* @param params.chainId - The chain ID to request a spend permission for.
|
|
20
|
+
* @param params.allowance - The allowance to request a spend permission for.
|
|
21
|
+
* @param params.periodInDays - The peroid in days for the allowance to be valid for.
|
|
22
|
+
* @param params.start - The start date for the allowance to be valid from.
|
|
23
|
+
* @param params.end - The end date for the allowance to be valid until next period starts.
|
|
24
|
+
* @param params.salt - Salt
|
|
25
|
+
* @param params.extraData - The extra data to use for the allowance.
|
|
26
|
+
*
|
|
27
|
+
* @returns A promise that resolves to a SpendPermission object containing the signature and permission details.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { requestSpendPermission } from '@startale/app-sdk/spend-permission';
|
|
32
|
+
*
|
|
33
|
+
* // Request approval for a spend permission
|
|
34
|
+
* const permission = await requestSpendPermission({
|
|
35
|
+
* provider, // Base Account Provider
|
|
36
|
+
* account: '0x1234...',
|
|
37
|
+
* spender: '0x5678...',
|
|
38
|
+
* token: '0xabcd...', // USDC address
|
|
39
|
+
* chainId: 8453, // Base mainnet
|
|
40
|
+
* allowance: parseUnits('100', 6), // 100 USDC
|
|
41
|
+
* periodInDays: 30, // Monthly allowance
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* console.log('Permission created:', permission.signature);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
const requestSpendPermissionFn = async (request) => {
|
|
48
|
+
const { provider, account, chainId } = request;
|
|
49
|
+
const typedData = createSpendPermissionTypedData(request);
|
|
50
|
+
const [signature, permissionHash] = await Promise.all([
|
|
51
|
+
provider.request({
|
|
52
|
+
method: 'eth_signTypedData_v4',
|
|
53
|
+
params: [account, typedData],
|
|
54
|
+
}),
|
|
55
|
+
getHash({ permission: typedData.message, chainId }),
|
|
56
|
+
]);
|
|
57
|
+
const permission = {
|
|
58
|
+
createdAt: dateToTimestampInSeconds(new Date()),
|
|
59
|
+
permissionHash,
|
|
60
|
+
signature,
|
|
61
|
+
chainId,
|
|
62
|
+
permission: typedData.message,
|
|
63
|
+
};
|
|
64
|
+
return permission;
|
|
65
|
+
};
|
|
66
|
+
export const requestSpendPermission = withTelemetry(requestSpendPermissionFn);
|
|
67
|
+
//# sourceMappingURL=requestSpendPermission.js.map
|
package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpendPermission.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/requestSpendPermission.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,8BAA8B,EAC9B,wBAAwB,GACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAetC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,wBAAwB,GAAG,KAAK,EACrC,OAAqE,EAC1C,EAAE;IAC7B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE9C,MAAM,SAAS,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAA;IAEzD,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC;YAChB,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;SAC5B,CAAoB;QACrB,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;KACnD,CAAC,CAAA;IAEF,MAAM,UAAU,GAAoB;QACnC,SAAS,EAAE,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/C,cAAc;QACd,SAAS;QACT,OAAO;QACP,UAAU,EAAE,SAAS,CAAC,OAAO;KAC7B,CAAA;IAED,OAAO,UAAU,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { SpendPermission } from '../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
2
|
+
import { spendPermissionManagerAddress } from '../../../sign/app-sdk/utils/constants.js';
|
|
3
|
+
import { Address, Hex } from 'viem';
|
|
4
|
+
import { RequestSpendPermissionType } from './methods/requestSpendPermission.js';
|
|
5
|
+
declare const SPEND_PERMISSION_TYPED_DATA_TYPES: {
|
|
6
|
+
SpendPermission: {
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
}[];
|
|
10
|
+
};
|
|
11
|
+
export type SpendPermissionTypedData = {
|
|
12
|
+
domain: {
|
|
13
|
+
name: 'Spend Permission Manager';
|
|
14
|
+
version: '1';
|
|
15
|
+
chainId: number;
|
|
16
|
+
verifyingContract: typeof spendPermissionManagerAddress;
|
|
17
|
+
};
|
|
18
|
+
types: typeof SPEND_PERMISSION_TYPED_DATA_TYPES;
|
|
19
|
+
primaryType: 'SpendPermission';
|
|
20
|
+
message: {
|
|
21
|
+
account: Address;
|
|
22
|
+
spender: Address;
|
|
23
|
+
token: Address;
|
|
24
|
+
allowance: string;
|
|
25
|
+
period: number;
|
|
26
|
+
start: number;
|
|
27
|
+
end: number;
|
|
28
|
+
salt: string;
|
|
29
|
+
extraData: Hex;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export declare function createSpendPermissionTypedData(request: RequestSpendPermissionType): SpendPermissionTypedData;
|
|
33
|
+
/**
|
|
34
|
+
* Converts a JavaScript Date object to a Unix timestamp in seconds.
|
|
35
|
+
*
|
|
36
|
+
* @param date - The Date object to convert.
|
|
37
|
+
* @returns The Unix timestamp in seconds.
|
|
38
|
+
*/
|
|
39
|
+
export declare function dateToTimestampInSeconds(date: Date): number;
|
|
40
|
+
/**
|
|
41
|
+
|
|
42
|
+
* Converts a Unix timestamp in seconds to a Date object.
|
|
43
|
+
*
|
|
44
|
+
* @param timestamp - The Unix timestamp in seconds.
|
|
45
|
+
* @returns A Date object.
|
|
46
|
+
*/
|
|
47
|
+
export declare function timestampInSecondsToDate(timestamp: number): Date;
|
|
48
|
+
/**
|
|
49
|
+
* Converts a SpendPermission object to the arguments expected by the SpendPermissionManager contract.
|
|
50
|
+
*
|
|
51
|
+
* This function creates the standard args in the correct order.
|
|
52
|
+
*
|
|
53
|
+
* @param permission - The SpendPermission object to convert.
|
|
54
|
+
* @returns The arguments expected by the SpendPermissionManager contract.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* import { toSpendPermissionArgs } from '@startale/app-sdk/spend-permission';
|
|
59
|
+
*
|
|
60
|
+
* const args = toSpendPermissionArgs(permission);
|
|
61
|
+
* const currentPeriod = await readContract(client, {
|
|
62
|
+
* address: spendPermissionManagerAddress,
|
|
63
|
+
* abi: spendPermissionManagerAbi,
|
|
64
|
+
* functionName: 'getCurrentPeriod',
|
|
65
|
+
* args: [args]
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function toSpendPermissionArgs(permission: SpendPermission): {
|
|
70
|
+
account: `0x${string}`;
|
|
71
|
+
spender: `0x${string}`;
|
|
72
|
+
token: `0x${string}`;
|
|
73
|
+
allowance: bigint;
|
|
74
|
+
period: number;
|
|
75
|
+
start: number;
|
|
76
|
+
end: number;
|
|
77
|
+
salt: bigint;
|
|
78
|
+
extraData: Hex;
|
|
79
|
+
};
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAc,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAIhF,QAAA,MAAM,iCAAiC;;;;;CAuCtC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE;QACP,IAAI,EAAE,0BAA0B,CAAA;QAChC,OAAO,EAAE,GAAG,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,iBAAiB,EAAE,OAAO,6BAA6B,CAAA;KACvD,CAAA;IACD,KAAK,EAAE,OAAO,iCAAiC,CAAA;IAC/C,WAAW,EAAE,iBAAiB,CAAA;IAC9B,OAAO,EAAE;QACR,OAAO,EAAE,OAAO,CAAA;QAChB,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,EAAE,OAAO,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,GAAG,CAAA;KACd,CAAA;CACD,CAAA;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,0BAA0B,GACjC,wBAAwB,CAmC1B;AAaD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe;;;;;;;;;eAsBvC,GAAG;EAE5B"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { spendPermissionManagerAddress } from '../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { getAddress } from 'viem';
|
|
3
|
+
const ETERNITY_TIMESTAMP = 281474976710655; // 2^48 - 1
|
|
4
|
+
const SPEND_PERMISSION_TYPED_DATA_TYPES = {
|
|
5
|
+
SpendPermission: [
|
|
6
|
+
{
|
|
7
|
+
name: 'account',
|
|
8
|
+
type: 'address',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'spender',
|
|
12
|
+
type: 'address',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'token',
|
|
16
|
+
type: 'address',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'allowance',
|
|
20
|
+
type: 'uint160',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'period',
|
|
24
|
+
type: 'uint48',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'start',
|
|
28
|
+
type: 'uint48',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'end',
|
|
32
|
+
type: 'uint48',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'salt',
|
|
36
|
+
type: 'uint256',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'extraData',
|
|
40
|
+
type: 'bytes',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
export function createSpendPermissionTypedData(request) {
|
|
45
|
+
const { account, spender, token, chainId, allowance, periodInDays, start, end, salt, extraData, } = request;
|
|
46
|
+
return {
|
|
47
|
+
domain: {
|
|
48
|
+
name: 'Spend Permission Manager',
|
|
49
|
+
version: '1',
|
|
50
|
+
chainId: chainId,
|
|
51
|
+
verifyingContract: spendPermissionManagerAddress,
|
|
52
|
+
},
|
|
53
|
+
types: SPEND_PERMISSION_TYPED_DATA_TYPES,
|
|
54
|
+
primaryType: 'SpendPermission',
|
|
55
|
+
message: {
|
|
56
|
+
account: getAddress(account),
|
|
57
|
+
spender: getAddress(spender),
|
|
58
|
+
token: getAddress(token),
|
|
59
|
+
allowance: allowance.toString(),
|
|
60
|
+
period: 86400 * periodInDays,
|
|
61
|
+
start: dateToTimestampInSeconds(start !== null && start !== void 0 ? start : new Date()),
|
|
62
|
+
end: end ? dateToTimestampInSeconds(end) : ETERNITY_TIMESTAMP,
|
|
63
|
+
salt: salt !== null && salt !== void 0 ? salt : getRandomHexString(32),
|
|
64
|
+
extraData: extraData ? extraData : '0x',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function getRandomHexString(byteLength) {
|
|
69
|
+
const bytes = new Uint8Array(byteLength);
|
|
70
|
+
crypto.getRandomValues(bytes);
|
|
71
|
+
const hexString = Array.from(bytes)
|
|
72
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
73
|
+
.join('');
|
|
74
|
+
return `0x${hexString}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Converts a JavaScript Date object to a Unix timestamp in seconds.
|
|
78
|
+
*
|
|
79
|
+
* @param date - The Date object to convert.
|
|
80
|
+
* @returns The Unix timestamp in seconds.
|
|
81
|
+
*/
|
|
82
|
+
export function dateToTimestampInSeconds(date) {
|
|
83
|
+
return Math.floor(date.getTime() / 1000);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
|
|
87
|
+
* Converts a Unix timestamp in seconds to a Date object.
|
|
88
|
+
*
|
|
89
|
+
* @param timestamp - The Unix timestamp in seconds.
|
|
90
|
+
* @returns A Date object.
|
|
91
|
+
*/
|
|
92
|
+
export function timestampInSecondsToDate(timestamp) {
|
|
93
|
+
return new Date(timestamp * 1000);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Converts a SpendPermission object to the arguments expected by the SpendPermissionManager contract.
|
|
97
|
+
*
|
|
98
|
+
* This function creates the standard args in the correct order.
|
|
99
|
+
*
|
|
100
|
+
* @param permission - The SpendPermission object to convert.
|
|
101
|
+
* @returns The arguments expected by the SpendPermissionManager contract.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* import { toSpendPermissionArgs } from '@startale/app-sdk/spend-permission';
|
|
106
|
+
*
|
|
107
|
+
* const args = toSpendPermissionArgs(permission);
|
|
108
|
+
* const currentPeriod = await readContract(client, {
|
|
109
|
+
* address: spendPermissionManagerAddress,
|
|
110
|
+
* abi: spendPermissionManagerAbi,
|
|
111
|
+
* functionName: 'getCurrentPeriod',
|
|
112
|
+
* args: [args]
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function toSpendPermissionArgs(permission) {
|
|
117
|
+
const { account, spender, token, allowance: allowanceStr, period, start, end, salt, extraData, } = permission.permission;
|
|
118
|
+
return {
|
|
119
|
+
account: getAddress(account),
|
|
120
|
+
spender: getAddress(spender),
|
|
121
|
+
token: getAddress(token),
|
|
122
|
+
allowance: BigInt(allowanceStr),
|
|
123
|
+
period,
|
|
124
|
+
start,
|
|
125
|
+
end,
|
|
126
|
+
salt: BigInt(salt),
|
|
127
|
+
extraData: extraData,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withTelemetry.d.ts","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/withTelemetry.ts"],"names":[],"mappings":"AAUA,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,kBAOpD,UAAU,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAAC,EAe9C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { logSpendPermissionUtilCompleted, logSpendPermissionUtilError, logSpendPermissionUtilStarted, } from '../../../core/telemetry/events/spend-permission.js';
|
|
2
|
+
import { parseErrorMessageFromAny } from '../../../core/telemetry/utils.js';
|
|
3
|
+
import { store } from '../../../store/store.js';
|
|
4
|
+
// biome-ignore lint/suspicious/noExplicitAny: HOF
|
|
5
|
+
export function withTelemetry(fn) {
|
|
6
|
+
var _a;
|
|
7
|
+
// Honor the telemetry preference
|
|
8
|
+
const config = store.config.get();
|
|
9
|
+
if (((_a = config.preference) === null || _a === void 0 ? void 0 : _a.telemetry) === false) {
|
|
10
|
+
return fn;
|
|
11
|
+
}
|
|
12
|
+
return (...args) => {
|
|
13
|
+
const functionName = getFunctionName(fn);
|
|
14
|
+
logSpendPermissionUtilStarted(functionName);
|
|
15
|
+
try {
|
|
16
|
+
const result = fn(...args);
|
|
17
|
+
logSpendPermissionUtilCompleted(functionName);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
logSpendPermissionUtilError(functionName, parseErrorMessageFromAny(error));
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// biome-ignore lint/suspicious/noExplicitAny: HOF helper
|
|
27
|
+
function getFunctionName(fn) {
|
|
28
|
+
return fn.name.replace('Fn', '');
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=withTelemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withTelemetry.js","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/withTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,GAC7B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAoC,EAAK;;IACrE,iCAAiC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;IACjC,IAAI,CAAA,MAAA,MAAM,CAAC,UAAU,0CAAE,SAAS,MAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAA;IACV,CAAC;IAED,OAAO,CAAC,GAAG,IAAmB,EAAiB,EAAE;QAChD,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QACxC,6BAA6B,CAAC,YAAY,CAAC,CAAA;QAC3C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;YAC1B,+BAA+B,CAAC,YAAY,CAAC,CAAA;YAC7C,OAAO,MAAM,CAAA;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,2BAA2B,CAC1B,YAAY,EACZ,wBAAwB,CAAC,KAAK,CAAC,CAC/B,CAAA;YACD,MAAM,KAAK,CAAA;QACZ,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,yDAAyD;AACzD,SAAS,eAAe,CAAC,EAA2B;IACnD,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAA4B,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PublicKey } from 'ox';
|
|
2
|
+
import { LocalAccount, OneOf } from 'viem';
|
|
3
|
+
import { type WebAuthnAccount } from 'viem/account-abstraction';
|
|
4
|
+
export type P256KeyPair = {
|
|
5
|
+
privateKey: CryptoKey;
|
|
6
|
+
publicKey: PublicKey.PublicKey;
|
|
7
|
+
};
|
|
8
|
+
export declare const STORAGE_SCOPE = "base-acc-sdk";
|
|
9
|
+
export declare const STORAGE_NAME = "keys";
|
|
10
|
+
export declare const ACTIVE_ID_KEY = "activeId";
|
|
11
|
+
export declare const storage: import("./storage.js").AsyncStorage;
|
|
12
|
+
export declare function generateKeyPair(): Promise<P256KeyPair>;
|
|
13
|
+
export declare function getKeypair(): Promise<P256KeyPair | null>;
|
|
14
|
+
export declare function getCryptoKeyAccount(): Promise<{
|
|
15
|
+
account: OneOf<WebAuthnAccount | LocalAccount> | null;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function removeCryptoKey(): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kms/crypto-key/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAA0C,MAAM,IAAI,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,EAA8B,MAAM,MAAM,CAAA;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAI/D,MAAM,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,SAAS,CAAA;IACrB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC9B,CAAA;AAKD,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAC3C,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,aAAa,CAAA;AAKvC,eAAO,MAAM,OAAO,qCAA6C,CAAA;AAKjE,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAQ5D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAU9D;AAuDD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACpD,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,IAAI,CAAA;CACrD,CAAC,CAKD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Hex, PublicKey, Signature, WebAuthnP256, WebCryptoP256 } from 'ox';
|
|
2
|
+
import { hashMessage, hashTypedData } from 'viem';
|
|
3
|
+
import { createStorage } from './storage.js';
|
|
4
|
+
// *****************************************************************
|
|
5
|
+
// Constants
|
|
6
|
+
// *****************************************************************
|
|
7
|
+
export const STORAGE_SCOPE = 'base-acc-sdk';
|
|
8
|
+
export const STORAGE_NAME = 'keys';
|
|
9
|
+
export const ACTIVE_ID_KEY = 'activeId';
|
|
10
|
+
// *****************************************************************
|
|
11
|
+
// Storage
|
|
12
|
+
// *****************************************************************
|
|
13
|
+
export const storage = createStorage(STORAGE_SCOPE, STORAGE_NAME);
|
|
14
|
+
// *****************************************************************
|
|
15
|
+
// Functions
|
|
16
|
+
// *****************************************************************
|
|
17
|
+
export async function generateKeyPair() {
|
|
18
|
+
const keypair = await WebCryptoP256.createKeyPair({ extractable: false });
|
|
19
|
+
const publicKey = Hex.slice(PublicKey.toHex(keypair.publicKey), 1);
|
|
20
|
+
await storage.setItem(publicKey, keypair);
|
|
21
|
+
await storage.setItem(ACTIVE_ID_KEY, publicKey);
|
|
22
|
+
return keypair;
|
|
23
|
+
}
|
|
24
|
+
export async function getKeypair() {
|
|
25
|
+
const id = await storage.getItem(ACTIVE_ID_KEY);
|
|
26
|
+
if (!id) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const keypair = await storage.getItem(id);
|
|
30
|
+
if (!keypair) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return keypair;
|
|
34
|
+
}
|
|
35
|
+
async function getOrCreateKeypair() {
|
|
36
|
+
const keypair = await getKeypair();
|
|
37
|
+
if (!keypair) {
|
|
38
|
+
const kp = await generateKeyPair();
|
|
39
|
+
const pubKey = Hex.slice(PublicKey.toHex(kp.publicKey), 1);
|
|
40
|
+
await storage.setItem(pubKey, kp);
|
|
41
|
+
await storage.setItem(ACTIVE_ID_KEY, pubKey);
|
|
42
|
+
return kp;
|
|
43
|
+
}
|
|
44
|
+
return keypair;
|
|
45
|
+
}
|
|
46
|
+
async function getAccount() {
|
|
47
|
+
const keypair = await getOrCreateKeypair();
|
|
48
|
+
/**
|
|
49
|
+
* public key / address
|
|
50
|
+
*/
|
|
51
|
+
const publicKey = Hex.slice(PublicKey.toHex(keypair.publicKey), 1);
|
|
52
|
+
const sign = async (payload) => {
|
|
53
|
+
const { payload: message, metadata } = WebAuthnP256.getSignPayload({
|
|
54
|
+
challenge: payload,
|
|
55
|
+
origin: 'https://keys.coinbase.com',
|
|
56
|
+
userVerification: 'preferred',
|
|
57
|
+
});
|
|
58
|
+
const signature = await WebCryptoP256.sign({
|
|
59
|
+
payload: message,
|
|
60
|
+
privateKey: keypair.privateKey,
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
signature: Signature.toHex(signature),
|
|
64
|
+
raw: {}, // type changed in viem
|
|
65
|
+
webauthn: metadata,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
id: publicKey,
|
|
70
|
+
publicKey,
|
|
71
|
+
async sign({ hash }) {
|
|
72
|
+
return sign(hash);
|
|
73
|
+
},
|
|
74
|
+
async signMessage({ message }) {
|
|
75
|
+
return sign(hashMessage(message));
|
|
76
|
+
},
|
|
77
|
+
async signTypedData(parameters) {
|
|
78
|
+
return sign(hashTypedData(parameters));
|
|
79
|
+
},
|
|
80
|
+
type: 'webAuthn',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export async function getCryptoKeyAccount() {
|
|
84
|
+
const account = await getAccount();
|
|
85
|
+
return {
|
|
86
|
+
account,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export async function removeCryptoKey() {
|
|
90
|
+
const keypair = await getKeypair();
|
|
91
|
+
if (!keypair) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
await storage.removeItem(Hex.slice(PublicKey.toHex(keypair.publicKey), 1));
|
|
95
|
+
await storage.removeItem(ACTIVE_ID_KEY);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kms/crypto-key/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type AsyncStorage = {
|
|
2
|
+
getItem: <T>(key: string) => Promise<T | null>;
|
|
3
|
+
removeItem: (key: string) => Promise<void>;
|
|
4
|
+
setItem: (key: string, value: unknown) => Promise<void>;
|
|
5
|
+
};
|
|
6
|
+
export declare function createStorage(scope: string, name: string): AsyncStorage;
|
|
7
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/kms/crypto-key/storage.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAkBvE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createStore, del, get, set } from 'idb-keyval';
|
|
2
|
+
export function createStorage(scope, name) {
|
|
3
|
+
const store = typeof indexedDB !== 'undefined' ? createStore(scope, name) : undefined;
|
|
4
|
+
return {
|
|
5
|
+
getItem: async (key) => {
|
|
6
|
+
const value = await get(key, store);
|
|
7
|
+
if (!value) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
},
|
|
12
|
+
removeItem: async (key) => {
|
|
13
|
+
return del(key, store);
|
|
14
|
+
},
|
|
15
|
+
setItem: async (key, value) => {
|
|
16
|
+
return set(key, value, store);
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/kms/crypto-key/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAQvD,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAY;IACxD,MAAM,KAAK,GACV,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxE,OAAO;QACN,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAA;YACZ,CAAC;YACD,OAAO,KAAK,CAAA;QACb,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YACjC,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,KAAc,EAAE,EAAE;YAC9C,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;KACD,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class SCWKeyManager {
|
|
2
|
+
private ownPrivateKey;
|
|
3
|
+
private ownPublicKey;
|
|
4
|
+
private peerPublicKey;
|
|
5
|
+
private sharedSecret;
|
|
6
|
+
getOwnPublicKey(): Promise<CryptoKey>;
|
|
7
|
+
getSharedSecret(): Promise<CryptoKey | null>;
|
|
8
|
+
setPeerPublicKey(key: CryptoKey): Promise<void>;
|
|
9
|
+
clear(): Promise<void>;
|
|
10
|
+
private generateKeyPair;
|
|
11
|
+
private loadKeysIfNeeded;
|
|
12
|
+
private loadKey;
|
|
13
|
+
private storeKey;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=SCWKeyManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SCWKeyManager.d.ts","sourceRoot":"","sources":["../../../src/sign/app-sdk/SCWKeyManager.ts"],"names":[],"mappings":"AAyBA,qBAAa,aAAa;IACzB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAyB;IAEvC,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC;IAMrC,eAAe,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK5C,gBAAgB,CAAC,GAAG,EAAE,SAAS;IAO/B,KAAK;YASG,eAAe;YAQf,gBAAgB;YA2BhB,OAAO;YAOP,QAAQ;CAItB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { store } from '../../store/store.js';
|
|
2
|
+
import { deriveSharedSecret, exportKeyToHexString, generateKeyPair, importKeyFromHexString, } from '../../util/cipher.js';
|
|
3
|
+
const OWN_PRIVATE_KEY = {
|
|
4
|
+
storageKey: 'ownPrivateKey',
|
|
5
|
+
keyType: 'private',
|
|
6
|
+
};
|
|
7
|
+
const OWN_PUBLIC_KEY = {
|
|
8
|
+
storageKey: 'ownPublicKey',
|
|
9
|
+
keyType: 'public',
|
|
10
|
+
};
|
|
11
|
+
const PEER_PUBLIC_KEY = {
|
|
12
|
+
storageKey: 'peerPublicKey',
|
|
13
|
+
keyType: 'public',
|
|
14
|
+
};
|
|
15
|
+
export class SCWKeyManager {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.ownPrivateKey = null;
|
|
18
|
+
this.ownPublicKey = null;
|
|
19
|
+
this.peerPublicKey = null;
|
|
20
|
+
this.sharedSecret = null;
|
|
21
|
+
}
|
|
22
|
+
async getOwnPublicKey() {
|
|
23
|
+
await this.loadKeysIfNeeded();
|
|
24
|
+
return this.ownPublicKey;
|
|
25
|
+
}
|
|
26
|
+
// returns null if the shared secret is not yet derived
|
|
27
|
+
async getSharedSecret() {
|
|
28
|
+
await this.loadKeysIfNeeded();
|
|
29
|
+
return this.sharedSecret;
|
|
30
|
+
}
|
|
31
|
+
async setPeerPublicKey(key) {
|
|
32
|
+
this.sharedSecret = null;
|
|
33
|
+
this.peerPublicKey = key;
|
|
34
|
+
await this.storeKey(PEER_PUBLIC_KEY, key);
|
|
35
|
+
await this.loadKeysIfNeeded();
|
|
36
|
+
}
|
|
37
|
+
async clear() {
|
|
38
|
+
this.ownPrivateKey = null;
|
|
39
|
+
this.ownPublicKey = null;
|
|
40
|
+
this.peerPublicKey = null;
|
|
41
|
+
this.sharedSecret = null;
|
|
42
|
+
store.keys.clear();
|
|
43
|
+
}
|
|
44
|
+
async generateKeyPair() {
|
|
45
|
+
const newKeyPair = await generateKeyPair();
|
|
46
|
+
this.ownPrivateKey = newKeyPair.privateKey;
|
|
47
|
+
this.ownPublicKey = newKeyPair.publicKey;
|
|
48
|
+
await this.storeKey(OWN_PRIVATE_KEY, newKeyPair.privateKey);
|
|
49
|
+
await this.storeKey(OWN_PUBLIC_KEY, newKeyPair.publicKey);
|
|
50
|
+
}
|
|
51
|
+
async loadKeysIfNeeded() {
|
|
52
|
+
if (this.ownPrivateKey === null) {
|
|
53
|
+
this.ownPrivateKey = await this.loadKey(OWN_PRIVATE_KEY);
|
|
54
|
+
}
|
|
55
|
+
if (this.ownPublicKey === null) {
|
|
56
|
+
this.ownPublicKey = await this.loadKey(OWN_PUBLIC_KEY);
|
|
57
|
+
}
|
|
58
|
+
if (this.ownPrivateKey === null || this.ownPublicKey === null) {
|
|
59
|
+
await this.generateKeyPair();
|
|
60
|
+
}
|
|
61
|
+
if (this.peerPublicKey === null) {
|
|
62
|
+
this.peerPublicKey = await this.loadKey(PEER_PUBLIC_KEY);
|
|
63
|
+
}
|
|
64
|
+
if (this.sharedSecret === null) {
|
|
65
|
+
if (this.ownPrivateKey === null || this.peerPublicKey === null)
|
|
66
|
+
return;
|
|
67
|
+
this.sharedSecret = await deriveSharedSecret(this.ownPrivateKey, this.peerPublicKey);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// storage methods
|
|
71
|
+
async loadKey(item) {
|
|
72
|
+
const key = store.keys.get(item.storageKey);
|
|
73
|
+
if (!key)
|
|
74
|
+
return null;
|
|
75
|
+
return importKeyFromHexString(item.keyType, key);
|
|
76
|
+
}
|
|
77
|
+
async storeKey(item, key) {
|
|
78
|
+
const hexString = await exportKeyToHexString(item.keyType, key);
|
|
79
|
+
store.keys.set(item.storageKey, hexString);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=SCWKeyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SCWKeyManager.js","sourceRoot":"","sources":["../../../src/sign/app-sdk/SCWKeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,GACtB,MAAM,iBAAiB,CAAA;AAMxB,MAAM,eAAe,GAAG;IACvB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,SAAS;CACT,CAAA;AACV,MAAM,cAAc,GAAG;IACtB,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,QAAQ;CACR,CAAA;AACV,MAAM,eAAe,GAAG;IACvB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,QAAQ;CACR,CAAA;AAEV,MAAM,OAAO,aAAa;IAA1B;QACS,kBAAa,GAAqB,IAAI,CAAA;QACtC,iBAAY,GAAqB,IAAI,CAAA;QACrC,kBAAa,GAAqB,IAAI,CAAA;QACtC,iBAAY,GAAqB,IAAI,CAAA;IA2E9C,CAAC;IAzEA,KAAK,CAAC,eAAe;QACpB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC7B,OAAO,IAAI,CAAC,YAAa,CAAA;IAC1B,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,eAAe;QACpB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAc;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAA;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;QACzC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAExB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;IAEO,KAAK,CAAC,eAAe;QAC5B,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAA;QAC1C,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,UAAU,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAA;QACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QAC3D,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC1D,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC7B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/D,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;gBAAE,OAAM;YACtE,IAAI,CAAC,YAAY,GAAG,MAAM,kBAAkB,CAC3C,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,CAClB,CAAA;QACF,CAAC;IACF,CAAC;IAED,kBAAkB;IACV,KAAK,CAAC,OAAO,CAAC,IAAiB;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAiB,EAAE,GAAc;QACvD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC;CACD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Communicator } from '../../core/communicator/Communicator.js';
|
|
2
|
+
import { AppMetadata, ProviderEventCallback, RequestArguments } from '../../core/provider/interface.js';
|
|
3
|
+
type ConstructorOptions = {
|
|
4
|
+
metadata: AppMetadata;
|
|
5
|
+
communicator: Communicator;
|
|
6
|
+
callback: ProviderEventCallback | null;
|
|
7
|
+
};
|
|
8
|
+
export declare class Signer {
|
|
9
|
+
private readonly communicator;
|
|
10
|
+
private readonly keyManager;
|
|
11
|
+
private callback;
|
|
12
|
+
private accounts;
|
|
13
|
+
private chain;
|
|
14
|
+
constructor(params: ConstructorOptions);
|
|
15
|
+
get isConnected(): boolean;
|
|
16
|
+
handshake(args: RequestArguments): Promise<void>;
|
|
17
|
+
request(request: RequestArguments): Promise<any>;
|
|
18
|
+
_request(request: RequestArguments): Promise<any>;
|
|
19
|
+
private sendRequestToPopup;
|
|
20
|
+
private handleResponse;
|
|
21
|
+
cleanup(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* @returns `null` if the request was successful.
|
|
24
|
+
* https://eips.ethereum.org/EIPS/eip-3326#wallet_switchethereumchain
|
|
25
|
+
*/
|
|
26
|
+
private handleSwitchChainRequest;
|
|
27
|
+
private handleGetCapabilitiesRequest;
|
|
28
|
+
private handleGetUserInfoRequest;
|
|
29
|
+
private sendEncryptedRequest;
|
|
30
|
+
private createRequestMessage;
|
|
31
|
+
private decryptResponseMessage;
|
|
32
|
+
private updateChain;
|
|
33
|
+
private addSubAccount;
|
|
34
|
+
private shouldRequestUseSubAccountSigner;
|
|
35
|
+
private sendRequestToSubAccountSigner;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=Signer.d.ts.map
|