/// <reference types="node" />
import { Binary } from '../binary.js';
import { SymmetricCipher } from '../ciphers/symmetric-cipher-base.js';
import { KeyAccess, KeyAccessObject } from './key-access.js';
import { Policy } from './policy.js';
import { DecryptResult, EncryptResult } from '../crypto/declarations.js';
export type KeyInfo = {
    readonly unwrappedKeyBinary: Binary;
    readonly unwrappedKeyIvBinary: Binary;
};
export type Segment = {
    readonly hash: string;
    readonly segmentSize?: number;
    readonly encryptedSegmentSize?: number;
};
export type EncryptionInformation = {
    readonly type: string;
    readonly keyAccess: KeyAccessObject[];
    readonly integrityInformation: {
        readonly rootSignature: {
            alg: string;
            sig: string;
        };
        readonly segmentHash: string;
        segmentHashAlg: string;
        segments: Segment[];
        segmentSizeDefault?: number;
        encryptedSegmentSizeDefault?: number;
    };
    readonly method: {
        readonly algorithm: string;
        isStreamable: boolean;
        readonly iv: string;
    };
    policy: string;
};
export declare class SplitKey {
    readonly cipher: SymmetricCipher;
    keyAccess: KeyAccess[];
    constructor(cipher: SymmetricCipher);
    generateKey(): Promise<KeyInfo>;
    encrypt(contentBinary: Binary, keyBinary: Binary, ivBinaryOptional?: Binary): Promise<EncryptResult>;
    decrypt(content: Buffer, keyBinary: Binary): Promise<DecryptResult>;
    getKeyAccessObjects(policy: Policy, keyInfo: KeyInfo): Promise<KeyAccessObject[]>;
    generateIvBinary(): Promise<Binary>;
    write(policy: Policy, keyInfo: KeyInfo): Promise<EncryptionInformation>;
}
//# sourceMappingURL=encryption-information.d.ts.map