import { Agent as DfinityAgent, HttpAgent, Identity } from "@dfinity/agent";
import { Signer } from "@slide-computer/signer";
import { SignerAgent } from "@slide-computer/signer-agent";
import { PartialIdentity } from "@dfinity/identity";
import { Delegation } from "@dfinity/identity";
export type AgentOptions = {
    delegation?: Delegation;
    signerAgent: SignerAgent<Signer>;
    agent: HttpAgent;
    identity?: Identity | PartialIdentity;
};
export declare class Agent implements DfinityAgent {
    private signerAgentStrategy;
    private agentStrategy;
    private delegation?;
    private constructor();
    static create({ delegation, signerAgent, agent }: AgentOptions): Promise<Agent>;
    call(...params: Parameters<DfinityAgent["call"]>): ReturnType<DfinityAgent["call"]>;
    query(...params: Parameters<DfinityAgent["query"]>): ReturnType<DfinityAgent["query"]>;
    get rootKey(): ArrayBuffer | null;
    fetchRootKey(): ReturnType<DfinityAgent["fetchRootKey"]>;
    getPrincipal(): ReturnType<DfinityAgent["getPrincipal"]>;
    status(): ReturnType<DfinityAgent["status"]>;
    readState(...params: Parameters<DfinityAgent["readState"]>): ReturnType<DfinityAgent["readState"]>;
    createReadStateRequest?(...params: Parameters<NonNullable<DfinityAgent["createReadStateRequest"]>>): ReturnType<NonNullable<DfinityAgent["createReadStateRequest"]>>;
}
