import { type Account, type Address, type Assign, type Chain, type Client, type Hex, type JsonRpcAccount, type LocalAccount, type Transport, type WalletClient } from "viem"; import { type SmartAccount, type SmartAccountImplementation, type UserOperation, type WebAuthnAccount, entryPoint06Abi, entryPoint07Abi } from "viem/account-abstraction"; import { type EthereumProvider } from "../../utils/toOwner.js"; export type SafeVersion = "1.4.1" | "1.5.0"; export declare const EIP712_SAFE_OPERATION_TYPE_V06: { SafeOp: { type: string; name: string; }[]; }; export declare const EIP712_SAFE_OPERATION_TYPE_V07: { SafeOp: { type: string; name: string; }[]; }; export declare const isWebAuthnAccount: (owner: WebAuthnAccount | RegularOwner) => owner is WebAuthnAccount; export declare function getPaymasterAndData(unpackedUserOperation: UserOperation): `0x${string}`; export declare const getDefaultAddresses: (safeVersion: SafeVersion, entryPointVersion: "0.6" | "0.7", { addModuleLibAddress: _addModuleLibAddress, safeModuleSetupAddress: _safeModuleSetupAddress, safe4337ModuleAddress: _safe4337ModuleAddress, safeProxyFactoryAddress: _safeProxyFactoryAddress, safeSingletonAddress: _safeSingletonAddress, multiSendAddress: _multiSendAddress, multiSendCallOnlyAddress: _multiSendCallOnlyAddress, safeWebAuthnSharedSignerAddress: _safeWebAuthnSharedSignerAddress, safeP256VerifierAddress: _safeP256VerifierAddress }: { addModuleLibAddress?: `0x${string}` | undefined; safeModuleSetupAddress?: `0x${string}` | undefined; safe4337ModuleAddress?: `0x${string}` | undefined; safeProxyFactoryAddress?: `0x${string}` | undefined; safeSingletonAddress?: `0x${string}` | undefined; multiSendAddress?: `0x${string}` | undefined; multiSendCallOnlyAddress?: `0x${string}` | undefined; safeWebAuthnSharedSignerAddress?: `0x${string}` | undefined; safeP256VerifierAddress?: `0x${string}` | undefined; }) => { safeModuleSetupAddress: `0x${string}`; safe4337ModuleAddress: `0x${string}`; safeProxyFactoryAddress: `0x${string}`; safeSingletonAddress: `0x${string}`; multiSendAddress: `0x${string}`; multiSendCallOnlyAddress: `0x${string}`; safeWebAuthnSharedSignerAddress: `0x${string}` | undefined; safeP256VerifierAddress: `0x${string}` | undefined; }; type GetErc7579Params = TErc7579 extends undefined ? { safeModuleSetupAddress?: Address; multiSendAddress?: Address; multiSendCallOnlyAddress?: Address; setupTransactions?: { to: Address; data: Address; value: bigint; }[]; safeModules?: Address[]; } : { validators?: { address: Address; context: Address; }[]; executors?: { address: Address; context: Address; }[]; fallbacks?: { address: Address; context: Address; }[]; hooks?: { address: Address; context: Address; }[]; attesters?: Address[]; attestersThreshold?: number; }; type RegularOwner = Account | WalletClient | EthereumProvider; type ValidateAtMostOneWebAuthn = T extends readonly [] ? true : T extends readonly [infer H, ...infer Rest] ? H extends WebAuthnAccount ? SeenWebAuthn extends true ? false : ValidateAtMostOneWebAuthn : H extends RegularOwner ? ValidateAtMostOneWebAuthn : false : true; type OwnersArray = ValidateAtMostOneWebAuthn extends true ? T : never; export type ToSafeSmartAccountParameters = { client: Client; owners: OwnersArray; threshold?: bigint; version: SafeVersion; entryPoint?: { address: Address; version: entryPointVersion; }; safe4337ModuleAddress?: Address; erc7579LaunchpadAddress?: TErc7579; safeProxyFactoryAddress?: Address; safeSingletonAddress?: Address; safeWebAuthnSharedSignerAddress?: Address; safeP256VerifierAddress?: Address; address?: Address; saltNonce?: bigint; validUntil?: number; validAfter?: number; nonceKey?: bigint; paymentToken?: Address; payment?: bigint; paymentReceiver?: Address; onchainIdentifier?: Hex; /** * When true (default), the Safe setup always routes through MultiSend, * even for a single setup transaction. When false, a single setup * transaction (e.g. just enableModules) is called directly without * MultiSend wrapping. This produces a different counterfactual address * and is compatible with Safe Protocol Kit / relay-kit address derivation. * @default true */ useMultiSendForSetup?: boolean; } & GetErc7579Params; export type SafeSmartAccountImplementation = Assign, { sign: NonNullable; }>; export type ToSafeSmartAccountReturnType = SmartAccount>; /** * @description Creates an Simple Account from a private key. * * @returns A Private Key Simple Account. */ export declare function toSafeSmartAccount(parameters: ToSafeSmartAccountParameters): Promise>; export {}; //# sourceMappingURL=toSafeSmartAccount.d.ts.map