import { Address, Hash, Hex, PublicClient } from "viem";
import { Deployment, GasPrice, MetaTransaction, UnsignedUserOperation, UserOperation } from "../types";
/**
 * All contracts used in account creation & execution
 */
export declare class SafeContractSuite {
    setupClient: PublicClient;
    singleton: Deployment;
    proxyFactory: Deployment;
    m4337: Deployment;
    moduleSetup: Deployment;
    entryPoint: Deployment;
    constructor(rpcUrl?: string);
    addressForSetup(setup: Hex, saltNonce: string): Promise<Address>;
    getSetup(owners: string[]): Hex;
    addOwnerData(newOwner: Address): Hex;
    removeOwnerData(chainId: number, safeAddress: Address, owner: Address): Promise<Hex>;
    getOpHash(chainId: number, unsignedUserOp: UserOperation): Promise<Hash>;
    private factoryDataForSetup;
    buildUserOp(nonce: bigint, txData: MetaTransaction, safeAddress: Address, feeData: GasPrice, setup: string, safeNotDeployed: boolean, safeSaltNonce: string): Promise<UnsignedUserOperation>;
    getNonce(address: Address, chainId: number): Promise<bigint>;
    prevOwner(chainId: number, safeAddress: Address, owner: Address): Promise<Address>;
}
