permissionless
Version:
A utility library for working with ERC-4337
98 lines • 4.19 kB
TypeScript
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, entryPoint06Abi, entryPoint07Abi } from "viem/account-abstraction";
import { type EthereumProvider } from "../../utils/toOwner.js";
export type SafeVersion = "1.4.1";
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 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 }: {
addModuleLibAddress?: Address;
safeModuleSetupAddress?: Address;
safe4337ModuleAddress?: Address;
safeProxyFactoryAddress?: Address;
safeSingletonAddress?: Address;
multiSendAddress?: Address;
multiSendCallOnlyAddress?: Address;
}) => {
safeModuleSetupAddress: `0x${string}`;
safe4337ModuleAddress: `0x${string}`;
safeProxyFactoryAddress: `0x${string}`;
safeSingletonAddress: `0x${string}`;
multiSendAddress: `0x${string}`;
multiSendCallOnlyAddress: `0x${string}`;
};
type GetErc7579Params<TErc7579 extends Address | undefined> = 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;
};
export type ToSafeSmartAccountParameters<entryPointVersion extends "0.6" | "0.7", TErc7579 extends Address | undefined> = {
client: Client<Transport, Chain | undefined, JsonRpcAccount | LocalAccount | undefined>;
owners: (Account | WalletClient<Transport, Chain | undefined, Account> | EthereumProvider)[];
threshold?: bigint;
version: SafeVersion;
entryPoint?: {
address: Address;
version: entryPointVersion;
};
safe4337ModuleAddress?: Address;
erc7579LaunchpadAddress?: TErc7579;
safeProxyFactoryAddress?: Address;
safeSingletonAddress?: Address;
address?: Address;
saltNonce?: bigint;
validUntil?: number;
validAfter?: number;
nonceKey?: bigint;
paymentToken?: Address;
payment?: bigint;
paymentReceiver?: Address;
onchainIdentifier?: Hex;
} & GetErc7579Params<TErc7579>;
export type SafeSmartAccountImplementation<entryPointVersion extends "0.6" | "0.7" = "0.7"> = Assign<SmartAccountImplementation<entryPointVersion extends "0.6" ? typeof entryPoint06Abi : typeof entryPoint07Abi, entryPointVersion>, {
sign: NonNullable<SmartAccountImplementation["sign"]>;
}>;
export type ToSafeSmartAccountReturnType<entryPointVersion extends "0.6" | "0.7" = "0.7"> = SmartAccount<SafeSmartAccountImplementation<entryPointVersion>>;
/**
* @description Creates an Simple Account from a private key.
*
* @returns A Private Key Simple Account.
*/
export declare function toSafeSmartAccount<entryPointVersion extends "0.6" | "0.7", TErc7579 extends Address | undefined>(parameters: ToSafeSmartAccountParameters<entryPointVersion, TErc7579>): Promise<ToSafeSmartAccountReturnType<entryPointVersion>>;
export {};
//# sourceMappingURL=toSafeSmartAccount.d.ts.map