{"version":3,"file":"getSrsDomainAddress.cjs","sources":["../../../src/domain/getSrsDomainAddress.ts"],"sourcesContent":["import { Address, getProgramDerivedAddress } from \"@solana/kit\";\r\n\r\nimport { addressCodec, utf8Codec } from \"../codecs\";\r\nimport { SRS_HASH_PREFIX, SRS_PROGRAM_ADDRESS } from \"../config\";\r\nimport { SOL_SRS_CLASS } from \"../constants/addresses\";\r\n\r\n/**\r\n * Parameters for deriving an SRS domain address.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: GetSrsDomainAddressParams = { domain: \"example\" };\r\n * ```\r\n */\r\nexport interface GetSrsDomainAddressParams {\r\n  /** TLD-less `.sol` domain name. */\r\n  domain: string;\r\n}\r\n\r\n/**\r\n * A derived SRS domain address.\r\n *\r\n * @example\r\n * ```ts\r\n * const derived: GetSrsDomainAddressResult = { domainAddress, hashed };\r\n * ```\r\n */\r\nexport interface GetSrsDomainAddressResult {\r\n  /** Derived SRS record address. */\r\n  domainAddress: Address;\r\n  /** SHA-256 hash of the canonical name. */\r\n  hashed: Uint8Array;\r\n}\r\n\r\n/**\r\n * Derives the canonical SRS record address for a TLD-trimmed `.sol` name.\r\n *\r\n * @param params Derivation parameters\r\n * @param params.domain TLD-trimmed `.sol` name\r\n * @returns The SRS record address and canonical name hash.\r\n *\r\n * @example\r\n * ```ts\r\n * const derived = await getSrsDomainAddress({ domain: \"example\" });\r\n * ```\r\n */\r\nexport const getSrsDomainAddress = async ({\r\n  domain,\r\n}: GetSrsDomainAddressParams): Promise<GetSrsDomainAddressResult> => {\r\n  const hashed = new Uint8Array(\r\n    await crypto.subtle.digest(\r\n      \"SHA-256\",\r\n      utf8Codec.encode(SRS_HASH_PREFIX + domain)\r\n    )\r\n  );\r\n  const [domainAddress] = await getProgramDerivedAddress({\r\n    programAddress: SRS_PROGRAM_ADDRESS,\r\n    seeds: [\r\n      utf8Codec.encode(\"record\"),\r\n      addressCodec.encode(SOL_SRS_CLASS),\r\n      hashed,\r\n    ],\r\n  });\r\n\r\n  return { domainAddress, hashed };\r\n};\r\n"],"names":["utf8Codec","SRS_HASH_PREFIX","getProgramDerivedAddress","SRS_PROGRAM_ADDRESS","addressCodec","SOL_SRS_CLASS"],"mappings":";;;;;;;;;AAkCA;;;;;;;;;;;AAWG;AACU,MAAA,mBAAmB,GAAG,OAAO,EACxC,MAAM,GACoB,KAAwC;IAClE,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACxB,SAAS,EACTA,gBAAS,CAAC,MAAM,CAACC,sBAAe,GAAG,MAAM,CAAC,CAC3C,CACF;AACD,IAAA,MAAM,CAAC,aAAa,CAAC,GAAG,MAAMC,4BAAwB,CAAC;AACrD,QAAA,cAAc,EAAEC,0BAAmB;AACnC,QAAA,KAAK,EAAE;AACL,YAAAH,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,YAAAI,mBAAY,CAAC,MAAM,CAACC,uBAAa,CAAC;YAClC,MAAM;AACP,SAAA;AACF,KAAA,CAAC;AAEF,IAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;AAClC;;;;"}