{"version":3,"file":"deleteRecord.cjs","sources":["../../../src/bindings/deleteRecord.ts"],"sourcesContent":["import { Address, Instruction } 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 { getSnsDomainAddress } from \"../domain/getSnsDomainAddress\";\r\nimport { InvalidParentError } from \"../errors\";\r\nimport { DeleteRecordInstruction } from \"../instructions/deleteRecordInstruction\";\r\nimport { Record, RecordVersion } from \"../types/record\";\r\nimport { _parseSnsDomain } from \"../utils/parseSnsDomain\";\r\n\r\n/**\r\n * Parameters for deleting a domain record.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: DeleteRecordParams = {\r\n *   domain: \"example.sns\",\r\n *   record: Record.Url,\r\n *   owner,\r\n *   payer,\r\n * };\r\n * ```\r\n */\r\nexport interface DeleteRecordParams {\r\n  /** Full `.sns` domain name. */\r\n  domain: string;\r\n  /** Record type. */\r\n  record: Record;\r\n  /** Current domain owner. */\r\n  owner: Address;\r\n  /** Instruction fee payer. */\r\n  payer: Address;\r\n}\r\n\r\n/**\r\n * Builds an instruction to delete a V2 record for a `.sns` domain or subdomain.\r\n *\r\n * @param params Record deletion parameters\r\n * @param params.domain Full `.sns` domain or subdomain name\r\n * @param params.record Record type\r\n * @param params.owner Current owner of the domain\r\n * @param params.payer Fee payer for the instruction\r\n * @returns Transaction instruction.\r\n *\r\n * @example\r\n * ```ts\r\n * const instruction = await deleteRecord({\r\n *   domain: \"example.sns\",\r\n *   record: Record.Url,\r\n *   owner,\r\n *   payer,\r\n * });\r\n * ```\r\n */\r\nexport const deleteRecord = async ({\r\n  domain,\r\n  record,\r\n  owner,\r\n  payer,\r\n}: DeleteRecordParams): Promise<Instruction> => {\r\n  const trimmedDomain = _parseSnsDomain(domain);\r\n\r\n  let { domainAddress, parentAddress, isSub } = await getSnsDomainAddress({\r\n    domain: `${record}.${trimmedDomain}`,\r\n    record: RecordVersion.V2,\r\n  });\r\n\r\n  if (isSub) {\r\n    parentAddress = (await getSnsDomainAddress({ domain: trimmedDomain }))\r\n      .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 DeleteRecordInstruction().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":["record","_parseSnsDomain","getSnsDomainAddress","RecordVersion","InvalidParentError","DeleteRecordInstruction","RECORDS_PROGRAM_ADDRESS","SYSTEM_PROGRAM_ADDRESS","NAME_PROGRAM_ADDRESS","CENTRAL_STATE_DOMAIN_RECORDS"],"mappings":";;;;;;;;;;;AAsCA;;;;;;;;;;;;;;;;;;;AAmBG;AACU,MAAA,YAAY,GAAG,OAAO,EACjC,MAAM,UACNA,QAAM,EACN,KAAK,EACL,KAAK,GACc,KAA0B;AAC7C,IAAA,MAAM,aAAa,GAAGC,8BAAe,CAAC,MAAM,CAAC;IAE7C,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAMC,uCAAmB,CAAC;AACtE,QAAA,MAAM,EAAE,CAAA,EAAGF,QAAM,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA;QACpC,MAAM,EAAEG,oBAAa,CAAC,EAAE;AACzB,KAAA,CAAC;IAEF,IAAI,KAAK,EAAE;QACT,aAAa,GAAG,CAAC,MAAMD,uCAAmB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAClE,aAAA,aAAa;;IAGlB,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,MAAM,IAAIE,yBAAkB,CAAC,2BAA2B,CAAC;;IAG3D,MAAM,EAAE,GAAG,IAAIC,+CAAuB,EAAE,CAAC,cAAc,CACrDC,iCAAuB,EACvBC,gCAAsB,EACtBC,8BAAoB,EACpB,KAAK,EACL,aAAa,EACb,aAAa,EACb,KAAK,EACLC,sCAA4B,CAC7B;AAED,IAAA,OAAO,EAAE;AACX;;;;"}