import type { CliConfig } from '../../lib/config.js';
import type { LocalEmailLocale } from './contract.js';
import type { VerifiedRequester } from './email-verification.js';
import { type VerificationClient, type VerifiedSession } from './submit-client.js';
/** A signed-in requester. Its exchange always starts a new checkup, and vigilbase.com refuses one not awaiting an upload. */
export declare class IdentityRequester implements VerifiedRequester {
    #private;
    constructor(session: VerifiedSession, exchange: () => Promise<VerifiedSession>);
    get requester(): string;
    get sessionCode(): string;
    get expiresAt(): string;
    get renewable(): boolean;
    renew(): Promise<void>;
    toJSON(): {
        requester: string;
    };
}
/** One's proof for the saved login, ready to exchange at vigilbase.com for a checkup session. */
export interface SignedInIdentity {
    exchange(client: VerificationClient, locale: LocalEmailLocale): Promise<VerifiedRequester>;
}
/**
 * Ask One for a run-scoped proof of the saved login. It costs no email and
 * starts no checkup, so it runs alongside the availability check. Null when
 * there is no usable login, One rejects it, or `--email` names another address.
 */
export declare function startSignedInIdentity(options: {
    config: CliConfig;
    email?: string;
    warn(message: string): void;
}): Promise<SignedInIdentity | null>;
