import type { Abi, Account, Address, Chain, Client, ContractConstructorArgs, GetChainParameter, Hash, Hex, SendTransactionParameters, SendTransactionReturnType, Transport, UnionEvaluate, UnionOmit, WalletClient } from "viem"; import type { OnchainSDK } from "../sdk/index.js"; import { Construct } from "../sdk/index.js"; export declare const PUBLIC_CREATE2_FACTORY: Address; export declare const DEFAULT_CREATE2_SALT = "GEARBOX"; export type Create2Parameters> = UnionOmit, "accessList" | "chain" | "to" | "data"> & GetChainParameter & UnionEvaluate & { abi: abi; /** * The contract bytecode to deploy */ bytecode: Hex; /** * Salt for the CREATE2 deployment (will be padded to 32 bytes) * Default to "GEARBOX" */ salt?: string; }; export interface EnsureExistsUsingPublicCreate2ReturnType { address: Address; hash?: Hash; } export declare class Create2Deployer extends Construct { #private; constructor(sdk: OnchainSDK, walletClient: WalletClient); ensureExists(parameters: Create2Parameters): Promise; } /** * Viem action that deploys a contract using the public CREATE2 factory */ export declare function deployUsingPublicCreate2(walletClient: Client, parameters: Create2Parameters): Promise; export type GetCreate2AddressParameters> = UnionEvaluate & { abi: abi; /** * The contract bytecode to deploy */ bytecode: Hex; /** * Salt for the CREATE2 deployment (will be padded to 32 bytes) * Default to "GEARBOX" */ salt?: string; }; /** * Get the address of a contract deployed using the public CREATE2 factory * @param salt - Salt for the CREATE2 deployment (will be padded to 32 bytes) * @param bytecode - The contract bytecode to deploy * @returns Address of the deployed contract */ export declare function getPublicCreate2Address(params: GetCreate2AddressParameters): Address; /** * Viem action that checks if contract is deployed using the public CREATE2 factory */ export declare function isDeployedUsingPublicCreate2(client: Client, params: GetCreate2AddressParameters): Promise;