import type { CoreProtocol } from '../core/core-protocol.js';
import type { Filter } from '../types/query-types.js';
import type { MessagesFilter } from '../types/messages-types.js';
import type { ProtocolDefinition } from '../types/protocols-types.js';
import type { RecordsWriteMessage } from '../types/records-types.js';
import type { ValidationStateReader } from '../types/validation-state-reader.js';
import type { ContentEncryptionAlgorithm, X25519KeyEncryptionBase } from '../utils/encryption.js';
export declare const WRAPPED_GRANT_KEY_FORMAT = "enbox/wrapped-grant-key@1";
export type WrappedGrantKeyEnvelope = {
    format: typeof WRAPPED_GRANT_KEY_FORMAT;
    keyEncryption: X25519KeyEncryptionBase;
    contentEncryption: {
        algorithm: typeof ContentEncryptionAlgorithm.A256CTR;
        initializationVector: string;
    };
    ciphertext: string;
};
export declare function assertWrappedGrantKeyEnvelope(envelope: unknown): asserts envelope is WrappedGrantKeyEnvelope;
export declare class EncryptionProtocol implements CoreProtocol {
    static readonly uri = "https://identity.foundation/dwn/protocols/encryption";
    static readonly grantKeyPath = "grantKey";
    static readonly definition: ProtocolDefinition;
    get uri(): string;
    get definition(): ProtocolDefinition;
    preProcessWrite(tenant: string, message: RecordsWriteMessage, validationStateReader: ValidationStateReader): Promise<void>;
    validateRecord(message: RecordsWriteMessage, dataBytes: Uint8Array): Promise<void>;
    private static preProcessGrantKey;
    private static verifyInlineWrappedGrantKeyDelivery;
    private static verifyGrantKeyDelivery;
    private static getRequiredStringTag;
    private static getOptionalStringTag;
    private static verifyGrantActive;
    private static verifyGrantKeyAuthor;
    private static verifyGrantKeyRecipient;
    private static verifyGrantKeyScope;
    mapErrorToStatusCode(errorCode: string): number | undefined;
    constructAdditionalMessageFilter(filter: MessagesFilter): Filter | undefined;
}
//# sourceMappingURL=encryption.d.ts.map