@zerodev/sdk 4.0.16 → 4.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -0
- package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.d.ts +15 -0
- package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js +24 -0
- package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js.map +1 -0
- package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +296 -0
- package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js +389 -0
- package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -0
- package/dist/cjs/kernel-zerodev/account.d.ts +2 -0
- package/dist/cjs/kernel-zerodev/account.js +30 -0
- package/dist/cjs/kernel-zerodev/account.js.map +1 -1
- package/dist/cjs/kernel-zerodev/api/index.d.ts +2 -0
- package/dist/cjs/kernel-zerodev/api/index.js +28 -1
- package/dist/cjs/kernel-zerodev/api/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/constants.d.ts +2 -0
- package/dist/cjs/kernel-zerodev/constants.js +3 -1
- package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/utils.js +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/utils.js.map +1 -1
- package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/base.d.ts +2 -0
- package/dist/cjs/kernel-zerodev/validator/base.js +9 -0
- package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/index.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator/index.js +4 -1
- package/dist/cjs/kernel-zerodev/validator/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +52 -0
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +298 -0
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -0
- package/dist/cjs/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/validator/session-key-validator.js +14 -1
- package/dist/cjs/kernel-zerodev/validator/session-key-validator.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/types.d.ts +7 -1
- package/dist/cjs/kernel-zerodev/validator/types.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/base.d.ts +2 -2
- package/dist/cjs/kernel-zerodev/validator-provider/base.js +7 -3
- package/dist/cjs/kernel-zerodev/validator-provider/base.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/index.d.ts +2 -1
- package/dist/cjs/kernel-zerodev/validator-provider/index.js +4 -1
- package/dist/cjs/kernel-zerodev/validator-provider/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.d.ts +26 -0
- package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +278 -0
- package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -0
- package/dist/cjs/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/types.d.ts +3 -0
- package/dist/cjs/kernel-zerodev/validator-provider/types.js.map +1 -1
- package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.d.ts +15 -0
- package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js +21 -0
- package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js.map +1 -0
- package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +296 -0
- package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js +386 -0
- package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js.map +1 -0
- package/dist/esm/kernel-zerodev/account.d.ts +2 -0
- package/dist/esm/kernel-zerodev/account.js +30 -0
- package/dist/esm/kernel-zerodev/account.js.map +1 -1
- package/dist/esm/kernel-zerodev/api/index.d.ts +2 -0
- package/dist/esm/kernel-zerodev/api/index.js +25 -0
- package/dist/esm/kernel-zerodev/api/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/constants.d.ts +2 -0
- package/dist/esm/kernel-zerodev/constants.js +2 -0
- package/dist/esm/kernel-zerodev/constants.js.map +1 -1
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/utils.js +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/utils.js.map +1 -1
- package/dist/esm/kernel-zerodev/provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/base.d.ts +2 -0
- package/dist/esm/kernel-zerodev/validator/base.js +9 -0
- package/dist/esm/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/index.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator/index.js +3 -1
- package/dist/esm/kernel-zerodev/validator/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +52 -0
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js +292 -0
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -0
- package/dist/esm/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
- package/dist/esm/kernel-zerodev/validator/session-key-validator.js +14 -1
- package/dist/esm/kernel-zerodev/validator/session-key-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/types.d.ts +7 -1
- package/dist/esm/kernel-zerodev/validator/types.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/base.d.ts +2 -2
- package/dist/esm/kernel-zerodev/validator-provider/base.js +7 -3
- package/dist/esm/kernel-zerodev/validator-provider/base.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/index.d.ts +2 -1
- package/dist/esm/kernel-zerodev/validator-provider/index.js +3 -1
- package/dist/esm/kernel-zerodev/validator-provider/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.d.ts +26 -0
- package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +271 -0
- package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -0
- package/dist/esm/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/types.d.ts +3 -0
- package/dist/esm/kernel-zerodev/validator-provider/types.js.map +1 -1
- package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts +16 -0
- package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts.map +1 -0
- package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +297 -0
- package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts.map +1 -0
- package/dist/types/kernel-zerodev/account.d.ts +2 -0
- package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/api/index.d.ts +2 -0
- package/dist/types/kernel-zerodev/api/index.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/constants.d.ts +2 -0
- package/dist/types/kernel-zerodev/constants.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/base.d.ts +2 -0
- package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/index.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator/index.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +53 -0
- package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -0
- package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts +1 -1
- package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/types.d.ts +7 -1
- package/dist/types/kernel-zerodev/validator/types.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/base.d.ts +2 -2
- package/dist/types/kernel-zerodev/validator-provider/base.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +1 -1
- package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +1 -1
- package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/index.d.ts +2 -1
- package/dist/types/kernel-zerodev/validator-provider/index.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +1 -1
- package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts +27 -0
- package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +1 -0
- package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts +1 -1
- package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/types.d.ts +3 -0
- package/dist/types/kernel-zerodev/validator-provider/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kernel-zerodev/abis/RecoveryActionAbi.ts +20 -0
- package/src/kernel-zerodev/abis/WeightedValidatorAbi.ts +385 -0
- package/src/kernel-zerodev/account.ts +33 -0
- package/src/kernel-zerodev/api/index.ts +32 -0
- package/src/kernel-zerodev/constants.ts +3 -0
- package/src/kernel-zerodev/owner/passkey/utils.ts +2 -2
- package/src/kernel-zerodev/provider.ts +1 -1
- package/src/kernel-zerodev/validator/base.ts +11 -0
- package/src/kernel-zerodev/validator/index.ts +3 -0
- package/src/kernel-zerodev/validator/recovery-validator.ts +366 -0
- package/src/kernel-zerodev/validator/session-key-validator.ts +17 -4
- package/src/kernel-zerodev/validator/types.ts +10 -1
- package/src/kernel-zerodev/validator-provider/base.ts +7 -3
- package/src/kernel-zerodev/validator-provider/index.ts +3 -0
- package/src/kernel-zerodev/validator-provider/recovery-provider.ts +350 -0
- package/src/kernel-zerodev/validator-provider/types.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL = \"https://v0-6-meta-bundler.onrender.com\";\nexport const PAYMASTER_URL = \"https://v0-6-paymaster.onrender.com\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0xf048AD83CB2dfd6037A43902a2A5Be04e53cd2Eb\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x1C1D5b70aD6e0c04366aab100261A6Bcc251EA3f\";\nexport const oneAddress = \"0x0000000000000000000000000000000000000001\";\n\nexport const gasTokenChainAddresses: IGasTokenAddresses = {\n USDC: {\n 1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n // 5: \"0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557\",\n 137: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\",\n // 80001: \"\",\n // 420: \"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\",\n 42161: \"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\",\n // 421613: \"\",\n 43114: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n // 43113: \"\",\n // 56: \"\",\n // 97: \"\"\n },\n PEPE: {\n 1: \"0x6982508145454Ce325dDbE47a25d4ec3d2311933\",\n },\n};\n\nexport const ERC20_APPROVAL_AMOUNT: { [key: string]: bigint } = {\n // ETH\n [gasTokenChainAddresses[\"USDC\"][1]]: parseUnits(\"100\", 6),\n\n // Goerli\n [gasTokenChainAddresses[\"USDC\"][5]]: parseUnits(\"100\", 6),\n\n // Polygon\n [gasTokenChainAddresses[\"USDC\"][137]]: parseUnits(\"10\", 6),\n\n // Arbitrum\n [gasTokenChainAddresses[\"USDC\"][42161]]: parseUnits(\"10\", 6),\n\n // Avalanche\n [gasTokenChainAddresses[\"USDC\"][43114]]: parseUnits(\"10\", 6),\n\n // ETH\n [gasTokenChainAddresses[\"PEPE\"][1]]: parseUnits(\"50000000\", 18),\n\n \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\": parseUnits(\"100\", 18),\n};\n\nexport const minPriorityFeePerBidDefaults = new Map<number, bigint>([\n [polygon.id, 30_000_000_000n],\n]);\n\nexport const INFURA_API_KEY = \"f36f7f706a58477884ce6fe89165666c\";\nexport const CHAIN_ID_TO_NODE: { [key: number]: string } = {\n 1: `https://mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 5: `https://goerli.infura.io/v3/${INFURA_API_KEY}`,\n 11155111:\n \"https://fittest-ultra-aura.ethereum-sepolia.quiknode.pro/3893d01b1dd411fdfa9b6dd372dd2b4f69fcf1ea/\",\n 137: `https://polygon-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 80001: `https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}`,\n 10: `https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 420: `https://optimism-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 42161: `https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n // 42161: 'https://evocative-stylish-dinghy.arbitrum-mainnet.discover.quiknode.pro/80b526d14fa9fd9a8b0db1e65554acaf00c6a1ab/',\n 421613: `https://arbitrum-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 43114: `https://avalanche-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 43113: `https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}`,\n 1313161554: `https://aurora-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 1313161555: `https://aurora-testnet.infura.io/v3/${INFURA_API_KEY}`,\n 56: \"https://neat-greatest-layer.bsc.quiknode.pro/9405a499ceee314e5f2f68c9d47518d3537fce6a/\",\n 8453: \"https://twilight-red-tree.base-mainnet.quiknode.pro/dc6eb27bf0f917df215922488dd97f4de7d9b08e/\",\n 84531:\n \"https://icy-long-mountain.base-goerli.quiknode.pro/5b80d93e97cc9412a63c10a30841869abbef9596/\",\n 100: \"https://thrilling-fluent-film.xdai.quiknode.pro/305955cffb9868cdd95b5e3dc9775f20678ad9ac/\",\n 10200: \"https://nd-810-853-201.p2pify.com/e828b09f0d43591de96c297b3f36fffd\",\n};\n"]}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL = \"https://v0-6-meta-bundler.onrender.com\";\nexport const PAYMASTER_URL = \"https://v0-6-paymaster.onrender.com\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0xf048AD83CB2dfd6037A43902a2A5Be04e53cd2Eb\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x1C1D5b70aD6e0c04366aab100261A6Bcc251EA3f\";\nexport const RECOVERY_VALIDATOR_ADDRESS =\n \"0x4fd47D861c349bD49DC61341a922cb72F9dF7E8d\";\nexport const RECOVERY_ACTION = \"0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1\";\nexport const oneAddress = \"0x0000000000000000000000000000000000000001\";\n\nexport const gasTokenChainAddresses: IGasTokenAddresses = {\n USDC: {\n 1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n // 5: \"0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557\",\n 137: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\",\n // 80001: \"\",\n // 420: \"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\",\n 42161: \"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\",\n // 421613: \"\",\n 43114: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n // 43113: \"\",\n // 56: \"\",\n // 97: \"\"\n },\n PEPE: {\n 1: \"0x6982508145454Ce325dDbE47a25d4ec3d2311933\",\n },\n};\n\nexport const ERC20_APPROVAL_AMOUNT: { [key: string]: bigint } = {\n // ETH\n [gasTokenChainAddresses[\"USDC\"][1]]: parseUnits(\"100\", 6),\n\n // Goerli\n [gasTokenChainAddresses[\"USDC\"][5]]: parseUnits(\"100\", 6),\n\n // Polygon\n [gasTokenChainAddresses[\"USDC\"][137]]: parseUnits(\"10\", 6),\n\n // Arbitrum\n [gasTokenChainAddresses[\"USDC\"][42161]]: parseUnits(\"10\", 6),\n\n // Avalanche\n [gasTokenChainAddresses[\"USDC\"][43114]]: parseUnits(\"10\", 6),\n\n // ETH\n [gasTokenChainAddresses[\"PEPE\"][1]]: parseUnits(\"50000000\", 18),\n\n \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\": parseUnits(\"100\", 18),\n};\n\nexport const minPriorityFeePerBidDefaults = new Map<number, bigint>([\n [polygon.id, 30_000_000_000n],\n]);\n\nexport const INFURA_API_KEY = \"f36f7f706a58477884ce6fe89165666c\";\nexport const CHAIN_ID_TO_NODE: { [key: number]: string } = {\n 1: `https://mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 5: `https://goerli.infura.io/v3/${INFURA_API_KEY}`,\n 11155111:\n \"https://fittest-ultra-aura.ethereum-sepolia.quiknode.pro/3893d01b1dd411fdfa9b6dd372dd2b4f69fcf1ea/\",\n 137: `https://polygon-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 80001: `https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}`,\n 10: `https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 420: `https://optimism-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 42161: `https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n // 42161: 'https://evocative-stylish-dinghy.arbitrum-mainnet.discover.quiknode.pro/80b526d14fa9fd9a8b0db1e65554acaf00c6a1ab/',\n 421613: `https://arbitrum-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 43114: `https://avalanche-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 43113: `https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}`,\n 1313161554: `https://aurora-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 1313161555: `https://aurora-testnet.infura.io/v3/${INFURA_API_KEY}`,\n 56: \"https://neat-greatest-layer.bsc.quiknode.pro/9405a499ceee314e5f2f68c9d47518d3537fce6a/\",\n 8453: \"https://twilight-red-tree.base-mainnet.quiknode.pro/dc6eb27bf0f917df215922488dd97f4de7d9b08e/\",\n 84531:\n \"https://icy-long-mountain.base-goerli.quiknode.pro/5b80d93e97cc9412a63c10a30841869abbef9596/\",\n 100: \"https://thrilling-fluent-film.xdai.quiknode.pro/305955cffb9868cdd95b5e3dc9775f20678ad9ac/\",\n 10200: \"https://nd-810-853-201.p2pify.com/e828b09f0d43591de96c297b3f36fffd\",\n};\n"]}
|
|
@@ -7,7 +7,7 @@ import type { SupportedValidators } from "../validator/types.js";
|
|
|
7
7
|
export declare class ZeroDevAccountSigner<V extends SupportedValidators> extends Signer implements TypedDataSigner {
|
|
8
8
|
readonly provider: ZeroDevEthersProvider<V>;
|
|
9
9
|
private account?;
|
|
10
|
-
sendUserOperation: (<T extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_1 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_1, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_1 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_1 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_2 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_2, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_2 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_2 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_3 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_3, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_3 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_3 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>);
|
|
10
|
+
sendUserOperation: (<T extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_1 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_1, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_1 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_1 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_2 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_2, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_2 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_2 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_3 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_3, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_3 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_3 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>) | (<T_4 extends import("@alchemy/aa-core").UserOperationCallData | import("@alchemy/aa-core").BatchUserOperationCallData>(data: T_4, overrides?: import("@alchemy/aa-core").UserOperationOverrides | undefined, operation?: T_4 extends import("@alchemy/aa-core").UserOperationCallData ? import("../provider.js").Operation : T_4 extends import("@alchemy/aa-core").BatchUserOperationCallData ? import("../provider.js").Operation.Call : never) => Promise<import("@alchemy/aa-core").SendUserOperationResult>);
|
|
11
11
|
waitForUserOperationTransaction: (hash: `0x${string}`) => Promise<`0x${string}`>;
|
|
12
12
|
constructor(provider: ZeroDevEthersProvider<V>);
|
|
13
13
|
getAddress(): Promise<string>;
|
|
@@ -72,7 +72,7 @@ const signMessageImplementation = async (msg, id, walletId, projectId, credentia
|
|
|
72
72
|
};
|
|
73
73
|
exports.signMessageImplementation = signMessageImplementation;
|
|
74
74
|
const signMessage = async (msg, id, walletId, projectId, credentialId, apiUrl = constants_js_1.API_URL) => {
|
|
75
|
-
return await (0, exports.signMessageImplementation)((0, viem_1.hashMessage)(typeof msg ===
|
|
75
|
+
return await (0, exports.signMessageImplementation)((0, viem_1.hashMessage)(typeof msg === "string" ? msg : { raw: msg }), id, walletId, projectId, credentialId, apiUrl);
|
|
76
76
|
};
|
|
77
77
|
exports.signMessage = signMessage;
|
|
78
78
|
const signTypedData = async (params, id, walletId, projectId, credentialId, apiUrl = constants_js_1.API_URL) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/utils.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAwD;AACxD,kDAA0B;AAC1B,qDAA6C;AAE7C,+BAAkE;AAElE,IAAA,kBAAW,EAAC;IACV,OAAO,EAAE,yBAAyB;CACnC,CAAC,CAAC;AAEU,QAAA,SAAS,GAAG,YAAY,CAAC;AAEzB,QAAA,KAAK,GAAG,CAAC,CAAC,CAAC;AAEjB,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAE/B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,eAAe,GAAG,CAAC,SAAsB,EAAU,EAAE;IAChE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,QAAQ,CAAC,QAAQ,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAAW,EACX,EAAU,EACV,QAAgB,EAChB,SAAiB,EACjB,YAAoB,EACpB,MAAM,GAAG,sBAAO,EAChB,EAAE;IACF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { browserInit, TurnkeyApi } from \"@turnkey/http\";\nimport axios from \"axios\";\nimport { API_URL } from \"../../constants.js\";\nimport type { SignTypedDataParams } from \"@alchemy/aa-core\";\nimport { hashTypedData, signatureToHex, hashMessage } from \"viem\";\n\nbrowserInit({\n baseUrl: \"https://api.turnkey.com\",\n});\n\nexport const publicKey = \"public-key\";\n\nexport const es256 = -7;\n\nexport const generateRandomBuffer = (): ArrayBuffer => {\n const arr = new Uint8Array(32);\n //@ts-expect-error\n crypto.getRandomValues(arr);\n return arr.buffer;\n};\n\nexport const base64UrlEncode = (challenge: ArrayBuffer): string => {\n return Buffer.from(challenge)\n .toString(\"base64\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n};\n\nexport const signMessageImplementation = async (\n msg: string,\n id: string,\n walletId: string,\n projectId: string,\n credentialId: string,\n apiUrl = API_URL\n) => {\n console.log(\"SIGN MESSAGE IMPLEMENTATION\");\n const signedRequest = await TurnkeyApi.signSignRawPayload(\n {\n body: {\n type: \"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD\",\n organizationId: id,\n parameters: {\n privateKeyId: walletId,\n payload: msg,\n encoding: \"PAYLOAD_ENCODING_HEXADECIMAL\",\n hashFunction: \"HASH_FUNCTION_NO_OP\",\n },\n timestampMs: String(Date.now()),\n },\n },\n {\n publicKey: {\n allowCredentials: [\n {\n id: base64URLStringToBuffer(credentialId),\n type: publicKey,\n },\n ],\n },\n }\n );\n const proxyResponse = await axios.post(\n `${apiUrl}/projects/${projectId}/wallets/proxy`,\n {\n signedRequest,\n }\n );\n const { activity } = await proxyResponse.data;\n if (activity.status === \"ACTIVITY_STATUS_COMPLETED\") {\n let result = activity?.result?.signRawPayloadResult;\n\n if (result) {\n const signatureHex = signatureToHex({\n r: `0x${result.r}`,\n s: `0x${result.s}`,\n v: result.v === \"00\" ? 27n : 28n,\n });\n if (signatureHex) {\n return signatureHex;\n }\n }\n }\n return \"0x\";\n};\n\nexport const signMessage = async (\n msg: string | Uint8Array,\n id: string,\n walletId: string,\n projectId: string,\n credentialId: string,\n apiUrl = API_URL\n) => {\n return await signMessageImplementation(\n hashMessage(typeof msg === \"string\" ? msg : { raw: msg }),\n id,\n walletId,\n projectId,\n credentialId,\n apiUrl\n );\n};\n\nexport const signTypedData = async (\n params: SignTypedDataParams,\n id: string,\n walletId: string,\n projectId: string,\n credentialId: string,\n apiUrl = API_URL\n) => {\n const hashToSign = hashTypedData(params);\n return await signMessageImplementation(\n hashToSign,\n id,\n walletId,\n projectId,\n credentialId,\n apiUrl\n );\n};\n\n// https://github.com/MasterKale/SimpleWebAuthn/blob/master/packages/browser/src/helpers/base64URLStringToBuffer.ts#L8\nexport function base64URLStringToBuffer(base64URLString: string): ArrayBuffer {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, \"+\").replace(/_/g, \"/\");\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, \"=\");\n\n // Convert to a binary string\n const binary = atob(padded);\n\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n\n return buffer;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n fromHex,\n type Address,\n type Chain,\n type Hash,\n type Hex,\n type HttpTransport,\n type RpcTransactionRequest,\n} from \"viem\";\nimport {\n deepHexlify,\n resolveProperties,\n type SmartAccountProviderOpts,\n getChain,\n type UserOperationCallData,\n type BatchUserOperationCallData,\n type SendUserOperationResult,\n asyncPipe,\n noOpMiddleware,\n type UserOperationStruct,\n type BytesLike,\n SmartAccountProvider,\n type AccountMiddlewareFn,\n type UserOperationOverrides,\n} from \"@alchemy/aa-core\";\nimport {\n BUNDLER_URL,\n DEFAULT_SEND_TX_MAX_RETRIES,\n DEFAULT_SEND_TX_RETRY_INTERVAL_MS,\n ENTRYPOINT_ADDRESS,\n minPriorityFeePerBidDefaults,\n} from \"./constants.js\";\nimport { KernelSmartContractAccount, isKernelAccount } from \"./account.js\";\nimport { withZeroDevGasEstimator } from \"./middleware/gas-estimator.js\";\nimport { isValidRequest } from \"./utils/ERC4337-utils.js\";\nimport { InvalidOperation } from \"./errors.js\";\nimport { withZeroDevPaymasterAndData } from \"./middleware/paymaster.js\";\nimport { createZeroDevPublicErc4337Client } from \"./client/create-client.js\";\nimport type {\n PaymasterAndBundlerProviders,\n PaymasterConfig,\n PaymasterPolicy,\n} from \"./paymaster/types.js\";\n\nexport type ZeroDevProviderConfig = {\n projectId: string;\n chain: Chain | number;\n entryPointAddress?: Address;\n rpcUrl?: string;\n account?: KernelSmartContractAccount;\n bundlerProvider?: PaymasterAndBundlerProviders;\n opts?: SmartAccountProviderOpts & {\n sendTxMaxRetries?: number;\n sendTxRetryIntervalMs?: number;\n };\n};\n\nexport enum Operation {\n Call = 0,\n DelegateCall = 1,\n}\n\ntype UserOpDataOperationTypes<T> = T extends UserOperationCallData\n ? Operation.Call | Operation.DelegateCall\n : T extends BatchUserOperationCallData\n ? Operation.Call\n : never;\n\nexport class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {\n protected projectId: string;\n protected sendTxMaxRetries: number;\n protected sendTxRetryIntervalMs: number;\n\n constructor({\n projectId,\n chain,\n entryPointAddress = ENTRYPOINT_ADDRESS,\n rpcUrl = BUNDLER_URL,\n account,\n bundlerProvider,\n opts,\n }: ZeroDevProviderConfig) {\n const _chain = typeof chain === \"number\" ? getChain(chain) : chain;\n const rpcClient = createZeroDevPublicErc4337Client({\n chain: _chain,\n rpcUrl,\n projectId,\n bundlerProvider,\n });\n\n super(rpcClient, entryPointAddress, _chain, account, {\n ...opts,\n txMaxRetries: opts?.txMaxRetries ?? 10,\n txRetryIntervalMs: opts?.txRetryIntervalMs ?? 10000,\n minPriorityFeePerBid:\n opts?.minPriorityFeePerBid ??\n minPriorityFeePerBidDefaults.get(_chain.id),\n });\n\n this.projectId = projectId;\n this.sendTxMaxRetries =\n opts?.sendTxMaxRetries ?? DEFAULT_SEND_TX_MAX_RETRIES;\n this.sendTxRetryIntervalMs =\n opts?.sendTxRetryIntervalMs ?? DEFAULT_SEND_TX_RETRY_INTERVAL_MS;\n\n withZeroDevGasEstimator(this);\n }\n\n getProjectId = (): string => this.projectId;\n\n sendTransaction = async (\n request: RpcTransactionRequest,\n operation: UserOpDataOperationTypes<UserOperationCallData> = Operation.Call\n ): Promise<Hash> => {\n if (!request.to) {\n throw new Error(\"transaction is missing to address\");\n }\n\n const overrides: UserOperationOverrides = {};\n if (request.maxFeePerGas) {\n overrides.maxFeePerGas = request.maxFeePerGas;\n }\n if (request.maxPriorityFeePerGas) {\n overrides.maxPriorityFeePerGas = request.maxPriorityFeePerGas;\n }\n\n const { hash } = await this.sendUserOperation(\n {\n target: request.to,\n data: request.data ?? \"0x\",\n value: request.value ? fromHex(request.value, \"bigint\") : 0n,\n },\n overrides,\n operation\n );\n\n return await this.waitForUserOperationTransaction(hash as Hash);\n };\n\n sendUserOperation = async <\n T extends UserOperationCallData | BatchUserOperationCallData\n >(\n data: T,\n overrides?: UserOperationOverrides,\n operation: UserOpDataOperationTypes<T> = Operation.Call as UserOpDataOperationTypes<T>\n ): Promise<SendUserOperationResult> => {\n if (!isKernelAccount(this.account)) {\n throw new Error(\"account not connected!\");\n }\n if (!this.account.validator) {\n throw new Error(\"validator not connected!\");\n }\n\n let callData: BytesLike = \"0x\";\n\n if (Array.isArray(data)) {\n if (operation === Operation.Call) {\n callData = await this.account.encodeBatchExecute(data);\n } else {\n throw InvalidOperation;\n }\n } else if (isKernelAccount(this.account)) {\n if (operation === Operation.DelegateCall) {\n callData = await this.account.encodeExecuteDelegate(\n data.target,\n data.value ?? 0n,\n data.data\n );\n } else if (operation === Operation.Call) {\n callData = await this.account.encodeExecute(\n data.target,\n data.value ?? 0n,\n data.data\n );\n } else {\n throw InvalidOperation;\n }\n } else {\n throw InvalidOperation;\n }\n\n const initCode = await this.account.getInitCode();\n let hash: string = \"\";\n let i = 0;\n const nonce = await this.account.getNonce();\n let uoStruct: UserOperationStruct;\n let request: UserOperationStruct;\n let maxFeePerGas, maxPriorityFeePerGas;\n do {\n uoStruct = await asyncPipe(\n this.dummyPaymasterDataMiddleware,\n this.feeDataGetter,\n this.paymasterDataMiddleware,\n this.gasEstimator,\n this.customMiddleware ?? noOpMiddleware,\n async (struct) => ({ ...struct, ...overrides })\n )({\n initCode,\n sender: this.getAddress(),\n nonce,\n callData,\n signature: await this.account\n .getValidator()\n .getDynamicDummySignature(await this.getAddress(), callData as Hex),\n maxFeePerGas,\n maxPriorityFeePerGas,\n } as UserOperationStruct);\n request = deepHexlify(await resolveProperties(uoStruct));\n\n if (!isValidRequest(request)) {\n // this pretty prints the uo\n throw new Error(\n `Request is missing parameters. All properties on UserOperationStruct must be set. uo: ${JSON.stringify(\n request,\n null,\n 2\n )}`\n );\n }\n\n this.account.approvePlugin();\n\n request.signature = await this.account.validator.getSignature(request);\n try {\n hash = await this.rpcClient.sendUserOperation(\n request,\n this.entryPointAddress\n );\n } catch (error: any) {\n if (this.isReplacementOpError(error) && i++ < this.sendTxMaxRetries) {\n maxFeePerGas = (BigInt(request.maxFeePerGas) * 113n) / 100n;\n maxPriorityFeePerGas =\n (BigInt(request.maxPriorityFeePerGas) * 113n) / 100n;\n\n console.log(\n `After ${\n this.sendTxRetryIntervalMs / 60000\n } minutes, resending tx with Increased Gas fees: maxFeePerGas: ${maxFeePerGas}, maxPriorityFeePerGas: ${maxPriorityFeePerGas}`\n );\n await new Promise((resolve) =>\n setTimeout(resolve, this.sendTxRetryIntervalMs)\n );\n continue;\n }\n throw this.unwrapError(error);\n }\n } while (hash === \"\");\n\n return {\n hash,\n request,\n };\n };\n\n isReplacementOpError(errorIn: any): boolean {\n if (errorIn.cause != null) {\n const failedOpMessage: string | undefined = errorIn?.cause?.message;\n return (\n (failedOpMessage?.includes(\n \"replacement op must increase maxFeePerGas and MaxPriorityFeePerGas\"\n ) ||\n failedOpMessage?.match(/.*replacement.*underpriced.*/) !== null) ??\n false\n );\n }\n return false;\n }\n\n unwrapError(errorIn: any): Error {\n if (errorIn?.cause != null) {\n let paymasterInfo: string = \"\";\n let failedOpMessage: string | undefined = errorIn?.cause?.message;\n if (failedOpMessage?.includes(\"FailedOp\") === true) {\n // TODO: better error extraction methods will be needed\n const matched = failedOpMessage.match(/FailedOp\\((.*)\\)/);\n if (matched != null) {\n const split = matched[1].split(\",\");\n paymasterInfo = `(paymaster address: ${split[1]})`;\n failedOpMessage = split[2];\n }\n }\n const error = new Error(\n `The bundler has failed to include UserOperation in a batch: ${failedOpMessage} ${paymasterInfo}`\n );\n error.stack = errorIn.stack;\n return error;\n }\n return errorIn;\n }\n\n getAccount: () => KernelSmartContractAccount = () => {\n if (!isKernelAccount(this.account)) {\n throw new Error(\"account not connected!\");\n }\n return this.account;\n };\n\n dummyPaymasterDataMiddleware: AccountMiddlewareFn = async (\n struct: UserOperationStruct\n ): Promise<UserOperationStruct> => {\n struct.paymasterAndData =\n \"0xfe7dbcab8aaee4eb67943c1e6be95b1d065985c6000000000000000000000000000000000000000000000000000001869aa31cf400000000000000000000000000000000000000000000000000000000000000007dfe2190f34af27b265bae608717cdc9368b471fc0c097ab7b4088f255b4961e57b039e7e571b15221081c5dce7bcb93459b27a3ab65d2f8a889f4a40b4022801b\";\n return struct;\n };\n\n withZeroDevPaymasterAndData(config: PaymasterConfig<PaymasterPolicy>) {\n if (!this.isConnected()) {\n throw new Error(\n \"ZeroDevProvider: account is not set, did you call `connect` first?\"\n );\n }\n\n return withZeroDevPaymasterAndData(this, config);\n }\n\n request: (args: { method: string; params?: any[] }) => Promise<any> = async (\n args\n ) => {\n const { method, params } = args;\n switch (method) {\n case \"eth_chainId\":\n return this.chain.id;\n case \"eth_sendTransaction\":\n const [tx] = params as [RpcTransactionRequest];\n return this.sendTransaction(tx);\n case \"eth_signTypedData_v4\":\n //@ts-expect-error\n return this.signTypedData(JSON.parse(params[1]))\n case \"personal_sign\":\n if (!this.account) {\n throw new Error(\"account not connected!\");\n }\n const [data, address] = params!;\n if (address !== (await this.getAddress())) {\n throw new Error(\n \"cannot sign for address that is not the current account\"\n );\n }\n // @ts-ignore\n return this.account.signWithEip6492(data);\n default:\n // @ts-ignore\n return this.rpcClient.request(args);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/provider.ts"],"names":[],"mappings":";;;AAAA,+BAQc;AACd,8CAe0B;AAC1B,iDAMwB;AACxB,6CAA2E;AAC3E,oEAAwE;AACxE,+DAA0D;AAC1D,2CAA+C;AAC/C,4DAAwE;AACxE,gEAA6E;AAoB7E,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,yCAAQ,CAAA;IACR,yDAAgB,CAAA;AAClB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAQD,MAAa,eAAgB,SAAQ,8BAAmC;IAKtE,YAAY,EACV,SAAS,EACT,KAAK,EACL,iBAAiB,GAAG,iCAAkB,EACtC,MAAM,GAAG,0BAAW,EACpB,OAAO,EACP,eAAe,EACf,IAAI,GACkB;QACtB,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,MAAM,SAAS,GAAG,IAAA,mDAAgC,EAAC;YACjD,KAAK,EAAE,MAAM;YACb,MAAM;YACN,SAAS;YACT,eAAe;SAChB,CAAC,CAAC;QAEH,KAAK,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE;YACnD,GAAG,IAAI;YACP,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE;YACtC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,KAAK;YACnD,oBAAoB,EAClB,IAAI,EAAE,oBAAoB;gBAC1B,2CAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QA5BK;;;;;WAAkB;QAClB;;;;;WAAyB;QACzB;;;;;WAA8B;QAqCxC;;;;mBAAe,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS;WAAC;QAE5C;;;;mBAAkB,KAAK,EACrB,OAA8B,EAC9B,YAA6D,SAAS,CAAC,IAAI,EAC5D,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;iBACtD;gBAED,MAAM,SAAS,GAA2B,EAAE,CAAC;gBAC7C,IAAI,OAAO,CAAC,YAAY,EAAE;oBACxB,SAAS,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;iBAC/C;gBACD,IAAI,OAAO,CAAC,oBAAoB,EAAE;oBAChC,SAAS,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;iBAC/D;gBAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC3C;oBACE,MAAM,EAAE,OAAO,CAAC,EAAE;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,cAAO,EAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;iBAC7D,EACD,SAAS,EACT,SAAS,CACV,CAAC;gBAEF,OAAO,MAAM,IAAI,CAAC,+BAA+B,CAAC,IAAY,CAAC,CAAC;YAClE,CAAC;WAAC;QAEF;;;;mBAAoB,KAAK,EAGvB,IAAO,EACP,SAAkC,EAClC,YAAyC,SAAS,CAAC,IAAmC,EACpD,EAAE;gBACpC,IAAI,CAAC,IAAA,4BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;iBAC3C;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;iBAC7C;gBAED,IAAI,QAAQ,GAAc,IAAI,CAAC;gBAE/B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;wBAChC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;qBACxD;yBAAM;wBACL,MAAM,4BAAgB,CAAC;qBACxB;iBACF;qBAAM,IAAI,IAAA,4BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACxC,IAAI,SAAS,KAAK,SAAS,CAAC,YAAY,EAAE;wBACxC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CACjD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,IAAI,EAAE,EAChB,IAAI,CAAC,IAAI,CACV,CAAC;qBACH;yBAAM,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;wBACvC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CACzC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,IAAI,EAAE,EAChB,IAAI,CAAC,IAAI,CACV,CAAC;qBACH;yBAAM;wBACL,MAAM,4BAAgB,CAAC;qBACxB;iBACF;qBAAM;oBACL,MAAM,4BAAgB,CAAC;iBACxB;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAClD,IAAI,IAAI,GAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5C,IAAI,QAA6B,CAAC;gBAClC,IAAI,OAA4B,CAAC;gBACjC,IAAI,YAAY,EAAE,oBAAoB,CAAC;gBACvC,GAAG;oBACD,QAAQ,GAAG,MAAM,IAAA,mBAAS,EACxB,IAAI,CAAC,4BAA4B,EACjC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,IAAI,wBAAc,EACvC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,CAChD,CAAC;wBACA,QAAQ;wBACR,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;wBACzB,KAAK;wBACL,QAAQ;wBACR,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO;6BAC1B,YAAY,EAAE;6BACd,wBAAwB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,QAAe,CAAC;wBACrE,YAAY;wBACZ,oBAAoB;qBACE,CAAC,CAAC;oBAC1B,OAAO,GAAG,IAAA,qBAAW,EAAC,MAAM,IAAA,2BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;oBAEzD,IAAI,CAAC,IAAA,iCAAc,EAAC,OAAO,CAAC,EAAE;wBAE5B,MAAM,IAAI,KAAK,CACb,yFAAyF,IAAI,CAAC,SAAS,CACrG,OAAO,EACP,IAAI,EACJ,CAAC,CACF,EAAE,CACJ,CAAC;qBACH;oBAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;oBAE7B,OAAO,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACvE,IAAI;wBACF,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC3C,OAAO,EACP,IAAI,CAAC,iBAAiB,CACvB,CAAC;qBACH;oBAAC,OAAO,KAAU,EAAE;wBACnB,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE;4BACnE,YAAY,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;4BAC5D,oBAAoB;gCAClB,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;4BAEvD,OAAO,CAAC,GAAG,CACT,SACE,IAAI,CAAC,qBAAqB,GAAG,KAC/B,iEAAiE,YAAY,2BAA2B,oBAAoB,EAAE,CAC/H,CAAC;4BACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAChD,CAAC;4BACF,SAAS;yBACV;wBACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC/B;iBACF,QAAQ,IAAI,KAAK,EAAE,EAAE;gBAEtB,OAAO;oBACL,IAAI;oBACJ,OAAO;iBACR,CAAC;YACJ,CAAC;WAAC;QAsCF;;;;mBAA+C,GAAG,EAAE;gBAClD,IAAI,CAAC,IAAA,4BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;iBAC3C;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;WAAC;QAEF;;;;mBAAoD,KAAK,EACvD,MAA2B,EACG,EAAE;gBAChC,MAAM,CAAC,gBAAgB;oBACrB,8SAA8S,CAAC;gBACjT,OAAO,MAAM,CAAC;YAChB,CAAC;WAAC;QAYF;;;;mBAAsE,KAAK,EACzE,IAAI,EACJ,EAAE;gBACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBAChC,QAAQ,MAAM,EAAE;oBACd,KAAK,aAAa;wBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,KAAK,qBAAqB;wBACxB,MAAM,CAAC,EAAE,CAAC,GAAG,MAAiC,CAAC;wBAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAClC,KAAK,sBAAsB;wBAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,KAAK,eAAe;wBAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;4BACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;yBAC3C;wBACD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,MAAO,CAAC;wBAChC,IAAI,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;4BACzC,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;yBACH;wBAED,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC5C;wBAEE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACvC;YACH,CAAC;WAAC;QArPA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB;YACnB,IAAI,EAAE,gBAAgB,IAAI,0CAA2B,CAAC;QACxD,IAAI,CAAC,qBAAqB;YACxB,IAAI,EAAE,qBAAqB,IAAI,gDAAiC,CAAC;QAEnE,IAAA,0CAAuB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAoJD,oBAAoB,CAAC,OAAY;QAC/B,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YACzB,MAAM,eAAe,GAAuB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;YACpE,OAAO,CACL,CAAC,eAAe,EAAE,QAAQ,CACxB,oEAAoE,CACrE;gBACC,eAAe,EAAE,KAAK,CAAC,8BAA8B,CAAC,KAAK,IAAI,CAAC;gBAClE,KAAK,CACN,CAAC;SACH;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,OAAY;QACtB,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;YAC1B,IAAI,aAAa,GAAW,EAAE,CAAC;YAC/B,IAAI,eAAe,GAAuB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;YAClE,IAAI,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAElD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpC,aAAa,GAAG,uBAAuB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;oBACnD,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC5B;aACF;YACD,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,+DAA+D,eAAe,IAAI,aAAa,EAAE,CAClG,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAiBD,2BAA2B,CAAC,MAAwC;QAClE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;SACH;QAED,OAAO,IAAA,0CAA2B,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CAgCF;AArRD,0CAqRC","sourcesContent":["import {\n fromHex,\n type Address,\n type Chain,\n type Hash,\n type Hex,\n type HttpTransport,\n type RpcTransactionRequest,\n} from \"viem\";\nimport {\n deepHexlify,\n resolveProperties,\n type SmartAccountProviderOpts,\n getChain,\n type UserOperationCallData,\n type BatchUserOperationCallData,\n type SendUserOperationResult,\n asyncPipe,\n noOpMiddleware,\n type UserOperationStruct,\n type BytesLike,\n SmartAccountProvider,\n type AccountMiddlewareFn,\n type UserOperationOverrides,\n} from \"@alchemy/aa-core\";\nimport {\n BUNDLER_URL,\n DEFAULT_SEND_TX_MAX_RETRIES,\n DEFAULT_SEND_TX_RETRY_INTERVAL_MS,\n ENTRYPOINT_ADDRESS,\n minPriorityFeePerBidDefaults,\n} from \"./constants.js\";\nimport { KernelSmartContractAccount, isKernelAccount } from \"./account.js\";\nimport { withZeroDevGasEstimator } from \"./middleware/gas-estimator.js\";\nimport { isValidRequest } from \"./utils/ERC4337-utils.js\";\nimport { InvalidOperation } from \"./errors.js\";\nimport { withZeroDevPaymasterAndData } from \"./middleware/paymaster.js\";\nimport { createZeroDevPublicErc4337Client } from \"./client/create-client.js\";\nimport type {\n PaymasterAndBundlerProviders,\n PaymasterConfig,\n PaymasterPolicy,\n} from \"./paymaster/types.js\";\n\nexport type ZeroDevProviderConfig = {\n projectId: string;\n chain: Chain | number;\n entryPointAddress?: Address;\n rpcUrl?: string;\n account?: KernelSmartContractAccount;\n bundlerProvider?: PaymasterAndBundlerProviders;\n opts?: SmartAccountProviderOpts & {\n sendTxMaxRetries?: number;\n sendTxRetryIntervalMs?: number;\n };\n};\n\nexport enum Operation {\n Call = 0,\n DelegateCall = 1,\n}\n\ntype UserOpDataOperationTypes<T> = T extends UserOperationCallData\n ? Operation.Call | Operation.DelegateCall\n : T extends BatchUserOperationCallData\n ? Operation.Call\n : never;\n\nexport class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {\n protected projectId: string;\n protected sendTxMaxRetries: number;\n protected sendTxRetryIntervalMs: number;\n\n constructor({\n projectId,\n chain,\n entryPointAddress = ENTRYPOINT_ADDRESS,\n rpcUrl = BUNDLER_URL,\n account,\n bundlerProvider,\n opts,\n }: ZeroDevProviderConfig) {\n const _chain = typeof chain === \"number\" ? getChain(chain) : chain;\n const rpcClient = createZeroDevPublicErc4337Client({\n chain: _chain,\n rpcUrl,\n projectId,\n bundlerProvider,\n });\n\n super(rpcClient, entryPointAddress, _chain, account, {\n ...opts,\n txMaxRetries: opts?.txMaxRetries ?? 10,\n txRetryIntervalMs: opts?.txRetryIntervalMs ?? 10000,\n minPriorityFeePerBid:\n opts?.minPriorityFeePerBid ??\n minPriorityFeePerBidDefaults.get(_chain.id),\n });\n\n this.projectId = projectId;\n this.sendTxMaxRetries =\n opts?.sendTxMaxRetries ?? DEFAULT_SEND_TX_MAX_RETRIES;\n this.sendTxRetryIntervalMs =\n opts?.sendTxRetryIntervalMs ?? DEFAULT_SEND_TX_RETRY_INTERVAL_MS;\n\n withZeroDevGasEstimator(this);\n }\n\n getProjectId = (): string => this.projectId;\n\n sendTransaction = async (\n request: RpcTransactionRequest,\n operation: UserOpDataOperationTypes<UserOperationCallData> = Operation.Call\n ): Promise<Hash> => {\n if (!request.to) {\n throw new Error(\"transaction is missing to address\");\n }\n\n const overrides: UserOperationOverrides = {};\n if (request.maxFeePerGas) {\n overrides.maxFeePerGas = request.maxFeePerGas;\n }\n if (request.maxPriorityFeePerGas) {\n overrides.maxPriorityFeePerGas = request.maxPriorityFeePerGas;\n }\n\n const { hash } = await this.sendUserOperation(\n {\n target: request.to,\n data: request.data ?? \"0x\",\n value: request.value ? fromHex(request.value, \"bigint\") : 0n,\n },\n overrides,\n operation\n );\n\n return await this.waitForUserOperationTransaction(hash as Hash);\n };\n\n sendUserOperation = async <\n T extends UserOperationCallData | BatchUserOperationCallData\n >(\n data: T,\n overrides?: UserOperationOverrides,\n operation: UserOpDataOperationTypes<T> = Operation.Call as UserOpDataOperationTypes<T>\n ): Promise<SendUserOperationResult> => {\n if (!isKernelAccount(this.account)) {\n throw new Error(\"account not connected!\");\n }\n if (!this.account.validator) {\n throw new Error(\"validator not connected!\");\n }\n\n let callData: BytesLike = \"0x\";\n\n if (Array.isArray(data)) {\n if (operation === Operation.Call) {\n callData = await this.account.encodeBatchExecute(data);\n } else {\n throw InvalidOperation;\n }\n } else if (isKernelAccount(this.account)) {\n if (operation === Operation.DelegateCall) {\n callData = await this.account.encodeExecuteDelegate(\n data.target,\n data.value ?? 0n,\n data.data\n );\n } else if (operation === Operation.Call) {\n callData = await this.account.encodeExecute(\n data.target,\n data.value ?? 0n,\n data.data\n );\n } else {\n throw InvalidOperation;\n }\n } else {\n throw InvalidOperation;\n }\n\n const initCode = await this.account.getInitCode();\n let hash: string = \"\";\n let i = 0;\n const nonce = await this.account.getNonce();\n let uoStruct: UserOperationStruct;\n let request: UserOperationStruct;\n let maxFeePerGas, maxPriorityFeePerGas;\n do {\n uoStruct = await asyncPipe(\n this.dummyPaymasterDataMiddleware,\n this.feeDataGetter,\n this.paymasterDataMiddleware,\n this.gasEstimator,\n this.customMiddleware ?? noOpMiddleware,\n async (struct) => ({ ...struct, ...overrides })\n )({\n initCode,\n sender: this.getAddress(),\n nonce,\n callData,\n signature: await this.account\n .getValidator()\n .getDynamicDummySignature(await this.getAddress(), callData as Hex),\n maxFeePerGas,\n maxPriorityFeePerGas,\n } as UserOperationStruct);\n request = deepHexlify(await resolveProperties(uoStruct));\n\n if (!isValidRequest(request)) {\n // this pretty prints the uo\n throw new Error(\n `Request is missing parameters. All properties on UserOperationStruct must be set. uo: ${JSON.stringify(\n request,\n null,\n 2\n )}`\n );\n }\n\n this.account.approvePlugin();\n\n request.signature = await this.account.validator.getSignature(request);\n try {\n hash = await this.rpcClient.sendUserOperation(\n request,\n this.entryPointAddress\n );\n } catch (error: any) {\n if (this.isReplacementOpError(error) && i++ < this.sendTxMaxRetries) {\n maxFeePerGas = (BigInt(request.maxFeePerGas) * 113n) / 100n;\n maxPriorityFeePerGas =\n (BigInt(request.maxPriorityFeePerGas) * 113n) / 100n;\n\n console.log(\n `After ${\n this.sendTxRetryIntervalMs / 60000\n } minutes, resending tx with Increased Gas fees: maxFeePerGas: ${maxFeePerGas}, maxPriorityFeePerGas: ${maxPriorityFeePerGas}`\n );\n await new Promise((resolve) =>\n setTimeout(resolve, this.sendTxRetryIntervalMs)\n );\n continue;\n }\n throw this.unwrapError(error);\n }\n } while (hash === \"\");\n\n return {\n hash,\n request,\n };\n };\n\n isReplacementOpError(errorIn: any): boolean {\n if (errorIn.cause != null) {\n const failedOpMessage: string | undefined = errorIn?.cause?.message;\n return (\n (failedOpMessage?.includes(\n \"replacement op must increase maxFeePerGas and MaxPriorityFeePerGas\"\n ) ||\n failedOpMessage?.match(/.*replacement.*underpriced.*/) !== null) ??\n false\n );\n }\n return false;\n }\n\n unwrapError(errorIn: any): Error {\n if (errorIn?.cause != null) {\n let paymasterInfo: string = \"\";\n let failedOpMessage: string | undefined = errorIn?.cause?.message;\n if (failedOpMessage?.includes(\"FailedOp\") === true) {\n // TODO: better error extraction methods will be needed\n const matched = failedOpMessage.match(/FailedOp\\((.*)\\)/);\n if (matched != null) {\n const split = matched[1].split(\",\");\n paymasterInfo = `(paymaster address: ${split[1]})`;\n failedOpMessage = split[2];\n }\n }\n const error = new Error(\n `The bundler has failed to include UserOperation in a batch: ${failedOpMessage} ${paymasterInfo}`\n );\n error.stack = errorIn.stack;\n return error;\n }\n return errorIn;\n }\n\n getAccount: () => KernelSmartContractAccount = () => {\n if (!isKernelAccount(this.account)) {\n throw new Error(\"account not connected!\");\n }\n return this.account;\n };\n\n dummyPaymasterDataMiddleware: AccountMiddlewareFn = async (\n struct: UserOperationStruct\n ): Promise<UserOperationStruct> => {\n struct.paymasterAndData =\n \"0xfe7dbcab8aaee4eb67943c1e6be95b1d065985c6000000000000000000000000000000000000000000000000000001869aa31cf400000000000000000000000000000000000000000000000000000000000000007dfe2190f34af27b265bae608717cdc9368b471fc0c097ab7b4088f255b4961e57b039e7e571b15221081c5dce7bcb93459b27a3ab65d2f8a889f4a40b4022801b\";\n return struct;\n };\n\n withZeroDevPaymasterAndData(config: PaymasterConfig<PaymasterPolicy>) {\n if (!this.isConnected()) {\n throw new Error(\n \"ZeroDevProvider: account is not set, did you call `connect` first?\"\n );\n }\n\n return withZeroDevPaymasterAndData(this, config);\n }\n\n request: (args: { method: string; params?: any[] }) => Promise<any> = async (\n args\n ) => {\n const { method, params } = args;\n switch (method) {\n case \"eth_chainId\":\n return this.chain.id;\n case \"eth_sendTransaction\":\n const [tx] = params as [RpcTransactionRequest];\n return this.sendTransaction(tx);\n case \"eth_signTypedData_v4\":\n //@ts-expect-error\n return this.signTypedData(JSON.parse(params[1]));\n case \"personal_sign\":\n if (!this.account) {\n throw new Error(\"account not connected!\");\n }\n const [data, address] = params!;\n if (address !== (await this.getAddress())) {\n throw new Error(\n \"cannot sign for address that is not the current account\"\n );\n }\n // @ts-ignore\n return this.account.signWithEip6492(data);\n default:\n // @ts-ignore\n return this.rpcClient.request(args);\n }\n };\n}\n"]}
|
|
@@ -44,10 +44,12 @@ export declare abstract class KernelBaseValidator {
|
|
|
44
44
|
abstract isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
|
|
45
45
|
shouldDelegateViaFallback(): boolean;
|
|
46
46
|
getPluginValidatorData(): ValidatorPluginData;
|
|
47
|
+
getNonceKey(): bigint;
|
|
47
48
|
getDynamicDummySignature(kernelAccountAddress: Address, calldata: Hex): Promise<Hex>;
|
|
48
49
|
setEnableSignature(enableSignature: Hex): void;
|
|
49
50
|
getEnableSignature(): Hex | undefined;
|
|
50
51
|
getAddress(): Hex;
|
|
52
|
+
getPublicClient(): PublicClient<Transport, Chain>;
|
|
51
53
|
approveExecutor(kernel: Address, selector: Hex, executor: Address, validUntil: number, validAfter: number, validator: KernelBaseValidator): Promise<Hex>;
|
|
52
54
|
resolveValidatorMode(kernelAccountAddress: Address, callData: Hex): Promise<ValidatorMode>;
|
|
53
55
|
getSignature(userOp: UserOperationRequest): Promise<Hex>;
|
|
@@ -115,6 +115,9 @@ class KernelBaseValidator {
|
|
|
115
115
|
validUntil: this.validUntil,
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
|
+
getNonceKey() {
|
|
119
|
+
return 0n;
|
|
120
|
+
}
|
|
118
121
|
async getDynamicDummySignature(kernelAccountAddress, calldata) {
|
|
119
122
|
const dummyECDSASig = "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
|
|
120
123
|
const validatorMode = await this.resolveValidatorMode(kernelAccountAddress, calldata);
|
|
@@ -151,6 +154,12 @@ class KernelBaseValidator {
|
|
|
151
154
|
getAddress() {
|
|
152
155
|
return this.validatorAddress;
|
|
153
156
|
}
|
|
157
|
+
getPublicClient() {
|
|
158
|
+
if (!this.publicClient) {
|
|
159
|
+
throw new Error("Validator uninitialized: PublicClient missing");
|
|
160
|
+
}
|
|
161
|
+
return this.publicClient;
|
|
162
|
+
}
|
|
154
163
|
async approveExecutor(kernel, selector, executor, validUntil, validAfter, validator) {
|
|
155
164
|
if (!this.chain) {
|
|
156
165
|
throw new Error("Validator uninitialized");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/base.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type SignTypedDataParams,\n type SmartAccountSigner,\n type UserOperationRequest,\n} from \"@alchemy/aa-core\";\nimport {\n concat,\n type Chain,\n type Hex,\n pad,\n toHex,\n type Address,\n concatHex,\n hexToBigInt,\n type PublicClient,\n type Transport,\n createPublicClient,\n http,\n} from \"viem\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport {\n BUNDLER_URL,\n CHAIN_ID_TO_NODE,\n ECDSA_VALIDATOR_ADDRESS,\n ENTRYPOINT_ADDRESS,\n} from \"../constants.js\";\nimport { polygonMumbai } from \"viem/chains\";\n\nexport enum ValidatorMode {\n sudo = \"0x00000000\",\n plugin = \"0x00000001\",\n enable = \"0x00000002\",\n}\n\nexport interface KernelBaseValidatorParams {\n projectId: string;\n validatorAddress?: Hex;\n mode?: ValidatorMode;\n chain?: Chain;\n entryPointAddress?: Address;\n enableSignature?: Hex;\n validUntil?: number;\n validAfter?: number;\n executor?: Address;\n selector?: Hex;\n rpcUrl?: string;\n}\n\nexport type ValidatorPluginData = Required<\n Pick<\n KernelBaseValidatorParams,\n \"executor\" | \"selector\" | \"validAfter\" | \"validUntil\"\n >\n>;\n\n//Kernel wallet implementation separates out validation and execution phase. It allows you to have\n// custom wrapper logic for the validation phase in addition to signature of choice.\nexport abstract class KernelBaseValidator {\n readonly validatorAddress: Hex;\n mode: ValidatorMode;\n protected projectId: string;\n protected chain?: Chain;\n protected entryPointAddress: Address;\n protected enableSignature?: Hex;\n protected validUntil: number;\n protected validAfter: number;\n protected executor?: Address;\n protected selector?: Hex;\n protected rpcUrl?: string;\n publicClient?: PublicClient<Transport, Chain>;\n\n constructor(params: KernelBaseValidatorParams) {\n this.projectId = params.projectId;\n this.validatorAddress = params.validatorAddress ?? ECDSA_VALIDATOR_ADDRESS;\n this.mode = params.mode ?? ValidatorMode.sudo;\n this.entryPointAddress = params.entryPointAddress ?? ENTRYPOINT_ADDRESS;\n this.enableSignature = params.enableSignature;\n this.validUntil = params.validUntil ?? 0;\n this.validAfter = params.validAfter ?? 0;\n this.executor = params.executor;\n this.selector = params.selector;\n this.chain = params.chain;\n this.rpcUrl = params.rpcUrl ?? BUNDLER_URL;\n this.publicClient = createPublicClient({\n transport: http(CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]),\n chain: this.chain ?? polygonMumbai,\n });\n }\n\n abstract encodeEnable(enableData: Hex): Hex;\n\n abstract encodeDisable(enableData: Hex): Hex;\n\n abstract getEnableData(): Promise<Hex>;\n\n abstract signMessage(message: Uint8Array | string | Hex): Promise<Hex>;\n\n abstract signTypedData(params: SignTypedDataParams): Promise<Hex>;\n\n abstract signUserOp(userOp: UserOperationRequest): Promise<Hex>;\n\n abstract signer(): Promise<SmartAccountSigner>;\n\n abstract getDummyUserOpSignature(callData?: Hex): Promise<Hex>;\n\n abstract isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean>;\n\n shouldDelegateViaFallback(): boolean {\n return true;\n }\n\n getPluginValidatorData(): ValidatorPluginData {\n if (!this.selector || !this.executor) {\n throw Error(\"Plugin Validator data params uninitialised\");\n }\n return {\n selector: this.selector,\n executor: this.executor,\n validAfter: this.validAfter,\n validUntil: this.validUntil,\n };\n }\n\n async getDynamicDummySignature(\n kernelAccountAddress: Address,\n calldata: Hex\n ): Promise<Hex> {\n const dummyECDSASig =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\n const validatorMode = await this.resolveValidatorMode(\n kernelAccountAddress,\n calldata\n );\n if (validatorMode === ValidatorMode.enable) {\n const enableData = await this.getEnableData();\n const enableDataLength = enableData.length / 2 - 1;\n const enableSigLength = 65;\n const staticDummySig = concatHex([\n \"0x000000000000000000000000\",\n this.getAddress(),\n this.executor!,\n ]);\n\n return concatHex([\n ValidatorMode.enable,\n staticDummySig,\n pad(toHex(enableDataLength), { size: 32 }),\n enableData,\n pad(toHex(enableSigLength), { size: 32 }),\n dummyECDSASig,\n await this.getDummyUserOpSignature(calldata),\n ]);\n }\n return concatHex([\n validatorMode,\n await this.getDummyUserOpSignature(calldata),\n ]);\n }\n\n setEnableSignature(enableSignature: Hex) {\n this.enableSignature = enableSignature;\n }\n\n getEnableSignature(): Hex | undefined {\n return this.enableSignature;\n }\n\n getAddress(): Hex {\n return this.validatorAddress;\n }\n\n async approveExecutor(\n kernel: Address,\n selector: Hex,\n executor: Address,\n validUntil: number,\n validAfter: number,\n validator: KernelBaseValidator\n ): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const sender = kernel;\n const signer = await this.signer();\n const ownerSig = await signer.signTypedData({\n domain: {\n name: \"Kernel\",\n version: \"0.2.1\",\n chainId: this.chain.id,\n verifyingContract: sender,\n },\n types: {\n ValidatorApproved: [\n { name: \"sig\", type: \"bytes4\" },\n { name: \"validatorData\", type: \"uint256\" },\n { name: \"executor\", type: \"address\" },\n { name: \"enableData\", type: \"bytes\" },\n ],\n },\n message: {\n sig: selector as Hex,\n validatorData: hexToBigInt(\n concatHex([\n pad(toHex(validUntil), { size: 6 }),\n pad(toHex(validAfter), { size: 6 }),\n validator.getAddress(),\n ]),\n { size: 32 }\n ),\n executor: executor as Address,\n enableData: await validator.getEnableData(),\n },\n primaryType: \"ValidatorApproved\",\n });\n return ownerSig;\n }\n\n async resolveValidatorMode(\n kernelAccountAddress: Address,\n callData: Hex\n ): Promise<ValidatorMode> {\n if (!this.chain || !this.publicClient) {\n throw new Error(\"Validator uninitialized\");\n }\n\n let mode: ValidatorMode;\n try {\n const defaultValidatorAddress = await this.publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n if (\n defaultValidatorAddress?.toLowerCase() ===\n this.validatorAddress.toLowerCase() ||\n this.mode === ValidatorMode.sudo\n ) {\n mode = ValidatorMode.sudo;\n } else if (\n await this.isPluginEnabled(\n kernelAccountAddress,\n callData.toString().slice(0, 10) as Hex\n )\n ) {\n mode = ValidatorMode.plugin;\n } else {\n mode = ValidatorMode.enable;\n }\n } catch (error) {\n if (this.mode === ValidatorMode.plugin) {\n mode = ValidatorMode.enable;\n } else {\n mode = this.mode;\n }\n }\n return mode;\n }\n\n async getSignature(userOp: UserOperationRequest): Promise<Hex> {\n const mode = await this.resolveValidatorMode(\n userOp.sender,\n userOp.callData\n );\n if (mode === ValidatorMode.sudo || mode === ValidatorMode.plugin) {\n return concatHex([this.mode, await this.signUserOp(userOp)]);\n } else {\n const enableData = await this.getEnableData();\n const enableDataLength = enableData.length / 2 - 1;\n const enableSignature = this.getEnableSignature();\n if (!enableSignature) {\n throw new Error(\"Enable signature not set\");\n }\n return concat([\n mode, // 4 bytes 0 - 4\n pad(toHex(this.validUntil), { size: 6 }), // 6 bytes 4 - 10\n pad(toHex(this.validAfter), { size: 6 }), // 6 bytes 10 - 16\n pad(this.validatorAddress, { size: 20 }), // 20 bytes 16 - 36\n pad(this.executor!, { size: 20 }), // 20 bytes 36 - 56\n pad(toHex(enableDataLength), { size: 32 }), // 32 bytes 56 - 88\n enableData, // 88 - 88 + enableData.length\n pad(toHex(enableSignature.length / 2 - 1), { size: 32 }), // 32 bytes 88 + enableData.length - 120 + enableData.length\n enableSignature, // 120 + enableData.length - 120 + enableData.length + enableSignature.length\n await this.signUserOp(userOp), // 120 + enableData.length + enableSignature.length - 120 + enableData.length + enableSignature.length + userOperation.length\n ]);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/base.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type SignTypedDataParams,\n type SmartAccountSigner,\n type UserOperationRequest,\n} from \"@alchemy/aa-core\";\nimport {\n concat,\n type Chain,\n type Hex,\n pad,\n toHex,\n type Address,\n concatHex,\n hexToBigInt,\n type PublicClient,\n type Transport,\n createPublicClient,\n http,\n} from \"viem\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport {\n BUNDLER_URL,\n CHAIN_ID_TO_NODE,\n ECDSA_VALIDATOR_ADDRESS,\n ENTRYPOINT_ADDRESS,\n} from \"../constants.js\";\nimport { polygonMumbai } from \"viem/chains\";\n\nexport enum ValidatorMode {\n sudo = \"0x00000000\",\n plugin = \"0x00000001\",\n enable = \"0x00000002\",\n}\n\nexport interface KernelBaseValidatorParams {\n projectId: string;\n validatorAddress?: Hex;\n mode?: ValidatorMode;\n chain?: Chain;\n entryPointAddress?: Address;\n enableSignature?: Hex;\n validUntil?: number;\n validAfter?: number;\n executor?: Address;\n selector?: Hex;\n rpcUrl?: string;\n}\n\nexport type ValidatorPluginData = Required<\n Pick<\n KernelBaseValidatorParams,\n \"executor\" | \"selector\" | \"validAfter\" | \"validUntil\"\n >\n>;\n\n//Kernel wallet implementation separates out validation and execution phase. It allows you to have\n// custom wrapper logic for the validation phase in addition to signature of choice.\nexport abstract class KernelBaseValidator {\n readonly validatorAddress: Hex;\n mode: ValidatorMode;\n protected projectId: string;\n protected chain?: Chain;\n protected entryPointAddress: Address;\n protected enableSignature?: Hex;\n protected validUntil: number;\n protected validAfter: number;\n protected executor?: Address;\n protected selector?: Hex;\n protected rpcUrl?: string;\n publicClient?: PublicClient<Transport, Chain>;\n\n constructor(params: KernelBaseValidatorParams) {\n this.projectId = params.projectId;\n this.validatorAddress = params.validatorAddress ?? ECDSA_VALIDATOR_ADDRESS;\n this.mode = params.mode ?? ValidatorMode.sudo;\n this.entryPointAddress = params.entryPointAddress ?? ENTRYPOINT_ADDRESS;\n this.enableSignature = params.enableSignature;\n this.validUntil = params.validUntil ?? 0;\n this.validAfter = params.validAfter ?? 0;\n this.executor = params.executor;\n this.selector = params.selector;\n this.chain = params.chain;\n this.rpcUrl = params.rpcUrl ?? BUNDLER_URL;\n this.publicClient = createPublicClient({\n transport: http(CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]),\n chain: this.chain ?? polygonMumbai,\n });\n }\n\n abstract encodeEnable(enableData: Hex): Hex;\n\n abstract encodeDisable(enableData: Hex): Hex;\n\n abstract getEnableData(): Promise<Hex>;\n\n abstract signMessage(message: Uint8Array | string | Hex): Promise<Hex>;\n\n abstract signTypedData(params: SignTypedDataParams): Promise<Hex>;\n\n abstract signUserOp(userOp: UserOperationRequest): Promise<Hex>;\n\n abstract signer(): Promise<SmartAccountSigner>;\n\n abstract getDummyUserOpSignature(callData?: Hex): Promise<Hex>;\n\n abstract isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean>;\n\n shouldDelegateViaFallback(): boolean {\n return true;\n }\n\n getPluginValidatorData(): ValidatorPluginData {\n if (!this.selector || !this.executor) {\n throw Error(\"Plugin Validator data params uninitialised\");\n }\n return {\n selector: this.selector,\n executor: this.executor,\n validAfter: this.validAfter,\n validUntil: this.validUntil,\n };\n }\n\n getNonceKey(): bigint {\n return 0n;\n }\n\n async getDynamicDummySignature(\n kernelAccountAddress: Address,\n calldata: Hex\n ): Promise<Hex> {\n const dummyECDSASig =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\n const validatorMode = await this.resolveValidatorMode(\n kernelAccountAddress,\n calldata\n );\n if (validatorMode === ValidatorMode.enable) {\n const enableData = await this.getEnableData();\n const enableDataLength = enableData.length / 2 - 1;\n const enableSigLength = 65;\n const staticDummySig = concatHex([\n \"0x000000000000000000000000\",\n this.getAddress(),\n this.executor!,\n ]);\n\n return concatHex([\n ValidatorMode.enable,\n staticDummySig,\n pad(toHex(enableDataLength), { size: 32 }),\n enableData,\n pad(toHex(enableSigLength), { size: 32 }),\n dummyECDSASig,\n await this.getDummyUserOpSignature(calldata),\n ]);\n }\n return concatHex([\n validatorMode,\n await this.getDummyUserOpSignature(calldata),\n ]);\n }\n\n setEnableSignature(enableSignature: Hex) {\n this.enableSignature = enableSignature;\n }\n\n getEnableSignature(): Hex | undefined {\n return this.enableSignature;\n }\n\n getAddress(): Hex {\n return this.validatorAddress;\n }\n\n getPublicClient(): PublicClient<Transport, Chain> {\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n return this.publicClient;\n }\n\n async approveExecutor(\n kernel: Address,\n selector: Hex,\n executor: Address,\n validUntil: number,\n validAfter: number,\n validator: KernelBaseValidator\n ): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const sender = kernel;\n const signer = await this.signer();\n const ownerSig = await signer.signTypedData({\n domain: {\n name: \"Kernel\",\n version: \"0.2.1\",\n chainId: this.chain.id,\n verifyingContract: sender,\n },\n types: {\n ValidatorApproved: [\n { name: \"sig\", type: \"bytes4\" },\n { name: \"validatorData\", type: \"uint256\" },\n { name: \"executor\", type: \"address\" },\n { name: \"enableData\", type: \"bytes\" },\n ],\n },\n message: {\n sig: selector as Hex,\n validatorData: hexToBigInt(\n concatHex([\n pad(toHex(validUntil), { size: 6 }),\n pad(toHex(validAfter), { size: 6 }),\n validator.getAddress(),\n ]),\n { size: 32 }\n ),\n executor: executor as Address,\n enableData: await validator.getEnableData(),\n },\n primaryType: \"ValidatorApproved\",\n });\n return ownerSig;\n }\n\n async resolveValidatorMode(\n kernelAccountAddress: Address,\n callData: Hex\n ): Promise<ValidatorMode> {\n if (!this.chain || !this.publicClient) {\n throw new Error(\"Validator uninitialized\");\n }\n\n let mode: ValidatorMode;\n try {\n const defaultValidatorAddress = await this.publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n if (\n defaultValidatorAddress?.toLowerCase() ===\n this.validatorAddress.toLowerCase() ||\n this.mode === ValidatorMode.sudo\n ) {\n mode = ValidatorMode.sudo;\n } else if (\n await this.isPluginEnabled(\n kernelAccountAddress,\n callData.toString().slice(0, 10) as Hex\n )\n ) {\n mode = ValidatorMode.plugin;\n } else {\n mode = ValidatorMode.enable;\n }\n } catch (error) {\n if (this.mode === ValidatorMode.plugin) {\n mode = ValidatorMode.enable;\n } else {\n mode = this.mode;\n }\n }\n return mode;\n }\n\n async getSignature(userOp: UserOperationRequest): Promise<Hex> {\n const mode = await this.resolveValidatorMode(\n userOp.sender,\n userOp.callData\n );\n if (mode === ValidatorMode.sudo || mode === ValidatorMode.plugin) {\n return concatHex([this.mode, await this.signUserOp(userOp)]);\n } else {\n const enableData = await this.getEnableData();\n const enableDataLength = enableData.length / 2 - 1;\n const enableSignature = this.getEnableSignature();\n if (!enableSignature) {\n throw new Error(\"Enable signature not set\");\n }\n return concat([\n mode, // 4 bytes 0 - 4\n pad(toHex(this.validUntil), { size: 6 }), // 6 bytes 4 - 10\n pad(toHex(this.validAfter), { size: 6 }), // 6 bytes 10 - 16\n pad(this.validatorAddress, { size: 20 }), // 20 bytes 16 - 36\n pad(this.executor!, { size: 20 }), // 20 bytes 36 - 56\n pad(toHex(enableDataLength), { size: 32 }), // 32 bytes 56 - 88\n enableData, // 88 - 88 + enableData.length\n pad(toHex(enableSignature.length / 2 - 1), { size: 32 }), // 32 bytes 88 + enableData.length - 120 + enableData.length\n enableSignature, // 120 + enableData.length - 120 + enableData.length + enableSignature.length\n await this.signUserOp(userOp), // 120 + enableData.length + enableSignature.length - 120 + enableData.length + enableSignature.length + userOperation.length\n ]);\n }\n }\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ECDSAValidator } from "./ecdsa-validator.js";
|
|
2
2
|
import { ERC165SessionKeyValidator } from "./erc165-session-key-validator.js";
|
|
3
3
|
import { KillSwitchValidator } from "./kill-switch-validator.js";
|
|
4
|
+
import { RecoveryValidator } from "./recovery-validator.js";
|
|
4
5
|
import { SessionKeyValidator } from "./session-key-validator.js";
|
|
5
6
|
import type { ValidatorMap } from "./types.js";
|
|
6
7
|
export declare const Validators: ValidatorMap;
|
|
7
|
-
export { ECDSAValidator, KillSwitchValidator, ERC165SessionKeyValidator, SessionKeyValidator, };
|
|
8
|
+
export { ECDSAValidator, KillSwitchValidator, ERC165SessionKeyValidator, SessionKeyValidator, RecoveryValidator, };
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionKeyValidator = exports.ERC165SessionKeyValidator = exports.KillSwitchValidator = exports.ECDSAValidator = exports.Validators = void 0;
|
|
3
|
+
exports.RecoveryValidator = exports.SessionKeyValidator = exports.ERC165SessionKeyValidator = exports.KillSwitchValidator = exports.ECDSAValidator = exports.Validators = void 0;
|
|
4
4
|
const ecdsa_validator_js_1 = require("./ecdsa-validator.js");
|
|
5
5
|
Object.defineProperty(exports, "ECDSAValidator", { enumerable: true, get: function () { return ecdsa_validator_js_1.ECDSAValidator; } });
|
|
6
6
|
const erc165_session_key_validator_js_1 = require("./erc165-session-key-validator.js");
|
|
7
7
|
Object.defineProperty(exports, "ERC165SessionKeyValidator", { enumerable: true, get: function () { return erc165_session_key_validator_js_1.ERC165SessionKeyValidator; } });
|
|
8
8
|
const kill_switch_validator_js_1 = require("./kill-switch-validator.js");
|
|
9
9
|
Object.defineProperty(exports, "KillSwitchValidator", { enumerable: true, get: function () { return kill_switch_validator_js_1.KillSwitchValidator; } });
|
|
10
|
+
const recovery_validator_js_1 = require("./recovery-validator.js");
|
|
11
|
+
Object.defineProperty(exports, "RecoveryValidator", { enumerable: true, get: function () { return recovery_validator_js_1.RecoveryValidator; } });
|
|
10
12
|
const session_key_validator_js_1 = require("./session-key-validator.js");
|
|
11
13
|
Object.defineProperty(exports, "SessionKeyValidator", { enumerable: true, get: function () { return session_key_validator_js_1.SessionKeyValidator; } });
|
|
12
14
|
exports.Validators = {
|
|
@@ -14,5 +16,6 @@ exports.Validators = {
|
|
|
14
16
|
KILL_SWITCH: kill_switch_validator_js_1.KillSwitchValidator,
|
|
15
17
|
ERC165_SESSION_KEY: erc165_session_key_validator_js_1.ERC165SessionKeyValidator,
|
|
16
18
|
SESSION_KEY: session_key_validator_js_1.SessionKeyValidator,
|
|
19
|
+
RECOVERY: recovery_validator_js_1.RecoveryValidator,
|
|
17
20
|
};
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/index.ts"],"names":[],"mappings":";;;AAAA,6DAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/index.ts"],"names":[],"mappings":";;;AAAA,6DAAsD;AAgBpD,+FAhBO,mCAAc,OAgBP;AAfhB,uFAA8E;AAiB5E,0GAjBO,2DAAyB,OAiBP;AAhB3B,yEAAiE;AAe/D,oGAfO,8CAAmB,OAeP;AAdrB,mEAA4D;AAiB1D,kGAjBO,yCAAiB,OAiBP;AAhBnB,yEAAiE;AAe/D,oGAfO,8CAAmB,OAeP;AAZR,QAAA,UAAU,GAAiB;IACtC,KAAK,EAAE,mCAAc;IACrB,WAAW,EAAE,8CAAmB;IAChC,kBAAkB,EAAE,2DAAyB;IAC7C,WAAW,EAAE,8CAAmB;IAChC,QAAQ,EAAE,yCAAiB;CAC5B,CAAC","sourcesContent":["import { ECDSAValidator } from \"./ecdsa-validator.js\";\nimport { ERC165SessionKeyValidator } from \"./erc165-session-key-validator.js\";\nimport { KillSwitchValidator } from \"./kill-switch-validator.js\";\nimport { RecoveryValidator } from \"./recovery-validator.js\";\nimport { SessionKeyValidator } from \"./session-key-validator.js\";\nimport type { ValidatorMap } from \"./types.js\";\n\nexport const Validators: ValidatorMap = {\n ECDSA: ECDSAValidator,\n KILL_SWITCH: KillSwitchValidator,\n ERC165_SESSION_KEY: ERC165SessionKeyValidator,\n SESSION_KEY: SessionKeyValidator,\n RECOVERY: RecoveryValidator,\n};\n\nexport {\n ECDSAValidator,\n KillSwitchValidator,\n ERC165SessionKeyValidator,\n SessionKeyValidator,\n RecoveryValidator,\n};\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams } from "@alchemy/aa-core";
|
|
2
|
+
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
3
|
+
import { type LocalAccount, type WalletClient, type Transport, type Chain, type Account } from "viem";
|
|
4
|
+
import type { EthereumProvider } from "./types.js";
|
|
5
|
+
interface WeightedGuardians {
|
|
6
|
+
[guardian: Address]: number;
|
|
7
|
+
}
|
|
8
|
+
export interface RecoveryValidatorParams extends KernelBaseValidatorParams {
|
|
9
|
+
guardians?: WeightedGuardians;
|
|
10
|
+
threshold?: number;
|
|
11
|
+
delaySeconds?: number;
|
|
12
|
+
accountSigner?: SmartAccountSigner;
|
|
13
|
+
guardianAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
14
|
+
walletClient?: WalletClient<Transport, Chain>;
|
|
15
|
+
signatures?: Hex;
|
|
16
|
+
}
|
|
17
|
+
export type RecoveryConfig = Required<Pick<RecoveryValidatorParams, "guardians" | "threshold" | "delaySeconds">>;
|
|
18
|
+
export declare function isLocalAccount(account: any): account is LocalAccount<string>;
|
|
19
|
+
export declare function isEthereumProvider(provider: any): provider is EthereumProvider;
|
|
20
|
+
type WalletClientAccountType<T> = T extends LocalAccount<string> ? Account : T extends EthereumProvider ? undefined : never;
|
|
21
|
+
export declare const recoverySelector: `0x${string}`;
|
|
22
|
+
export declare class RecoveryValidator extends KernelBaseValidator {
|
|
23
|
+
protected guardians?: WeightedGuardians;
|
|
24
|
+
protected threshold?: number;
|
|
25
|
+
protected delaySeconds: number;
|
|
26
|
+
protected accountSigner?: SmartAccountSigner;
|
|
27
|
+
protected guardianAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
28
|
+
protected signatures?: Hex;
|
|
29
|
+
walletClient?: WalletClient<Transport, Chain, WalletClientAccountType<typeof this.guardianAccountOrProvider>>;
|
|
30
|
+
constructor(params: RecoveryValidatorParams);
|
|
31
|
+
static init(params: RecoveryValidatorParams): Promise<RecoveryValidator>;
|
|
32
|
+
getNonceKey(): bigint;
|
|
33
|
+
setRecoverySignatures(signatures: Hex): void;
|
|
34
|
+
getRecoverySignatures(): Hex | undefined;
|
|
35
|
+
getRecoveryConfig(): RecoveryConfig;
|
|
36
|
+
signer(): Promise<SmartAccountSigner>;
|
|
37
|
+
getEnableData(): Promise<Hex>;
|
|
38
|
+
encodeEnable(recoveryData: Hex): Hex;
|
|
39
|
+
encodeDisable(disableData?: Hex): Hex;
|
|
40
|
+
encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex;
|
|
41
|
+
encodeApproveWithSig(callDataAndNonceHash: Hex, kernelAccountAddress: Address, sigs: Hex): Hex;
|
|
42
|
+
encodeVeto(callDataAndNonceHash: Hex): Hex;
|
|
43
|
+
encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex;
|
|
44
|
+
isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
|
|
45
|
+
isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean>;
|
|
46
|
+
getDummyUserOpSignature(): Promise<Hex>;
|
|
47
|
+
signMessage(message: string | Uint8Array): Promise<Hex>;
|
|
48
|
+
signTypedData(params: SignTypedDataParams): Promise<Hex>;
|
|
49
|
+
signRecoveryHash(recoveryHash: Hex): Promise<Hex>;
|
|
50
|
+
signUserOp(_userOp: UserOperationRequest): Promise<Hex>;
|
|
51
|
+
}
|
|
52
|
+
export {};
|