import { EncryptedContentSigner, EncryptionMethod, getEncryptedContentEncryptionMethods, UnlockedEncryptedContent } from "./encrypted-content.js";
/** Symbol for caching hidden content. Alias for {@link EncryptedContentSymbol} */
export declare const HiddenContentSymbol: symbol;
/** Alias for {@link EncryptedContentSigner} */
export interface HiddenContentSigner extends EncryptedContentSigner {
}
/** Alias for {@link getEncryptedContentEncryptionMethods} */
export declare const getHiddenContentEncryptionMethods: typeof getEncryptedContentEncryptionMethods;
/** Type for events with unlocked hidden content. alias for {@link UnlockedEncryptedContent} */
export type UnlockedHiddenContent = UnlockedEncryptedContent;
/** 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 unlocked and casts it to the {@link UnlockedEncryptedContent} type */
export declare function isHiddenContentUnlocked<T extends {
    kind: number;
}>(event: T): event is T & UnlockedEncryptedContent;
/** Returns the hidden content for an event if they are unlocked */
export declare function getHiddenContent<T extends {
    kind: number;
} & UnlockedHiddenContent>(event: T): string;
export declare function getHiddenContent<T extends {
    kind: number;
}>(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 If the event kind does not support hidden content
 */
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;
