zksync-sso 0.5.0-beta.3 → 1.0.0-beta.2
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/dist/_cjs/abi/SessionKeyValidator.js +729 -993
- package/dist/_cjs/abi/SessionKeyValidator.js.map +1 -1
- package/dist/_cjs/abi/{WebAuthValidator.js → WebAuthnValidator.js} +273 -306
- package/dist/_cjs/abi/WebAuthnValidator.js.map +1 -0
- package/dist/_cjs/abi/index.js +17 -15
- package/dist/_cjs/abi/index.js.map +1 -1
- package/dist/_cjs/actions/sendUserOperation.js +14 -0
- package/dist/_cjs/actions/sendUserOperation.js.map +1 -0
- package/dist/_cjs/client/actions/deploy.js +53 -0
- package/dist/_cjs/client/actions/deploy.js.map +1 -0
- package/dist/_cjs/client/actions/index.js +22 -0
- package/dist/_cjs/client/actions/index.js.map +1 -0
- package/dist/_cjs/client/actions/modules.js +42 -0
- package/dist/_cjs/client/actions/modules.js.map +1 -0
- package/dist/_cjs/client/actions/passkey.js +89 -0
- package/dist/_cjs/client/actions/passkey.js.map +1 -0
- package/dist/_cjs/client/actions/sessions.js +178 -0
- package/dist/_cjs/client/actions/sessions.js.map +1 -0
- package/dist/_cjs/client/actions/utils.js +8 -0
- package/dist/_cjs/client/actions/utils.js.map +1 -0
- package/dist/_cjs/client/common/smart-account-client-actions.js +173 -0
- package/dist/_cjs/client/common/smart-account-client-actions.js.map +1 -0
- package/dist/_cjs/client/ecdsa/account.js +75 -30
- package/dist/_cjs/client/ecdsa/account.js.map +1 -1
- package/dist/_cjs/client/ecdsa/client-actions.js +14 -0
- package/dist/_cjs/client/ecdsa/client-actions.js.map +1 -0
- package/dist/_cjs/client/ecdsa/client.js +29 -23
- package/dist/_cjs/client/ecdsa/client.js.map +1 -1
- package/dist/_cjs/client/ecdsa/index.js +5 -5
- package/dist/_cjs/client/ecdsa/index.js.map +1 -1
- package/dist/_cjs/client/index.js +7 -82
- package/dist/_cjs/client/index.js.map +1 -1
- package/dist/_cjs/client/passkey/account.js +88 -33
- package/dist/_cjs/client/passkey/account.js.map +1 -1
- package/dist/_cjs/client/passkey/client-actions.js +42 -0
- package/dist/_cjs/client/passkey/client-actions.js.map +1 -0
- package/dist/_cjs/client/passkey/client.js +32 -41
- package/dist/_cjs/client/passkey/client.js.map +1 -1
- package/dist/_cjs/client/passkey/index.js +14 -18
- package/dist/_cjs/client/passkey/index.js.map +1 -1
- package/dist/_cjs/client/passkey/webauthn.js +381 -0
- package/dist/_cjs/client/passkey/webauthn.js.map +1 -0
- package/dist/_cjs/client/session/account.js +91 -34
- package/dist/_cjs/client/session/account.js.map +1 -1
- package/dist/_cjs/client/session/client-actions.js +19 -0
- package/dist/_cjs/client/session/client-actions.js.map +1 -0
- package/dist/_cjs/client/session/client.js +29 -83
- package/dist/_cjs/client/session/client.js.map +1 -1
- package/dist/_cjs/client/session/formatSessionPreferences.js +263 -0
- package/dist/_cjs/client/session/formatSessionPreferences.js.map +1 -0
- package/dist/_cjs/client/session/index.js +5 -0
- package/dist/_cjs/client/session/index.js.map +1 -1
- package/dist/_cjs/client/session/monitor.js +138 -0
- package/dist/_cjs/client/session/monitor.js.map +1 -0
- package/dist/_cjs/client/session/types.js +83 -0
- package/dist/_cjs/client/session/types.js.map +1 -0
- package/dist/_cjs/client/session/utils.js +95 -0
- package/dist/_cjs/client/session/utils.js.map +1 -0
- package/dist/_cjs/client-auth-server/Signer.js +67 -43
- package/dist/_cjs/client-auth-server/Signer.js.map +1 -1
- package/dist/_cjs/client-auth-server/WalletProvider.js +6 -7
- package/dist/_cjs/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_cjs/client-auth-server/session/index.js +36 -21
- package/dist/_cjs/client-auth-server/session/index.js.map +1 -1
- package/dist/_cjs/client-auth-server/session/utils.js.map +1 -1
- package/dist/_cjs/client-auth-server/utils/helpers.js.map +1 -0
- package/dist/_cjs/{client/recovery → client-auth-server/utils}/index.js +2 -2
- package/dist/_cjs/client-auth-server/utils/index.js.map +1 -0
- package/dist/_cjs/client-auth-server/utils/storage.js.map +1 -0
- package/dist/_cjs/connector/index.js +92 -13
- package/dist/_cjs/connector/index.js.map +1 -1
- package/dist/_cjs/index.js +19 -3
- package/dist/_cjs/index.js.map +1 -1
- package/dist/_esm/abi/SessionKeyValidator.js +729 -993
- package/dist/_esm/abi/SessionKeyValidator.js.map +1 -1
- package/dist/_esm/abi/{WebAuthValidator.js → WebAuthnValidator.js} +272 -305
- package/dist/_esm/abi/WebAuthnValidator.js.map +1 -0
- package/dist/_esm/abi/index.js +3 -7
- package/dist/_esm/abi/index.js.map +1 -1
- package/dist/_esm/actions/sendUserOperation.js +26 -0
- package/dist/_esm/actions/sendUserOperation.js.map +1 -0
- package/dist/_esm/client/actions/deploy.js +114 -0
- package/dist/_esm/client/actions/deploy.js.map +1 -0
- package/dist/_esm/client/actions/index.js +7 -0
- package/dist/_esm/client/actions/index.js.map +1 -0
- package/dist/_esm/client/actions/modules.js +75 -0
- package/dist/_esm/client/actions/modules.js.map +1 -0
- package/dist/_esm/client/actions/passkey.js +200 -0
- package/dist/_esm/client/actions/passkey.js.map +1 -0
- package/dist/_esm/client/actions/sessions.js +279 -0
- package/dist/_esm/client/actions/sessions.js.map +1 -0
- package/dist/_esm/client/actions/utils.js +27 -0
- package/dist/_esm/client/actions/utils.js.map +1 -0
- package/dist/_esm/client/common/smart-account-client-actions.js +209 -0
- package/dist/_esm/client/common/smart-account-client-actions.js.map +1 -0
- package/dist/_esm/client/ecdsa/account.js +91 -29
- package/dist/_esm/client/ecdsa/account.js.map +1 -1
- package/dist/_esm/client/ecdsa/client-actions.js +16 -0
- package/dist/_esm/client/ecdsa/client-actions.js.map +1 -0
- package/dist/_esm/client/ecdsa/client.js +90 -23
- package/dist/_esm/client/ecdsa/client.js.map +1 -1
- package/dist/_esm/client/ecdsa/index.js +2 -5
- package/dist/_esm/client/ecdsa/index.js.map +1 -1
- package/dist/_esm/client/index.js +6 -77
- package/dist/_esm/client/index.js.map +1 -1
- package/dist/_esm/client/passkey/account.js +118 -32
- package/dist/_esm/client/passkey/account.js.map +1 -1
- package/dist/_esm/client/passkey/client-actions.js +51 -0
- package/dist/_esm/client/passkey/client-actions.js.map +1 -0
- package/dist/_esm/client/passkey/client.js +99 -42
- package/dist/_esm/client/passkey/client.js.map +1 -1
- package/dist/_esm/client/passkey/index.js +4 -4
- package/dist/_esm/client/passkey/index.js.map +1 -1
- package/dist/_esm/client/passkey/webauthn.js +493 -0
- package/dist/_esm/client/passkey/webauthn.js.map +1 -0
- package/dist/_esm/client/session/account.js +114 -33
- package/dist/_esm/client/session/account.js.map +1 -1
- package/dist/_esm/client/session/client-actions.js +20 -0
- package/dist/_esm/client/session/client-actions.js.map +1 -0
- package/dist/_esm/client/session/client.js +34 -84
- package/dist/_esm/client/session/client.js.map +1 -1
- package/dist/_esm/client/session/formatSessionPreferences.js +283 -0
- package/dist/_esm/client/session/formatSessionPreferences.js.map +1 -0
- package/dist/_esm/client/session/index.js +5 -0
- package/dist/_esm/client/session/index.js.map +1 -1
- package/dist/_esm/client/session/monitor.js +195 -0
- package/dist/_esm/client/session/monitor.js.map +1 -0
- package/dist/_esm/client/session/types.js +110 -0
- package/dist/_esm/client/session/types.js.map +1 -0
- package/dist/_esm/client/session/utils.js +115 -0
- package/dist/_esm/client/session/utils.js.map +1 -0
- package/dist/_esm/client-auth-server/Signer.js +84 -43
- package/dist/_esm/client-auth-server/Signer.js.map +1 -1
- package/dist/_esm/client-auth-server/WalletProvider.js +6 -5
- package/dist/_esm/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_esm/client-auth-server/session/index.js +2 -1
- package/dist/_esm/client-auth-server/session/index.js.map +1 -1
- package/dist/_esm/client-auth-server/session/utils.js.map +1 -1
- package/dist/_esm/client-auth-server/utils/helpers.js.map +1 -0
- package/dist/_esm/client-auth-server/utils/index.js +3 -0
- package/dist/_esm/client-auth-server/utils/index.js.map +1 -0
- package/dist/_esm/client-auth-server/utils/storage.js.map +1 -0
- package/dist/_esm/connector/index.js +105 -11
- package/dist/_esm/connector/index.js.map +1 -1
- package/dist/_esm/index.js +9 -1
- package/dist/_esm/index.js.map +1 -1
- package/dist/_types/abi/SessionKeyValidator.d.ts +612 -602
- package/dist/_types/abi/SessionKeyValidator.d.ts.map +1 -1
- package/dist/_types/abi/{WebAuthValidator.d.ts → WebAuthnValidator.d.ts} +234 -186
- package/dist/_types/abi/WebAuthnValidator.d.ts.map +1 -0
- package/dist/_types/abi/index.d.ts +3 -7
- package/dist/_types/abi/index.d.ts.map +1 -1
- package/dist/_types/actions/sendUserOperation.d.ts +49 -0
- package/dist/_types/actions/sendUserOperation.d.ts.map +1 -0
- package/dist/_types/client/actions/deploy.d.ts +108 -0
- package/dist/_types/client/actions/deploy.d.ts.map +1 -0
- package/dist/_types/client/actions/index.d.ts +10 -0
- package/dist/_types/client/actions/index.d.ts.map +1 -0
- package/dist/_types/client/actions/modules.d.ts +65 -0
- package/dist/_types/client/actions/modules.d.ts.map +1 -0
- package/dist/_types/client/actions/passkey.d.ts +192 -0
- package/dist/_types/client/actions/passkey.d.ts.map +1 -0
- package/dist/_types/client/actions/sessions.d.ts +225 -0
- package/dist/_types/client/actions/sessions.d.ts.map +1 -0
- package/dist/_types/client/actions/utils.d.ts +25 -0
- package/dist/_types/client/actions/utils.d.ts.map +1 -0
- package/dist/_types/client/common/smart-account-client-actions.d.ts +50 -0
- package/dist/_types/client/common/smart-account-client-actions.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/account.d.ts +16 -11
- package/dist/_types/client/ecdsa/account.d.ts.map +1 -1
- package/dist/_types/client/ecdsa/client-actions.d.ts +25 -0
- package/dist/_types/client/ecdsa/client-actions.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/client.d.ts +92 -22
- package/dist/_types/client/ecdsa/client.d.ts.map +1 -1
- package/dist/_types/client/ecdsa/index.d.ts +2 -5
- package/dist/_types/client/ecdsa/index.d.ts.map +1 -1
- package/dist/_types/client/index.d.ts +7 -31
- package/dist/_types/client/index.d.ts.map +1 -1
- package/dist/_types/client/passkey/account.d.ts +22 -15
- package/dist/_types/client/passkey/account.d.ts.map +1 -1
- package/dist/_types/client/passkey/client-actions.d.ts +54 -0
- package/dist/_types/client/passkey/client-actions.d.ts.map +1 -0
- package/dist/_types/client/passkey/client.d.ts +103 -32
- package/dist/_types/client/passkey/client.d.ts.map +1 -1
- package/dist/_types/client/passkey/index.d.ts +4 -4
- package/dist/_types/client/passkey/index.d.ts.map +1 -1
- package/dist/_types/client/passkey/webauthn.d.ts +123 -0
- package/dist/_types/client/passkey/webauthn.d.ts.map +1 -0
- package/dist/_types/client/session/account.d.ts +26 -13
- package/dist/_types/client/session/account.d.ts.map +1 -1
- package/dist/_types/client/session/client-actions.d.ts +26 -0
- package/dist/_types/client/session/client-actions.d.ts.map +1 -0
- package/dist/_types/client/session/client.d.ts +38 -36
- package/dist/_types/client/session/client.d.ts.map +1 -1
- package/dist/_types/client/session/formatSessionPreferences.d.ts +101 -0
- package/dist/_types/client/session/formatSessionPreferences.d.ts.map +1 -0
- package/dist/_types/client/session/index.d.ts +5 -0
- package/dist/_types/client/session/index.d.ts.map +1 -1
- package/dist/_types/client/session/monitor.d.ts +93 -0
- package/dist/_types/client/session/monitor.d.ts.map +1 -0
- package/dist/_types/client/session/types.d.ts +133 -0
- package/dist/_types/client/session/types.d.ts.map +1 -0
- package/dist/_types/client/session/utils.d.ts +47 -0
- package/dist/_types/client/session/utils.d.ts.map +1 -0
- package/dist/_types/client-auth-server/Signer.d.ts +241 -245
- package/dist/_types/client-auth-server/Signer.d.ts.map +1 -1
- package/dist/_types/client-auth-server/WalletProvider.d.ts +236 -241
- package/dist/_types/client-auth-server/WalletProvider.d.ts.map +1 -1
- package/dist/_types/client-auth-server/interface.d.ts +2 -2
- package/dist/_types/client-auth-server/interface.d.ts.map +1 -1
- package/dist/_types/client-auth-server/rpc.d.ts +4 -0
- package/dist/_types/client-auth-server/rpc.d.ts.map +1 -1
- package/dist/_types/client-auth-server/session/index.d.ts +5 -4
- package/dist/_types/client-auth-server/session/index.d.ts.map +1 -1
- package/dist/_types/client-auth-server/session/utils.d.ts +3 -3
- package/dist/_types/client-auth-server/session/utils.d.ts.map +1 -1
- package/dist/_types/client-auth-server/utils/helpers.d.ts.map +1 -0
- package/dist/_types/client-auth-server/utils/index.d.ts +3 -0
- package/dist/_types/client-auth-server/utils/index.d.ts.map +1 -0
- package/dist/_types/client-auth-server/utils/storage.d.ts.map +1 -0
- package/dist/_types/communicator/interface.d.ts +5 -0
- package/dist/_types/communicator/interface.d.ts.map +1 -1
- package/dist/_types/connector/index.d.ts +11 -9
- package/dist/_types/connector/index.d.ts.map +1 -1
- package/dist/_types/index.d.ts +5 -3
- package/dist/_types/index.d.ts.map +1 -1
- package/package.json +36 -55
- package/prepare-package.mjs +8 -0
- package/project.json +7 -7
- package/src/abi/SessionKeyValidator.ts +861 -1125
- package/src/abi/WebAuthnValidator.ts +324 -0
- package/src/abi/index.ts +3 -7
- package/src/actions/sendUserOperation.ts +98 -0
- package/src/client/actions/deploy.ts +225 -0
- package/src/client/actions/index.ts +39 -0
- package/src/client/actions/modules.ts +112 -0
- package/src/client/actions/passkey.ts +344 -0
- package/src/client/actions/sessions.ts +457 -0
- package/src/client/actions/utils.ts +30 -0
- package/src/client/common/smart-account-client-actions.ts +317 -0
- package/src/client/ecdsa/account.ts +146 -42
- package/src/client/ecdsa/client-actions.ts +54 -0
- package/src/client/ecdsa/client.ts +177 -75
- package/src/client/ecdsa/index.ts +9 -5
- package/src/client/index.ts +10 -122
- package/src/client/passkey/account.ts +180 -55
- package/src/client/passkey/client-actions.ts +117 -0
- package/src/client/passkey/client.ts +194 -108
- package/src/client/passkey/index.ts +21 -4
- package/src/client/passkey/webauthn.ts +638 -0
- package/src/client/session/account.ts +211 -46
- package/src/client/session/client-actions.ts +62 -0
- package/src/client/session/client.ts +121 -160
- package/src/client/session/formatSessionPreferences.ts +444 -0
- package/src/client/session/index.ts +5 -0
- package/src/client/session/monitor.ts +292 -0
- package/src/client/session/types.ts +205 -0
- package/src/client/session/utils.ts +160 -0
- package/src/client-auth-server/Signer.ts +91 -41
- package/src/client-auth-server/WalletProvider.ts +12 -11
- package/src/client-auth-server/interface.ts +2 -2
- package/src/client-auth-server/rpc.ts +4 -0
- package/src/client-auth-server/session/index.ts +6 -4
- package/src/client-auth-server/session/utils.ts +4 -4
- package/src/client-auth-server/utils/index.ts +2 -0
- package/src/communicator/interface.ts +6 -0
- package/src/connector/index.ts +137 -24
- package/src/index.ts +12 -3
- package/tsconfig.json +1 -1
- package/dist/_cjs/abi/GuardianRecoveryModule.js +0 -767
- package/dist/_cjs/abi/GuardianRecoveryModule.js.map +0 -1
- package/dist/_cjs/abi/GuardianRecoveryValidator.js +0 -813
- package/dist/_cjs/abi/GuardianRecoveryValidator.js.map +0 -1
- package/dist/_cjs/abi/OidcKeyRegistry.js +0 -492
- package/dist/_cjs/abi/OidcKeyRegistry.js.map +0 -1
- package/dist/_cjs/abi/OidcRecoveryValidator.js +0 -650
- package/dist/_cjs/abi/OidcRecoveryValidator.js.map +0 -1
- package/dist/_cjs/abi/SsoAccount.js +0 -1354
- package/dist/_cjs/abi/SsoAccount.js.map +0 -1
- package/dist/_cjs/abi/WebAuthValidator.js.map +0 -1
- package/dist/_cjs/client/ecdsa/actions/account.js +0 -83
- package/dist/_cjs/client/ecdsa/actions/account.js.map +0 -1
- package/dist/_cjs/client/ecdsa/decorators/ecdsa.js +0 -22
- package/dist/_cjs/client/ecdsa/decorators/ecdsa.js.map +0 -1
- package/dist/_cjs/client/ecdsa/decorators/wallet.js +0 -53
- package/dist/_cjs/client/ecdsa/decorators/wallet.js.map +0 -1
- package/dist/_cjs/client/ecdsa/types.js +0 -63
- package/dist/_cjs/client/ecdsa/types.js.map +0 -1
- package/dist/_cjs/client/oidc/account.js +0 -43
- package/dist/_cjs/client/oidc/account.js.map +0 -1
- package/dist/_cjs/client/oidc/actions/addNewPasskeyViaOidc.js +0 -28
- package/dist/_cjs/client/oidc/actions/addNewPasskeyViaOidc.js.map +0 -1
- package/dist/_cjs/client/oidc/actions/index.js +0 -12
- package/dist/_cjs/client/oidc/actions/index.js.map +0 -1
- package/dist/_cjs/client/oidc/client.js +0 -46
- package/dist/_cjs/client/oidc/client.js.map +0 -1
- package/dist/_cjs/client/oidc/decorators/actions.js +0 -3
- package/dist/_cjs/client/oidc/decorators/actions.js.map +0 -1
- package/dist/_cjs/client/oidc/index.js +0 -20
- package/dist/_cjs/client/oidc/index.js.map +0 -1
- package/dist/_cjs/client/oidc/serialize.js +0 -3
- package/dist/_cjs/client/oidc/serialize.js.map +0 -1
- package/dist/_cjs/client/passkey/actions/account.js +0 -169
- package/dist/_cjs/client/passkey/actions/account.js.map +0 -1
- package/dist/_cjs/client/passkey/actions/passkey.js +0 -151
- package/dist/_cjs/client/passkey/actions/passkey.js.map +0 -1
- package/dist/_cjs/client/passkey/decorators/passkey.js +0 -52
- package/dist/_cjs/client/passkey/decorators/passkey.js.map +0 -1
- package/dist/_cjs/client/passkey/decorators/wallet.js +0 -54
- package/dist/_cjs/client/passkey/decorators/wallet.js.map +0 -1
- package/dist/_cjs/client/recovery/account.js +0 -46
- package/dist/_cjs/client/recovery/account.js.map +0 -1
- package/dist/_cjs/client/recovery/actions/oidc.js +0 -69
- package/dist/_cjs/client/recovery/actions/oidc.js.map +0 -1
- package/dist/_cjs/client/recovery/actions/recovery.js +0 -114
- package/dist/_cjs/client/recovery/actions/recovery.js.map +0 -1
- package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js +0 -45
- package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js.map +0 -1
- package/dist/_cjs/client/recovery/client.js +0 -49
- package/dist/_cjs/client/recovery/client.js.map +0 -1
- package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js +0 -33
- package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js.map +0 -1
- package/dist/_cjs/client/recovery/decorators/recovery.js +0 -15
- package/dist/_cjs/client/recovery/decorators/recovery.js.map +0 -1
- package/dist/_cjs/client/recovery/decorators/wallet.js +0 -46
- package/dist/_cjs/client/recovery/decorators/wallet.js.map +0 -1
- package/dist/_cjs/client/recovery/index.js.map +0 -1
- package/dist/_cjs/client/session/actions/sendEip712Transaction.js +0 -45
- package/dist/_cjs/client/session/actions/sendEip712Transaction.js.map +0 -1
- package/dist/_cjs/client/session/actions/session.js +0 -116
- package/dist/_cjs/client/session/actions/session.js.map +0 -1
- package/dist/_cjs/client/session/decorators/publicActionsRewrite.js +0 -58
- package/dist/_cjs/client/session/decorators/publicActionsRewrite.js.map +0 -1
- package/dist/_cjs/client/session/decorators/wallet.js +0 -93
- package/dist/_cjs/client/session/decorators/wallet.js.map +0 -1
- package/dist/_cjs/client/utils/assertEip712Transaction.js +0 -44
- package/dist/_cjs/client/utils/assertEip712Transaction.js.map +0 -1
- package/dist/_cjs/client/utils/getEip712Domain.js +0 -57
- package/dist/_cjs/client/utils/getEip712Domain.js.map +0 -1
- package/dist/_cjs/client/utils/isEip712Transaction.js +0 -16
- package/dist/_cjs/client/utils/isEip712Transaction.js.map +0 -1
- package/dist/_cjs/paymaster/handlers/general.js +0 -13
- package/dist/_cjs/paymaster/handlers/general.js.map +0 -1
- package/dist/_cjs/paymaster/handlers/index.js +0 -19
- package/dist/_cjs/paymaster/handlers/index.js.map +0 -1
- package/dist/_cjs/paymaster/handlers/zyfi.js +0 -57
- package/dist/_cjs/paymaster/handlers/zyfi.js.map +0 -1
- package/dist/_cjs/paymaster/index.js +0 -54
- package/dist/_cjs/paymaster/index.js.map +0 -1
- package/dist/_cjs/utils/encoding.js +0 -56
- package/dist/_cjs/utils/encoding.js.map +0 -1
- package/dist/_cjs/utils/helpers.js.map +0 -1
- package/dist/_cjs/utils/index.js +0 -20
- package/dist/_cjs/utils/index.js.map +0 -1
- package/dist/_cjs/utils/passkey.js +0 -245
- package/dist/_cjs/utils/passkey.js.map +0 -1
- package/dist/_cjs/utils/session.js +0 -346
- package/dist/_cjs/utils/session.js.map +0 -1
- package/dist/_cjs/utils/storage.js.map +0 -1
- package/dist/_esm/abi/GuardianRecoveryModule.js +0 -764
- package/dist/_esm/abi/GuardianRecoveryModule.js.map +0 -1
- package/dist/_esm/abi/GuardianRecoveryValidator.js +0 -810
- package/dist/_esm/abi/GuardianRecoveryValidator.js.map +0 -1
- package/dist/_esm/abi/OidcKeyRegistry.js +0 -489
- package/dist/_esm/abi/OidcKeyRegistry.js.map +0 -1
- package/dist/_esm/abi/OidcRecoveryValidator.js +0 -647
- package/dist/_esm/abi/OidcRecoveryValidator.js.map +0 -1
- package/dist/_esm/abi/SsoAccount.js +0 -1351
- package/dist/_esm/abi/SsoAccount.js.map +0 -1
- package/dist/_esm/abi/WebAuthValidator.js.map +0 -1
- package/dist/_esm/client/ecdsa/actions/account.js +0 -82
- package/dist/_esm/client/ecdsa/actions/account.js.map +0 -1
- package/dist/_esm/client/ecdsa/decorators/ecdsa.js +0 -19
- package/dist/_esm/client/ecdsa/decorators/ecdsa.js.map +0 -1
- package/dist/_esm/client/ecdsa/decorators/wallet.js +0 -54
- package/dist/_esm/client/ecdsa/decorators/wallet.js.map +0 -1
- package/dist/_esm/client/ecdsa/types.js +0 -61
- package/dist/_esm/client/ecdsa/types.js.map +0 -1
- package/dist/_esm/client/oidc/account.js +0 -40
- package/dist/_esm/client/oidc/account.js.map +0 -1
- package/dist/_esm/client/oidc/actions/addNewPasskeyViaOidc.js +0 -26
- package/dist/_esm/client/oidc/actions/addNewPasskeyViaOidc.js.map +0 -1
- package/dist/_esm/client/oidc/actions/index.js +0 -9
- package/dist/_esm/client/oidc/actions/index.js.map +0 -1
- package/dist/_esm/client/oidc/client.js +0 -41
- package/dist/_esm/client/oidc/client.js.map +0 -1
- package/dist/_esm/client/oidc/decorators/actions.js +0 -2
- package/dist/_esm/client/oidc/decorators/actions.js.map +0 -1
- package/dist/_esm/client/oidc/index.js +0 -4
- package/dist/_esm/client/oidc/index.js.map +0 -1
- package/dist/_esm/client/oidc/serialize.js +0 -2
- package/dist/_esm/client/oidc/serialize.js.map +0 -1
- package/dist/_esm/client/passkey/actions/account.js +0 -165
- package/dist/_esm/client/passkey/actions/account.js.map +0 -1
- package/dist/_esm/client/passkey/actions/passkey.js +0 -148
- package/dist/_esm/client/passkey/actions/passkey.js.map +0 -1
- package/dist/_esm/client/passkey/decorators/passkey.js +0 -50
- package/dist/_esm/client/passkey/decorators/passkey.js.map +0 -1
- package/dist/_esm/client/passkey/decorators/wallet.js +0 -54
- package/dist/_esm/client/passkey/decorators/wallet.js.map +0 -1
- package/dist/_esm/client/recovery/account.js +0 -43
- package/dist/_esm/client/recovery/account.js.map +0 -1
- package/dist/_esm/client/recovery/actions/oidc.js +0 -69
- package/dist/_esm/client/recovery/actions/oidc.js.map +0 -1
- package/dist/_esm/client/recovery/actions/recovery.js +0 -111
- package/dist/_esm/client/recovery/actions/recovery.js.map +0 -1
- package/dist/_esm/client/recovery/actions/sendEip712Transaction.js +0 -93
- package/dist/_esm/client/recovery/actions/sendEip712Transaction.js.map +0 -1
- package/dist/_esm/client/recovery/client.js +0 -45
- package/dist/_esm/client/recovery/client.js.map +0 -1
- package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js +0 -31
- package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js.map +0 -1
- package/dist/_esm/client/recovery/decorators/recovery.js +0 -13
- package/dist/_esm/client/recovery/decorators/recovery.js.map +0 -1
- package/dist/_esm/client/recovery/decorators/wallet.js +0 -45
- package/dist/_esm/client/recovery/decorators/wallet.js.map +0 -1
- package/dist/_esm/client/recovery/index.js +0 -3
- package/dist/_esm/client/recovery/index.js.map +0 -1
- package/dist/_esm/client/session/actions/sendEip712Transaction.js +0 -93
- package/dist/_esm/client/session/actions/sendEip712Transaction.js.map +0 -1
- package/dist/_esm/client/session/actions/session.js +0 -119
- package/dist/_esm/client/session/actions/session.js.map +0 -1
- package/dist/_esm/client/session/decorators/publicActionsRewrite.js +0 -55
- package/dist/_esm/client/session/decorators/publicActionsRewrite.js.map +0 -1
- package/dist/_esm/client/session/decorators/wallet.js +0 -100
- package/dist/_esm/client/session/decorators/wallet.js.map +0 -1
- package/dist/_esm/client/utils/assertEip712Transaction.js +0 -39
- package/dist/_esm/client/utils/assertEip712Transaction.js.map +0 -1
- package/dist/_esm/client/utils/getEip712Domain.js +0 -57
- package/dist/_esm/client/utils/getEip712Domain.js.map +0 -1
- package/dist/_esm/client/utils/isEip712Transaction.js +0 -13
- package/dist/_esm/client/utils/isEip712Transaction.js.map +0 -1
- package/dist/_esm/paymaster/handlers/general.js +0 -11
- package/dist/_esm/paymaster/handlers/general.js.map +0 -1
- package/dist/_esm/paymaster/handlers/index.js +0 -3
- package/dist/_esm/paymaster/handlers/index.js.map +0 -1
- package/dist/_esm/paymaster/handlers/zyfi.js +0 -54
- package/dist/_esm/paymaster/handlers/zyfi.js.map +0 -1
- package/dist/_esm/paymaster/index.js +0 -37
- package/dist/_esm/paymaster/index.js.map +0 -1
- package/dist/_esm/utils/encoding.js +0 -49
- package/dist/_esm/utils/encoding.js.map +0 -1
- package/dist/_esm/utils/helpers.js.map +0 -1
- package/dist/_esm/utils/index.js +0 -4
- package/dist/_esm/utils/index.js.map +0 -1
- package/dist/_esm/utils/passkey.js +0 -296
- package/dist/_esm/utils/passkey.js.map +0 -1
- package/dist/_esm/utils/session.js +0 -358
- package/dist/_esm/utils/session.js.map +0 -1
- package/dist/_esm/utils/storage.js.map +0 -1
- package/dist/_types/abi/GuardianRecoveryModule.d.ts +0 -590
- package/dist/_types/abi/GuardianRecoveryModule.d.ts.map +0 -1
- package/dist/_types/abi/GuardianRecoveryValidator.d.ts +0 -626
- package/dist/_types/abi/GuardianRecoveryValidator.d.ts.map +0 -1
- package/dist/_types/abi/OidcKeyRegistry.d.ts +0 -375
- package/dist/_types/abi/OidcKeyRegistry.d.ts.map +0 -1
- package/dist/_types/abi/OidcRecoveryValidator.d.ts +0 -501
- package/dist/_types/abi/OidcRecoveryValidator.d.ts.map +0 -1
- package/dist/_types/abi/SsoAccount.d.ts +0 -1044
- package/dist/_types/abi/SsoAccount.d.ts.map +0 -1
- package/dist/_types/abi/WebAuthValidator.d.ts.map +0 -1
- package/dist/_types/client/ecdsa/actions/account.d.ts +0 -38
- package/dist/_types/client/ecdsa/actions/account.d.ts.map +0 -1
- package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts +0 -16
- package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts.map +0 -1
- package/dist/_types/client/ecdsa/decorators/wallet.d.ts +0 -5
- package/dist/_types/client/ecdsa/decorators/wallet.d.ts.map +0 -1
- package/dist/_types/client/ecdsa/types.d.ts +0 -10
- package/dist/_types/client/ecdsa/types.d.ts.map +0 -1
- package/dist/_types/client/oidc/account.d.ts +0 -13
- package/dist/_types/client/oidc/account.d.ts.map +0 -1
- package/dist/_types/client/oidc/actions/addNewPasskeyViaOidc.d.ts +0 -12
- package/dist/_types/client/oidc/actions/addNewPasskeyViaOidc.d.ts.map +0 -1
- package/dist/_types/client/oidc/actions/index.d.ts +0 -5
- package/dist/_types/client/oidc/actions/index.d.ts.map +0 -1
- package/dist/_types/client/oidc/client.d.ts +0 -24
- package/dist/_types/client/oidc/client.d.ts.map +0 -1
- package/dist/_types/client/oidc/decorators/actions.d.ts +0 -5
- package/dist/_types/client/oidc/decorators/actions.d.ts.map +0 -1
- package/dist/_types/client/oidc/index.d.ts +0 -4
- package/dist/_types/client/oidc/index.d.ts.map +0 -1
- package/dist/_types/client/oidc/serialize.d.ts +0 -10
- package/dist/_types/client/oidc/serialize.d.ts.map +0 -1
- package/dist/_types/client/passkey/actions/account.d.ts +0 -48
- package/dist/_types/client/passkey/actions/account.d.ts.map +0 -1
- package/dist/_types/client/passkey/actions/passkey.d.ts +0 -55
- package/dist/_types/client/passkey/actions/passkey.d.ts.map +0 -1
- package/dist/_types/client/passkey/decorators/passkey.d.ts +0 -16
- package/dist/_types/client/passkey/decorators/passkey.d.ts.map +0 -1
- package/dist/_types/client/passkey/decorators/wallet.d.ts +0 -5
- package/dist/_types/client/passkey/decorators/wallet.d.ts.map +0 -1
- package/dist/_types/client/recovery/account.d.ts +0 -14
- package/dist/_types/client/recovery/account.d.ts.map +0 -1
- package/dist/_types/client/recovery/actions/oidc.d.ts +0 -24
- package/dist/_types/client/recovery/actions/oidc.d.ts.map +0 -1
- package/dist/_types/client/recovery/actions/recovery.d.ts +0 -50
- package/dist/_types/client/recovery/actions/recovery.d.ts.map +0 -1
- package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts +0 -60
- package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts.map +0 -1
- package/dist/_types/client/recovery/client.d.ts +0 -23
- package/dist/_types/client/recovery/client.d.ts.map +0 -1
- package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts +0 -4
- package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts.map +0 -1
- package/dist/_types/client/recovery/decorators/recovery.d.ts +0 -8
- package/dist/_types/client/recovery/decorators/recovery.d.ts.map +0 -1
- package/dist/_types/client/recovery/decorators/wallet.d.ts +0 -5
- package/dist/_types/client/recovery/decorators/wallet.d.ts.map +0 -1
- package/dist/_types/client/recovery/index.d.ts +0 -3
- package/dist/_types/client/recovery/index.d.ts.map +0 -1
- package/dist/_types/client/session/actions/sendEip712Transaction.d.ts +0 -60
- package/dist/_types/client/session/actions/sendEip712Transaction.d.ts.map +0 -1
- package/dist/_types/client/session/actions/session.d.ts +0 -61
- package/dist/_types/client/session/actions/session.d.ts.map +0 -1
- package/dist/_types/client/session/decorators/publicActionsRewrite.d.ts +0 -4
- package/dist/_types/client/session/decorators/publicActionsRewrite.d.ts.map +0 -1
- package/dist/_types/client/session/decorators/wallet.d.ts +0 -5
- package/dist/_types/client/session/decorators/wallet.d.ts.map +0 -1
- package/dist/_types/client/utils/assertEip712Transaction.d.ts +0 -11
- package/dist/_types/client/utils/assertEip712Transaction.d.ts.map +0 -1
- package/dist/_types/client/utils/getEip712Domain.d.ts +0 -3
- package/dist/_types/client/utils/getEip712Domain.d.ts.map +0 -1
- package/dist/_types/client/utils/isEip712Transaction.d.ts +0 -4
- package/dist/_types/client/utils/isEip712Transaction.d.ts.map +0 -1
- package/dist/_types/paymaster/handlers/general.d.ts +0 -4
- package/dist/_types/paymaster/handlers/general.d.ts.map +0 -1
- package/dist/_types/paymaster/handlers/index.d.ts +0 -3
- package/dist/_types/paymaster/handlers/index.d.ts.map +0 -1
- package/dist/_types/paymaster/handlers/zyfi.d.ts +0 -18
- package/dist/_types/paymaster/handlers/zyfi.d.ts.map +0 -1
- package/dist/_types/paymaster/index.d.ts +0 -29
- package/dist/_types/paymaster/index.d.ts.map +0 -1
- package/dist/_types/utils/encoding.d.ts +0 -19
- package/dist/_types/utils/encoding.d.ts.map +0 -1
- package/dist/_types/utils/helpers.d.ts.map +0 -1
- package/dist/_types/utils/index.d.ts +0 -4
- package/dist/_types/utils/index.d.ts.map +0 -1
- package/dist/_types/utils/passkey.d.ts +0 -47
- package/dist/_types/utils/passkey.d.ts.map +0 -1
- package/dist/_types/utils/session.d.ts +0 -179
- package/dist/_types/utils/session.d.ts.map +0 -1
- package/dist/_types/utils/storage.d.ts.map +0 -1
- package/src/abi/GuardianRecoveryModule.ts +0 -763
- package/src/abi/GuardianRecoveryValidator.ts +0 -809
- package/src/abi/OidcKeyRegistry.ts +0 -488
- package/src/abi/OidcRecoveryValidator.ts +0 -646
- package/src/abi/SsoAccount.ts +0 -1350
- package/src/abi/WebAuthValidator.ts +0 -357
- package/src/client/ecdsa/actions/account.ts +0 -146
- package/src/client/ecdsa/decorators/ecdsa.ts +0 -32
- package/src/client/ecdsa/decorators/wallet.ts +0 -80
- package/src/client/ecdsa/types.ts +0 -108
- package/src/client/oidc/account.ts +0 -65
- package/src/client/oidc/actions/addNewPasskeyViaOidc.ts +0 -54
- package/src/client/oidc/actions/index.ts +0 -16
- package/src/client/oidc/client.ts +0 -122
- package/src/client/oidc/decorators/actions.ts +0 -5
- package/src/client/oidc/index.ts +0 -3
- package/src/client/oidc/serialize.ts +0 -10
- package/src/client/passkey/actions/account.ts +0 -241
- package/src/client/passkey/actions/passkey.ts +0 -208
- package/src/client/passkey/decorators/passkey.ts +0 -77
- package/src/client/passkey/decorators/wallet.ts +0 -79
- package/src/client/recovery/account.ts +0 -61
- package/src/client/recovery/actions/oidc.ts +0 -119
- package/src/client/recovery/actions/recovery.ts +0 -176
- package/src/client/recovery/actions/sendEip712Transaction.ts +0 -149
- package/src/client/recovery/client.ts +0 -102
- package/src/client/recovery/decorators/publicActionsRewrite.ts +0 -38
- package/src/client/recovery/decorators/recovery.ts +0 -22
- package/src/client/recovery/decorators/wallet.ts +0 -59
- package/src/client/recovery/index.ts +0 -2
- package/src/client/session/actions/sendEip712Transaction.ts +0 -149
- package/src/client/session/actions/session.ts +0 -204
- package/src/client/session/decorators/publicActionsRewrite.ts +0 -63
- package/src/client/session/decorators/wallet.ts +0 -143
- package/src/client/utils/assertEip712Transaction.ts +0 -49
- package/src/client/utils/getEip712Domain.ts +0 -84
- package/src/client/utils/isEip712Transaction.ts +0 -18
- package/src/paymaster/handlers/general.ts +0 -14
- package/src/paymaster/handlers/index.ts +0 -2
- package/src/paymaster/handlers/zyfi.ts +0 -108
- package/src/paymaster/index.ts +0 -76
- package/src/types/index.d.ts +0 -9
- package/src/utils/encoding.ts +0 -70
- package/src/utils/index.ts +0 -3
- package/src/utils/passkey.ts +0 -347
- package/src/utils/session.ts +0 -524
- /package/dist/_cjs/{utils → client-auth-server/utils}/helpers.js +0 -0
- /package/dist/_cjs/{utils → client-auth-server/utils}/storage.js +0 -0
- /package/dist/_esm/{utils → client-auth-server/utils}/helpers.js +0 -0
- /package/dist/_esm/{utils → client-auth-server/utils}/storage.js +0 -0
- /package/dist/_types/{utils → client-auth-server/utils}/helpers.d.ts +0 -0
- /package/dist/_types/{utils → client-auth-server/utils}/storage.d.ts +0 -0
- /package/src/{utils → client-auth-server/utils}/helpers.ts +0 -0
- /package/src/{utils → client-auth-server/utils}/storage.ts +0 -0
|
@@ -1,41 +1,122 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import {} from "viem";
|
|
2
|
+
import { entryPoint08Abi, entryPoint08Address, getUserOperationHash, toSmartAccount, } from "viem/account-abstraction";
|
|
3
|
+
import { decode_nonce_result, encode_get_nonce_call_data, encode_session_execute_call_data, generate_session_stub_signature_wasm, keyed_nonce_decimal, session_signature_no_validation_wasm, } from "zksync-sso-web-sdk/bundler";
|
|
4
|
+
import { sessionSpecToJSON } from "./utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Builds a SSO SmartAccount instance which uses a session key for signing within policy limits.
|
|
7
|
+
* This allows delegated transaction signing with enforced limits on gas fees, transfer values, and call parameters.
|
|
8
|
+
*/
|
|
9
|
+
export async function toSessionSmartAccount({ client, sessionKeyPrivateKey, address, contracts, sessionSpec, currentTimestamp, entryPointAddress, }) {
|
|
10
|
+
// Precompute session spec JSON once
|
|
11
|
+
const sessionSpecJSON = sessionSpecToJSON(sessionSpec);
|
|
12
|
+
const epAddress = entryPointAddress ?? entryPoint08Address;
|
|
13
|
+
return toSmartAccount({
|
|
14
|
+
client,
|
|
15
|
+
entryPoint: {
|
|
16
|
+
abi: entryPoint08Abi,
|
|
17
|
+
address: epAddress,
|
|
18
|
+
version: "0.8",
|
|
19
|
+
},
|
|
20
|
+
async getNonce() {
|
|
21
|
+
const sender = await this.getAddress();
|
|
22
|
+
// Get the nonce key for this session signer
|
|
23
|
+
const nonceKeyDecimal = keyed_nonce_decimal(sessionSpec.signer);
|
|
24
|
+
// Encode the getNonce call with the session's nonce key
|
|
25
|
+
const calldata = encode_get_nonce_call_data(sender, nonceKeyDecimal);
|
|
26
|
+
const result = await client.request({
|
|
27
|
+
method: "eth_call",
|
|
28
|
+
params: [{
|
|
29
|
+
from: sender,
|
|
30
|
+
to: epAddress,
|
|
31
|
+
data: calldata,
|
|
32
|
+
}],
|
|
24
33
|
});
|
|
34
|
+
const nonceStr = decode_nonce_result(result);
|
|
35
|
+
return BigInt(nonceStr);
|
|
36
|
+
},
|
|
37
|
+
// --- Calls encoding (session execute only - batch not supported yet) ---
|
|
38
|
+
async encodeCalls(calls) {
|
|
39
|
+
// Only support single calls (no batch operations)
|
|
40
|
+
if (calls.length !== 1) {
|
|
41
|
+
throw new Error("Batch transactions are not supported for session accounts. Only single execute() calls are allowed.");
|
|
42
|
+
}
|
|
43
|
+
const call = calls[0];
|
|
44
|
+
// Use Rust SDK for encoding session execute
|
|
45
|
+
const valueStr = (call.value ?? 0n).toString();
|
|
46
|
+
const encoded = encode_session_execute_call_data(call.to, valueStr, call.data ?? "0x");
|
|
47
|
+
return encoded;
|
|
48
|
+
},
|
|
49
|
+
async decodeCalls() {
|
|
50
|
+
throw new Error("decodeCalls is not supported yet for session accounts.");
|
|
51
|
+
},
|
|
52
|
+
// --- Address & factory args ---
|
|
53
|
+
async getAddress() {
|
|
54
|
+
// Return the provided address (no counterfactual support yet)
|
|
55
|
+
return address;
|
|
25
56
|
},
|
|
26
|
-
|
|
27
|
-
|
|
57
|
+
async getFactoryArgs() {
|
|
58
|
+
// No counterfactual deployment support yet
|
|
59
|
+
throw new Error("getFactoryArgs is not supported for session accounts. Deploy the account first and provide the address.");
|
|
28
60
|
},
|
|
29
|
-
|
|
30
|
-
|
|
61
|
+
// --- Stubs & signing ---
|
|
62
|
+
async getStubSignature() {
|
|
63
|
+
// Generate session stub signature for gas estimation
|
|
64
|
+
const timestampStr = currentTimestamp?.toString();
|
|
65
|
+
return generate_session_stub_signature_wasm(contracts.sessionValidator, sessionSpecJSON, timestampStr);
|
|
31
66
|
},
|
|
32
|
-
|
|
33
|
-
throw new Error(`
|
|
67
|
+
async signMessage({ message }) {
|
|
68
|
+
throw new Error(`signMessage is not supported for session accounts. Message: ${String(message)}`);
|
|
69
|
+
},
|
|
70
|
+
async signTypedData() {
|
|
71
|
+
throw new Error("signTypedData is not supported for session accounts");
|
|
72
|
+
},
|
|
73
|
+
async signUserOperation(params) {
|
|
74
|
+
const sender = await this.getAddress();
|
|
75
|
+
// Default undefined fields to 0n to avoid runtime errors during early signing.
|
|
76
|
+
const nonce = params.nonce ?? 0n;
|
|
77
|
+
const callGasLimit = params.callGasLimit ?? 0n;
|
|
78
|
+
const verificationGasLimit = params.verificationGasLimit ?? 0n;
|
|
79
|
+
const preVerificationGas = params.preVerificationGas ?? 0n;
|
|
80
|
+
const maxFeePerGas = params.maxFeePerGas ?? 0n;
|
|
81
|
+
const maxPriorityFeePerGas = params.maxPriorityFeePerGas ?? 0n;
|
|
82
|
+
const paymasterAndData = (params.paymasterAndData ?? "0x");
|
|
83
|
+
// Debug: Log effective gas & nonce passed into signing to diagnose zero-gas AA23 issues
|
|
84
|
+
console.debug("[toSessionSmartAccount] signUserOperation params:", {
|
|
85
|
+
nonce: nonce.toString(),
|
|
86
|
+
callGasLimit: callGasLimit.toString(),
|
|
87
|
+
verificationGasLimit: verificationGasLimit.toString(),
|
|
88
|
+
preVerificationGas: preVerificationGas.toString(),
|
|
89
|
+
maxFeePerGas: maxFeePerGas.toString(),
|
|
90
|
+
maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
|
|
91
|
+
});
|
|
92
|
+
// Compute user operation hash locally using viem helper (includes paymasterAndData)
|
|
93
|
+
const userOpHash = getUserOperationHash({
|
|
94
|
+
chainId: Number(client.chain.id),
|
|
95
|
+
entryPointAddress: this.entryPoint.address,
|
|
96
|
+
entryPointVersion: "0.8",
|
|
97
|
+
userOperation: {
|
|
98
|
+
sender,
|
|
99
|
+
nonce,
|
|
100
|
+
initCode: (params.initCode ?? "0x"),
|
|
101
|
+
callData: (params.callData ?? "0x"),
|
|
102
|
+
callGasLimit,
|
|
103
|
+
verificationGasLimit,
|
|
104
|
+
preVerificationGas,
|
|
105
|
+
maxFeePerGas,
|
|
106
|
+
maxPriorityFeePerGas,
|
|
107
|
+
paymasterAndData,
|
|
108
|
+
signature: "0x",
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
// Parse target and selector from callData for validation
|
|
112
|
+
// The callData is already encoded by encodeCalls, so we need to extract execute() params
|
|
113
|
+
// For now, we'll trust that the session policies are validated at contract level
|
|
114
|
+
// In a full implementation, you'd decode the execute call to validate against session spec
|
|
115
|
+
const timestampStr = currentTimestamp?.toString();
|
|
116
|
+
// Sign using session key with no validation (contract will validate)
|
|
117
|
+
const signature = session_signature_no_validation_wasm(sessionKeyPrivateKey, contracts.sessionValidator, sessionSpecJSON, userOpHash, timestampStr);
|
|
118
|
+
return signature;
|
|
34
119
|
},
|
|
35
120
|
});
|
|
36
|
-
return {
|
|
37
|
-
...account,
|
|
38
|
-
source: "ssoSessionAccount",
|
|
39
|
-
};
|
|
40
121
|
}
|
|
41
122
|
//# sourceMappingURL=account.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/client/session/account.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/client/session/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { smartAccountClientActions, } from "../common/smart-account-client-actions.js";
|
|
2
|
+
import { toSessionSmartAccount } from "./account.js";
|
|
3
|
+
/**
|
|
4
|
+
* Decorator providing session-specific client actions
|
|
5
|
+
*/
|
|
6
|
+
export function sessionClientActions(config) {
|
|
7
|
+
const base = smartAccountClientActions({
|
|
8
|
+
bundler: config.bundler,
|
|
9
|
+
accountFactory: () => toSessionSmartAccount(config.sessionAccount),
|
|
10
|
+
client: config.client,
|
|
11
|
+
accountAddress: config.accountAddress,
|
|
12
|
+
paymaster: config.paymaster,
|
|
13
|
+
});
|
|
14
|
+
return {
|
|
15
|
+
...base,
|
|
16
|
+
// Remove addPasskey (not valid for session-only signing)
|
|
17
|
+
addPasskey: undefined,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=client-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-actions.js","sourceRoot":"","sources":["../../../../src/client/session/client-actions.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,yBAAyB,GAC1B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAoC,MAAM,cAAc,CAAC;AAwBvF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAKlC,MAAgG;IAEhG,MAAM,IAAI,GAAG,yBAAyB,CAA+B;QACnE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,cAAc,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC;QAClE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,IAAI;QACP,yDAAyD;QACzD,UAAU,EAAE,SAAkB;KACgD,CAAC;AACnF,CAAC"}
|
|
@@ -1,92 +1,42 @@
|
|
|
1
|
-
import { createClient, createPublicClient,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
to: args.to,
|
|
20
|
-
callData: args.callData,
|
|
21
|
-
timestamp: args.timestamp,
|
|
22
|
-
}),
|
|
23
|
-
]);
|
|
24
|
-
};
|
|
25
|
-
export function createZksyncSessionClient(_parameters) {
|
|
26
|
-
const parameters = {
|
|
27
|
-
..._parameters,
|
|
28
|
-
address: getAddress(_parameters.address),
|
|
29
|
-
key: _parameters.key || "zksync-sso-session-wallet",
|
|
30
|
-
name: _parameters.name || "ZKsync SSO Session Client",
|
|
1
|
+
import { createClient, createPublicClient, publicActions, walletActions, } from "viem";
|
|
2
|
+
import { sessionClientActions } from "./client-actions.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create a client wrapping a session smart account. Provides wallet-like API
|
|
5
|
+
* plus helpers for session creation & state queries. Transactions sent via
|
|
6
|
+
* sendTransaction or sendSessionTransaction are encoded as session execute() calls.
|
|
7
|
+
*/
|
|
8
|
+
export function createSessionClient(params) {
|
|
9
|
+
const { address, contracts, sessionKeyPrivateKey, sessionSpec, bundlerClient, chain, transport, currentTimestamp, paymaster, } = params;
|
|
10
|
+
const publicClient = createPublicClient({ chain, transport });
|
|
11
|
+
const sessionAccountParams = {
|
|
12
|
+
client: publicClient,
|
|
13
|
+
address,
|
|
14
|
+
contracts,
|
|
15
|
+
sessionKeyPrivateKey,
|
|
16
|
+
sessionSpec,
|
|
17
|
+
currentTimestamp,
|
|
18
|
+
entryPointAddress: params.entryPointAddress,
|
|
31
19
|
};
|
|
32
|
-
const getInMemoryNodeTimestamp = async () => {
|
|
33
|
-
const publicClient = createPublicClient({ chain: parameters.chain, transport: parameters.transport });
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
-
const timestamp = await publicClient.request({ method: "config_getCurrentTimestamp" });
|
|
36
|
-
return BigInt(timestamp);
|
|
37
|
-
};
|
|
38
|
-
const account = toSessionAccount({
|
|
39
|
-
address: parameters.address,
|
|
40
|
-
signTransaction: async ({ hash, to, callData }) => {
|
|
41
|
-
// In Memory Node uses a different timestamp mechanism which isn't equal to actual timestamp
|
|
42
|
-
const timestamp = parameters.chain.id === zksyncInMemoryNode.id
|
|
43
|
-
? await getInMemoryNodeTimestamp()
|
|
44
|
-
: undefined;
|
|
45
|
-
const sessionKeySigner = privateKeyToAccount(parameters.sessionKey);
|
|
46
|
-
const hashSignature = await sessionKeySigner.sign({ hash });
|
|
47
|
-
return signSessionTransaction({
|
|
48
|
-
sessionKeySignedHash: hashSignature,
|
|
49
|
-
sessionContract: parameters.contracts.session,
|
|
50
|
-
sessionConfig: parameters.sessionConfig,
|
|
51
|
-
to,
|
|
52
|
-
callData,
|
|
53
|
-
timestamp,
|
|
54
|
-
});
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
20
|
const client = createClient({
|
|
58
|
-
|
|
59
|
-
|
|
21
|
+
chain,
|
|
22
|
+
transport,
|
|
23
|
+
account: undefined,
|
|
60
24
|
type: "walletClient",
|
|
25
|
+
key: params.key || "zksync-sso-session-client",
|
|
26
|
+
name: params.name || "ZKsync SSO Session Client",
|
|
61
27
|
})
|
|
62
|
-
.extend(() => ({
|
|
63
|
-
sessionKey: parameters.sessionKey,
|
|
64
|
-
sessionConfig: parameters.sessionConfig,
|
|
65
|
-
contracts: parameters.contracts,
|
|
66
|
-
paymasterHandler: parameters.paymasterHandler,
|
|
67
|
-
onSessionStateChange: parameters.onSessionStateChange,
|
|
68
|
-
_sessionNotifyTimeout: undefined,
|
|
69
|
-
}))
|
|
70
28
|
.extend(publicActions)
|
|
71
|
-
.extend(
|
|
72
|
-
.extend(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
sessionState,
|
|
83
|
-
onSessionStateChange: client.onSessionStateChange,
|
|
84
|
-
sessionNotifyTimeout: client._sessionNotifyTimeout,
|
|
85
|
-
});
|
|
86
|
-
}).catch((error) => {
|
|
87
|
-
console.error("Failed to get session state on initialization:", error);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
29
|
+
.extend(walletActions)
|
|
30
|
+
.extend((client) => sessionClientActions({
|
|
31
|
+
client,
|
|
32
|
+
bundler: bundlerClient,
|
|
33
|
+
sessionAccount: sessionAccountParams,
|
|
34
|
+
accountAddress: address,
|
|
35
|
+
paymaster,
|
|
36
|
+
}))
|
|
37
|
+
.extend(() => ({
|
|
38
|
+
bundler: bundlerClient,
|
|
39
|
+
}));
|
|
90
40
|
return client;
|
|
91
41
|
}
|
|
92
42
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,kBAAkB,EAIlB,aAAa,EAIb,aAAa,GAEd,MAAM,MAAM,CAAC;AAKd,OAAO,EAA6B,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAqDtF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAKjC,MAAqD;IAErD,MAAM,EACJ,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,SAAS,GACV,GAAG,MAAM,CAAC;IAEX,MAAM,YAAY,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAAgC;QACxD,MAAM,EAAE,YAAqD;QAC7D,OAAO;QACP,SAAS;QACT,oBAAoB;QACpB,WAAW;QACX,gBAAgB;QAChB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC5C,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,KAAK;QACL,SAAS;QACT,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,2BAA2B;QAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,2BAA2B;KACjD,CAAC;SACC,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACjB,oBAAoB,CAAC;QACnB,MAAM;QACN,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,oBAAoB;QACpC,cAAc,EAAE,OAAO;QACvB,SAAS;KACV,CAAC,CACH;SACA,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACb,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC,CAAC;IAEN,OAAO,MAAuD,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { encodeAbiParameters, getAddress, toFunctionSelector, toHex, } from "viem";
|
|
2
|
+
import { ConstraintCondition, LimitType, LimitUnlimited, LimitZero, } from "./types.js";
|
|
3
|
+
// Typesafety helper function
|
|
4
|
+
export const callPolicy = (policy) => policy;
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Utility Functions
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Convert ms string format (e.g. "1h", "24h", "7d") to seconds as bigint
|
|
10
|
+
* Supports formats: ms, s, m, h, d, w, y
|
|
11
|
+
*/
|
|
12
|
+
export const msStringToSeconds = (value) => {
|
|
13
|
+
const units = {
|
|
14
|
+
ms: 0.001,
|
|
15
|
+
s: 1,
|
|
16
|
+
m: 60,
|
|
17
|
+
h: 3600,
|
|
18
|
+
d: 86400,
|
|
19
|
+
w: 604800,
|
|
20
|
+
y: 31536000,
|
|
21
|
+
};
|
|
22
|
+
const match = value.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|y)$/);
|
|
23
|
+
if (!match) {
|
|
24
|
+
throw new Error(`Invalid date format: ${value}. Expected format like "1h", "24h", "7d"`);
|
|
25
|
+
}
|
|
26
|
+
const [, numStr, unit] = match;
|
|
27
|
+
const num = parseFloat(numStr);
|
|
28
|
+
const seconds = num * units[unit];
|
|
29
|
+
if (seconds < 0)
|
|
30
|
+
throw new Error(`Date can't be in the past: ${value}`);
|
|
31
|
+
if (seconds === 0)
|
|
32
|
+
throw new Error(`Date can't be zero: ${value}`);
|
|
33
|
+
return BigInt(Math.floor(seconds));
|
|
34
|
+
};
|
|
35
|
+
const DYNAMIC_ABI_INPUT_TYPES = ["bytes", "string"];
|
|
36
|
+
export const isDynamicInputType = (inputType) => {
|
|
37
|
+
return inputType.endsWith("[]") || DYNAMIC_ABI_INPUT_TYPES.includes(inputType);
|
|
38
|
+
};
|
|
39
|
+
const includesDynamicInputType = (abiParameters) => {
|
|
40
|
+
return abiParameters.some((input) => {
|
|
41
|
+
const isDynamicType = isDynamicInputType(input.type);
|
|
42
|
+
if (isDynamicType)
|
|
43
|
+
return true;
|
|
44
|
+
if (input.type.startsWith("tuple")) {
|
|
45
|
+
const components = input.components;
|
|
46
|
+
if (!components)
|
|
47
|
+
throw new Error("Tuple without components is unsupported");
|
|
48
|
+
return includesDynamicInputType(components);
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
export const isFollowedByDynamicInputType = (abiFunction, targetInputIndex) => {
|
|
54
|
+
if (targetInputIndex >= abiFunction.inputs.length) {
|
|
55
|
+
throw new Error(`Input index ${targetInputIndex} is out of bounds`);
|
|
56
|
+
}
|
|
57
|
+
return includesDynamicInputType(abiFunction.inputs.slice(0, targetInputIndex));
|
|
58
|
+
};
|
|
59
|
+
export const encodedInputToAbiChunks = (encodedInput) => {
|
|
60
|
+
if (!encodedInput.startsWith("0x")) {
|
|
61
|
+
throw new Error("Input is not a valid hex string");
|
|
62
|
+
}
|
|
63
|
+
return (encodedInput.slice(2).match(/.{1,64}/g) || []).map((e) => `0x${e}`); // 32 bytes abi chunks
|
|
64
|
+
};
|
|
65
|
+
const getDummyBytesValue = (type) => {
|
|
66
|
+
const size = parseInt(type.slice(5)) || 32;
|
|
67
|
+
return toHex("", { size });
|
|
68
|
+
};
|
|
69
|
+
// Function to generate dummy values for ABI types
|
|
70
|
+
const getDummyValue = (type) => {
|
|
71
|
+
if (type === "address")
|
|
72
|
+
return "0x36615Cf349d7F6344891B1e7CA7C72883F5dc049";
|
|
73
|
+
if (type.startsWith("uint") || type.startsWith("int"))
|
|
74
|
+
return 0n; // BigInt for numbers
|
|
75
|
+
if (type.startsWith("bytes"))
|
|
76
|
+
return getDummyBytesValue(type); // Empty bytes
|
|
77
|
+
if (type === "bool")
|
|
78
|
+
return false;
|
|
79
|
+
if (type === "string")
|
|
80
|
+
return ""; // Empty string
|
|
81
|
+
throw new Error(`Unsupported ABI type: ${type}`);
|
|
82
|
+
};
|
|
83
|
+
function getArrayComponents(type) {
|
|
84
|
+
const matches = type.match(/^(.*)\[(\d+)?\]$/);
|
|
85
|
+
return matches
|
|
86
|
+
? [matches[2] ? Number(matches[2]) : null, matches[1]]
|
|
87
|
+
: undefined;
|
|
88
|
+
}
|
|
89
|
+
// Recursive function to fill dummy values for complex types like tuples
|
|
90
|
+
const getDummyValues = (inputs) => {
|
|
91
|
+
return inputs.map((input) => {
|
|
92
|
+
const arrayComponents = getArrayComponents(input.type);
|
|
93
|
+
if (arrayComponents) {
|
|
94
|
+
// Recursively fill array components
|
|
95
|
+
const [length, innerType] = arrayComponents;
|
|
96
|
+
if (!length)
|
|
97
|
+
throw new Error("Dynamic array length is unsupported");
|
|
98
|
+
const arrayValue = Array.from({ length }, () => getDummyValues([{
|
|
99
|
+
...input,
|
|
100
|
+
type: innerType,
|
|
101
|
+
}]));
|
|
102
|
+
return arrayValue;
|
|
103
|
+
}
|
|
104
|
+
if (input.type.startsWith("tuple")) {
|
|
105
|
+
// Recursively fill tuple components
|
|
106
|
+
const components = input.components;
|
|
107
|
+
if (!components)
|
|
108
|
+
throw new Error("Tuple without components is unsupported");
|
|
109
|
+
return getDummyValues(components);
|
|
110
|
+
}
|
|
111
|
+
return getDummyValue(input.type);
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
export const getParameterChunkIndex = (abiFunction, targetInputIndex) => {
|
|
115
|
+
if (targetInputIndex >= abiFunction.inputs.length) {
|
|
116
|
+
throw new Error(`Input index ${targetInputIndex} is out of bounds`);
|
|
117
|
+
}
|
|
118
|
+
const inputs = abiFunction.inputs.slice(0, targetInputIndex);
|
|
119
|
+
const dummyValues = getDummyValues(inputs);
|
|
120
|
+
const encoded = encodeAbiParameters(inputs, dummyValues);
|
|
121
|
+
const chunks = encodedInputToAbiChunks(encoded);
|
|
122
|
+
const chunkIndex = chunks.length;
|
|
123
|
+
return chunkIndex;
|
|
124
|
+
};
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// Format Functions
|
|
127
|
+
// ============================================================================
|
|
128
|
+
/**
|
|
129
|
+
* Format user-friendly limit preferences to full UsageLimit
|
|
130
|
+
*/
|
|
131
|
+
export const formatLimitPreferences = (limit) => {
|
|
132
|
+
/* Just bigint was passed */
|
|
133
|
+
if (typeof limit === "bigint") {
|
|
134
|
+
return {
|
|
135
|
+
limitType: LimitType.Lifetime,
|
|
136
|
+
limit,
|
|
137
|
+
period: 0n,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/* LimitType was specified */
|
|
141
|
+
if ("limitType" in limit) {
|
|
142
|
+
if (limit.limitType === "lifetime" || limit.limitType === LimitType.Lifetime) {
|
|
143
|
+
return {
|
|
144
|
+
limitType: LimitType.Lifetime,
|
|
145
|
+
limit: limit.limit,
|
|
146
|
+
period: 0n,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
else if (limit.limitType === "unlimited" || limit.limitType === LimitType.Unlimited) {
|
|
150
|
+
return {
|
|
151
|
+
limitType: LimitType.Unlimited,
|
|
152
|
+
limit: 0n,
|
|
153
|
+
period: 0n,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else if (limit.limitType === "allowance" || limit.limitType === LimitType.Allowance) {
|
|
157
|
+
return {
|
|
158
|
+
limitType: LimitType.Allowance,
|
|
159
|
+
limit: limit.limit,
|
|
160
|
+
period: typeof limit.period === "string" ? msStringToSeconds(limit.period) : limit.period,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
164
|
+
throw new Error(`Invalid limit type: ${limit.limitType}`);
|
|
165
|
+
}
|
|
166
|
+
/* LimitType not selected */
|
|
167
|
+
if (limit.period) {
|
|
168
|
+
return {
|
|
169
|
+
limitType: LimitType.Allowance,
|
|
170
|
+
limit: limit.limit,
|
|
171
|
+
period: typeof limit.period === "string" ? msStringToSeconds(limit.period) : limit.period,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
limitType: LimitType.Lifetime,
|
|
176
|
+
limit: limit.limit,
|
|
177
|
+
period: 0n,
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Format user-friendly date preferences to bigint timestamp
|
|
182
|
+
*/
|
|
183
|
+
export const formatDatePreferences = (date) => {
|
|
184
|
+
if (typeof date === "string") {
|
|
185
|
+
const now = Math.floor(new Date().getTime() / 1000);
|
|
186
|
+
const seconds = msStringToSeconds(date);
|
|
187
|
+
return BigInt(now) + seconds;
|
|
188
|
+
}
|
|
189
|
+
if (date instanceof Date) {
|
|
190
|
+
const seconds = Math.floor(date.getTime() / 1000);
|
|
191
|
+
return BigInt(seconds);
|
|
192
|
+
}
|
|
193
|
+
return date;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Format user-friendly session preferences to full SessionSpec (without signer)
|
|
197
|
+
* @param preferences - User-friendly session configuration
|
|
198
|
+
* @param defaults - Default values for expiry and feeLimit if not specified
|
|
199
|
+
* @returns SessionSpec without the signer field (to be added separately)
|
|
200
|
+
*/
|
|
201
|
+
export function formatSessionPreferences(preferences, defaults) {
|
|
202
|
+
return {
|
|
203
|
+
expiresAt: preferences.expiry ? formatDatePreferences(preferences.expiry) : defaults.expiresAt,
|
|
204
|
+
feeLimit: preferences.feeLimit ? formatLimitPreferences(preferences.feeLimit) : defaults.feeLimit,
|
|
205
|
+
callPolicies: preferences.contractCalls?.map((policy) => {
|
|
206
|
+
const allowedStateMutability = ["nonpayable", "payable"];
|
|
207
|
+
const abiFunction = policy.abi.find((fn) => fn.type === "function" && fn.name === policy.functionName && allowedStateMutability.includes(fn.stateMutability));
|
|
208
|
+
if (!abiFunction)
|
|
209
|
+
throw new Error(`Function not found in the provided ABI: ${policy.functionName}`);
|
|
210
|
+
const selector = toFunctionSelector(abiFunction);
|
|
211
|
+
const valueLimit = policy.valueLimit ? formatLimitPreferences(policy.valueLimit) : LimitZero;
|
|
212
|
+
return {
|
|
213
|
+
target: getAddress(policy.address.toLowerCase()),
|
|
214
|
+
maxValuePerUse: policy.maxValuePerUse ?? valueLimit.limit,
|
|
215
|
+
valueLimit,
|
|
216
|
+
selector: selector,
|
|
217
|
+
constraints: policy.constraints?.map((constraint) => {
|
|
218
|
+
const limit = constraint.limit ? formatLimitPreferences(constraint.limit) : LimitUnlimited;
|
|
219
|
+
let condition = ConstraintCondition.Unconstrained;
|
|
220
|
+
if (constraint.condition) {
|
|
221
|
+
condition = ConstraintCondition[constraint.condition];
|
|
222
|
+
}
|
|
223
|
+
else if (constraint.value !== undefined && constraint.value !== null) {
|
|
224
|
+
condition = ConstraintCondition.Equal;
|
|
225
|
+
}
|
|
226
|
+
const input = abiFunction.inputs[constraint.index];
|
|
227
|
+
if (!input) {
|
|
228
|
+
throw new Error(`Target function parameter not found in the provided ABI function. Provided at function ${policy.functionName}, index ${constraint.index}`);
|
|
229
|
+
}
|
|
230
|
+
const isDynamicType = isDynamicInputType(input.type);
|
|
231
|
+
if (isDynamicType) {
|
|
232
|
+
throw new Error(`Function parameters with dynamic types are not supported for constraint validation. Provided at function ${policy.functionName}, index ${constraint.index}`);
|
|
233
|
+
}
|
|
234
|
+
const isFollowedByDynamicType = isFollowedByDynamicInputType(abiFunction, constraint.index);
|
|
235
|
+
if (isFollowedByDynamicType) {
|
|
236
|
+
throw new Error(`Target function parameter is followed by a dynamic type parameter. Provided at function ${policy.functionName}, index ${constraint.index}`);
|
|
237
|
+
}
|
|
238
|
+
const startingAbiChunkIndex = getParameterChunkIndex(abiFunction, constraint.index);
|
|
239
|
+
if (constraint.value === undefined || constraint.value === null) {
|
|
240
|
+
return {
|
|
241
|
+
index: BigInt(startingAbiChunkIndex),
|
|
242
|
+
condition: ConstraintCondition.Unconstrained,
|
|
243
|
+
refValue: toHex("", { size: 32 }),
|
|
244
|
+
limit,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const encodedInput = encodeAbiParameters([input], [constraint.value]);
|
|
248
|
+
const abiBytesChunks = encodedInputToAbiChunks(encodedInput);
|
|
249
|
+
const ALLOWED_OVERFLOW_CONDITIONS = [
|
|
250
|
+
ConstraintCondition.Unconstrained,
|
|
251
|
+
ConstraintCondition.Equal,
|
|
252
|
+
ConstraintCondition.NotEqual,
|
|
253
|
+
];
|
|
254
|
+
const ALLOWED_OVERFLOW_LIMIT_TYPES = [
|
|
255
|
+
LimitType.Unlimited,
|
|
256
|
+
];
|
|
257
|
+
if (abiBytesChunks.length > 1
|
|
258
|
+
&& (!ALLOWED_OVERFLOW_CONDITIONS.includes(condition) // Can't validate condition (e.g. < >) if value is split across multiple chunks
|
|
259
|
+
|| !ALLOWED_OVERFLOW_LIMIT_TYPES.includes(limit.limitType) // Can't validate limit if value is split across multiple chunks
|
|
260
|
+
)) {
|
|
261
|
+
throw new Error(`Encoded input size of parameter at index ${constraint.index} of ${policy.functionName} exceeds the maximum size of 32 bytes: ${abiBytesChunks.length * 32} bytes`);
|
|
262
|
+
}
|
|
263
|
+
;
|
|
264
|
+
return abiBytesChunks.map((abiChunk, index) => ({
|
|
265
|
+
index: BigInt(startingAbiChunkIndex + index),
|
|
266
|
+
condition,
|
|
267
|
+
refValue: abiChunk,
|
|
268
|
+
limit,
|
|
269
|
+
}));
|
|
270
|
+
}).flat() ?? [],
|
|
271
|
+
};
|
|
272
|
+
}) ?? [],
|
|
273
|
+
transferPolicies: preferences.transfers?.map((policy) => {
|
|
274
|
+
const valueLimit = policy.valueLimit ? formatLimitPreferences(policy.valueLimit) : LimitZero;
|
|
275
|
+
return {
|
|
276
|
+
target: getAddress(policy.to.toLowerCase()),
|
|
277
|
+
maxValuePerUse: policy.maxValuePerUse ?? valueLimit.limit,
|
|
278
|
+
valueLimit,
|
|
279
|
+
};
|
|
280
|
+
}) ?? [],
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=formatSessionPreferences.js.map
|