{"version":3,"file":"getAllDomains.cjs","sources":["../../../src/domain/getAllDomains.ts"],"sourcesContent":["import { GetProgramAccountsApi, Rpc } from \"@solana/kit\";\r\n\r\nimport { addressCodec, base64Codec } from \"../codecs\";\r\nimport {\r\n  NAME_PROGRAM_ADDRESS,\r\n  ROOT_DOMAIN_ADDRESS,\r\n} from \"../constants/addresses\";\r\n\r\ninterface GetAllDomainsParams {\r\n  rpc: Rpc<GetProgramAccountsApi>;\r\n}\r\n\r\n/**\r\n * Retrieves the addresses of all .sol domains.\r\n *\r\n * @param params - An object containing the following properties:\r\n *   - `rpc`: An RPC interface implementing GetProgramAccountsApi.\r\n * @returns A promise that resolves to an array of objects representing domain addresses and owners.\r\n */\r\nexport const getAllDomains = async ({ rpc }: GetAllDomainsParams) => {\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: ROOT_DOMAIN_ADDRESS,\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":["async","rpc","getProgramAccounts","NAME_PROGRAM_ADDRESS","encoding","filters","memcmp","offset","bytes","ROOT_DOMAIN_ADDRESS","dataSlice","length","send","map","account","data","pubkey","domainAddress","owner","addressCodec","decode","base64Codec","encode"],"mappings":"0GAmB6BA,OAASC,gBACbA,EACpBC,mBAAmBC,EAAAA,qBAAsB,CACxCC,SAAU,SACVC,QAAS,CACP,CACEC,OAAQ,CACNC,OAAQ,GACRC,MAAOC,EAAmBA,oBAC1BL,SAAU,YAIhBM,UAAW,CAAEH,OAAQ,GAAII,OAAQ,MAElCC,QAEaC,KAAI,EAAGC,SAAWC,QAAQC,aAAc,CACtDC,cAAeD,EACfE,MAAOC,EAAYA,aAACC,OAAOC,EAAAA,YAAYC,OAAOP,EAAK"}