# Nostr Address The Address module provides utilities for working with Nostr Addresses (NIP-19 naddr format) and handles the conversion between different address formats. ## Address Class ```typescript class Address { constructor( readonly kind: number, // Event kind readonly pubkey: string, // Author's public key readonly identifier: string, // Unique identifier (d-tag) readonly relays?: string[], // Optional relay hints ) } ``` ## Creating Addresses ### From Components ```typescript const address = new Address( 30023, // kind (e.g., long-form article) 'ab82...123', // pubkey 'my-article-title', // identifier ['wss://relay.example.com'] // relays ) ``` ### From String Format ```typescript // Parse "kind:pubkey:identifier" format const address = Address.from('30023:ab82...123:my-article-title') // With optional relays const address = Address.from( '30023:ab82...123:my-article-title', ['wss://relay.example.com'] ) ``` ### From Naddr ```typescript // Parse naddr format const address = Address.fromNaddr('naddr1...') ``` ### From Event ```typescript const address = Address.fromEvent(event, relays) ``` ## Converting Addresses ### To String ```typescript const address = new Address(kind, pubkey, identifier) address.toString() // => "kind:pubkey:identifier" ``` ### To Naddr ```typescript const address = new Address(kind, pubkey, identifier, relays) address.toNaddr() // => "naddr1..." ``` ## Utility Functions ### Check Address Format ```typescript // Check if string is valid address format Address.isAddress('30023:abc...123:title') // => true Address.isAddress('not-an-address') // => false ``` ### Get Address from Event ```typescript import { getAddress } from '@welshman/util' // Extract address from event const address = getAddress(event) ``` ## Examples ### Working with Long-form Content ```typescript // Create address for article const articleAddress = new Address( 30023, // Long-form content kind authorPubkey, 'my-article-slug', ['wss://relay.example.com'] ) // Convert to string format for storage const addressString = articleAddress.toString() // Convert to naddr for sharing const shareableAddress = articleAddress.toNaddr() ``` ### Handling Replaceable Events ```typescript // Create address from replaceable event const address = Address.fromEvent(event) // Store latest version using address as key storage.set(address.toString(), event) ```