import { type Account as ViemAccount, type Chain, type Transport, type WalletClient } from "viem";
import { type KernelCapabilities } from "./capabilities.js";
import type { AgentContext, IAccountNamespace, IDispatchNamespace, IFeesNamespace, IMandateNamespace, IPrincipalNamespace, ISailorClient, ISessionNamespace, IStrategyNamespace, SailorClientConfig } from "./types.js";
export type { AgentContext };
export { SailKernelAbi } from "./abis/SailKernel.js";
export { MandateFactoryAbi } from "./abis/MandateFactory.js";
/** A WalletClient with bound account + chain, used for state-changing calls. */
type Signer = WalletClient<Transport, Chain, ViemAccount>;
/** Top-level client for all Sailor operations. Instantiate once per chain. */
export declare class SailorClient implements ISailorClient {
    readonly account: IAccountNamespace;
    readonly mandate: IMandateNamespace;
    readonly dispatch: IDispatchNamespace;
    readonly strategy: IStrategyNamespace;
    readonly session: ISessionNamespace;
    readonly fees: IFeesNamespace;
    readonly principal: IPrincipalNamespace;
    private readonly config;
    private readonly walletClient?;
    private readonly publicClient;
    constructor(config: SailorClientConfig, walletClient?: Signer);
    /**
     * Returns a new client bound to a WalletClient for state-changing calls.
     * Reads work without a signer; writes (dispatch, fees, principal, account
     * create, mandate attach) require one.
     */
    withSigner(walletClient: Signer): SailorClient;
    /**
     * Detect (and cache) the deployed kernel's dispatch model and EIP-712 shape by
     * reading its on-chain typehash constants. Falls back to the bundled
     * deployment's static `dispatchModel` hint if the on-chain read is unavailable.
     * Call this during onboarding/preflight to fail loudly on a kernel the SDK
     * cannot safely sign for.
     */
    capabilities(): Promise<KernelCapabilities>;
}
//# sourceMappingURL=client.d.ts.map