{"version":3,"file":"getDomainRecord.cjs","sources":["../../../src/domain/getDomainRecord.ts"],"sourcesContent":["import {\r\n  GetAccountInfoApi,\r\n  GetMultipleAccountsApi,\r\n  GetTokenLargestAccountsApi,\r\n  ReadonlyUint8Array,\r\n  Rpc,\r\n} from \"@solana/kit\";\r\n\r\nimport { getRecordV2Address } from \"../record/getRecordV2Address\";\r\nimport {\r\n  _getDefaultVerifier,\r\n  _verifyRoaSync,\r\n} from \"../record/verifyRecordRightOfAssociation\";\r\nimport { _verifyStalenessSync } from \"../record/verifyRecordStaleness\";\r\nimport { RecordState } from \"../states/record\";\r\nimport { Record } from \"../types/record\";\r\nimport { deserializeRecordContent } from \"../utils/deserializers/deserializeRecordContent\";\r\nimport { getDomainOwner } from \"./getDomainOwner\";\r\n\r\ninterface GetDomainRecordParams {\r\n  rpc: Rpc<\r\n    GetAccountInfoApi & GetMultipleAccountsApi & GetTokenLargestAccountsApi\r\n  >;\r\n  domain: string;\r\n  record: Record;\r\n  options?: {\r\n    deserialize?: boolean;\r\n    verifier?: ReadonlyUint8Array;\r\n  };\r\n}\r\n\r\ninterface Result {\r\n  record: Record;\r\n  retrievedRecord: RecordState;\r\n  verified: {\r\n    staleness: boolean;\r\n    roa?: boolean;\r\n  };\r\n  deserializedContent?: string;\r\n}\r\n\r\n/**\r\n * Retrieves a specific record under a domain, verifies its state, and optionally deserializes its content.\r\n *\r\n * @param params - An object containing the following properties:\r\n *   - `rpc`: An RPC interface implementing GetAccountInfoApi, GetMultipleAccountsApi, and GetTokenLargestAccountsApi.\r\n *   - `domain`: The domain whose record is to be retrieved.\r\n *   - `record`: The type of record to retrieve.\r\n *   - `options`: (Optional) Additional options for processing:\r\n *       - `deserialize`: Whether to deserialize the record content.\r\n *       - `verifier`: A custom verifier for the record.\r\n * @returns A promise that resolves to the retrieved record, its verification status, and optionally its deserialized content.\r\n */\r\nexport async function getDomainRecord({\r\n  rpc,\r\n  domain,\r\n  record,\r\n  options = {},\r\n}: GetDomainRecordParams): Promise<Result> {\r\n  const [domainOwner, state] = await Promise.all([\r\n    getDomainOwner({ rpc, domain }),\r\n    getRecordV2Address({ domain, record }).then((address) =>\r\n      RecordState.retrieve(rpc, address)\r\n    ),\r\n  ]);\r\n\r\n  const verifier = options.verifier || _getDefaultVerifier({ record, state });\r\n  const verified = {\r\n    staleness: _verifyStalenessSync({ domainOwner, state }),\r\n    ...(verifier && {\r\n      rightOfAssociation: _verifyRoaSync({ record, state, verifier }),\r\n    }),\r\n  };\r\n\r\n  return {\r\n    record,\r\n    retrievedRecord: state,\r\n    verified,\r\n    ...(options.deserialize && {\r\n      deserializedContent: deserializeRecordContent({\r\n        content: state.getContent(),\r\n        record,\r\n      }),\r\n    }),\r\n  };\r\n}\r\n"],"names":["async","rpc","domain","record","options","domainOwner","state","Promise","all","getDomainOwner","getRecordV2Address","then","address","RecordState","retrieve","verifier","_getDefaultVerifier","retrievedRecord","verified","staleness","_verifyStalenessSync","rightOfAssociation","_verifyRoaSync","deserialize","deserializedContent","deserializeRecordContent","content","getContent"],"mappings":"uUAqDOA,gBAA+BC,IACpCA,EAAGC,OACHA,EACAC,OAAAA,EAAMC,QACNA,EAAU,CAAA,IAEV,MAAOC,EAAaC,SAAeC,QAAQC,IAAI,CAC7CC,iBAAe,CAAER,MAAKC,WACtBQ,EAAAA,mBAAmB,CAAER,gBAAQC,IAAUQ,MAAMC,GAC3CC,cAAYC,SAASb,EAAKW,OAIxBG,EAAWX,EAAQW,UAAYC,EAAmBA,oBAAC,CAAEb,OAAAA,EAAQG,UAQnE,MAAO,QACLH,EACAc,gBAAiBX,EACjBY,SAVe,CACfC,UAAWC,EAAoBA,qBAAC,CAAEf,cAAaC,aAC3CS,GAAY,CACdM,mBAAoBC,EAAAA,eAAe,CAAAnB,OAAEA,EAAQG,QAAOS,kBAQlDX,EAAQmB,aAAe,CACzBC,oBAAqBC,EAAAA,yBAAyB,CAC5CC,QAASpB,EAAMqB,oBACfxB,KAIR"}