@zerodev/sdk 4.0.25 → 4.0.27
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 +1 -693
- package/dist/cjs/kernel-zerodev/api/index.d.ts +2 -0
- package/dist/cjs/kernel-zerodev/api/index.js +18 -1
- package/dist/cjs/kernel-zerodev/api/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.js +1 -2
- package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +4 -2
- package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js +5 -4
- package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/index.d.ts +1 -0
- package/dist/cjs/kernel-zerodev/owner/passkey/index.js +3 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/index.js.map +1 -1
- package/dist/cjs/kernel-zerodev/owner/passkey/utils.d.ts +1 -0
- package/dist/cjs/kernel-zerodev/owner/passkey/utils.js +8 -3
- package/dist/cjs/kernel-zerodev/owner/passkey/utils.js.map +1 -1
- package/dist/cjs/kernel-zerodev/provider.js +2 -2
- package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +50 -9
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +20 -32
- package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/api/index.d.ts +2 -0
- package/dist/esm/kernel-zerodev/api/index.js +16 -0
- package/dist/esm/kernel-zerodev/api/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.js +2 -3
- package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +5 -3
- package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js +6 -5
- package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/index.d.ts +1 -0
- package/dist/esm/kernel-zerodev/owner/passkey/index.js +1 -0
- package/dist/esm/kernel-zerodev/owner/passkey/index.js.map +1 -1
- package/dist/esm/kernel-zerodev/owner/passkey/utils.d.ts +1 -0
- package/dist/esm/kernel-zerodev/owner/passkey/utils.js +6 -2
- package/dist/esm/kernel-zerodev/owner/passkey/utils.js.map +1 -1
- package/dist/esm/kernel-zerodev/provider.js +2 -2
- package/dist/esm/kernel-zerodev/provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js +52 -11
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +23 -32
- package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.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/owner/passkey/createPasskeyOwner.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/exceptions.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/index.d.ts +1 -0
- package/dist/types/kernel-zerodev/owner/passkey/index.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/owner/passkey/utils.d.ts +1 -0
- package/dist/types/kernel-zerodev/owner/passkey/utils.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +8 -5
- package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kernel-zerodev/api/index.ts +27 -0
- package/src/kernel-zerodev/owner/passkey/createPasskeyOwner.ts +5 -6
- package/src/kernel-zerodev/owner/passkey/exceptions.ts +2 -2
- package/src/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.ts +12 -7
- package/src/kernel-zerodev/owner/passkey/getPasskeyOwner.ts +6 -5
- package/src/kernel-zerodev/owner/passkey/index.ts +1 -0
- package/src/kernel-zerodev/owner/passkey/utils.ts +13 -3
- package/src/kernel-zerodev/provider.ts +2 -2
- package/src/kernel-zerodev/validator/recovery-validator.ts +59 -12
- package/src/kernel-zerodev/validator-provider/recovery-provider.ts +38 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-provider.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ValidatorProvider,\n type ExtendedValidatorProviderParams,\n} from \"./base.js\";\nimport {\n RecoveryValidator,\n type RecoveryConfig,\n type RecoveryValidatorParams,\n} from \"../validator/recovery-validator.js\";\nimport {\n getChain,\n type Address,\n type SendUserOperationResult,\n} from \"@alchemy/aa-core\";\nimport { getChainId, getRecoveryData, setSignatures } from \"../api/index.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { BACKEND_URL, RECOVERY_VALIDATOR_ADDRESS } from \"../constants.js\";\nimport {\n encodeAbiParameters,\n encodeFunctionData,\n parseAbiParameters,\n type Hex,\n keccak256,\n publicActions,\n type TransactionReceipt,\n concatHex,\n} from \"viem\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport axios from \"axios\";\nimport { base64ToBytes, bytesToBase64 } from \"../utils.js\";\n\nexport interface RecoveryProviderParams\n extends ExtendedValidatorProviderParams<RecoveryValidatorParams> {\n recoveryId?: string;\n enableData?: Hex;\n}\n\nexport class RecoveryProvider extends ValidatorProvider<\n RecoveryValidator,\n RecoveryValidatorParams\n> {\n recoveryId?: string;\n enableData?: Hex;\n constructor(params: RecoveryProviderParams) {\n const chain =\n typeof params.opts?.providerConfig?.chain === \"number\"\n ? getChain(params.opts.providerConfig.chain)\n : params.opts?.providerConfig?.chain ?? polygonMumbai;\n const validator = new RecoveryValidator({\n projectId: params.projectId,\n chain,\n validatorAddress:\n params.opts?.validatorConfig?.validatorAddress ??\n RECOVERY_VALIDATOR_ADDRESS,\n ...params.opts?.validatorConfig,\n });\n super(\n {\n ...params,\n opts: {\n ...params.opts,\n providerConfig: { ...params.opts?.providerConfig, chain },\n },\n },\n validator\n );\n this.recoveryId = params.recoveryId;\n this.enableData = params.enableData;\n }\n\n public static async init(\n params: RecoveryProviderParams\n ): Promise<RecoveryProvider> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n let accountAddress,\n enableData,\n signatures,\n serializedRecoveryConfig,\n recoveryConfig;\n if (params.recoveryId) {\n ({\n scwAddress: accountAddress,\n enableData,\n recoveryConfig: serializedRecoveryConfig,\n signatures,\n } = await getRecoveryData(params.recoveryId));\n recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(\n serializedRecoveryConfig\n );\n }\n const instance = new RecoveryProvider({\n enableData,\n ...params,\n opts: {\n ...params.opts,\n providerConfig: {\n chain,\n ...params.opts?.providerConfig,\n },\n accountConfig: {\n accountAddress,\n ...params.opts?.accountConfig,\n },\n validatorConfig: {\n signatures,\n ...recoveryConfig,\n ...params.opts?.validatorConfig,\n },\n },\n });\n return instance;\n }\n\n async getDefaultValidator(): Promise<Address> {\n const publicClient = this.getValidator().getPublicClient();\n const kernelAccountAddress = await this.getAddress();\n return await publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n }\n\n async encodeCalldataAndNonce(enableData: Hex): Promise<Hex> {\n const defaultValidatorAddress = await this.getDefaultValidator();\n const callData = encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n const nonce = await (await this.getAccount()).getNonce();\n const encodedCallDataAndNonce = encodeAbiParameters(\n parseAbiParameters(\"bytes calldata, uint256 nonce\"),\n [callData, nonce]\n );\n return keccak256(encodedCallDataAndNonce);\n }\n\n async enableRecovery(): Promise<SendUserOperationResult> {\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const { selector } = await this.getValidator().getPluginValidatorData();\n const kernelAccountAddress = await this.defaultProvider.getAddress();\n const encodedSetExecData = await this.getAccount().encodeSetExection();\n if (\n await this.getValidator().isPluginEnabled(kernelAccountAddress, selector)\n ) {\n throw Error(\"Plugin already enabled\");\n }\n return await this.defaultProvider.sendUserOperation({\n target: kernelAccountAddress,\n data: encodedSetExecData,\n });\n }\n\n async initiateRecovery(enableData: Hex): Promise<string> {\n try {\n const serializedConfig = this.serializeRecoveryConfig();\n const {\n data: { recoveryId },\n } = await axios.post(\n `${BACKEND_URL}/v1/recovery`,\n {\n enableData,\n scwAddress: await this.getAddress(),\n recoveryConfig: serializedConfig,\n },\n {\n headers: { \"Content-Type\": \"application/json\" },\n }\n );\n console.log(recoveryId);\n this.enableData = enableData;\n return recoveryId;\n } catch (error) {\n console.log(error);\n throw Error(\"Unable to generate the recoveryId\");\n }\n }\n\n serializeRecoveryConfig(): string {\n let recoveryConfig = this.getValidator().getRecoveryConfig();\n const jsonString = JSON.stringify(recoveryConfig);\n const uint8Array = new TextEncoder().encode(jsonString);\n const base64String = bytesToBase64(uint8Array);\n return base64String;\n }\n\n public static deserializeRecoveryConfig(\n recoveryConfig: string\n ): RecoveryConfig {\n const uint8Array = base64ToBytes(recoveryConfig);\n const jsonString = new TextDecoder().decode(uint8Array);\n return JSON.parse(jsonString) as RecoveryConfig;\n }\n\n async approveRecovery(enableData?: Hex): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitialized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApprove(\n callDataAndNonceHash!,\n kernelAccountAddress!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async signRecovery(enableData?: Hex) {\n try {\n if (!this.recoveryId) {\n throw Error(\"RecoveryId not set\");\n }\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const sig = await this.getValidator().signRecoveryHash(\n callDataAndNonceHash\n );\n let sigs = this.getValidator().getRecoverySignatures();\n if (sigs) {\n sigs =\n sigs.toLowerCase().indexOf(sig.toLowerCase()) === -1\n ? concatHex([sigs, sig])\n : sigs;\n } else {\n sigs = sig;\n }\n this.getValidator().setRecoverySignatures(sigs);\n const { result } = await setSignatures(this.recoveryId, sigs);\n if (result !== \"success\") {\n throw Error(\"Failed to save the signatures\");\n }\n } catch (error) {\n console.log(error);\n }\n }\n\n async approveRecoveryWithSig(\n enableData?: Hex,\n sigs?: Hex\n ): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const signatures = sigs ?? this.getValidator().getRecoverySignatures();\n if (!signatures) {\n throw Error(\"Signatures are not set\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitilized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApproveWithSig(\n callDataAndNonceHash,\n kernelAccountAddress,\n sigs!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async cancelRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const encodedVetoData = await this.getValidator().encodeVeto(\n callDataAndNonceHash\n );\n\n return await this.defaultProvider.sendUserOperation({\n target: this.getValidator().validatorAddress,\n data: encodedVetoData,\n });\n }\n\n async submitRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const defaultValidatorAddress = await this.getDefaultValidator();\n const encodedRecoveryActionData =\n await this.getValidator().encodeRecoveryAction(\n fetchedEnableData,\n defaultValidatorAddress\n );\n\n return await this.sendUserOperation({\n target: await this.getAddress(),\n data: encodedRecoveryActionData,\n });\n }\n\n // [TODO]\n // changeGuardian = this.sendEnableUserOperation;\n\n deleteRecoveryData = this.sendDisableUserOperation;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"recovery-provider.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ValidatorProvider,\n type ExtendedValidatorProviderParams,\n} from \"./base.js\";\nimport {\n RecoveryValidator,\n type RecoveryConfig,\n type RecoveryValidatorParams,\n} from \"../validator/recovery-validator.js\";\nimport {\n getChain,\n type Address,\n type SendUserOperationResult,\n} from \"@alchemy/aa-core\";\nimport {\n getChainId,\n getRecoveryData,\n postRecoveryData,\n setSignatures,\n} from \"../api/index.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { CHAIN_ID_TO_NODE, RECOVERY_VALIDATOR_ADDRESS } from \"../constants.js\";\nimport {\n encodeAbiParameters,\n encodeFunctionData,\n parseAbiParameters,\n type Hex,\n keccak256,\n publicActions,\n type TransactionReceipt,\n createPublicClient,\n http,\n} from \"viem\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { base64ToBytes, bytesToBase64 } from \"../utils.js\";\n\nexport interface RecoveryProviderParams\n extends ExtendedValidatorProviderParams<RecoveryValidatorParams> {\n recoveryId?: string;\n enableData?: Hex;\n}\n\nexport class RecoveryProvider extends ValidatorProvider<\n RecoveryValidator,\n RecoveryValidatorParams\n> {\n recoveryId?: string;\n enableData?: Hex;\n constructor(params: RecoveryProviderParams) {\n const chain =\n typeof params.opts?.providerConfig?.chain === \"number\"\n ? getChain(params.opts.providerConfig.chain)\n : params.opts?.providerConfig?.chain ?? polygonMumbai;\n const validator = new RecoveryValidator({\n projectId: params.projectId,\n chain,\n recoveryId: params.recoveryId,\n validatorAddress:\n params.opts?.validatorConfig?.validatorAddress ??\n RECOVERY_VALIDATOR_ADDRESS,\n ...params.opts?.validatorConfig,\n });\n super(\n {\n ...params,\n opts: {\n ...params.opts,\n providerConfig: { ...params.opts?.providerConfig, chain },\n },\n },\n validator\n );\n this.recoveryId = params.recoveryId;\n this.enableData = params.enableData;\n }\n\n public static async init(\n params: RecoveryProviderParams\n ): Promise<RecoveryProvider> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n let accountAddress,\n enableData,\n signatures,\n serializedRecoveryConfig,\n recoveryConfig;\n if (params.recoveryId) {\n ({\n scwAddress: accountAddress,\n enableData,\n recoveryConfig: serializedRecoveryConfig,\n signatures,\n } = await getRecoveryData(params.recoveryId));\n recoveryConfig = RecoveryProvider.deserializeRecoveryConfig(\n serializedRecoveryConfig\n );\n } else if (\n params.opts?.accountConfig?.accountAddress &&\n (!params.opts?.validatorConfig?.guardians ||\n !Object.entries(params.opts?.validatorConfig?.guardians).length ||\n params.opts.validatorConfig.threshold === undefined)\n ) {\n const publicClient = createPublicClient({\n transport: http(CHAIN_ID_TO_NODE[chain?.id ?? polygonMumbai.id]),\n chain: chain ?? polygonMumbai,\n });\n recoveryConfig = await RecoveryValidator.fetchRecoveryConfigFromContract(\n params.opts?.accountConfig?.accountAddress,\n publicClient\n );\n }\n const instance = new RecoveryProvider({\n enableData,\n ...params,\n opts: {\n ...params.opts,\n providerConfig: {\n chain,\n ...params.opts?.providerConfig,\n },\n accountConfig: {\n accountAddress,\n ...params.opts?.accountConfig,\n },\n validatorConfig: {\n signatures,\n ...recoveryConfig,\n ...params.opts?.validatorConfig,\n },\n },\n });\n return instance;\n }\n\n async getDefaultValidator(): Promise<Address> {\n const publicClient = this.getValidator().getPublicClient();\n const kernelAccountAddress = await this.getAddress();\n return await publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getDefaultValidator\",\n });\n }\n\n async encodeCalldataAndNonce(enableData: Hex): Promise<Hex> {\n const defaultValidatorAddress = await this.getDefaultValidator();\n const callData = encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n const nonce = await (await this.getAccount()).getNonce();\n const encodedCallDataAndNonce = encodeAbiParameters(\n parseAbiParameters(\"bytes calldata, uint256 nonce\"),\n [callData, nonce]\n );\n return keccak256(encodedCallDataAndNonce);\n }\n\n async enableRecovery(): Promise<SendUserOperationResult> {\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const { selector } = await this.getValidator().getPluginValidatorData();\n const kernelAccountAddress = await this.defaultProvider.getAddress();\n const encodedSetExecData = await this.getAccount().encodeSetExection();\n if (\n await this.getValidator().isPluginEnabled(kernelAccountAddress, selector)\n ) {\n throw Error(\"Plugin already enabled\");\n }\n return await this.defaultProvider.sendUserOperation({\n target: kernelAccountAddress,\n data: encodedSetExecData,\n });\n }\n\n async initiateRecovery(enableData: Hex): Promise<string> {\n const serializedConfig = this.serializeRecoveryConfig();\n const recoveryId = await postRecoveryData(\n enableData,\n await this.getAddress(),\n serializedConfig\n );\n console.log(recoveryId);\n this.enableData = enableData;\n if (!recoveryId) {\n throw Error(\"Unable to generate the recoveryId\");\n }\n return recoveryId;\n }\n\n serializeRecoveryConfig(): string {\n let recoveryConfig = this.getValidator().getRecoveryConfig();\n const jsonString = JSON.stringify(recoveryConfig);\n const uint8Array = new TextEncoder().encode(jsonString);\n const base64String = bytesToBase64(uint8Array);\n return base64String;\n }\n\n public static deserializeRecoveryConfig(\n recoveryConfig: string\n ): RecoveryConfig {\n const uint8Array = base64ToBytes(recoveryConfig);\n const jsonString = new TextDecoder().decode(uint8Array);\n return JSON.parse(jsonString) as RecoveryConfig;\n }\n\n async approveRecovery(enableData?: Hex): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitialized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApprove(\n callDataAndNonceHash!,\n kernelAccountAddress!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async signRecovery(enableData?: Hex) {\n try {\n if (!this.recoveryId) {\n throw Error(\"RecoveryId not set\");\n }\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const sig = await this.getValidator().signRecoveryHash(\n callDataAndNonceHash\n );\n const { result, data } = await setSignatures(this.recoveryId, sig);\n if (result !== \"success\") {\n throw Error(\"Failed to save the signatures\");\n }\n this.getValidator().setRecoverySignatures(data.signatures);\n } catch (error) {\n console.log(error);\n }\n }\n\n async approveRecoveryWithSig(\n enableData?: Hex,\n sigs?: Hex\n ): Promise<TransactionReceipt> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const signatures =\n sigs ?? (await this.getValidator().getRecoverySignatures());\n if (!signatures) {\n throw Error(\"Signatures are not set\");\n }\n const kernelAccountAddress = await this.getAddress();\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const validator = this.getValidator();\n if (!validator.walletClient) {\n throw Error(\"WalletClient uninitilized\");\n }\n const walletClient = validator.walletClient.extend(publicActions);\n let account;\n if (walletClient.account) {\n account = walletClient.account;\n } else {\n [account] = await walletClient.requestAddresses();\n }\n const hash = await walletClient.sendTransaction({\n account,\n to: validator.getAddress(),\n data: validator.encodeApproveWithSig(\n callDataAndNonceHash,\n kernelAccountAddress,\n sigs!\n ),\n });\n return await walletClient.waitForTransactionReceipt({ hash });\n }\n\n async cancelRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n if (!this.defaultProvider) {\n throw Error(\"DefaultProvider uninitilised\");\n }\n const callDataAndNonceHash = await this.encodeCalldataAndNonce(\n fetchedEnableData\n );\n const encodedVetoData = await this.getValidator().encodeVeto(\n callDataAndNonceHash\n );\n\n return await this.defaultProvider.sendUserOperation({\n target: this.getValidator().validatorAddress,\n data: encodedVetoData,\n });\n }\n\n async submitRecovery(enableData?: Hex): Promise<SendUserOperationResult> {\n const fetchedEnableData = enableData ?? this.enableData;\n if (!fetchedEnableData) {\n throw Error(\"Unable to fetch enable data for Recovery\");\n }\n const defaultValidatorAddress = await this.getDefaultValidator();\n const encodedRecoveryActionData =\n await this.getValidator().encodeRecoveryAction(\n fetchedEnableData,\n defaultValidatorAddress\n );\n\n return await this.sendUserOperation({\n target: await this.getAddress(),\n data: encodedRecoveryActionData,\n });\n }\n\n // [TODO]\n // changeGuardian = this.sendEnableUserOperation;\n\n deleteRecoveryData = this.sendDisableUserOperation;\n}\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
1
2
|
export declare const getChainId: (projectId: string, backendUrl?: string) => Promise<number | undefined>;
|
|
2
3
|
export declare const getRecoveryData: (recoveryId: string) => Promise<any>;
|
|
4
|
+
export declare const postRecoveryData: (enableData: Hex, scwAddress: Hex, recoveryConfig: string) => Promise<string | undefined>;
|
|
3
5
|
export declare const setSignatures: (recoveryId: string, signatures: string) => Promise<any>;
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/api/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,eAAO,MAAM,UAAU,cACV,MAAM,eACJ,MAAM,KAClB,QAAQ,MAAM,GAAG,SAAS,CAkB5B,CAAC;AAEF,eAAO,MAAM,eAAe,eAAsB,MAAM,iBAavD,CAAC;AAEF,eAAO,MAAM,gBAAgB,eACf,GAAG,cACH,GAAG,kBACC,MAAM,KACrB,QAAQ,MAAM,GAAG,SAAS,CAoB5B,CAAC;AAEF,eAAO,MAAM,aAAa,eAAsB,MAAM,cAAc,MAAM,iBAezE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/createPasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAchF,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,MAAgB,GACjB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"createPasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/createPasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAchF,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,SAAS,EACT,eAAuB,EACvB,QAAQ,EACR,MAAgB,GACjB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAkF1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/exceptions.ts"],"names":[],"mappings":"AAAA,qBAAa,qBAAsB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/exceptions.ts"],"names":[],"mappings":"AAAA,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,OAAO,EAAE,MAAM,CAA+B;CAC/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAutocompletePasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"getAutocompletePasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWhF,wBAAsB,2BAA2B,CAAC,EAChD,SAAS,EACT,MAAgB,GACjB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CA8D1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SmartAccountSigner } from "@alchemy/aa-core";
|
|
2
|
-
export declare function getPasskeyOwner({ projectId, name, apiUrl, withCredentials }: {
|
|
2
|
+
export declare function getPasskeyOwner({ projectId, name, apiUrl, withCredentials, }: {
|
|
3
3
|
projectId: string;
|
|
4
4
|
name?: string;
|
|
5
5
|
apiUrl?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/getPasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWhF,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,MAAgB,EAChB,eAAuB,
|
|
1
|
+
{"version":3,"file":"getPasskeyOwner.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/getPasskeyOwner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWhF,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,MAAgB,EAChB,eAAuB,GACxB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAqD1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { SignTypedDataParams } from "@alchemy/aa-core";
|
|
|
3
3
|
export declare const abortController: {
|
|
4
4
|
controller: AbortController;
|
|
5
5
|
};
|
|
6
|
+
export declare function abortWebauthn(): void;
|
|
6
7
|
export declare const publicKey = "public-key";
|
|
7
8
|
export declare const es256 = -7;
|
|
8
9
|
export declare const generateRandomBuffer: () => ArrayBuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/utils.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5D,eAAO,MAAM,eAAe;;CAE3B,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/kernel-zerodev/owner/passkey/utils.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5D,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,wBAAgB,aAAa,SAG5B;AAED,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB,QAAO,WAKvC,CAAC;AAEF,eAAO,MAAM,eAAe,cAAe,WAAW,KAAG,MAMxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAC/B,MAAM,MACP,MAAM,YACA,MAAM,aACL,MAAM,gBACH,MAAM,4CAmDrB,CAAC;AAEF,eAAO,MAAM,WAAW,QACjB,MAAM,GAAG,UAAU,MACpB,MAAM,YACA,MAAM,aACL,MAAM,gBACH,MAAM,4CAWrB,CAAC;AAEF,eAAO,MAAM,aAAa,WAChB,mBAAmB,MACvB,MAAM,YACA,MAAM,aACL,MAAM,gBACH,MAAM,4CAYrB,CAAC;AAEF,eAAO,MAAM,cAAc,cACd,MAAM,SACV,MAAM,kCAWd,CAAC;AAGF,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAyB5E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams } from "@alchemy/aa-core";
|
|
2
2
|
import { KernelBaseValidator, type KernelBaseValidatorParams } from "./base.js";
|
|
3
|
-
import { type LocalAccount, type WalletClient, type Transport, type Chain, type Account } from "viem";
|
|
3
|
+
import { type LocalAccount, type WalletClient, type Transport, type Chain, type Account, type PublicClient } from "viem";
|
|
4
4
|
import type { EthereumProvider } from "./types.js";
|
|
5
5
|
interface WeightedGuardians {
|
|
6
6
|
[guardian: Address]: number;
|
|
@@ -10,9 +10,10 @@ export interface RecoveryValidatorParams extends KernelBaseValidatorParams {
|
|
|
10
10
|
threshold?: number;
|
|
11
11
|
delaySeconds?: number;
|
|
12
12
|
accountSigner?: SmartAccountSigner;
|
|
13
|
-
|
|
13
|
+
localAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
14
14
|
walletClient?: WalletClient<Transport, Chain>;
|
|
15
15
|
signatures?: Hex;
|
|
16
|
+
recoveryId?: string;
|
|
16
17
|
}
|
|
17
18
|
export type RecoveryConfig = Required<Pick<RecoveryValidatorParams, "guardians" | "threshold" | "delaySeconds">>;
|
|
18
19
|
export declare function isLocalAccount(account: any): account is LocalAccount<string>;
|
|
@@ -24,14 +25,15 @@ export declare class RecoveryValidator extends KernelBaseValidator {
|
|
|
24
25
|
protected threshold?: number;
|
|
25
26
|
protected delaySeconds: number;
|
|
26
27
|
protected accountSigner?: SmartAccountSigner;
|
|
27
|
-
protected
|
|
28
|
+
protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
28
29
|
protected signatures?: Hex;
|
|
29
|
-
|
|
30
|
+
protected recoveryId?: string;
|
|
31
|
+
walletClient?: WalletClient<Transport, Chain, WalletClientAccountType<typeof this.localAccountOrProvider>>;
|
|
30
32
|
constructor(params: RecoveryValidatorParams);
|
|
31
33
|
static init(params: RecoveryValidatorParams): Promise<RecoveryValidator>;
|
|
32
34
|
getNonceKey(): bigint;
|
|
33
35
|
setRecoverySignatures(signatures: Hex): void;
|
|
34
|
-
getRecoverySignatures(): Hex | undefined
|
|
36
|
+
getRecoverySignatures(): Promise<Hex | undefined>;
|
|
35
37
|
getRecoveryConfig(): RecoveryConfig;
|
|
36
38
|
signer(): Promise<SmartAccountSigner>;
|
|
37
39
|
getEnableData(): Promise<Hex>;
|
|
@@ -41,6 +43,7 @@ export declare class RecoveryValidator extends KernelBaseValidator {
|
|
|
41
43
|
encodeApproveWithSig(callDataAndNonceHash: Hex, kernelAccountAddress: Address, sigs: Hex): Hex;
|
|
42
44
|
encodeVeto(callDataAndNonceHash: Hex): Hex;
|
|
43
45
|
encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex;
|
|
46
|
+
static fetchRecoveryConfigFromContract(kernelAccountAddress: Address, publicClient: PublicClient<Transport, Chain>): Promise<RecoveryConfig>;
|
|
44
47
|
isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
|
|
45
48
|
isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean>;
|
|
46
49
|
getDummyUserOpSignature(): Promise<Hex>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EAEnB,KAAK,yBAAyB,EAC/B,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,KAAK,YAAY,EAEjB,KAAK,YAAY,EAGjB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,+BAA+B,EACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-provider.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator-provider/recovery-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,+BAA+B,EACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAIL,KAAK,GAAG,EAGR,KAAK,kBAAkB,EAGxB,MAAM,MAAM,CAAC;AAKd,MAAM,WAAW,sBACf,SAAQ,+BAA+B,CAAC,uBAAuB,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CACrD,iBAAiB,EACjB,uBAAuB,CACxB;IACC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;gBACL,MAAM,EAAE,sBAAsB;WA4BtB,IAAI,CACtB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IA2DtB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUvC,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAerD,cAAc,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAkBlD,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAexD,uBAAuB,IAAI,MAAM;WAQnB,yBAAyB,CACrC,cAAc,EAAE,MAAM,GACrB,cAAc;IAMX,eAAe,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+B9D,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG;IAyB7B,sBAAsB,CAC1B,UAAU,CAAC,EAAE,GAAG,EAChB,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,kBAAkB,CAAC;IAqCxB,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBlE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqBxE,kBAAkB,oEAAiC;CACpD"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
import { BACKEND_URL } from "../constants.js";
|
|
3
|
+
import type { Hex } from "viem";
|
|
3
4
|
|
|
4
5
|
export const getChainId = async (
|
|
5
6
|
projectId: string,
|
|
@@ -39,6 +40,32 @@ export const getRecoveryData = async (recoveryId: string) => {
|
|
|
39
40
|
}
|
|
40
41
|
};
|
|
41
42
|
|
|
43
|
+
export const postRecoveryData = async (
|
|
44
|
+
enableData: Hex,
|
|
45
|
+
scwAddress: Hex,
|
|
46
|
+
recoveryConfig: string
|
|
47
|
+
): Promise<string | undefined> => {
|
|
48
|
+
try {
|
|
49
|
+
const {
|
|
50
|
+
data: { recoveryId },
|
|
51
|
+
} = await axios.post(
|
|
52
|
+
`${BACKEND_URL}/v1/recovery`,
|
|
53
|
+
{
|
|
54
|
+
enableData,
|
|
55
|
+
scwAddress,
|
|
56
|
+
recoveryConfig,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
headers: { "Content-Type": "application/json" },
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
return recoveryId;
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.log(error);
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
42
69
|
export const setSignatures = async (recoveryId: string, signatures: string) => {
|
|
43
70
|
try {
|
|
44
71
|
const { data } = await axios.patch(
|
|
@@ -2,7 +2,7 @@ import { getWebAuthnAttestation } from "@turnkey/http";
|
|
|
2
2
|
import axios from "axios";
|
|
3
3
|
import type { SignTypedDataParams, SmartAccountSigner } from "@alchemy/aa-core";
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
abortWebauthn,
|
|
6
6
|
base64UrlEncode,
|
|
7
7
|
es256,
|
|
8
8
|
generateRandomBuffer,
|
|
@@ -30,17 +30,16 @@ export async function createPasskeyOwner({
|
|
|
30
30
|
//@ts-expect-error
|
|
31
31
|
if (typeof window !== "undefined") {
|
|
32
32
|
const challenge = generateRandomBuffer();
|
|
33
|
-
let credentials = undefined
|
|
33
|
+
let credentials = undefined;
|
|
34
34
|
if (withCredentials) {
|
|
35
|
-
credentials = await getCredentials(projectId, name)
|
|
35
|
+
credentials = await getCredentials(projectId, name);
|
|
36
36
|
}
|
|
37
37
|
if (credentials && credentials?.length >= 64) {
|
|
38
|
-
throw new UsernameIsAlreadyUsed()
|
|
38
|
+
throw new UsernameIsAlreadyUsed();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
try {
|
|
42
|
-
|
|
43
|
-
abortController.controller = new AbortController()
|
|
42
|
+
abortWebauthn();
|
|
44
43
|
const attestation = await getWebAuthnAttestation({
|
|
45
44
|
publicKey: {
|
|
46
45
|
rp: {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class UsernameIsAlreadyUsed extends Error {
|
|
2
|
-
|
|
3
|
-
}
|
|
2
|
+
message: string = "Username is already used.";
|
|
3
|
+
}
|
|
@@ -3,6 +3,7 @@ import axios from "axios";
|
|
|
3
3
|
import type { SignTypedDataParams, SmartAccountSigner } from "@alchemy/aa-core";
|
|
4
4
|
import {
|
|
5
5
|
abortController,
|
|
6
|
+
abortWebauthn,
|
|
6
7
|
base64UrlEncode,
|
|
7
8
|
generateRandomBuffer,
|
|
8
9
|
signMessage,
|
|
@@ -18,26 +19,29 @@ export async function getAutocompletePasskeyOwner({
|
|
|
18
19
|
name?: string;
|
|
19
20
|
apiUrl?: string;
|
|
20
21
|
}): Promise<SmartAccountSigner | undefined> {
|
|
21
|
-
|
|
22
|
-
if (!PublicKeyCredential?.isConditionalMediationAvailable ||
|
|
22
|
+
if (
|
|
23
23
|
//@ts-ignore
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
!PublicKeyCredential?.isConditionalMediationAvailable ||
|
|
25
|
+
//@ts-ignore
|
|
26
|
+
!PublicKeyCredential?.isConditionalMediationAvailable()
|
|
27
|
+
) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
27
30
|
|
|
28
31
|
//@ts-expect-error
|
|
29
32
|
if (typeof window !== "undefined") {
|
|
30
33
|
const challenge = generateRandomBuffer();
|
|
31
34
|
try {
|
|
35
|
+
abortWebauthn();
|
|
32
36
|
const assertion = JSON.parse(
|
|
33
37
|
await getWebAuthnAssertion(base64UrlEncode(challenge), {
|
|
34
|
-
mediation:
|
|
38
|
+
mediation: "conditional",
|
|
35
39
|
publicKey: {
|
|
36
40
|
//@ts-expect-error
|
|
37
41
|
rpId: window.location.hostname,
|
|
38
42
|
userVerification: "required",
|
|
39
43
|
},
|
|
40
|
-
signal: abortController.controller.signal
|
|
44
|
+
signal: abortController.controller.signal,
|
|
41
45
|
})
|
|
42
46
|
);
|
|
43
47
|
const response = await axios.post(
|
|
@@ -48,6 +52,7 @@ export async function getAutocompletePasskeyOwner({
|
|
|
48
52
|
}
|
|
49
53
|
);
|
|
50
54
|
const { id, walletId, address } = await response.data;
|
|
55
|
+
console.log("owner", id, walletId, address);
|
|
51
56
|
const owner: SmartAccountSigner = {
|
|
52
57
|
getAddress: async () => address,
|
|
53
58
|
signMessage: (msg) =>
|
|
@@ -2,7 +2,7 @@ import { getWebAuthnAssertion } from "@turnkey/http/dist/webauthn";
|
|
|
2
2
|
import axios from "axios";
|
|
3
3
|
import type { SignTypedDataParams, SmartAccountSigner } from "@alchemy/aa-core";
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
abortWebauthn,
|
|
6
6
|
base64UrlEncode,
|
|
7
7
|
generateRandomBuffer,
|
|
8
8
|
getCredentials,
|
|
@@ -15,7 +15,7 @@ export async function getPasskeyOwner({
|
|
|
15
15
|
projectId,
|
|
16
16
|
name,
|
|
17
17
|
apiUrl = API_URL,
|
|
18
|
-
withCredentials = false
|
|
18
|
+
withCredentials = false,
|
|
19
19
|
}: {
|
|
20
20
|
projectId: string;
|
|
21
21
|
name?: string;
|
|
@@ -26,15 +26,16 @@ export async function getPasskeyOwner({
|
|
|
26
26
|
if (typeof window !== "undefined") {
|
|
27
27
|
const challenge = generateRandomBuffer();
|
|
28
28
|
try {
|
|
29
|
-
|
|
30
|
-
abortController.controller = new AbortController()
|
|
29
|
+
abortWebauthn();
|
|
31
30
|
const assertion = JSON.parse(
|
|
32
31
|
await getWebAuthnAssertion(base64UrlEncode(challenge), {
|
|
33
32
|
publicKey: {
|
|
34
33
|
//@ts-expect-error
|
|
35
34
|
rpId: window.location.hostname,
|
|
36
35
|
userVerification: "required",
|
|
37
|
-
allowCredentials: withCredentials
|
|
36
|
+
allowCredentials: withCredentials
|
|
37
|
+
? await getCredentials(projectId, name)
|
|
38
|
+
: undefined,
|
|
38
39
|
},
|
|
39
40
|
})
|
|
40
41
|
);
|
|
@@ -10,6 +10,11 @@ browserInit({
|
|
|
10
10
|
|
|
11
11
|
export const abortController = {
|
|
12
12
|
controller: new AbortController(),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function abortWebauthn() {
|
|
16
|
+
abortController.controller.abort("ZeroDev: Reset previous Webauthn request");
|
|
17
|
+
abortController.controller = new AbortController();
|
|
13
18
|
}
|
|
14
19
|
|
|
15
20
|
export const publicKey = "public-key";
|
|
@@ -39,7 +44,7 @@ export const signMessageImplementation = async (
|
|
|
39
44
|
credentialId: string,
|
|
40
45
|
apiUrl = API_URL
|
|
41
46
|
) => {
|
|
42
|
-
|
|
47
|
+
abortWebauthn();
|
|
43
48
|
const signedRequest = await TurnkeyApi.signSignRawPayload(
|
|
44
49
|
{
|
|
45
50
|
body: {
|
|
@@ -126,8 +131,13 @@ export const signTypedData = async (
|
|
|
126
131
|
);
|
|
127
132
|
};
|
|
128
133
|
|
|
129
|
-
export const getCredentials = async (
|
|
130
|
-
|
|
134
|
+
export const getCredentials = async (
|
|
135
|
+
projectId: string,
|
|
136
|
+
name?: string,
|
|
137
|
+
apiUrl = API_URL
|
|
138
|
+
) => {
|
|
139
|
+
const url =
|
|
140
|
+
`${apiUrl}/projects/${projectId}/wallets` + (name ? `/${name}` : "");
|
|
131
141
|
const response = await axios.get(url);
|
|
132
142
|
const credentials = response.data;
|
|
133
143
|
return credentials.map((credential: string) => ({
|
|
@@ -331,13 +331,13 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
331
331
|
throw new Error("account not connected!");
|
|
332
332
|
}
|
|
333
333
|
const [data, address] = params!;
|
|
334
|
-
if (address !== (await this.getAddress())) {
|
|
334
|
+
if (address.toLowerCase() !== (await this.getAddress()).toLowerCase()) {
|
|
335
335
|
throw new Error(
|
|
336
336
|
"cannot sign for address that is not the current account"
|
|
337
337
|
);
|
|
338
338
|
}
|
|
339
339
|
// @ts-ignore
|
|
340
|
-
return this.account.
|
|
340
|
+
return this.account.signMessageWith6492(data);
|
|
341
341
|
default:
|
|
342
342
|
// @ts-ignore
|
|
343
343
|
return this.rpcClient.request(args);
|
|
@@ -27,13 +27,15 @@ import {
|
|
|
27
27
|
type Account,
|
|
28
28
|
publicActions,
|
|
29
29
|
getFunctionSelector,
|
|
30
|
+
type PublicClient,
|
|
30
31
|
} from "viem";
|
|
31
32
|
import { WeightedValidatorAbi } from "../abis/WeightedValidatorAbi.js";
|
|
32
|
-
import { getChainId } from "../api/index.js";
|
|
33
|
+
import { getChainId, getRecoveryData } from "../api/index.js";
|
|
33
34
|
import {
|
|
34
35
|
CHAIN_ID_TO_NODE,
|
|
35
36
|
DUMMY_ECDSA_SIG,
|
|
36
37
|
RECOVERY_ACTION,
|
|
38
|
+
RECOVERY_VALIDATOR_ADDRESS,
|
|
37
39
|
} from "../constants.js";
|
|
38
40
|
import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
|
|
39
41
|
import { fixSignedData } from "../utils.js";
|
|
@@ -49,9 +51,10 @@ export interface RecoveryValidatorParams extends KernelBaseValidatorParams {
|
|
|
49
51
|
threshold?: number;
|
|
50
52
|
delaySeconds?: number;
|
|
51
53
|
accountSigner?: SmartAccountSigner;
|
|
52
|
-
|
|
54
|
+
localAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
53
55
|
walletClient?: WalletClient<Transport, Chain>;
|
|
54
56
|
signatures?: Hex;
|
|
57
|
+
recoveryId?: string;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
export type RecoveryConfig = Required<
|
|
@@ -83,12 +86,13 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
83
86
|
protected threshold?: number;
|
|
84
87
|
protected delaySeconds: number;
|
|
85
88
|
protected accountSigner?: SmartAccountSigner;
|
|
86
|
-
protected
|
|
89
|
+
protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;
|
|
87
90
|
protected signatures?: Hex;
|
|
91
|
+
protected recoveryId?: string;
|
|
88
92
|
walletClient?: WalletClient<
|
|
89
93
|
Transport,
|
|
90
94
|
Chain,
|
|
91
|
-
WalletClientAccountType<typeof this.
|
|
95
|
+
WalletClientAccountType<typeof this.localAccountOrProvider>
|
|
92
96
|
>;
|
|
93
97
|
|
|
94
98
|
constructor(params: RecoveryValidatorParams) {
|
|
@@ -98,27 +102,28 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
98
102
|
this.delaySeconds = params.delaySeconds ?? 0;
|
|
99
103
|
this.accountSigner = params.accountSigner;
|
|
100
104
|
this.mode = params.mode ?? ValidatorMode.plugin;
|
|
101
|
-
this.
|
|
105
|
+
this.localAccountOrProvider = params.localAccountOrProvider;
|
|
102
106
|
this.signatures = params.signatures;
|
|
103
107
|
this.validAfter = params.validAfter ?? 0;
|
|
104
108
|
this.validUntil = params.validUntil ?? 0;
|
|
105
109
|
this.executor = params.executor ?? RECOVERY_ACTION;
|
|
106
110
|
this.selector = params.selector ?? recoverySelector;
|
|
107
|
-
|
|
111
|
+
this.recoveryId = params.recoveryId;
|
|
112
|
+
if (isLocalAccount(params.localAccountOrProvider)) {
|
|
108
113
|
this.walletClient = createWalletClient({
|
|
109
|
-
account: params.
|
|
114
|
+
account: params.localAccountOrProvider,
|
|
110
115
|
chain: this.chain ?? polygonMumbai,
|
|
111
116
|
transport: http(CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]),
|
|
112
117
|
}).extend(publicActions);
|
|
113
|
-
} else if (isEthereumProvider(params.
|
|
118
|
+
} else if (isEthereumProvider(params.localAccountOrProvider)) {
|
|
114
119
|
this.walletClient = createWalletClient({
|
|
115
120
|
chain: this.chain ?? polygonMumbai,
|
|
116
|
-
transport: custom(params.
|
|
121
|
+
transport: custom(params.localAccountOrProvider),
|
|
117
122
|
}).extend(publicActions);
|
|
118
123
|
} else if (params.walletClient) {
|
|
119
124
|
this.walletClient = params.walletClient.extend(publicActions);
|
|
120
|
-
} else if (params.
|
|
121
|
-
throw Error("Incorrect
|
|
125
|
+
} else if (params.localAccountOrProvider) {
|
|
126
|
+
throw Error("Incorrect localAccountOrProvider type");
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
129
|
|
|
@@ -142,7 +147,11 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
142
147
|
this.signatures = signatures;
|
|
143
148
|
}
|
|
144
149
|
|
|
145
|
-
getRecoverySignatures(): Hex | undefined {
|
|
150
|
+
async getRecoverySignatures(): Promise<Hex | undefined> {
|
|
151
|
+
if (this.recoveryId) {
|
|
152
|
+
const { signatures } = await getRecoveryData(this.recoveryId);
|
|
153
|
+
this.setRecoverySignatures(signatures);
|
|
154
|
+
}
|
|
146
155
|
return this.signatures;
|
|
147
156
|
}
|
|
148
157
|
|
|
@@ -243,6 +252,44 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
243
252
|
});
|
|
244
253
|
}
|
|
245
254
|
|
|
255
|
+
static async fetchRecoveryConfigFromContract(
|
|
256
|
+
kernelAccountAddress: Address,
|
|
257
|
+
publicClient: PublicClient<Transport, Chain>
|
|
258
|
+
): Promise<RecoveryConfig> {
|
|
259
|
+
try {
|
|
260
|
+
const [, threshold, delaySeconds, firstGuardian] =
|
|
261
|
+
await publicClient.readContract({
|
|
262
|
+
abi: WeightedValidatorAbi,
|
|
263
|
+
address: RECOVERY_VALIDATOR_ADDRESS,
|
|
264
|
+
functionName: "weightedStorage",
|
|
265
|
+
args: [kernelAccountAddress],
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
const guardians: WeightedGuardians = {};
|
|
269
|
+
|
|
270
|
+
let nextGuardian = firstGuardian;
|
|
271
|
+
while (
|
|
272
|
+
nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()
|
|
273
|
+
) {
|
|
274
|
+
const guardianStorage = await publicClient.readContract({
|
|
275
|
+
abi: WeightedValidatorAbi,
|
|
276
|
+
address: RECOVERY_VALIDATOR_ADDRESS,
|
|
277
|
+
functionName: "guardian",
|
|
278
|
+
args: [nextGuardian, kernelAccountAddress],
|
|
279
|
+
});
|
|
280
|
+
guardians[nextGuardian] = guardianStorage[0];
|
|
281
|
+
nextGuardian = guardianStorage[1];
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
threshold,
|
|
285
|
+
delaySeconds,
|
|
286
|
+
guardians,
|
|
287
|
+
};
|
|
288
|
+
} catch (error) {
|
|
289
|
+
throw Error("Failed to fetch config from contract");
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
246
293
|
async isPluginEnabled(
|
|
247
294
|
kernelAccountAddress: Address,
|
|
248
295
|
selector: Hex
|