import { ApolloClient } from "@apollo/client/core";
import { PerspectiveInput } from "../perspectives/Perspective";
import { Agent, Apps, AuthInfoInput, EntanglementProof, EntanglementProofInput } from "./Agent";
import { AgentStatus } from "./AgentStatus";
import { LinkMutations } from "../links/Links";
export interface InitializeArgs {
    did: string;
    didDocument: string;
    keystore: string;
    passphrase: string;
}
export type AgentUpdatedCallback = (agent: Agent) => null;
export type AgentStatusChangedCallback = (agent: Agent) => null;
export type AgentAppsUpdatedCallback = () => null;
/**
 * Provides access to all functions regarding the local agent,
 * such as generating, locking, unlocking, importing the DID keystore,
 * as well as updating the publicly shared Agent expression.
 */
export declare class AgentClient {
    #private;
    constructor(client: ApolloClient<any>, subscribe?: boolean);
    /**
     * Returns the Agent expression of the local agent as it is shared
     * publicly via the AgentLanguage.
     *
     * I.e. this is the users profile.
     */
    me(): Promise<Agent>;
    status(): Promise<AgentStatus>;
    generate(passphrase: string): Promise<AgentStatus>;
    import(args: InitializeArgs): Promise<AgentStatus>;
    lock(passphrase: string): Promise<AgentStatus>;
    unlock(passphrase: string, holochain?: boolean): Promise<AgentStatus>;
    byDID(did: string): Promise<Agent>;
    updatePublicPerspective(perspective: PerspectiveInput): Promise<Agent>;
    mutatePublicPerspective(mutations: LinkMutations): Promise<Agent>;
    updateDirectMessageLanguage(directMessageLanguage: string): Promise<Agent>;
    addEntanglementProofs(proofs: EntanglementProofInput[]): Promise<EntanglementProof[]>;
    deleteEntanglementProofs(proofs: EntanglementProofInput[]): Promise<EntanglementProof[]>;
    getEntanglementProofs(): Promise<string[]>;
    entanglementProofPreFlight(deviceKey: string, deviceKeyType: string): Promise<EntanglementProof>;
    addUpdatedListener(listener: any): void;
    addAppChangedListener(listener: any): void;
    subscribeAgentUpdated(): void;
    subscribeAppsChanged(): void;
    addAgentStatusChangedListener(listener: any): void;
    subscribeAgentStatusChanged(): void;
    requestCapability(authInfo: AuthInfoInput): Promise<string>;
    permitCapability(auth: string): Promise<string>;
    generateJwt(requestId: string, rand: string): Promise<string>;
    getApps(): Promise<Apps[]>;
    removeApp(requestId: string): Promise<Apps[]>;
    revokeToken(requestId: string): Promise<Apps[]>;
    isLocked(): Promise<boolean>;
    signMessage(message: string): Promise<string>;
}
