export * from "./cipher/mod.ts";
export * from "./markup/mod.ts";
import { Vector } from "../../vector/mod.ts";
import { Unknown } from "@hazae41/binary";
import type { Cursor } from "@hazae41/cursor";
import { Cipher } from "./cipher/mod.ts";
import { KeePassFile } from "./markup/mod.ts";
export declare class HeadersAndContentWithBytes {
    readonly headers: Headers;
    readonly content: ContentWithBytes;
    constructor(headers: Headers, content: ContentWithBytes);
    sizeOrThrow(): number;
    writeOrThrow(cursor: Cursor<ArrayBuffer>): void;
}
export declare class ContentWithBytes {
    readonly bytes: Unknown<ArrayBuffer>;
    readonly value: KeePassFile;
    constructor(bytes: Unknown<ArrayBuffer>, value: KeePassFile);
    static computeOrThrow(value: KeePassFile): ContentWithBytes;
    sizeOrThrow(): number;
    writeOrThrow(cursor: Cursor<ArrayBuffer>): void;
}
export declare namespace ContentWithBytes {
    function readOrThrow(cursor: Cursor<ArrayBuffer>): ContentWithBytes;
}
export declare namespace HeadersAndContentWithBytes {
    function readOrThrow(cursor: Cursor<ArrayBuffer>): HeadersAndContentWithBytes;
}
export interface HeadersInit {
    readonly cipher: Cipher;
    readonly key: Unknown<ArrayBuffer, 32>;
    readonly binary: readonly Unknown<ArrayBuffer>[];
}
export declare class Headers {
    readonly value: Vector<{
        1: readonly [Cipher];
        2: readonly [Unknown<ArrayBuffer>];
        3: readonly Unknown<ArrayBuffer>[];
    }>;
    constructor(value: Vector<{
        1: readonly [Cipher];
        2: readonly [Unknown<ArrayBuffer>];
        3: readonly Unknown<ArrayBuffer>[];
    }>);
    get cipher(): Cipher;
    get key(): Unknown<ArrayBuffer>;
    get binary(): readonly Unknown<ArrayBuffer>[];
    sizeOrThrow(): number;
    writeOrThrow(cursor: Cursor<ArrayBuffer>): void;
    cloneOrThrow(): Headers;
    rotateOrThrow(): Headers;
    getCipherOrThrow(): Promise<Cipher.ChaCha20>;
}
export declare namespace Headers {
    function createOrThrow(cipher: Cipher): Headers;
    function initOrThrow(init: HeadersInit): Headers;
    function readOrThrow(cursor: Cursor<ArrayBuffer>): Headers;
}
