import { getSpendingLimitsPolicy, getSudoPolicy, getTimeFramePolicy, getUniversalActionPolicy, getUsageLimitPolicy, getValueLimitPolicy } from '@rhinestone/module-sdk';
import { type SmartAccountClient } from 'permissionless';
import { type Account, type Address, type Chain, type Hex, type PrivateKeyAccount, type SignableMessage, type WalletClient } from 'viem';
import { type WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction';
export declare const DEFAULT_RPC_URL = "https://rpc-geo-genesis-h0q2s21xx8.t.conduit.xyz";
export declare const TESTNET_RPC_URL = "https://rpc-geo-test-zc16z3tcvf.t.conduit.xyz";
export declare const GEOGENESIS: {
    id: number;
    name: string;
    nativeCurrency: {
        name: string;
        symbol: string;
        decimals: number;
    };
    rpcUrls: {
        default: {
            http: string[];
        };
        public: {
            http: string[];
        };
    };
};
export declare const GEO_TESTNET: {
    id: number;
    name: string;
    nativeCurrency: {
        name: string;
        symbol: string;
        decimals: number;
    };
    rpcUrls: {
        default: {
            http: string[];
        };
        public: {
            http: string[];
        };
    };
};
export type Action = {
    actionTarget: Address;
    actionTargetSelector: Hex;
    actionPolicies: {
        policy: Address;
        address: Address;
        initData: Hex;
    }[];
};
export { getSpendingLimitsPolicy, getSudoPolicy, getTimeFramePolicy, getUniversalActionPolicy, getUsageLimitPolicy, getValueLimitPolicy, };
export type SmartSessionClient = {
    account: Account;
    chain: Chain;
    sendUserOperation: <const calls extends readonly unknown[]>({ calls }: {
        calls: calls;
    }) => Promise<string>;
    waitForUserOperationReceipt: ({ hash }: {
        hash: Hex;
    }) => Promise<WaitForUserOperationReceiptReturnType>;
    signMessage: ({ message }: {
        message: SignableMessage;
    }) => Promise<Hex>;
};
export declare const isSmartAccountDeployed: (smartAccountClient: SmartAccountClient) => Promise<boolean>;
export type SmartAccountParams = {
    owner: WalletClient | Account;
    address?: Hex;
    chain?: Chain;
    rpcUrl?: string;
    apiKey?: string;
};
export declare const getSmartAccountWalletClient: ({ owner, address, chain, rpcUrl, apiKey, }: SmartAccountParams) => Promise<SmartAccountClient>;
export declare const legacySmartAccountUpdateStatus: (smartAccountClient: SmartAccountClient, chain: Chain, rpcUrl: string) => Promise<{
    has7579Module: boolean;
    hasSmartSessionsValidator: boolean;
    hasOwnableValidator: boolean;
}>;
export declare const smartAccountNeedsUpdate: (smartAccountClient: SmartAccountClient, chain: Chain, rpcUrl: string) => Promise<boolean>;
export declare const updateLegacySmartAccount: (smartAccountClient: SmartAccountClient, chain: Chain, rpcUrl: string) => Promise<WaitForUserOperationReceiptReturnType | undefined>;
export declare const addSmartAccountOwner: (smartAccountClient: SmartAccountClient, newOwner: Address, chain: Chain, rpcUrl: string) => Promise<{
    actualGasCost: bigint;
    actualGasUsed: bigint;
    entryPoint: Address;
    logs: import("viem").Log<bigint, number, false>[];
    nonce: bigint;
    paymaster?: `0x${string}` | undefined;
    reason?: string | undefined | undefined;
    receipt: import("viem").TransactionReceipt<bigint, number, "success" | "reverted">;
    sender: Address;
    success: boolean;
    userOpHash: import("viem").Hash;
} | undefined>;
export declare const createSmartSession: (owner: WalletClient | PrivateKeyAccount, accountAddress: Hex, sessionPrivateKey: Hex, chain: Chain, rpcUrl: string, { allowCreateSpace, spaces, additionalActions, }?: {
    allowCreateSpace?: boolean;
    spaces?: {
        address: Hex;
        type: "personal" | "public";
    }[];
    additionalActions?: Action[];
}) => Promise<Hex>;
export declare const getSmartSessionClient: ({ accountAddress, chain, rpcUrl, apiKey, sessionPrivateKey, permissionId, }: {
    accountAddress: Hex;
    chain?: Chain;
    rpcUrl?: string;
    apiKey?: string;
    sessionPrivateKey: Hex;
    permissionId: Hex;
}) => Promise<SmartSessionClient>;
//# sourceMappingURL=smart-account.d.ts.map