import { NostrEvent } from "nostr-tools";
import { ExternalPointer, ExternalIdentifiers } from "./external-id.js";
import { KnownEvent } from "./index.js";
export declare const COMMENT_KIND = 1111;
/** Type for validated comment events */
export type CommentEvent = KnownEvent<typeof COMMENT_KIND>;
export type CommentEventPointer = {
    type: "event";
    id: string;
    kind: number;
    pubkey?: string;
    relay?: string;
};
export type CommentAddressPointer = {
    type: "address";
    id?: string;
    kind: number;
    pubkey: string;
    identifier: string;
    relay?: string;
};
export type CommentExternalPointer<T extends keyof ExternalIdentifiers> = ExternalPointer<T> & {
    type: "external";
};
export type CommentPointer = CommentEventPointer | CommentAddressPointer | CommentExternalPointer<keyof ExternalIdentifiers>;
export declare const CommentRootPointerSymbol: unique symbol;
export declare const CommentReplyPointerSymbol: unique symbol;
/** Gets the EventPointer from an array of tags */
export declare function getCommentEventPointer(tags: string[][], root?: boolean): CommentEventPointer | null;
/** Gets the AddressPointer from an array of tags */
export declare function getCommentAddressPointer(tags: string[][], root?: boolean): CommentAddressPointer | null;
/** Gets the ExternalPointer from an array of tags */
export declare function getCommentExternalPointer(tags: string[][], root?: boolean): CommentExternalPointer<keyof ExternalIdentifiers> | null;
/** Returns the root pointer for a comment */
export declare function getCommentRootPointer(comment: CommentEvent): CommentPointer;
export declare function getCommentRootPointer(comment: NostrEvent): CommentPointer | null;
/** Returns the reply pointer for a comment */
export declare function getCommentReplyPointer(comment: NostrEvent): CommentPointer | null;
/** Checks if a pointer is a {@link CommentEventPointer} */
export declare function isCommentEventPointer(pointer: any): pointer is CommentEventPointer;
/** Checks if a pointer is a {@link CommentAddressPointer} */
export declare function isCommentAddressPointer(pointer: any): pointer is CommentAddressPointer;
/** Checks if a comment event is valid */
export declare function isValidComment(comment: NostrEvent): comment is CommentEvent;
