import { HiddenContentSigner } from "./hidden-content.js";
import { EncryptionMethod } from "./encrypted-content.js";
export declare const HiddenTagsSymbol: unique symbol;
/** Various event kinds that can have hidden tags */
export declare const HiddenTagsKinds: Set<number>;
/** Checks if an event can have hidden tags */
export declare function canHaveHiddenTags(kind: number): boolean;
/** Sets the type of encryption to use for hidden tags on a kind */
export declare function setHiddenTagsEncryptionMethod(kind: number, method: EncryptionMethod): number;
/** Checks if an event has hidden tags */
export declare function hasHiddenTags<T extends {
    kind: number;
    content: string;
}>(event: T): boolean;
/** Returns the hidden tags for an event if they are unlocked */
export declare function getHiddenTags<T extends {
    kind: number;
    content: string;
}>(event: T): string[][] | undefined;
/** Checks if the hidden tags are locked */
export declare function isHiddenTagsLocked<T extends object>(event: T): boolean;
/** Returns either nip04 or nip44 encryption method depending on list kind */
export declare function getHiddenTagsEncryptionMethods(kind: number, signer: HiddenContentSigner): import("./encrypted-content.js").EncryptionMethods;
/**
 * Decrypts the private list
 * @param event The list event to decrypt
 * @param signer A signer to use to decrypt the tags
 * @param override The encryption method to use instead of the default
 * @throws
 */
export declare function unlockHiddenTags<T extends {
    kind: number;
    pubkey: string;
    content: string;
}>(event: T, signer: HiddenContentSigner, override?: EncryptionMethod): Promise<string[][]>;
/**
 * Sets the hidden tags on an event and updates it if its part of an event store
 * @throws
 */
export declare function setHiddenTagsCache<T extends {
    kind: number;
}>(event: T, tags: string[][]): void;
/** Clears the cached hidden tags on an event */
export declare function lockHiddenTags<T extends object>(event: T): void;
