{"version":3,"file":"getAllSnsDomains.cjs","sources":["../../../src/domain/getAllSnsDomains.ts"],"sourcesContent":["import {\r\n  Address,\r\n  Base58EncodedBytes,\r\n  GetProgramAccountsApi,\r\n  Rpc,\r\n} from \"@solana/kit\";\r\n\r\nimport { addressCodec, base64Codec } from \"../codecs\";\r\nimport {\r\n  NAME_PROGRAM_ADDRESS,\r\n  SNS_ROOT_DOMAIN_ACCOUNT,\r\n} from \"../constants/addresses\";\r\n\r\n/**\r\n * Parameters for retrieving all SNS domains.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: GetAllSnsDomainsParams = { rpc };\r\n * ```\r\n */\r\nexport interface GetAllSnsDomainsParams {\r\n  /** RPC client. */\r\n  rpc: Rpc<GetProgramAccountsApi>;\r\n}\r\n\r\n/**\r\n * A top-level SNS domain account.\r\n *\r\n * @example\r\n * ```ts\r\n * const domain: GetAllSnsDomainsResult = { domainAddress, owner };\r\n * ```\r\n */\r\nexport interface GetAllSnsDomainsResult {\r\n  /** Domain account address. */\r\n  domainAddress: Address;\r\n  /** Registry owner address. */\r\n  owner: Address;\r\n}\r\n\r\n/**\r\n * Retrieves all top-level SNS domain accounts.\r\n *\r\n * @param params Domain retrieval parameters\r\n * @param params.rpc RPC client implementing program account lookup\r\n * @returns Domain account addresses and owners.\r\n *\r\n * @example\r\n * ```ts\r\n * const domains = await getAllSnsDomains({ rpc });\r\n * ```\r\n */\r\nexport const getAllSnsDomains = async ({\r\n  rpc,\r\n}: GetAllSnsDomainsParams): Promise<GetAllSnsDomainsResult[]> => {\r\n  const accounts = await rpc\r\n    .getProgramAccounts(NAME_PROGRAM_ADDRESS, {\r\n      encoding: \"base64\",\r\n      filters: [\r\n        {\r\n          memcmp: {\r\n            offset: 0n,\r\n            bytes: SNS_ROOT_DOMAIN_ACCOUNT as string as Base58EncodedBytes,\r\n            encoding: \"base58\",\r\n          },\r\n        },\r\n      ],\r\n      dataSlice: { offset: 32, length: 32 },\r\n    })\r\n    .send();\r\n\r\n  return accounts.map(({ account: { data }, pubkey }) => ({\r\n    domainAddress: pubkey,\r\n    owner: addressCodec.decode(base64Codec.encode(data[0])),\r\n  }));\r\n};\r\n"],"names":["NAME_PROGRAM_ADDRESS","SNS_ROOT_DOMAIN_ACCOUNT","addressCodec","base64Codec"],"mappings":";;;;;;;AAyCA;;;;;;;;;;;AAWG;AACU,MAAA,gBAAgB,GAAG,OAAO,EACrC,GAAG,GACoB,KAAuC;IAC9D,MAAM,QAAQ,GAAG,MAAM;SACpB,kBAAkB,CAACA,8BAAoB,EAAE;AACxC,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE;AACP,YAAA;AACE,gBAAA,MAAM,EAAE;AACN,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,KAAK,EAAEC,iCAAuD;AAC9D,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA;AACF,aAAA;AACF,SAAA;QACD,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACtC;AACA,SAAA,IAAI,EAAE;AAET,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM;AACtD,QAAA,aAAa,EAAE,MAAM;AACrB,QAAA,KAAK,EAAEC,mBAAY,CAAC,MAAM,CAACC,kBAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,KAAA,CAAC,CAAC;AACL;;;;"}