import { Stanza } from "./format.js";
import { Identity, Recipient } from "./index.js";
/**
 * Generate a new native age identity.
 *
 * @returns A promise that resolves to the new identity, a string starting with
 * `AGE-SECRET-KEY-1...`. Use {@link identityToRecipient} to produce the
 * corresponding recipient.
 */
export declare function generateIdentity(): Promise<string>;
/**
 * Convert an age identity to a recipient.
 *
 * @param identity - An age identity, a string starting with
 * `AGE-SECRET-KEY-1...` or an X25519 private
 * {@link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey | CryptoKey}
 * object.
 *
 * @returns A promise that resolves to the corresponding recipient, a string
 * starting with `age1...`.
 *
 * @see {@link generateIdentity}
 * @see {@link Decrypter.addIdentity}
 */
export declare function identityToRecipient(identity: string | CryptoKey): Promise<string>;
export declare class X25519Recipient implements Recipient {
    private recipient;
    constructor(s: string);
    wrapFileKey(fileKey: Uint8Array): Promise<Stanza[]>;
}
export declare class X25519Identity implements Identity {
    private identity;
    private recipient;
    constructor(s: string | CryptoKey);
    unwrapFileKey(stanzas: Stanza[]): Promise<Uint8Array | null>;
}
export declare class ScryptRecipient implements Recipient {
    private passphrase;
    private logN;
    constructor(passphrase: string, logN: number);
    wrapFileKey(fileKey: Uint8Array): Stanza[];
}
export declare class ScryptIdentity implements Identity {
    private passphrase;
    constructor(passphrase: string);
    unwrapFileKey(stanzas: Stanza[]): Uint8Array | null;
}
