import { AuthClient } from '@icp-sdk/auth/client';
import type { DelegationChain, ECDSAKeyIdentity } from '@icp-sdk/core/identity';
export declare class AuthClientStore {
    #private;
    private constructor();
    static getInstance(): AuthClientStore;
    createAuthClient: () => Promise<AuthClient>;
    /**
     * Since icp-js-core persists identity keys in IndexedDB by default,
     * they could be tampered with and affect the next login.
     * To ensure each session starts clean and safe, we clear the stored keys
     * before creating a new AuthClient.
     *
     * We also remove the delegation because `AuthClient.create` does not
     * overwrite or discard an existing delegation — it reads it from storage
     * and pairs it with whatever key is present. Once the key is cleared and
     * a fresh one generated, the old delegation would reference a different
     * public key, producing an ECDSA P256 signature / delegation mismatch.
     */
    safeCreateAuthClient: () => Promise<AuthClient>;
    getAuthClient: () => AuthClient | undefined | null;
    logout: () => Promise<void>;
    setAuthClientStorage: ({ delegationChain, sessionKey }: {
        delegationChain: DelegationChain;
        sessionKey: ECDSAKeyIdentity;
    }) => Promise<void>;
}
