import { EventTemplate, NostrEvent, UnsignedEvent } from "nostr-tools";
import { EventOperation, TagOperation } from "../types.js";
/** Includes only a single instance of tag in an events public tags */
export declare function includeSingletonTag(tag: [string, ...string[]], replace?: boolean): EventOperation;
/** Includes only a single name / value tag in an events public tags */
export declare function includeNameValueTag(tag: [string, string, ...string[]], replace?: boolean): EventOperation;
/** An event operation that modifies the public tags with {@link TagOperation}s */
export declare function modifyPublicTags<E extends EventTemplate | UnsignedEvent | NostrEvent>(...operations: (TagOperation | undefined)[]): EventOperation<E, E>;
/**
 * Creates an event operation that modifies the hidden tags on an event with {@link TagOperation}s
 * @throws {Error} if no signer is provided
 * @throws {Error} if the event kind does not support hidden tags
 */
export declare function modifyHiddenTags<E extends EventTemplate | UnsignedEvent | NostrEvent>(...operations: (TagOperation | undefined)[]): EventOperation<E, E>;
export type ModifyTagsOptions = TagOperation | TagOperation[] | {
    public?: TagOperation | TagOperation[];
    hidden?: TagOperation | TagOperation[];
};
/** A flexible method for creating an event operation that modifies the tags */
export declare function modifyTags(tagOperations?: ModifyTagsOptions): EventOperation;
