/**
 * A strategy for posting messages to Nostr.
 */
export class NostrStrategy {
    /**
     * Creates a new instance.
     * @param {NostrOptions} options Options for the instance.
     * @throws {Error} When options are missing or invalid.
     */
    constructor(options: NostrOptions);
    /**
     * The ID of the strategy.
     * @type {string}
     * @readonly
     */
    readonly id: string;
    /**
     * The display name of the strategy.
     * @type {string}
     * @readonly
     */
    readonly name: string;
    /**
     * Maximum length of a Nostr message in characters.
     * Most Nostr clients use similar limits to Twitter.
     * @type {number}
     * @const
     */
    MAX_MESSAGE_LENGTH: number;
    /**
     * Calculates the length of a message according to Nostr's counting rules.
     * @param {string} message The message to calculate the length of.
     * @returns {number} The length of the message.
     */
    calculateMessageLength(message: string): number;
    /**
     * Posts a message to Nostr relays.
     * @param {string} message The message to post.
     * @param {PostOptions} [postOptions] Additional options for the post.
     * @returns {Promise<NostrEventResponse>} A promise that resolves with the event response.
     * @throws {Error} When the message fails to post to all relays.
     */
    post(message: string, postOptions?: PostOptions): Promise<NostrEventResponse>;
    /**
     * Gets a URL from the response (Nostr doesn't have a standard URL format).
     * @param {NostrEventResponse} response The response from posting.
     * @returns {string} A note URL (using the first successful relay).
     */
    getUrlFromResponse(response: NostrEventResponse): string;
    #private;
}
export type PostOptions = import("../types.js").PostOptions;
export type NostrOptions = {
    /**
     * The private key for signing events (hex or bech32).
     */
    privateKey: string;
    /**
     * Array of relay URLs to post to.
     */
    relays: string[];
};
export type NostrEvent = {
    /**
     * The event ID (32-byte hex).
     */
    id: string;
    /**
     * The public key of the event creator (32-byte hex).
     */
    pubkey: string;
    /**
     * Unix timestamp in seconds.
     */
    created_at: number;
    /**
     * The event kind (1 for short text note).
     */
    kind: number;
    /**
     * Array of tags.
     */
    tags: string[][];
    /**
     * The event content.
     */
    content: string;
    /**
     * The signature (64-byte hex).
     */
    sig: string;
};
export type NostrEventResponse = {
    /**
     * The event ID.
     */
    id: string;
    /**
     * Whether the event was published successfully.
     */
    success: boolean;
    /**
     * Array of relays that accepted the event.
     */
    relays: string[];
    /**
     * Array of relay errors.
     */
    errors: string[];
};
