@aa-sdk/ethers 4.35.0 → 4.35.1

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 CHANGED
@@ -48,7 +48,7 @@ const ethersProvider = await alchemy.config.getProvider();
48
48
  const provider = EthersProviderAdapter.fromEthersProvider(ethersProvider);
49
49
 
50
50
  const signer: SmartAccountSigner = LocalAccountSigner.mnemonicToAccountSigner(
51
- process.env.YOUR_OWNER_MNEMONIC!
51
+ process.env.YOUR_OWNER_MNEMONIC!,
52
52
  );
53
53
 
54
54
  // 2. Connect the provider to the smart account signer
@@ -59,6 +59,6 @@ export const signer = provider.connectToAccount(
59
59
  factoryAddress: getDefaultLightAccountFactoryAddress(chain),
60
60
  rpcClient,
61
61
  signer,
62
- })
62
+ }),
63
63
  );
64
64
  ```
@@ -11,7 +11,7 @@ export declare class AccountSigner<TAccount extends SmartContractAccount = Smart
11
11
  provider: EthersProviderAdapter;
12
12
  readonly account: TAccount;
13
13
  sendUserOperation: (args: UserOperationCallData | BatchUserOperationCallData, overrides?: UserOperationOverrides<TEntryPointVersion>) => Promise<import("@aa-sdk/core").SendUserOperationResult<keyof import("@aa-sdk/core").EntryPointRegistryBase<unknown>>>;
14
- waitForUserOperationTransaction: (args: import("@aa-sdk/core").WaitForUserOperationTxParameters) => Promise<`0x${string}`>;
14
+ waitForUserOperationTransaction: (args: import("@aa-sdk/core").WaitForUserOperationTxParameters) => Promise<import("viem").Hex>;
15
15
  /**
16
16
  * Creates a new AccountSigner with the given ethers Provider and Smart Contract Account
17
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"account-signer.js","sourceRoot":"","sources":["../../src/account-signer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountNotFoundError,\n resolveProperties,\n type BatchUserOperationCallData,\n type BundlerClient,\n type GetEntryPointFromAccount,\n type SmartContractAccount,\n type UserOperationCallData,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport type { Deferrable } from \"@ethersproject/properties\";\nimport {\n type TransactionRequest,\n type TransactionResponse,\n} from \"@ethersproject/providers\";\nimport { isHex, toBytes, type Transport } from \"viem\";\nimport { EthersProviderAdapter } from \"./provider-adapter.js\";\n\nconst hexlifyOptional = (value: any): `0x${string}` | undefined => {\n if (value == null) {\n return undefined;\n }\n\n return hexlify(value) as `0x${string}`;\n};\n\n/**\n * Implementation of the ethers Signer interface to use with Smart Contract Accounts\n */\nexport class AccountSigner<\n TAccount extends SmartContractAccount = SmartContractAccount,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> extends Signer {\n readonly account: TAccount;\n\n sendUserOperation;\n waitForUserOperationTransaction;\n\n /**\n * Creates a new AccountSigner with the given ethers Provider and Smart Contract Account\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n * ```\n *\n * @template {SmartContractAccount} TAccount the type of the smart contract account\n * @param {EthersProviderAdapter} provider the ethers provider to use\n * @param {TAccount} account the smart contract account that will be used to sign user ops and send them\n */\n constructor(public provider: EthersProviderAdapter, account: TAccount) {\n super();\n this.account = account;\n\n this.sendUserOperation = (\n args: UserOperationCallData | BatchUserOperationCallData,\n overrides?: UserOperationOverrides<TEntryPointVersion>\n ) =>\n this.provider.accountProvider.sendUserOperation({\n uo: args,\n account,\n overrides,\n });\n\n this.waitForUserOperationTransaction =\n this.provider.accountProvider.waitForUserOperationTransaction.bind(\n this.provider.accountProvider\n );\n }\n\n /**\n * Returns the account address if the account exists.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const address = await signer.getAddress();\n * ```\n *\n * @returns {Promise<string>} a promise that resolves to the account address\n * @throws {AccountNotFoundError} if the account is not found\n */ async getAddress(): Promise<string> {\n if (!this.account) {\n throw new AccountNotFoundError();\n }\n\n return this.account.address;\n }\n\n /**\n * Signs a message using the associated account.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const message = await signer.signMessage(\"hello\");\n * ```\n *\n * @param {string | Uint8Array} message the message to be signed\n * @returns {Promise<string>} a promise that resolves to the signed message\n * @throws {AccountNotFoundError} if the account is not found\n */\n signMessage(message: string | Uint8Array): Promise<string> {\n if (!this.account) {\n throw new AccountNotFoundError();\n }\n\n return this.account.signMessage({\n message:\n typeof message === \"string\" && !isHex(message)\n ? message\n : { raw: isHex(message) ? toBytes(message) : message },\n });\n }\n\n /**\n * Sends a transaction using the account provider and returns the transaction response.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const tx = await signer.sendTransaction({\n * to: \"0x1234567890123456789012345678901234567890\",\n * value: \"0x0\",\n * data: \"0x\",\n * });\n * ```\n *\n * @param {Deferrable<TransactionRequest>} transaction the transaction request to be sent\n * @returns {Promise<TransactionResponse>} a promise that resolves to the transaction response\n * @throws {AccountNotFoundError} if the account is not found in the provider\n */\n async sendTransaction(\n transaction: Deferrable<TransactionRequest>\n ): Promise<TransactionResponse> {\n if (!this.provider.accountProvider.account || !this.account) {\n throw new AccountNotFoundError();\n }\n\n const resolved = await resolveProperties(transaction);\n const txHash = await this.provider.accountProvider.sendTransaction({\n to: resolved.to as `0x${string}` | undefined,\n data: hexlifyOptional(resolved.data),\n chain: this.provider.accountProvider.chain,\n account: this.account,\n });\n\n return this.provider.getTransaction(txHash);\n }\n\n /**\n * Throws an error indicating that transaction signing is not supported and advises to use `sendUserOperation` instead.\n *\n * @param {Deferrable<TransactionRequest>} _transaction The transaction request\n * @throws {Error} Will always throw an error indicating transaction signing is unsupported\n */\n signTransaction(\n _transaction: Deferrable<TransactionRequest>\n ): Promise<string> {\n throw new Error(\n \"Transaction signing is not supported, use sendUserOperation instead\"\n );\n }\n\n /**\n * Retrieves the BundlerClient instance from the provider.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const bundler = signer.getBundlerClient();\n * ```\n *\n * @returns {BundlerClient<Transport>} The BundlerClient instance\n */\n getBundlerClient(): BundlerClient<Transport> {\n return this.provider.getBundlerClient();\n }\n\n /**\n * Sets the provider for the account signer and returns the updated account signer instance.\n * Note: this is not necessary since the Provider is required by the constructor. This is useful\n * if you want to change the provider after the account signer has been created.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * signer.connect(provider);\n * ```\n *\n * @param {EthersProviderAdapter} provider the provider to be set for the account signer\n * @returns {AccountSigner<TAccount>} the updated account signer instance\n */\n connect(provider: EthersProviderAdapter): AccountSigner<TAccount> {\n this.provider = provider;\n\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"account-signer.js","sourceRoot":"","sources":["../../src/account-signer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountNotFoundError,\n resolveProperties,\n type BatchUserOperationCallData,\n type BundlerClient,\n type GetEntryPointFromAccount,\n type SmartContractAccount,\n type UserOperationCallData,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport type { Deferrable } from \"@ethersproject/properties\";\nimport {\n type TransactionRequest,\n type TransactionResponse,\n} from \"@ethersproject/providers\";\nimport { isHex, toBytes, type Transport } from \"viem\";\nimport { EthersProviderAdapter } from \"./provider-adapter.js\";\n\nconst hexlifyOptional = (value: any): `0x${string}` | undefined => {\n if (value == null) {\n return undefined;\n }\n\n return hexlify(value) as `0x${string}`;\n};\n\n/**\n * Implementation of the ethers Signer interface to use with Smart Contract Accounts\n */\nexport class AccountSigner<\n TAccount extends SmartContractAccount = SmartContractAccount,\n TEntryPointVersion extends\n GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>,\n> extends Signer {\n readonly account: TAccount;\n\n sendUserOperation;\n waitForUserOperationTransaction;\n\n /**\n * Creates a new AccountSigner with the given ethers Provider and Smart Contract Account\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n * ```\n *\n * @template {SmartContractAccount} TAccount the type of the smart contract account\n * @param {EthersProviderAdapter} provider the ethers provider to use\n * @param {TAccount} account the smart contract account that will be used to sign user ops and send them\n */\n constructor(\n public provider: EthersProviderAdapter,\n account: TAccount,\n ) {\n super();\n this.account = account;\n\n this.sendUserOperation = (\n args: UserOperationCallData | BatchUserOperationCallData,\n overrides?: UserOperationOverrides<TEntryPointVersion>,\n ) =>\n this.provider.accountProvider.sendUserOperation({\n uo: args,\n account,\n overrides,\n });\n\n this.waitForUserOperationTransaction =\n this.provider.accountProvider.waitForUserOperationTransaction.bind(\n this.provider.accountProvider,\n );\n }\n\n /**\n * Returns the account address if the account exists.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const address = await signer.getAddress();\n * ```\n *\n * @returns {Promise<string>} a promise that resolves to the account address\n * @throws {AccountNotFoundError} if the account is not found\n */ async getAddress(): Promise<string> {\n if (!this.account) {\n throw new AccountNotFoundError();\n }\n\n return this.account.address;\n }\n\n /**\n * Signs a message using the associated account.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const message = await signer.signMessage(\"hello\");\n * ```\n *\n * @param {string | Uint8Array} message the message to be signed\n * @returns {Promise<string>} a promise that resolves to the signed message\n * @throws {AccountNotFoundError} if the account is not found\n */\n signMessage(message: string | Uint8Array): Promise<string> {\n if (!this.account) {\n throw new AccountNotFoundError();\n }\n\n return this.account.signMessage({\n message:\n typeof message === \"string\" && !isHex(message)\n ? message\n : { raw: isHex(message) ? toBytes(message) : message },\n });\n }\n\n /**\n * Sends a transaction using the account provider and returns the transaction response.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const tx = await signer.sendTransaction({\n * to: \"0x1234567890123456789012345678901234567890\",\n * value: \"0x0\",\n * data: \"0x\",\n * });\n * ```\n *\n * @param {Deferrable<TransactionRequest>} transaction the transaction request to be sent\n * @returns {Promise<TransactionResponse>} a promise that resolves to the transaction response\n * @throws {AccountNotFoundError} if the account is not found in the provider\n */\n async sendTransaction(\n transaction: Deferrable<TransactionRequest>,\n ): Promise<TransactionResponse> {\n if (!this.provider.accountProvider.account || !this.account) {\n throw new AccountNotFoundError();\n }\n\n const resolved = await resolveProperties(transaction);\n const txHash = await this.provider.accountProvider.sendTransaction({\n to: resolved.to as `0x${string}` | undefined,\n data: hexlifyOptional(resolved.data),\n chain: this.provider.accountProvider.chain,\n account: this.account,\n });\n\n return this.provider.getTransaction(txHash);\n }\n\n /**\n * Throws an error indicating that transaction signing is not supported and advises to use `sendUserOperation` instead.\n *\n * @param {Deferrable<TransactionRequest>} _transaction The transaction request\n * @throws {Error} Will always throw an error indicating transaction signing is unsupported\n */\n signTransaction(\n _transaction: Deferrable<TransactionRequest>,\n ): Promise<string> {\n throw new Error(\n \"Transaction signing is not supported, use sendUserOperation instead\",\n );\n }\n\n /**\n * Retrieves the BundlerClient instance from the provider.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * const bundler = signer.getBundlerClient();\n * ```\n *\n * @returns {BundlerClient<Transport>} The BundlerClient instance\n */\n getBundlerClient(): BundlerClient<Transport> {\n return this.provider.getBundlerClient();\n }\n\n /**\n * Sets the provider for the account signer and returns the updated account signer instance.\n * Note: this is not necessary since the Provider is required by the constructor. This is useful\n * if you want to change the provider after the account signer has been created.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { http } from \"viem\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter();\n * const signer = new AccountSigner(provider, account);\n *\n * signer.connect(provider);\n * ```\n *\n * @param {EthersProviderAdapter} provider the provider to be set for the account signer\n * @returns {AccountSigner<TAccount>} the updated account signer instance\n */\n connect(provider: EthersProviderAdapter): AccountSigner<TAccount> {\n this.provider = provider;\n\n return this;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-adapter.js","sourceRoot":"","sources":["../../src/provider-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GAIzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,IAAI,GAGL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,2EAA2E;AAC3E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAGxD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY,IAA+B;QACzC,KAAK,EAAE,CAAC;QA5BD;;;;;WAAoC;QA6B3C,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAEvB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;oBAC9C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;oBACjC,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;oBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC7C,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,MAAW,EAAE,MAAa;QAC7B,sFAAsF;QACtF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CACd,OAAiB;QAEjB,OAAO,IAAI,aAAa,CAAW,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gBAAgB;QACd,OAAO,+BAA+B,CACpC,kBAAkB,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAM;SACnC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAyB,EACzB,KAAY;QAEZ,OAAO,IAAI,qBAAqB,CAAC;YAC/B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;YACpC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import {\n createBundlerClientFromExisting,\n createSmartAccountClient,\n type BundlerClient,\n type SmartAccountClient,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { JsonRpcProvider } from \"@ethersproject/providers\";\nimport {\n createPublicClient,\n custom,\n http,\n type Chain,\n type Transport,\n} from \"viem\";\nimport { AccountSigner } from \"./account-signer.js\";\nimport type { EthersProviderAdapterOpts } from \"./types.js\";\n\n/** Lightweight Adapter for SmtAccountProvider to enable Signer Creation */\nexport class EthersProviderAdapter extends JsonRpcProvider {\n readonly accountProvider: SmartAccountClient;\n\n /**\n * Configures and initializes the account provider based on the given options.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter({\n * account,\n * chain: sepolia,\n * rpcProvider: \"https://eth-sepolia.g.alchemy.com/v2/your-api-key\"\n * });\n * ```\n *\n * @param {EthersProviderAdapterOpts} opts The options for setting up the ethers provider adapter\n */\n constructor(opts: EthersProviderAdapterOpts) {\n super();\n if (\"accountProvider\" in opts) {\n this.accountProvider = opts.accountProvider;\n } else {\n const { chain } = opts;\n\n if (typeof opts.rpcProvider === \"string\") {\n this.accountProvider = createSmartAccountClient({\n transport: http(opts.rpcProvider),\n chain,\n account: opts.account,\n });\n } else {\n this.accountProvider = createSmartAccountClient({\n transport: custom(opts.rpcProvider.transport),\n chain,\n account: opts.account,\n });\n }\n }\n }\n\n /**\n * Rewrites the send method to use the account provider's EIP-1193\n * compliant request method\n *\n * @param {any} method - the RPC method to call\n * @param {any[]} params - the params required by the RPC method\n * @returns {Promise<any>} the result of the RPC call\n */\n send(method: any, params: any[]): Promise<any> {\n // @ts-expect-error - viem is strongly typed on the request methods, but ethers is not\n return this.accountProvider.request({ method, params });\n }\n\n /**\n * Connects the Provider to an Account and returns a Signer\n *\n * @param {SmartContractAccount} account - the account to connect to\n * @returns {AccountSigner} an AccountSigner that can be used to sign and send user operations\n */\n connectToAccount<TAccount extends SmartContractAccount>(\n account: TAccount\n ): AccountSigner<TAccount> {\n return new AccountSigner<TAccount>(this, account);\n }\n\n /**\n * Creates and returns a BundlerClient using the existing account provider's transport and chain.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter({\n * account,\n * chain: sepolia,\n * rpcProvider: \"https://eth-sepolia.g.alchemy.com/v2/your-api-key\"\n * });\n *\n * const bundlerClient = provider.getBundlerClient();\n * ```\n *\n * @returns {BundlerClient<Transport>} A bundler client configured with the existing account provider.\n */\n getBundlerClient(): BundlerClient<Transport> {\n return createBundlerClientFromExisting(\n createPublicClient({\n transport: custom(this.accountProvider.transport),\n chain: this.accountProvider.chain!,\n })\n );\n }\n\n /**\n * Creates an instance of EthersProviderAdapter from an ethers.js JsonRpcProvider.\n *\n * @param {JsonRpcProvider} provider the ethers JSON RPC provider to convert\n * @param {Chain} chain the chain to connect to\n * @returns {EthersProviderAdapter} an instance of EthersProviderAdapter\n */\n static fromEthersProvider(\n provider: JsonRpcProvider,\n chain: Chain\n ): EthersProviderAdapter {\n return new EthersProviderAdapter({\n rpcProvider: provider.connection.url,\n chain,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"provider-adapter.js","sourceRoot":"","sources":["../../src/provider-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GAIzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,IAAI,GAGL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,2EAA2E;AAC3E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAGxD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY,IAA+B;QACzC,KAAK,EAAE,CAAC;QA5BD;;;;;WAAoC;QA6B3C,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAEvB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;oBAC9C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;oBACjC,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC;oBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC7C,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,MAAW,EAAE,MAAa;QAC7B,sFAAsF;QACtF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CACd,OAAiB;QAEjB,OAAO,IAAI,aAAa,CAAW,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gBAAgB;QACd,OAAO,+BAA+B,CACpC,kBAAkB,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAM;SACnC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,QAAyB,EACzB,KAAY;QAEZ,OAAO,IAAI,qBAAqB,CAAC;YAC/B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;YACpC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import {\n createBundlerClientFromExisting,\n createSmartAccountClient,\n type BundlerClient,\n type SmartAccountClient,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { JsonRpcProvider } from \"@ethersproject/providers\";\nimport {\n createPublicClient,\n custom,\n http,\n type Chain,\n type Transport,\n} from \"viem\";\nimport { AccountSigner } from \"./account-signer.js\";\nimport type { EthersProviderAdapterOpts } from \"./types.js\";\n\n/** Lightweight Adapter for SmtAccountProvider to enable Signer Creation */\nexport class EthersProviderAdapter extends JsonRpcProvider {\n readonly accountProvider: SmartAccountClient;\n\n /**\n * Configures and initializes the account provider based on the given options.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter({\n * account,\n * chain: sepolia,\n * rpcProvider: \"https://eth-sepolia.g.alchemy.com/v2/your-api-key\"\n * });\n * ```\n *\n * @param {EthersProviderAdapterOpts} opts The options for setting up the ethers provider adapter\n */\n constructor(opts: EthersProviderAdapterOpts) {\n super();\n if (\"accountProvider\" in opts) {\n this.accountProvider = opts.accountProvider;\n } else {\n const { chain } = opts;\n\n if (typeof opts.rpcProvider === \"string\") {\n this.accountProvider = createSmartAccountClient({\n transport: http(opts.rpcProvider),\n chain,\n account: opts.account,\n });\n } else {\n this.accountProvider = createSmartAccountClient({\n transport: custom(opts.rpcProvider.transport),\n chain,\n account: opts.account,\n });\n }\n }\n }\n\n /**\n * Rewrites the send method to use the account provider's EIP-1193\n * compliant request method\n *\n * @param {any} method - the RPC method to call\n * @param {any[]} params - the params required by the RPC method\n * @returns {Promise<any>} the result of the RPC call\n */\n send(method: any, params: any[]): Promise<any> {\n // @ts-expect-error - viem is strongly typed on the request methods, but ethers is not\n return this.accountProvider.request({ method, params });\n }\n\n /**\n * Connects the Provider to an Account and returns a Signer\n *\n * @param {SmartContractAccount} account - the account to connect to\n * @returns {AccountSigner} an AccountSigner that can be used to sign and send user operations\n */\n connectToAccount<TAccount extends SmartContractAccount>(\n account: TAccount,\n ): AccountSigner<TAccount> {\n return new AccountSigner<TAccount>(this, account);\n }\n\n /**\n * Creates and returns a BundlerClient using the existing account provider's transport and chain.\n *\n * @example\n * ```ts\n * import { AccountSigner, EthersProviderAdapter } from \"@aa-sdk/ethers\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n *\n * const account = await createLightAccount({\n * transport: http(\"https://rpc.testnet.aepps.com\"),\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n *\n * const provider = new EthersProviderAdapter({\n * account,\n * chain: sepolia,\n * rpcProvider: \"https://eth-sepolia.g.alchemy.com/v2/your-api-key\"\n * });\n *\n * const bundlerClient = provider.getBundlerClient();\n * ```\n *\n * @returns {BundlerClient<Transport>} A bundler client configured with the existing account provider.\n */\n getBundlerClient(): BundlerClient<Transport> {\n return createBundlerClientFromExisting(\n createPublicClient({\n transport: custom(this.accountProvider.transport),\n chain: this.accountProvider.chain!,\n }),\n );\n }\n\n /**\n * Creates an instance of EthersProviderAdapter from an ethers.js JsonRpcProvider.\n *\n * @param {JsonRpcProvider} provider the ethers JSON RPC provider to convert\n * @param {Chain} chain the chain to connect to\n * @returns {EthersProviderAdapter} an instance of EthersProviderAdapter\n */\n static fromEthersProvider(\n provider: JsonRpcProvider,\n chain: Chain,\n ): EthersProviderAdapter {\n return new EthersProviderAdapter({\n rpcProvider: provider.connection.url,\n chain,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,MAAM,cAAc,CAAC","sourcesContent":["import {\n type BundlerClient,\n type SmartAccountClient,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport type { Chain, Transport } from \"viem\";\n\nexport type EthersProviderAdapterOpts<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n account?: TAccount;\n} & (\n | {\n rpcProvider: string | BundlerClient<TTransport>;\n chain: Chain;\n }\n | {\n accountProvider: SmartAccountClient<TTransport, TChain, TAccount>;\n }\n);\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,MAAM,cAAc,CAAC","sourcesContent":["import {\n type BundlerClient,\n type SmartAccountClient,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport type { Chain, Transport } from \"viem\";\n\nexport type EthersProviderAdapterOpts<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n> = {\n account?: TAccount;\n} & (\n | {\n rpcProvider: string | BundlerClient<TTransport>;\n chain: Chain;\n }\n | {\n accountProvider: SmartAccountClient<TTransport, TChain, TAccount>;\n }\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAc,EACc,EAAE;IAC9B,OAAO;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAwB,CAAC;QACxE,WAAW,EAAE,KAAK,EAAE,GAAoB,EAAE,EAAE,CAC1C,CAAC,MAAM,MAAM,CAAC,WAAW,CACvB,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CACxC,CAAkB;QACrB,aAAa,EAAE,KAAK,EAIlB,MAAqD,EACrD,EAAE;YACF,OAAO,CAAC,MAAM,MAAM,CAAC,cAAc,CACjC,MAAM,CAAC,MAAM,IAAI,EAAE;YACnB,kFAAkF;YAClF,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CACf,CAAkB,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,MAAc,EACc,EAAE;IAC9B,OAAO;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAsB;QAC/D,WAAW,EAAE,KAAK,EAAE,GAAoB,EAAE,EAAE,CAC1C,CAAC,MAAM,MAAM,CAAC,WAAW,CACvB,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CACxC,CAAkB;QACrB,aAAa,EAAE,KAAK,EAIlB,OAAsD,EACtD,EAAE;YACF,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Address, SmartAccountSigner } from \"@aa-sdk/core\";\nimport type { Signer } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport type { SignableMessage, TypedData, TypedDataDefinition } from \"viem\";\n\n/**\n * Converts a ethersjs Wallet to a SmartAccountSigner\n *\n * @param {Wallet} wallet - the Wallet to convert\n * @returns {SmartAccountSigner<Wallet>} a signer that can be used to sign and send user operations\n */\nexport const convertWalletToAccountSigner = (\n wallet: Wallet\n): SmartAccountSigner<Wallet> => {\n return {\n inner: wallet,\n signerType: \"local\",\n getAddress: async () => Promise.resolve(wallet.address as `0x${string}`),\n signMessage: async (msg: SignableMessage) =>\n (await wallet.signMessage(\n typeof msg === \"string\" ? msg : msg.raw\n )) as `0x${string}`,\n signTypedData: async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\" = keyof TTypedData\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => {\n return (await wallet._signTypedData(\n params.domain ?? {},\n // @ts-expect-error: these params should line up due to the spec for this function\n params.types,\n params.message\n )) as `0x${string}`;\n },\n };\n};\n\n/**\n * Converts a ethers.js Signer to a SmartAccountSigner\n *\n * @param {Signer} signer - the Signer to convert\n * @returns {SmartAccountSigner<Signer>} a signer that can be used to sign and send user operations\n */\nexport const convertEthersSignerToAccountSigner = (\n signer: Signer\n): SmartAccountSigner<Signer> => {\n return {\n inner: signer,\n signerType: \"json-rpc\",\n getAddress: async () => signer.getAddress() as Promise<Address>,\n signMessage: async (msg: SignableMessage) =>\n (await signer.signMessage(\n typeof msg === \"string\" ? msg : msg.raw\n )) as `0x${string}`,\n signTypedData: async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\" = keyof TTypedData\n >(\n _params: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => {\n throw new Error(\n \"signTypedData is not supported for ethers signers; use Wallet\"\n );\n },\n };\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAc,EACc,EAAE;IAC9B,OAAO;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAwB,CAAC;QACxE,WAAW,EAAE,KAAK,EAAE,GAAoB,EAAE,EAAE,CAC1C,CAAC,MAAM,MAAM,CAAC,WAAW,CACvB,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CACxC,CAAkB;QACrB,aAAa,EAAE,KAAK,EAIlB,MAAqD,EACrD,EAAE;YACF,OAAO,CAAC,MAAM,MAAM,CAAC,cAAc,CACjC,MAAM,CAAC,MAAM,IAAI,EAAE;YACnB,kFAAkF;YAClF,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CACf,CAAkB,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,MAAc,EACc,EAAE;IAC9B,OAAO;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAsB;QAC/D,WAAW,EAAE,KAAK,EAAE,GAAoB,EAAE,EAAE,CAC1C,CAAC,MAAM,MAAM,CAAC,WAAW,CACvB,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CACxC,CAAkB;QACrB,aAAa,EAAE,KAAK,EAIlB,OAAsD,EACtD,EAAE;YACF,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Address, SmartAccountSigner } from \"@aa-sdk/core\";\nimport type { Signer } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport type { SignableMessage, TypedData, TypedDataDefinition } from \"viem\";\n\n/**\n * Converts a ethersjs Wallet to a SmartAccountSigner\n *\n * @param {Wallet} wallet - the Wallet to convert\n * @returns {SmartAccountSigner<Wallet>} a signer that can be used to sign and send user operations\n */\nexport const convertWalletToAccountSigner = (\n wallet: Wallet,\n): SmartAccountSigner<Wallet> => {\n return {\n inner: wallet,\n signerType: \"local\",\n getAddress: async () => Promise.resolve(wallet.address as `0x${string}`),\n signMessage: async (msg: SignableMessage) =>\n (await wallet.signMessage(\n typeof msg === \"string\" ? msg : msg.raw,\n )) as `0x${string}`,\n signTypedData: async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\" = keyof TTypedData,\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>,\n ) => {\n return (await wallet._signTypedData(\n params.domain ?? {},\n // @ts-expect-error: these params should line up due to the spec for this function\n params.types,\n params.message,\n )) as `0x${string}`;\n },\n };\n};\n\n/**\n * Converts a ethers.js Signer to a SmartAccountSigner\n *\n * @param {Signer} signer - the Signer to convert\n * @returns {SmartAccountSigner<Signer>} a signer that can be used to sign and send user operations\n */\nexport const convertEthersSignerToAccountSigner = (\n signer: Signer,\n): SmartAccountSigner<Signer> => {\n return {\n inner: signer,\n signerType: \"json-rpc\",\n getAddress: async () => signer.getAddress() as Promise<Address>,\n signMessage: async (msg: SignableMessage) =>\n (await signer.signMessage(\n typeof msg === \"string\" ? msg : msg.raw,\n )) as `0x${string}`,\n signTypedData: async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\" = keyof TTypedData,\n >(\n _params: TypedDataDefinition<TTypedData, TPrimaryType>,\n ) => {\n throw new Error(\n \"signTypedData is not supported for ethers signers; use Wallet\",\n );\n },\n };\n};\n"]}
@@ -11,7 +11,7 @@ export declare class AccountSigner<TAccount extends SmartContractAccount = Smart
11
11
  provider: EthersProviderAdapter;
12
12
  readonly account: TAccount;
13
13
  sendUserOperation: (args: UserOperationCallData | BatchUserOperationCallData, overrides?: UserOperationOverrides<TEntryPointVersion>) => Promise<import("@aa-sdk/core").SendUserOperationResult<keyof import("@aa-sdk/core").EntryPointRegistryBase<unknown>>>;
14
- waitForUserOperationTransaction: (args: import("@aa-sdk/core").WaitForUserOperationTxParameters) => Promise<`0x${string}`>;
14
+ waitForUserOperationTransaction: (args: import("@aa-sdk/core").WaitForUserOperationTxParameters) => Promise<import("viem").Hex>;
15
15
  /**
16
16
  * Creates a new AccountSigner with the given ethers Provider and Smart Contract Account
17
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"account-signer.d.ts","sourceRoot":"","sources":["../../src/account-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAU9D;;GAEG;AACH,qBAAa,aAAa,CACxB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB,EAC5D,kBAAkB,SAAS,wBAAwB,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAClG,SAAQ,MAAM;IA+BK,QAAQ,EAAE,qBAAqB;IA9BlD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAE3B,iBAAiB,SAiCP,qBAAqB,GAAG,0BAA0B,cAC5C,uBAAuB,kBAAkB,CAAC,2HAlCxC;IAClB,+BAA+B,4FAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;gBACgB,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,QAAQ;IAoBrE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG,CAAO,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,eAAe,CACnB,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAC1C,OAAO,CAAC,mBAAmB,CAAC;IAgB/B;;;;;OAKG;IACH,eAAe,CACb,YAAY,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC;IAMlB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,IAAI,aAAa,CAAC,SAAS,CAAC;IAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,QAAQ,EAAE,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC;CAKlE"}
1
+ {"version":3,"file":"account-signer.d.ts","sourceRoot":"","sources":["../../src/account-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAU9D;;GAEG;AACH,qBAAa,aAAa,CACxB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB,EAC5D,kBAAkB,SAChB,wBAAwB,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CACzE,SAAQ,MAAM;IAgCL,QAAQ,EAAE,qBAAqB;IA/BxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAE3B,iBAAiB,SAoCP,qBAAqB,GAAG,0BAA0B,cAC5C,sBAAsB,CAAC,kBAAkB,CAAC,2HArCxC;IAClB,+BAA+B,iGAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;gBAEM,QAAQ,EAAE,qBAAqB,EACtC,OAAO,EAAE,QAAQ;IAqBnB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG,CAAO,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,eAAe,CACnB,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAC1C,OAAO,CAAC,mBAAmB,CAAC;IAgB/B;;;;;OAKG;IACH,eAAe,CACb,YAAY,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC;IAMlB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,IAAI,aAAa,CAAC,SAAS,CAAC;IAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,QAAQ,EAAE,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC;CAKlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,WAC/B,MAAM,KACb,mBAAmB,MAAM,CAuB3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,WACrC,MAAM,KACb,mBAAmB,MAAM,CAoB3B,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,KACb,kBAAkB,CAAC,MAAM,CAuB3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,MAAM,KACb,kBAAkB,CAAC,MAAM,CAoB3B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aa-sdk/ethers",
3
3
  "license": "MIT",
4
- "version": "4.35.0",
4
+ "version": "4.35.1",
5
5
  "description": "Ethers.js wrapper for @aa-sdk/core",
6
6
  "author": "Alchemy",
7
7
  "type": "module",
@@ -42,15 +42,13 @@
42
42
  "test:run": "vitest run"
43
43
  },
44
44
  "devDependencies": {
45
- "@account-kit/smart-contracts": "^4.35.0",
45
+ "@account-kit/smart-contracts": "^4.35.1",
46
46
  "alchemy-sdk": "^3.0.0",
47
47
  "dotenv": "^16.0.3",
48
- "typescript": "^5.0.4",
49
- "typescript-template": "*",
50
- "vitest": "^2.0.4"
48
+ "typescript-template": "*"
51
49
  },
52
50
  "dependencies": {
53
- "@aa-sdk/core": "^4.35.0",
51
+ "@aa-sdk/core": "^4.35.1",
54
52
  "@ethersproject/abi": "^5.7.0",
55
53
  "@ethersproject/abstract-signer": "^5.7.0",
56
54
  "@ethersproject/bytes": "^5.7.0",
@@ -70,5 +68,5 @@
70
68
  "bugs": {
71
69
  "url": "https://github.com/alchemyplatform/aa-sdk/issues"
72
70
  },
73
- "gitHead": "3e5736311d16ae0eeaef9a869da2aff1e361a3f9"
71
+ "gitHead": "31e2138c2dd08c5b32cc2d67b3f0d7b2a7d21f4f"
74
72
  }
@@ -31,7 +31,8 @@ const hexlifyOptional = (value: any): `0x${string}` | undefined => {
31
31
  */
32
32
  export class AccountSigner<
33
33
  TAccount extends SmartContractAccount = SmartContractAccount,
34
- TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>
34
+ TEntryPointVersion extends
35
+ GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>,
35
36
  > extends Signer {
36
37
  readonly account: TAccount;
37
38
 
@@ -63,13 +64,16 @@ export class AccountSigner<
63
64
  * @param {EthersProviderAdapter} provider the ethers provider to use
64
65
  * @param {TAccount} account the smart contract account that will be used to sign user ops and send them
65
66
  */
66
- constructor(public provider: EthersProviderAdapter, account: TAccount) {
67
+ constructor(
68
+ public provider: EthersProviderAdapter,
69
+ account: TAccount,
70
+ ) {
67
71
  super();
68
72
  this.account = account;
69
73
 
70
74
  this.sendUserOperation = (
71
75
  args: UserOperationCallData | BatchUserOperationCallData,
72
- overrides?: UserOperationOverrides<TEntryPointVersion>
76
+ overrides?: UserOperationOverrides<TEntryPointVersion>,
73
77
  ) =>
74
78
  this.provider.accountProvider.sendUserOperation({
75
79
  uo: args,
@@ -79,7 +83,7 @@ export class AccountSigner<
79
83
 
80
84
  this.waitForUserOperationTransaction =
81
85
  this.provider.accountProvider.waitForUserOperationTransaction.bind(
82
- this.provider.accountProvider
86
+ this.provider.accountProvider,
83
87
  );
84
88
  }
85
89
 
@@ -188,7 +192,7 @@ export class AccountSigner<
188
192
  * @throws {AccountNotFoundError} if the account is not found in the provider
189
193
  */
190
194
  async sendTransaction(
191
- transaction: Deferrable<TransactionRequest>
195
+ transaction: Deferrable<TransactionRequest>,
192
196
  ): Promise<TransactionResponse> {
193
197
  if (!this.provider.accountProvider.account || !this.account) {
194
198
  throw new AccountNotFoundError();
@@ -212,10 +216,10 @@ export class AccountSigner<
212
216
  * @throws {Error} Will always throw an error indicating transaction signing is unsupported
213
217
  */
214
218
  signTransaction(
215
- _transaction: Deferrable<TransactionRequest>
219
+ _transaction: Deferrable<TransactionRequest>,
216
220
  ): Promise<string> {
217
221
  throw new Error(
218
- "Transaction signing is not supported, use sendUserOperation instead"
222
+ "Transaction signing is not supported, use sendUserOperation instead",
219
223
  );
220
224
  }
221
225
 
@@ -88,7 +88,7 @@ export class EthersProviderAdapter extends JsonRpcProvider {
88
88
  * @returns {AccountSigner} an AccountSigner that can be used to sign and send user operations
89
89
  */
90
90
  connectToAccount<TAccount extends SmartContractAccount>(
91
- account: TAccount
91
+ account: TAccount,
92
92
  ): AccountSigner<TAccount> {
93
93
  return new AccountSigner<TAccount>(this, account);
94
94
  }
@@ -125,7 +125,7 @@ export class EthersProviderAdapter extends JsonRpcProvider {
125
125
  createPublicClient({
126
126
  transport: custom(this.accountProvider.transport),
127
127
  chain: this.accountProvider.chain!,
128
- })
128
+ }),
129
129
  );
130
130
  }
131
131
 
@@ -138,7 +138,7 @@ export class EthersProviderAdapter extends JsonRpcProvider {
138
138
  */
139
139
  static fromEthersProvider(
140
140
  provider: JsonRpcProvider,
141
- chain: Chain
141
+ chain: Chain,
142
142
  ): EthersProviderAdapter {
143
143
  return new EthersProviderAdapter({
144
144
  rpcProvider: provider.connection.url,
package/src/types.ts CHANGED
@@ -10,7 +10,7 @@ export type EthersProviderAdapterOpts<
10
10
  TChain extends Chain = Chain,
11
11
  TAccount extends SmartContractAccount | undefined =
12
12
  | SmartContractAccount
13
- | undefined
13
+ | undefined,
14
14
  > = {
15
15
  account?: TAccount;
16
16
  } & (
package/src/utils.ts CHANGED
@@ -10,7 +10,7 @@ import type { SignableMessage, TypedData, TypedDataDefinition } from "viem";
10
10
  * @returns {SmartAccountSigner<Wallet>} a signer that can be used to sign and send user operations
11
11
  */
12
12
  export const convertWalletToAccountSigner = (
13
- wallet: Wallet
13
+ wallet: Wallet,
14
14
  ): SmartAccountSigner<Wallet> => {
15
15
  return {
16
16
  inner: wallet,
@@ -18,19 +18,19 @@ export const convertWalletToAccountSigner = (
18
18
  getAddress: async () => Promise.resolve(wallet.address as `0x${string}`),
19
19
  signMessage: async (msg: SignableMessage) =>
20
20
  (await wallet.signMessage(
21
- typeof msg === "string" ? msg : msg.raw
21
+ typeof msg === "string" ? msg : msg.raw,
22
22
  )) as `0x${string}`,
23
23
  signTypedData: async <
24
24
  const TTypedData extends TypedData | { [key: string]: unknown },
25
- TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData
25
+ TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData,
26
26
  >(
27
- params: TypedDataDefinition<TTypedData, TPrimaryType>
27
+ params: TypedDataDefinition<TTypedData, TPrimaryType>,
28
28
  ) => {
29
29
  return (await wallet._signTypedData(
30
30
  params.domain ?? {},
31
31
  // @ts-expect-error: these params should line up due to the spec for this function
32
32
  params.types,
33
- params.message
33
+ params.message,
34
34
  )) as `0x${string}`;
35
35
  },
36
36
  };
@@ -43,7 +43,7 @@ export const convertWalletToAccountSigner = (
43
43
  * @returns {SmartAccountSigner<Signer>} a signer that can be used to sign and send user operations
44
44
  */
45
45
  export const convertEthersSignerToAccountSigner = (
46
- signer: Signer
46
+ signer: Signer,
47
47
  ): SmartAccountSigner<Signer> => {
48
48
  return {
49
49
  inner: signer,
@@ -51,16 +51,16 @@ export const convertEthersSignerToAccountSigner = (
51
51
  getAddress: async () => signer.getAddress() as Promise<Address>,
52
52
  signMessage: async (msg: SignableMessage) =>
53
53
  (await signer.signMessage(
54
- typeof msg === "string" ? msg : msg.raw
54
+ typeof msg === "string" ? msg : msg.raw,
55
55
  )) as `0x${string}`,
56
56
  signTypedData: async <
57
57
  const TTypedData extends TypedData | { [key: string]: unknown },
58
- TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData
58
+ TPrimaryType extends keyof TTypedData | "EIP712Domain" = keyof TTypedData,
59
59
  >(
60
- _params: TypedDataDefinition<TTypedData, TPrimaryType>
60
+ _params: TypedDataDefinition<TTypedData, TPrimaryType>,
61
61
  ) => {
62
62
  throw new Error(
63
- "signTypedData is not supported for ethers signers; use Wallet"
63
+ "signTypedData is not supported for ethers signers; use Wallet",
64
64
  );
65
65
  },
66
66
  };