import { EncryptedContentSigner, EncryptionMethod, getEncryptedContentEncryptionMethods } from "./encrypted-content.js";
export declare const HiddenContentSymbol: symbol;
export interface HiddenContentSigner extends EncryptedContentSigner {
}
export declare const getHiddenContentEncryptionMethods: typeof getEncryptedContentEncryptionMethods;
/** Various event kinds that can have hidden content */
export declare const HiddenContentKinds: Set<number>;
/** Sets the encryption method for hidden content on a kind */
export declare function setHiddenContentEncryptionMethod(kind: number, method: EncryptionMethod): number;
/** Checks if an event can have hidden content */
export declare function canHaveHiddenContent(kind: number): boolean;
/** Checks if an event has hidden content */
export declare function hasHiddenContent<T extends {
    kind: number;
    content: string;
}>(event: T): boolean;
/** Checks if the hidden content is locked */
export declare function isHiddenContentLocked<T extends object>(event: T): boolean;
/** Returns the hidden content for an event if they are unlocked */
export declare function getHiddenContent<T extends {
    kind: number;
    content: string;
}>(event: T): string | undefined;
/**
 * Unlocks the hidden content in the event
 * @param event The event with content to decrypt
 * @param signer A signer to use to decrypt the content
 * @throws
 */
export declare function unlockHiddenContent<T extends {
    kind: number;
    pubkey: string;
    content: string;
}>(event: T, signer: EncryptedContentSigner, override?: EncryptionMethod): Promise<string>;
/**
 * Sets the hidden content on an event and updates it if its part of an event store
 * @throws
 */
export declare function setHiddenContentCache<T extends {
    kind: number;
}>(event: T, plaintext: string): void;
/** Removes the unencrypted hidden content on an event */
export declare function lockHiddenContent<T extends object>(event: T): void;
