{"version":3,"file":"validateRoaEthereum.cjs","sources":["../../../src/bindings/validateRoaEthereum.ts"],"sourcesContent":["import { Address, IInstruction } from \"@solana/kit\";\r\n\r\nimport {\r\n  CENTRAL_STATE_DOMAIN_RECORDS,\r\n  NAME_PROGRAM_ADDRESS,\r\n  RECORDS_PROGRAM_ADDRESS,\r\n  SYSTEM_PROGRAM_ADDRESS,\r\n} from \"../constants/addresses\";\r\nimport { getDomainAddress } from \"../domain/getDomainAddress\";\r\nimport { InvalidParentError } from \"../errors\";\r\nimport { validateRoaEthereumInstruction } from \"../instructions/validateRoaEthereumInstruction\";\r\nimport { Record, RecordVersion } from \"../types/record\";\r\nimport { Validation } from \"../types/validation\";\r\n\r\ninterface ValidateRoaEthereumParams {\r\n  domain: string;\r\n  record: Record;\r\n  owner: Address;\r\n  payer: Address;\r\n  signature: Uint8Array;\r\n  expectedPubkey: Uint8Array;\r\n}\r\n\r\n/**\r\n * Validates the right of association of a record using an Ethereum signature.\r\n *\r\n * @param params - An object containing the following properties:\r\n *   - `domain`: The domain under which the record resides.\r\n *   - `record`: An enumeration representing the type of record to validate.\r\n *   - `owner`: The address of the domain's owner.\r\n *   - `payer`: The address funding the validation process.\r\n *   - `signature`: The signature used for validation.\r\n *   - `expectedPubkey`: The expected public key associated with the validation.\r\n * @returns A promise that resolves to the validate ROA Ethereum instruction.\r\n */\r\nexport const validateRoaEthereum = async ({\r\n  domain,\r\n  record,\r\n  owner,\r\n  payer,\r\n  signature,\r\n  expectedPubkey,\r\n}: ValidateRoaEthereumParams): Promise<IInstruction> => {\r\n  let { domainAddress, parentAddress, isSub } = await getDomainAddress({\r\n    domain: `${record}.${domain}`,\r\n    record: RecordVersion.V2,\r\n  });\r\n\r\n  if (isSub) {\r\n    parentAddress = (await getDomainAddress({ domain })).domainAddress;\r\n  }\r\n\r\n  if (!parentAddress) {\r\n    throw new InvalidParentError(\"Parent could not be found\");\r\n  }\r\n\r\n  const ix = new validateRoaEthereumInstruction({\r\n    validation: Validation.Ethereum,\r\n    signature,\r\n    expectedPubkey,\r\n  }).getInstruction(\r\n    RECORDS_PROGRAM_ADDRESS,\r\n    SYSTEM_PROGRAM_ADDRESS,\r\n    NAME_PROGRAM_ADDRESS,\r\n    payer,\r\n    domainAddress,\r\n    parentAddress,\r\n    owner,\r\n    CENTRAL_STATE_DOMAIN_RECORDS\r\n  );\r\n\r\n  return ix;\r\n};\r\n"],"names":["async","domain","record","owner","payer","signature","expectedPubkey","domainAddress","parentAddress","isSub","getDomainAddress","RecordVersion","V2","InvalidParentError","validateRoaEthereumInstruction","validation","Validation","Ethereum","getInstruction","RECORDS_PROGRAM_ADDRESS","SYSTEM_PROGRAM_ADDRESS","NAME_PROGRAM_ADDRESS","CENTRAL_STATE_DOMAIN_RECORDS"],"mappings":"kSAmCmCA,OACjCC,gBACAC,EACAC,QACAC,QACAC,YACAC,qBAEA,IAAIC,cAAEA,EAAaC,cAAEA,EAAaC,MAAEA,SAAgBC,EAAAA,iBAAiB,CACnET,OAAQ,GAAGC,KAAUD,IACrBC,OAAQS,EAAaA,cAACC,KAOxB,GAJIH,IACFD,SAAuBE,EAAAA,iBAAiB,CAAET,YAAWM,gBAGlDC,EACH,MAAM,IAAIK,EAAkBA,mBAAC,6BAkB/B,OAfW,IAAIC,iCAA+B,CAC5CC,WAAYC,EAAUA,WAACC,SACvBZ,YACAC,mBACCY,eACDC,EAAuBA,wBACvBC,yBACAC,EAAAA,qBACAjB,EACAG,EACAC,EACAL,EACAmB,+BAGO"}