/**
 * SimpleLogin REST client.
 *
 * SimpleLogin is the alias-management service owned by Proton (since 2022).
 * It exposes a public HTTP API documented at:
 *   https://github.com/simple-login/app/blob/master/docs/api.md
 *
 * Authentication uses a single `Authentication:` header (note the non-standard
 * spelling — that's how SimpleLogin designed it). API keys are scoped per
 * account and generated from the SimpleLogin dashboard.
 *
 * All requests are fire-and-forget from mailpouch's perspective; we do
 * not persist alias state locally — the agent always reads fresh from the API.
 */
export interface SimpleLoginAlias {
    id: number;
    email: string;
    enabled: boolean;
    creation_date?: string;
    creation_timestamp?: number;
    name?: string | null;
    note?: string | null;
    nb_block?: number;
    nb_forward?: number;
    nb_reply?: number;
}
export interface SimpleLoginActivity {
    action: "forward" | "block" | "reply" | "bounced";
    from: string;
    to: string;
    timestamp: number;
    reverse_alias?: string;
}
export interface AliasCreateRandomOptions {
    /** "uuid" = long random hex; "word" = readable word-pairs. */
    mode?: "uuid" | "word";
    hostname?: string;
    note?: string;
}
export interface AliasCreateCustomOptions {
    /** Prefix portion of the alias email (before the suffix). Must match API constraints. */
    aliasPrefix: string;
    /** Signed suffix string returned by the /api/v5/alias/options endpoint. */
    signedSuffix: string;
    mailboxIds?: number[];
    hostname?: string;
    note?: string;
    name?: string;
}
export declare class SimpleLoginService {
    private readonly baseUrl;
    private readonly apiKey;
    constructor(apiKey: string, baseUrl?: string);
    /** True when the service has been configured with a non-empty API key. */
    isConfigured(): boolean;
    /**
     * CRED-012: strip secret-shaped substrings from a server-controlled error
     * string. Replaces (a) the exact configured API key and (b) any long
     * opaque token (SimpleLogin keys are ~40+ char base62/hex blobs) with a
     * `[redacted]` placeholder so they never reach the log or the MCP response.
     */
    private redactSecrets;
    private request;
    /**
     * List all aliases on the account. Paginates transparently.
     * `pageSize` is a caller-enforced cap on total results (not a SimpleLogin parameter).
     */
    listAliases(pageSize?: number): Promise<SimpleLoginAlias[]>;
    /** Create a random alias. Default mode is "uuid" (long, least guessable). */
    createRandomAlias(opts?: AliasCreateRandomOptions): Promise<SimpleLoginAlias>;
    /**
     * Create a custom alias. Requires a `signedSuffix` obtained from
     * /api/v5/alias/options — we expose that via {@link getAliasOptions} for the
     * caller to populate the UI.
     */
    createCustomAlias(opts: AliasCreateCustomOptions): Promise<SimpleLoginAlias>;
    /** Fetch the prefixes / suffixes available for custom-alias creation. */
    getAliasOptions(hostname?: string): Promise<{
        can_create: boolean;
        suffixes: Array<{
            suffix: string;
            signed_suffix: string;
            is_custom: boolean;
            is_premium?: boolean;
        }>;
        prefix_suggestion?: string;
    }>;
    toggleAlias(aliasId: number): Promise<{
        enabled: boolean;
    }>;
    deleteAlias(aliasId: number): Promise<void>;
    getAliasActivities(aliasId: number, pageSize?: number): Promise<SimpleLoginActivity[]>;
    updateAlias(aliasId: number, patch: {
        name?: string;
        note?: string;
        mailbox_ids?: number[];
        disable_pgp?: boolean;
    }): Promise<void>;
}
//# sourceMappingURL=simplelogin-service.d.ts.map