UNPKG

@nostr-dev-kit/ndk

Version:

NDK - Nostr Development Kit. Includes AI Guardrails to catch common mistakes during development.

96 lines (82 loc) 2.39 kB
import type { NDK } from "../../../ndk/index.js"; import { NDKEvent, type NostrEvent } from "../../index.js"; import { NDKKind } from "../index.js"; /** * NIP-87: Fedimint Mint Announcement (kind 38173) * * Describes a Fedimint federation, its capabilities, and network. */ export class NDKFedimintMint extends NDKEvent { static kind = NDKKind.FedimintMintAnnouncement; static kinds = [NDKKind.FedimintMintAnnouncement]; constructor(ndk?: NDK, event?: NostrEvent | NDKEvent) { super(ndk, event); this.kind ??= NDKKind.FedimintMintAnnouncement; } static async from(event: NDKEvent): Promise<NDKFedimintMint | undefined> { const mint = new NDKFedimintMint(event.ndk, event); return mint; } /** * The federation ID */ get identifier(): string | undefined { return this.tagValue("d"); } set identifier(value: string | undefined) { this.removeTag("d"); if (value) this.tags.push(["d", value]); } /** * Invite codes (multiple allowed) */ get inviteCodes(): string[] { return this.getMatchingTags("u").map((t) => t[1]); } set inviteCodes(values: string[]) { this.removeTag("u"); for (const value of values) { this.tags.push(["u", value]); } } /** * Supported modules */ get modules(): string[] { return this.getMatchingTags("modules").map((t) => t[1]); } set modules(values: string[]) { this.removeTag("modules"); for (const value of values) { this.tags.push(["modules", value]); } } /** * Network (mainnet/testnet/signet/regtest) */ get network(): string | undefined { return this.tagValue("n"); } set network(value: string | undefined) { this.removeTag("n"); if (value) this.tags.push(["n", value]); } /** * Optional metadata */ get metadata(): Record<string, unknown> | undefined { if (!this.content) return undefined; try { return JSON.parse(this.content); } catch { return undefined; } } set metadata(value: Record<string, unknown> | undefined) { if (value) { this.content = JSON.stringify(value); } else { this.content = ""; } } }