{"version":3,"file":"getDomainsForAddress.cjs","sources":["../../../src/address/getDomainsForAddress.ts"],"sourcesContent":["import {\r\n  Address,\r\n  GetMultipleAccountsApi,\r\n  GetProgramAccountsApi,\r\n  Rpc,\r\n} from \"@solana/kit\";\r\n\r\nimport {\r\n  NAME_PROGRAM_ADDRESS,\r\n  ROOT_DOMAIN_ADDRESS,\r\n} from \"../constants/addresses\";\r\nimport { reverseLookupBatch } from \"../utils/reverseLookupBatch\";\r\n\r\ninterface GetDomainsForAddressParams {\r\n  rpc: Rpc<GetProgramAccountsApi & GetMultipleAccountsApi>;\r\n  address: Address;\r\n}\r\n\r\ninterface Result {\r\n  domain: string;\r\n  domainAddress: Address;\r\n}\r\n\r\n/**\r\n * Retrieves the domains owned by the given address.\r\n *\r\n * @param params - An object containing the following properties:\r\n *   - `rpc`: An RPC interface implementing GetProgramAccountsApi and GetMultipleAccountsApi.\r\n *   - `address`: The address for which to retrieve associated domains.\r\n * @returns A promise resolving to an array of objects containing domain and domainAddress.\r\n */\r\nexport const getDomainsForAddress = async ({\r\n  rpc,\r\n  address,\r\n}: GetDomainsForAddressParams): Promise<Result[]> => {\r\n  const results = await rpc\r\n    .getProgramAccounts(NAME_PROGRAM_ADDRESS, {\r\n      encoding: \"base64\",\r\n      filters: [\r\n        {\r\n          memcmp: {\r\n            offset: 32n,\r\n            bytes: address,\r\n            encoding: \"base58\",\r\n          },\r\n        },\r\n        {\r\n          memcmp: {\r\n            offset: 0n,\r\n            bytes: ROOT_DOMAIN_ADDRESS,\r\n            encoding: \"base58\",\r\n          },\r\n        },\r\n      ],\r\n      dataSlice: {\r\n        offset: 0,\r\n        length: 0,\r\n      },\r\n    })\r\n    .send();\r\n\r\n  const domains = await reverseLookupBatch({\r\n    rpc,\r\n    domainAddresses: results.map((r) => r.pubkey),\r\n  });\r\n\r\n  return domains\r\n    .map((domain, idx) =>\r\n      domain\r\n        ? {\r\n            domain,\r\n            domainAddress: results[idx].pubkey,\r\n          }\r\n        : undefined\r\n    )\r\n    .filter((e) => e !== undefined);\r\n};\r\n"],"names":["async","rpc","address","results","getProgramAccounts","NAME_PROGRAM_ADDRESS","encoding","filters","memcmp","offset","bytes","ROOT_DOMAIN_ADDRESS","dataSlice","length","send","reverseLookupBatch","domainAddresses","map","r","pubkey","domain","idx","domainAddress","undefined","filter","e"],"mappings":"mIA+BoCA,OAClCC,MACAC,cAEA,MAAMC,QAAgBF,EACnBG,mBAAmBC,EAAAA,qBAAsB,CACxCC,SAAU,SACVC,QAAS,CACP,CACEC,OAAQ,CACNC,OAAQ,IACRC,MAAOR,EACPI,SAAU,WAGd,CACEE,OAAQ,CACNC,OAAQ,GACRC,MAAOC,EAAmBA,oBAC1BL,SAAU,YAIhBM,UAAW,CACTH,OAAQ,EACRI,OAAQ,KAGXC,OAOH,aALsBC,qBAAmB,CACvCd,MACAe,gBAAiBb,EAAQc,KAAKC,GAAMA,EAAEC,YAIrCF,KAAI,CAACG,EAAQC,IACZD,EACI,CACEA,SACAE,cAAenB,EAAQkB,GAAKF,aAE9BI,IAELC,QAAQC,QAAYF,IAANE,GAAgB"}