@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qCAAqC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './methods/fetchPermissions.js';
|
|
2
|
+
export * from './methods/getHash.js';
|
|
3
|
+
export * from './methods/getPermissionStatus.js';
|
|
4
|
+
export * from './methods/prepareRevokeCallData.js';
|
|
5
|
+
export * from './methods/prepareSpendCallData.js';
|
|
6
|
+
export * from './methods/requestRevoke.js';
|
|
7
|
+
export * from './methods/requestSpendPermission.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/interface/public-utilities/spend-permission/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qCAAqC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ProviderInterface } from '../../../../core/provider/interface.js';
|
|
2
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
3
|
+
type FetchPermissionsType = {
|
|
4
|
+
account: string;
|
|
5
|
+
chainId: number;
|
|
6
|
+
spender: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const fetchPermissions: (({ provider, account, chainId, spender, }: FetchPermissionsType & {
|
|
9
|
+
provider: ProviderInterface;
|
|
10
|
+
}) => Promise<SpendPermission[]>) | ((args_0: FetchPermissionsType & {
|
|
11
|
+
provider: ProviderInterface;
|
|
12
|
+
}) => Promise<SpendPermission[]>);
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=fetchPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPermissions.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/fetchPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAEN,eAAe,EACf,MAAM,6CAA6C,CAAA;AAGpD,KAAK,oBAAoB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AA4DD,eAAO,MAAM,gBAAgB,8CAjB1B,oBAAoB,GAAG;IAAE,QAAQ,EAAE,iBAAiB,CAAA;CAAE,KAAG,OAAO,CAClE,eAAe,EAAE,CACjB;cAFqC,iBAAiB;iCAiBU,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetches existing spend permissions for a specific account, spender, and chain.
|
|
4
|
+
*
|
|
5
|
+
* This helper method retrieves all spend permissions that have been granted by a specific
|
|
6
|
+
* account to a specific spender on a given chain. This is useful for checking existing
|
|
7
|
+
* permissions before creating new ones, or for displaying current allowances to users.
|
|
8
|
+
*
|
|
9
|
+
* The method uses the coinbase_fetchPermissions RPC method to query the permissions
|
|
10
|
+
* from the backend service.
|
|
11
|
+
*
|
|
12
|
+
* @param params - The parameters for the fetchPermissions method.
|
|
13
|
+
* @param params.provider - The provider interface used to make the coinbase_fetchPermissions request.
|
|
14
|
+
* @param params.account - The account to fetch permissions for.
|
|
15
|
+
* @param params.chainId - The chain ID to fetch permissions for.
|
|
16
|
+
* @param params.spender - The spender to fetch permissions for.
|
|
17
|
+
*
|
|
18
|
+
* @returns A promise that resolves to an array of SpendPermission objects.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { fetchPermissions } from '@startale/app-sdk/spend-permission';
|
|
23
|
+
*
|
|
24
|
+
* // Fetch all permissions for an account-spender pair
|
|
25
|
+
* const permissions = await fetchPermissions({
|
|
26
|
+
* provider, // Base Account Provider
|
|
27
|
+
* account: '0x1234...',
|
|
28
|
+
* spender: '0x5678...',
|
|
29
|
+
* chainId: 8453 // Base mainnet
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* console.log(`Found ${permissions.length} permissions`);
|
|
33
|
+
* permissions.forEach(permission => {
|
|
34
|
+
* console.log(`Token: ${permission.permission.token}`);
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
const fetchPermissionsFn = async ({ provider, account, chainId, spender, }) => {
|
|
39
|
+
const response = (await provider.request({
|
|
40
|
+
method: 'coinbase_fetchPermissions',
|
|
41
|
+
params: [
|
|
42
|
+
{
|
|
43
|
+
account,
|
|
44
|
+
chainId: `0x${chainId.toString(16)}`,
|
|
45
|
+
spender,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
}));
|
|
49
|
+
return response.permissions;
|
|
50
|
+
};
|
|
51
|
+
export const fetchPermissions = withTelemetry(fetchPermissionsFn);
|
|
52
|
+
//# sourceMappingURL=fetchPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPermissions.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/fetchPermissions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACjC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,GACiD,EAEvD,EAAE;IACH,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC;QACxC,MAAM,EAAE,2BAA2B;QACnC,MAAM,EAAE;YACP;gBACC,OAAO;gBACP,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBACpC,OAAO;aACP;SACD;KACD,CAAC,CAA6B,CAAA;IAE/B,OAAO,QAAQ,CAAC,WAAW,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SpendPermissionTypedData } from '../utils.js';
|
|
2
|
+
export declare const getHash: (({ permission, chainId, }: {
|
|
3
|
+
permission: SpendPermissionTypedData["message"];
|
|
4
|
+
chainId: number;
|
|
5
|
+
}) => Promise<`0x${string}`>) | ((args_0: {
|
|
6
|
+
permission: SpendPermissionTypedData["message"];
|
|
7
|
+
chainId: number;
|
|
8
|
+
}) => Promise<`0x${string}`>);
|
|
9
|
+
//# sourceMappingURL=getHash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getHash.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/getHash.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAoEtD,eAAO,MAAM,OAAO,8BA5BjB;IACF,UAAU,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAA;IAC/C,OAAO,EAAE,MAAM,CAAA;CACf,KAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;gBAFb,wBAAwB,CAAC,SAAS,CAAC;aACtC,MAAM;6BA0B+B,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { spendPermissionManagerAbi, spendPermissionManagerAddress, } from '../../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { getClient } from '../../../../store/chain-clients/utils.js';
|
|
3
|
+
import { readContract } from 'viem/actions';
|
|
4
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
5
|
+
/**
|
|
6
|
+
* Gets the hash of a spend permission from the SpendPermissionManager contract.
|
|
7
|
+
*
|
|
8
|
+
* This function calls the getHash method on the SpendPermissionManager contract
|
|
9
|
+
* to compute the unique hash for a given spend permission. This hash can be used
|
|
10
|
+
* to identify the permission on-chain.
|
|
11
|
+
*
|
|
12
|
+
* @param params - The parameters for the getHash method.
|
|
13
|
+
* @param params.permission - The spend permission message object from the typed data that
|
|
14
|
+
* contains all permission details.
|
|
15
|
+
* @param params.chainId - The chain ID to use for the contract call
|
|
16
|
+
*
|
|
17
|
+
* @returns A promise that resolves to the permission hash as a hex string
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { getHash } from '@startale/app-sdk/spend-permission';
|
|
22
|
+
*
|
|
23
|
+
* const permission = {
|
|
24
|
+
* account: '0x1234...',
|
|
25
|
+
* spender: '0x5678...',
|
|
26
|
+
* token: '0xabcd...',
|
|
27
|
+
* allowance: '1000000', // 1 USDC (6 decimals)
|
|
28
|
+
* period: 86400 * 30, // 30 days in seconds
|
|
29
|
+
* start: Date.now(),
|
|
30
|
+
* end: Date.now() + (86400 * 365),
|
|
31
|
+
* salt: '0x1234567890abcdef...',
|
|
32
|
+
* extraData: '0x'
|
|
33
|
+
* };
|
|
34
|
+
*
|
|
35
|
+
* const hash = await getHash(permission, 8453); // Base mainnet
|
|
36
|
+
* console.log('Permission hash:', hash);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const getHashFn = async ({ permission, chainId, }) => {
|
|
40
|
+
const client = getClient(chainId);
|
|
41
|
+
if (!client) {
|
|
42
|
+
throw new Error(`No client found for chain ID ${chainId}. Please ensure SDK is in connected state`);
|
|
43
|
+
}
|
|
44
|
+
const spendPermissionArgs = Object.assign(Object.assign({}, permission), { allowance: BigInt(permission.allowance), salt: BigInt(permission.salt) });
|
|
45
|
+
const hash = await readContract(client, {
|
|
46
|
+
address: spendPermissionManagerAddress,
|
|
47
|
+
abi: spendPermissionManagerAbi,
|
|
48
|
+
functionName: 'getHash',
|
|
49
|
+
args: [spendPermissionArgs],
|
|
50
|
+
});
|
|
51
|
+
return hash;
|
|
52
|
+
};
|
|
53
|
+
export const getHash = withTelemetry(getHashFn);
|
|
54
|
+
//# sourceMappingURL=getHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getHash.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/getHash.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,SAAS,GAAG,KAAK,EAAE,EACxB,UAAU,EACV,OAAO,GAIP,EAA0B,EAAE;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACd,gCAAgC,OAAO,2CAA2C,CAClF,CAAA;IACF,CAAC;IAED,MAAM,mBAAmB,mCACrB,UAAU,KACb,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EACvC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAC7B,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QACvC,OAAO,EAAE,6BAA6B;QACtC,GAAG,EAAE,yBAAyB;QAC9B,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,mBAAmB,CAAC;KAC3B,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
2
|
+
export type GetPermissionStatusResponseType = {
|
|
3
|
+
remainingSpend: bigint;
|
|
4
|
+
nextPeriodStart: Date;
|
|
5
|
+
isActive: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const getPermissionStatus: ((permission: SpendPermission) => Promise<GetPermissionStatusResponseType>) | ((permission: SpendPermission) => Promise<GetPermissionStatusResponseType>);
|
|
8
|
+
//# sourceMappingURL=getPermissionStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPermissionStatus.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/getPermissionStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAU7E,MAAM,MAAM,+BAA+B,GAAG;IAC7C,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,IAAI,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CACjB,CAAA;AA6FD,eAAO,MAAM,mBAAmB,gBAzDnB,eAAe,KACzB,OAAO,CAAC,+BAA+B,CAAC,+EAwD4B,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { spendPermissionManagerAbi, spendPermissionManagerAddress, } from '../../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { getClient } from '../../../../store/chain-clients/utils.js';
|
|
3
|
+
import { readContract } from 'viem/actions';
|
|
4
|
+
import { timestampInSecondsToDate, toSpendPermissionArgs } from '../utils.js';
|
|
5
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
6
|
+
/**
|
|
7
|
+
* Gets the current status of a spend permission.
|
|
8
|
+
*
|
|
9
|
+
* This helper method queries the blockchain to retrieve real-time information
|
|
10
|
+
* about a spend permission, including how much can still be spent in the current
|
|
11
|
+
* period, when the next period starts, and whether the permission is still active.
|
|
12
|
+
*
|
|
13
|
+
* The function automatically uses the appropriate blockchain client based on the
|
|
14
|
+
* permission's chain ID and calls multiple view functions on the SpendPermissionManager
|
|
15
|
+
* contract to gather comprehensive status information.
|
|
16
|
+
*
|
|
17
|
+
* When the spend permission does not have a chainId, the function will throw an error.
|
|
18
|
+
*
|
|
19
|
+
* @param permission - The spend permission object to check status for.
|
|
20
|
+
*
|
|
21
|
+
* @returns A promise that resolves to an object containing permission status details.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { getPermissionStatus } from '@startale/app-sdk/spend-permission';
|
|
26
|
+
*
|
|
27
|
+
* // Check the status of a permission (no client needed)
|
|
28
|
+
* const status = await getPermissionStatus(permission);
|
|
29
|
+
*
|
|
30
|
+
* console.log(`Remaining spend: ${status.remainingSpend} wei`);
|
|
31
|
+
* console.log(`Next period starts: ${new Date(parseInt(status.nextPeriodStart) * 1000)}`);
|
|
32
|
+
* console.log(`Is active: ${status.isActive}`);
|
|
33
|
+
*
|
|
34
|
+
* if (status.isActive && status.remainingSpend > BigInt(0)) {
|
|
35
|
+
* console.log('Permission can be used for spending');
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const getPermissionStatusFn = async (permission) => {
|
|
40
|
+
const { chainId } = permission;
|
|
41
|
+
if (!chainId) {
|
|
42
|
+
throw new Error('chainId is missing in the spend permission');
|
|
43
|
+
}
|
|
44
|
+
const client = getClient(chainId);
|
|
45
|
+
if (!client) {
|
|
46
|
+
throw new Error(`No client available for chain ID ${chainId}. Make sure the SDK is in connected state.`);
|
|
47
|
+
}
|
|
48
|
+
const spendPermissionArgs = toSpendPermissionArgs(permission);
|
|
49
|
+
const [currentPeriod, isRevoked, isValid] = await Promise.all([
|
|
50
|
+
readContract(client, {
|
|
51
|
+
address: spendPermissionManagerAddress,
|
|
52
|
+
abi: spendPermissionManagerAbi,
|
|
53
|
+
functionName: 'getCurrentPeriod',
|
|
54
|
+
args: [spendPermissionArgs],
|
|
55
|
+
}),
|
|
56
|
+
readContract(client, {
|
|
57
|
+
address: spendPermissionManagerAddress,
|
|
58
|
+
abi: spendPermissionManagerAbi,
|
|
59
|
+
functionName: 'isRevoked',
|
|
60
|
+
args: [spendPermissionArgs],
|
|
61
|
+
}),
|
|
62
|
+
readContract(client, {
|
|
63
|
+
address: spendPermissionManagerAddress,
|
|
64
|
+
abi: spendPermissionManagerAbi,
|
|
65
|
+
functionName: 'isValid',
|
|
66
|
+
args: [spendPermissionArgs],
|
|
67
|
+
}),
|
|
68
|
+
]);
|
|
69
|
+
// Calculate remaining spend in current period
|
|
70
|
+
const allowance = BigInt(permission.permission.allowance);
|
|
71
|
+
const spent = currentPeriod.spend;
|
|
72
|
+
const remainingSpend = allowance > spent ? allowance - spent : BigInt(0);
|
|
73
|
+
// Calculate next period start
|
|
74
|
+
// Next period starts immediately after current period ends
|
|
75
|
+
const nextPeriodStart = (Number(currentPeriod.end) + 1).toString();
|
|
76
|
+
// Permission is active if it's not revoked and is still valid
|
|
77
|
+
const isActive = !isRevoked && isValid;
|
|
78
|
+
return {
|
|
79
|
+
remainingSpend,
|
|
80
|
+
nextPeriodStart: timestampInSecondsToDate(Number(nextPeriodStart)),
|
|
81
|
+
isActive,
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export const getPermissionStatus = withTelemetry(getPermissionStatusFn);
|
|
85
|
+
//# sourceMappingURL=getPermissionStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPermissionStatus.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/getPermissionStatus.ts"],"names":[],"mappings":"AACA,OAAO,EACN,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,qBAAqB,GAAG,KAAK,EAClC,UAA2B,EACgB,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACd,oCAAoC,OAAO,4CAA4C,CACvF,CAAA;IACF,CAAC;IAED,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAE7D,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,YAAY,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,6BAA6B;YACtC,GAAG,EAAE,yBAAyB;YAC9B,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,mBAAmB,CAAC;SAC3B,CAA2D;QAC5D,YAAY,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,6BAA6B;YACtC,GAAG,EAAE,yBAAyB;YAC9B,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,mBAAmB,CAAC;SAC3B,CAAqB;QACtB,YAAY,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,6BAA6B;YACtC,GAAG,EAAE,yBAAyB;YAC9B,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,mBAAmB,CAAC;SAC3B,CAAqB;KACtB,CAAC,CAAA;IAEF,8CAA8C;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;IACjC,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAExE,8BAA8B;IAC9B,2DAA2D;IAC3D,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAElE,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,OAAO,CAAA;IAEtC,OAAO;QACN,cAAc;QACd,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAClE,QAAQ;KACR,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
2
|
+
import { Address, Hex } from 'viem';
|
|
3
|
+
type RevokeSpendPermissionResponse = {
|
|
4
|
+
to: Address;
|
|
5
|
+
data: Hex;
|
|
6
|
+
value: '0x0';
|
|
7
|
+
};
|
|
8
|
+
export declare const prepareRevokeCallData: ((permission: SpendPermission) => Promise<RevokeSpendPermissionResponse>) | ((permission: SpendPermission) => Promise<RevokeSpendPermissionResponse>);
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=prepareRevokeCallData.d.ts.map
|
package/dist/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareRevokeCallData.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAK7E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAsB,MAAM,MAAM,CAAA;AAIvD,KAAK,6BAA6B,GAAG;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,GAAG,CAAA;IACT,KAAK,EAAE,KAAK,CAAA;CACZ,CAAA;AAoDD,eAAO,MAAM,qBAAqB,gBAlBrB,eAAe,KACzB,OAAO,CAAC,6BAA6B,CAAC,6EAiBkC,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { spendPermissionManagerAbi, spendPermissionManagerAddress, } from '../../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { encodeFunctionData } from 'viem';
|
|
3
|
+
import { toSpendPermissionArgs } from '../utils.js';
|
|
4
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
5
|
+
/**
|
|
6
|
+
* Prepares call data for revoking a spend permission without user interaction.
|
|
7
|
+
*
|
|
8
|
+
* This helper method generates the encoded transaction data needed to revoke a spend
|
|
9
|
+
* permission silently, without opening a popup or requiring user approval. This is
|
|
10
|
+
* useful for automated or programmatic revocations where user interaction is not desired.
|
|
11
|
+
*
|
|
12
|
+
* The returned call data can be used with other transaction methods or batch operations.
|
|
13
|
+
*
|
|
14
|
+
* If you need simpler revoke flow, use `requestRevoke` instead, which opens a popup to ask
|
|
15
|
+
* the user to revoke the permission.
|
|
16
|
+
*
|
|
17
|
+
* @param permission - The spend permission object containing the permission details to revoke.
|
|
18
|
+
*
|
|
19
|
+
* @returns A promise that resolves to an object containing the contract address and encoded call data.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { prepareRevokeCallData } from '@startale/app-sdk/spend-permission';
|
|
24
|
+
*
|
|
25
|
+
* // Prepare revoke call data for silent execution
|
|
26
|
+
* const { to, data } = await prepareRevokeCallData({ permission: myPermission });
|
|
27
|
+
*
|
|
28
|
+
* // Use the call data in a batch transaction or other context
|
|
29
|
+
* const call = {
|
|
30
|
+
* to,
|
|
31
|
+
* data,
|
|
32
|
+
* value: '0x0'
|
|
33
|
+
* };
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
const prepareRevokeCallDataFn = async (permission) => {
|
|
37
|
+
const spendPermissionArgs = toSpendPermissionArgs(permission);
|
|
38
|
+
const data = encodeFunctionData({
|
|
39
|
+
abi: spendPermissionManagerAbi,
|
|
40
|
+
functionName: 'revokeAsSpender',
|
|
41
|
+
args: [spendPermissionArgs],
|
|
42
|
+
});
|
|
43
|
+
const response = {
|
|
44
|
+
to: spendPermissionManagerAddress,
|
|
45
|
+
data,
|
|
46
|
+
value: '0x0', // explicitly set to 0x0
|
|
47
|
+
};
|
|
48
|
+
return response;
|
|
49
|
+
};
|
|
50
|
+
export const prepareRevokeCallData = withTelemetry(prepareRevokeCallDataFn);
|
|
51
|
+
//# sourceMappingURL=prepareRevokeCallData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareRevokeCallData.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/prepareRevokeCallData.ts"],"names":[],"mappings":"AACA,OAAO,EACN,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,uBAAuB,GAAG,KAAK,EACpC,UAA2B,EACc,EAAE;IAC3C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC/B,GAAG,EAAE,yBAAyB;QAC9B,YAAY,EAAE,iBAAiB;QAC/B,IAAI,EAAE,CAAC,mBAAmB,CAAC;KAC3B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAkC;QAC/C,EAAE,EAAE,6BAA6B;QACjC,IAAI;QACJ,KAAK,EAAE,KAAK,EAAE,wBAAwB;KACtC,CAAA;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
2
|
+
import { Address, Hex } from 'viem';
|
|
3
|
+
type Call = {
|
|
4
|
+
to: Address;
|
|
5
|
+
data: Hex;
|
|
6
|
+
value: '0x0';
|
|
7
|
+
};
|
|
8
|
+
export type PrepareSpendCallDataResponseType = Call[];
|
|
9
|
+
export declare const prepareSpendCallData: ((permission: SpendPermission, amount: bigint | "max-remaining-allowance") => Promise<PrepareSpendCallDataResponseType>) | ((permission: SpendPermission, amount: bigint | "max-remaining-allowance") => Promise<PrepareSpendCallDataResponseType>);
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=prepareSpendCallData.d.ts.map
|
package/dist/interface/public-utilities/spend-permission/methods/prepareSpendCallData.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareSpendCallData.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/prepareSpendCallData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAK7E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAsB,MAAM,MAAM,CAAA;AAMvD,KAAK,IAAI,GAAG;IACX,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,GAAG,CAAA;IACT,KAAK,EAAE,KAAK,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,gCAAgC,GAAG,IAAI,EAAE,CAAA;AA+GrD,eAAO,MAAM,oBAAoB,gBA9CpB,eAAe,UACnB,MAAM,GAAG,yBAAyB,KACxC,OAAO,CAAC,gCAAgC,CAAC,4HA4C6B,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { spendPermissionManagerAbi, spendPermissionManagerAddress, } from '../../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { encodeFunctionData } from 'viem';
|
|
3
|
+
import { toSpendPermissionArgs } from '../utils.js';
|
|
4
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
5
|
+
import { getPermissionStatus } from './getPermissionStatus.js';
|
|
6
|
+
/**
|
|
7
|
+
* Prepares call data for approving and spending a spend permission.
|
|
8
|
+
*
|
|
9
|
+
* This helper method constructs the call data for `approveWithSignature`
|
|
10
|
+
* and `spend` functions. The approve call is only included when the permission
|
|
11
|
+
* is not yet active. If the permission is already approved, only the spend call is returned.
|
|
12
|
+
*
|
|
13
|
+
* When 'max-remaining-allowance' is provided as the amount, the function automatically uses all remaining
|
|
14
|
+
* spend permission allowance.
|
|
15
|
+
*
|
|
16
|
+
* The resulting call data must be sent using the spender account, not the
|
|
17
|
+
* account holder. The spender is responsible for executing both the approval
|
|
18
|
+
* and spend operations.
|
|
19
|
+
*
|
|
20
|
+
* @param permission - The spend permission object containing the permission details and signature.
|
|
21
|
+
* @param amount - The amount to spend in wei. If 'max-remaining-allowance' is provided, the full remaining allowance will be spent.
|
|
22
|
+
*
|
|
23
|
+
* @returns A promise that resolves to an array containing all the necessary calls.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { prepareSpendCallData } from '@startale/app-sdk/spend-permission';
|
|
28
|
+
*
|
|
29
|
+
* // Prepare calls to approve and spend a specific amount from a permission
|
|
30
|
+
* const spendCalls = await prepareSpendCallData(
|
|
31
|
+
* permission, // from requestSpendPermission or fetchPermissions
|
|
32
|
+
* 50n * 10n ** 6n // spend 50 USDC (6 decimals)
|
|
33
|
+
* );
|
|
34
|
+
*
|
|
35
|
+
* // To spend all remaining allowance, use 'max-remaining-allowance'
|
|
36
|
+
* const callsFullAmount = await prepareSpendCallData(
|
|
37
|
+
* permission,
|
|
38
|
+
* 'max-remaining-allowance'
|
|
39
|
+
* );
|
|
40
|
+
*
|
|
41
|
+
* // Send the calls using your app's spender account
|
|
42
|
+
* // this is an example of how to send the calls using the wallet_sendCalls method
|
|
43
|
+
* await provider.request({
|
|
44
|
+
* method: 'wallet_sendCalls',
|
|
45
|
+
* params: [{
|
|
46
|
+
* version: '2.0.0',
|
|
47
|
+
* atomicRequired: true,
|
|
48
|
+
* from: permission.permission.spender, // Must be the spender!
|
|
49
|
+
* chainId: `0x${permission.chainId?.toString(16)}`,
|
|
50
|
+
* calls: spendCalls,
|
|
51
|
+
* }],
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* // Or send the calls using eth_sendTransaction to submit both calls in exact order
|
|
55
|
+
* const promises = spendCalls.map((call) => provider.request({
|
|
56
|
+
* method: 'eth_sendTransaction',
|
|
57
|
+
* params: [
|
|
58
|
+
* {
|
|
59
|
+
* ...call,
|
|
60
|
+
* from: permission.permission.spender, // Must be the spender!
|
|
61
|
+
* }
|
|
62
|
+
* ]
|
|
63
|
+
* }))
|
|
64
|
+
*
|
|
65
|
+
* await Promise.all(promises);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
const prepareSpendCallDataFn = async (permission, amount) => {
|
|
69
|
+
const { remainingSpend, isActive } = await getPermissionStatus(permission);
|
|
70
|
+
const spendAmount = amount === 'max-remaining-allowance' ? remainingSpend : amount;
|
|
71
|
+
if (spendAmount === BigInt(0)) {
|
|
72
|
+
throw new Error('Spend amount cannot be 0');
|
|
73
|
+
}
|
|
74
|
+
if (spendAmount > remainingSpend) {
|
|
75
|
+
throw new Error('Remaining spend amount is insufficient');
|
|
76
|
+
}
|
|
77
|
+
let approveCall = null;
|
|
78
|
+
const spendPermissionArgs = toSpendPermissionArgs(permission);
|
|
79
|
+
if (!isActive) {
|
|
80
|
+
const approveData = encodeFunctionData({
|
|
81
|
+
abi: spendPermissionManagerAbi,
|
|
82
|
+
functionName: 'approveWithSignature',
|
|
83
|
+
args: [spendPermissionArgs, permission.signature],
|
|
84
|
+
});
|
|
85
|
+
approveCall = {
|
|
86
|
+
to: spendPermissionManagerAddress,
|
|
87
|
+
data: approveData,
|
|
88
|
+
value: '0x0', // explicitly set to 0x0
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const spendData = encodeFunctionData({
|
|
92
|
+
abi: spendPermissionManagerAbi,
|
|
93
|
+
functionName: 'spend',
|
|
94
|
+
args: [spendPermissionArgs, spendAmount],
|
|
95
|
+
});
|
|
96
|
+
const spendCall = {
|
|
97
|
+
to: spendPermissionManagerAddress,
|
|
98
|
+
data: spendData,
|
|
99
|
+
value: '0x0', // explicitly set to 0x0
|
|
100
|
+
};
|
|
101
|
+
return [approveCall, spendCall].filter((item) => item !== null);
|
|
102
|
+
};
|
|
103
|
+
export const prepareSpendCallData = withTelemetry(prepareSpendCallDataFn);
|
|
104
|
+
//# sourceMappingURL=prepareSpendCallData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareSpendCallData.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/prepareSpendCallData.ts"],"names":[],"mappings":"AACA,OAAO,EACN,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAU9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,sBAAsB,GAAG,KAAK,EACnC,UAA2B,EAC3B,MAA0C,EACE,EAAE;IAC9C,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAC1E,MAAM,WAAW,GAChB,MAAM,KAAK,yBAAyB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAA;IAE/D,IAAI,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,WAAW,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,WAAW,GAAgB,IAAI,CAAA;IAEnC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAE7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,kBAAkB,CAAC;YACtC,GAAG,EAAE,yBAAyB;YAC9B,YAAY,EAAE,sBAAsB;YACpC,IAAI,EAAE,CAAC,mBAAmB,EAAE,UAAU,CAAC,SAA0B,CAAC;SAClE,CAAC,CAAA;QACF,WAAW,GAAG;YACb,EAAE,EAAE,6BAA6B;YACjC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,KAAK,EAAE,wBAAwB;SACtC,CAAA;IACF,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACpC,GAAG,EAAE,yBAAyB;QAC9B,YAAY,EAAE,OAAO;QACrB,IAAI,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,CAAC,CAAA;IACF,MAAM,SAAS,GAAS;QACvB,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK,EAAE,wBAAwB;KACtC,CAAA;IAED,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ProviderInterface } from '../../../../core/provider/interface.js';
|
|
2
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
3
|
+
import { Hex } from 'viem';
|
|
4
|
+
export declare const requestRevoke: (({ provider, permission, }: {
|
|
5
|
+
provider: ProviderInterface;
|
|
6
|
+
permission: SpendPermission;
|
|
7
|
+
}) => Promise<Hex>) | ((args_0: {
|
|
8
|
+
provider: ProviderInterface;
|
|
9
|
+
permission: SpendPermission;
|
|
10
|
+
}) => Promise<`0x${string}`>);
|
|
11
|
+
//# sourceMappingURL=requestRevoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestRevoke.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/requestRevoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAK7E,OAAO,EAAE,GAAG,EAAmC,MAAM,MAAM,CAAA;AA0E3D,eAAO,MAAM,aAAa,+BAtCvB;IACF,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,EAAE,eAAe,CAAA;CAC3B,KAAG,OAAO,CAAC,GAAG,CAAC;cAFL,iBAAiB;gBACf,eAAe;6BAoC+B,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { spendPermissionManagerAbi, spendPermissionManagerAddress, } from '../../../../sign/app-sdk/utils/constants.js';
|
|
2
|
+
import { encodeFunctionData, numberToHex } from 'viem';
|
|
3
|
+
import { toSpendPermissionArgs } from '../utils.js';
|
|
4
|
+
import { withTelemetry } from '../withTelemetry.js';
|
|
5
|
+
/**
|
|
6
|
+
* Requests user approval to revoke a spend permission.
|
|
7
|
+
*
|
|
8
|
+
* This helper method opens a popup to ask the user to revoke a spend permission.
|
|
9
|
+
* It requires no additional setup from the app side and handles the entire revoke
|
|
10
|
+
* flow by calling the smart contract's revoke function through wallet_sendCalls.
|
|
11
|
+
*
|
|
12
|
+
* If you're looking for a silent revoke that doesn't require user interaction,
|
|
13
|
+
* use `prepareRevokeCallData` instead, which requires extra configuration.
|
|
14
|
+
*
|
|
15
|
+
* @param params - The parameters for the requestRevoke method.
|
|
16
|
+
* @param params.permission - The spend permission object to revoke. Must include a valid chainId.
|
|
17
|
+
* @param params.provider - The provider interface used to make the wallet_sendCalls request.
|
|
18
|
+
*
|
|
19
|
+
* @returns A promise that resolves to the transaction hash as a hex string.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { requestRevoke } from '@startale/app-sdk/spend-permission';
|
|
24
|
+
*
|
|
25
|
+
* // Revoke a spend permission with user approval
|
|
26
|
+
* try {
|
|
27
|
+
* const hash = await requestRevoke({ permission, provider });
|
|
28
|
+
* console.log(`Permission revoked in transaction: ${hash}`);
|
|
29
|
+
* } catch (error) {
|
|
30
|
+
* console.error('Failed to revoke permission:', error);
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
const requestRevokeFn = async ({ provider, permission, }) => {
|
|
35
|
+
const { chainId } = permission;
|
|
36
|
+
if (!chainId) {
|
|
37
|
+
throw new Error('chainId is required in the spend permission');
|
|
38
|
+
}
|
|
39
|
+
const spendPermissionArgs = toSpendPermissionArgs(permission);
|
|
40
|
+
const data = encodeFunctionData({
|
|
41
|
+
abi: spendPermissionManagerAbi,
|
|
42
|
+
functionName: 'revoke',
|
|
43
|
+
args: [spendPermissionArgs],
|
|
44
|
+
});
|
|
45
|
+
const call = {
|
|
46
|
+
to: spendPermissionManagerAddress,
|
|
47
|
+
data,
|
|
48
|
+
};
|
|
49
|
+
const result = (await provider.request({
|
|
50
|
+
method: 'wallet_sendCalls',
|
|
51
|
+
params: [
|
|
52
|
+
{
|
|
53
|
+
version: '2.0.0',
|
|
54
|
+
from: permission.permission.account,
|
|
55
|
+
chainId: numberToHex(chainId),
|
|
56
|
+
atomicRequired: true,
|
|
57
|
+
calls: [call],
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
}));
|
|
61
|
+
return result;
|
|
62
|
+
};
|
|
63
|
+
export const requestRevoke = withTelemetry(requestRevokeFn);
|
|
64
|
+
//# sourceMappingURL=requestRevoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestRevoke.js","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/requestRevoke.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAO,kBAAkB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,eAAe,GAAG,KAAK,EAAE,EAC9B,QAAQ,EACR,UAAU,GAIV,EAAgB,EAAE;IAClB,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC/B,GAAG,EAAE,yBAAyB;QAC9B,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,CAAC,mBAAmB,CAAC;KAC3B,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG;QACZ,EAAE,EAAE,6BAA6B;QACjC,IAAI;KACJ,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC;QACtC,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE;YACP;gBACC,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO;gBACnC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;gBAC7B,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,CAAC,IAAI,CAAC;aACb;SACD;KACD,CAAC,CAAQ,CAAA;IAEV,OAAO,MAAM,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SpendPermission } from '../../../../core/rpc/coinbase_fetchSpendPermissions.js';
|
|
2
|
+
import { ProviderInterface } from '../../../../core/provider/interface.js';
|
|
3
|
+
export type RequestSpendPermissionType = {
|
|
4
|
+
account: string;
|
|
5
|
+
spender: string;
|
|
6
|
+
token: string;
|
|
7
|
+
chainId: number;
|
|
8
|
+
allowance: bigint;
|
|
9
|
+
periodInDays: number;
|
|
10
|
+
start?: Date;
|
|
11
|
+
end?: Date;
|
|
12
|
+
salt?: string;
|
|
13
|
+
extraData?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const requestSpendPermission: ((request: RequestSpendPermissionType & {
|
|
16
|
+
provider: ProviderInterface;
|
|
17
|
+
}) => Promise<SpendPermission>) | ((request: RequestSpendPermissionType & {
|
|
18
|
+
provider: ProviderInterface;
|
|
19
|
+
}) => Promise<SpendPermission>);
|
|
20
|
+
//# sourceMappingURL=requestSpendPermission.d.ts.map
|
package/dist/interface/public-utilities/spend-permission/methods/requestSpendPermission.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSpendPermission.d.ts","sourceRoot":"","sources":["../../../../../src/interface/public-utilities/spend-permission/methods/requestSpendPermission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAQ/D,MAAM,MAAM,0BAA0B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAuED,eAAO,MAAM,sBAAsB,aAzBzB,0BAA0B,GAAG;IAAE,QAAQ,EAAE,iBAAiB,CAAA;CAAE,KACnE,OAAO,CAAC,eAAe,CAAC;cADwB,iBAAiB;+BAyBS,CAAA"}
|