/** * @module utils/sns-adapter * @description SNS Adapter using official Bonfida SDK (@bonfida/spl-name-service) * * This adapter provides SNS domain registration for SAP agents. * It links SNS domains to SAP Agent PDAs via SNS records. * * SECURITY FEATURES: * - Signer verification * - URL validation * - Complete PDA tracking * - Commitment level configuration * - Safe record parsing * * @see https://github.com/SolanaNameService/sns-sdk * @see https://bonfida.github.io/solana-name-service-guide * * @since v1.0.0 */ import { Connection, PublicKey, Signer, Commitment } from '@solana/web3.js'; import { getDomainKeySync, getRecordKeySync, NAME_PROGRAM_ID, Record } from '@bonfida/spl-name-service'; /** * SNS USDC Mints */ export declare const USDC_MINTS: { MAINNET: PublicKey; DEVNET: PublicKey; }; /** * SAP Agent SNS Records */ export interface SapAgentSnsRecords { /** Agent owner wallet address (required) */ agentWallet: string; /** SAP Agent PDA - links domain to agent (required) */ agentPda: string; /** SAP Program ID (required) */ sapProgramId: string; /** Agent capabilities description (optional) */ capabilities?: string; /** Agent metadata URI (optional) */ metadataUri?: string; /** Web2 domain linked to agent (optional) */ web2Domain?: string; /** Agent endpoint URL for SAP registration (optional) */ agentEndpoint?: string; } /** * Register domain result */ export interface RegisterDomainResult { signature: string; domainPda: PublicKey; recordPdas: { [key: string]: PublicKey; }; } /** * Set primary domain result */ export interface SetPrimaryDomainResult { signature: string; domain: string; owner: PublicKey; } /** * Register domain with SAP records using official Bonfida SDK * * SECURITY FIXES APPLIED: * 1. Signer verification - ensures signer matches agentWallet * 2. Domain name sanitization - prevents invalid/homograph domains * 3. URL validation - ensures endpoints are valid HTTP(S) URLs * 4. Complete record PDA tracking - returns all created record PDAs * 5. Commitment level configuration * * @param params Registration parameters * @returns Registration result with signature and PDAs */ export declare function registerDomainWithSapRecords(params: { connection: Connection; agentWallet: PublicKey; domainName: string; sapRecords: SapAgentSnsRecords; signer: Signer; setAsPrimary?: boolean; commitment?: Commitment; }): Promise; /** * Set domain as primary for a wallet * * SECURITY FIX: Verifies signer matches owner */ export declare function setDomainAsPrimary(params: { connection: Connection; domainName: string; owner: PublicKey; signer: Signer; commitment?: Commitment; }): Promise; /** * Get primary domain for a wallet * * @deprecated This function is not implemented in the current SDK version. * The Bonfida SDK returns a FavouriteDomain object with a nameAccount PublicKey, * but resolving the domain name from the PDA requires additional SNS program calls * that are not yet implemented. * * @param connection - Solana connection * @param wallet - Wallet public key * @returns Always returns null (not implemented) */ export declare function getPrimaryDomainForWallet(connection: Connection, wallet: PublicKey): Promise; /** * Check domain availability */ export declare function checkDomainAvailability(connection: Connection, domainName: string): Promise; /** * Resolve SNS domain to wallet address * * SECURITY FIX: Proper record parsing with header skip */ export declare function resolveSnsDomain(connection: Connection, domainName: string): Promise; /** * Get SNS record for a domain * * SECURITY FIX: Proper record data parsing with offset handling */ export declare function getSnsRecord(connection: Connection, domainName: string, recordType: Record): Promise; export { NAME_PROGRAM_ID, Record, getDomainKeySync, getRecordKeySync }; //# sourceMappingURL=sns-adapter.d.ts.map