{"version":3,"file":"burnDomain.cjs","sources":["../../../src/bindings/burnDomain.ts"],"sourcesContent":["import { Address, Instruction, getProgramDerivedAddress } from \"@solana/kit\";\r\n\r\nimport { addressCodec } from \"../codecs\";\r\nimport {\r\n  NAME_PROGRAM_ADDRESS,\r\n  REGISTRY_PROGRAM_ADDRESS,\r\n  REVERSE_LOOKUP_CLASS,\r\n  SYSTEM_PROGRAM_ADDRESS,\r\n} from \"../constants/addresses\";\r\nimport { getSnsDomainAddress } from \"../domain/getSnsDomainAddress\";\r\nimport { BurnDomainInstruction } from \"../instructions/burnDomainInstruction\";\r\nimport { getReverseAddress } from \"../utils/getReverseAddress\";\r\nimport { _parseSnsTopLevelDomain } from \"../utils/parseSnsDomain\";\r\n\r\n/**\r\n * Parameters for burning an SNS domain.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: BurnDomainParams = {\r\n *   domain: \"example.sns\",\r\n *   owner,\r\n *   refundAddress,\r\n * };\r\n * ```\r\n */\r\nexport interface BurnDomainParams {\r\n  /** Full `.sns` domain name. */\r\n  domain: string;\r\n  /** Current domain owner. */\r\n  owner: Address;\r\n  /** Account receiving reclaimed rent. */\r\n  refundAddress: Address;\r\n}\r\n\r\n/**\r\n * Builds an instruction to burn a top-level `.sns` domain.\r\n *\r\n * @param params Burn parameters\r\n * @param params.domain Full `.sns` domain name\r\n * @param params.owner Current owner of the domain\r\n * @param params.refundAddress Account receiving reclaimed rent\r\n * @returns Transaction instruction.\r\n *\r\n * @example\r\n * ```ts\r\n * const instruction = await burnDomain({ domain: \"example.sns\", owner, refundAddress });\r\n * ```\r\n */\r\nexport const burnDomain = async ({\r\n  domain,\r\n  owner,\r\n  refundAddress,\r\n}: BurnDomainParams): Promise<Instruction> => {\r\n  const trimmedDomain = _parseSnsTopLevelDomain(domain);\r\n\r\n  const { domainAddress } = await getSnsDomainAddress({\r\n    domain: trimmedDomain,\r\n  });\r\n  const encoded = addressCodec.encode(domainAddress);\r\n\r\n  const [pda] = await getProgramDerivedAddress({\r\n    programAddress: REGISTRY_PROGRAM_ADDRESS,\r\n    seeds: [encoded],\r\n  });\r\n\r\n  const [resellingPda] = await getProgramDerivedAddress({\r\n    programAddress: REGISTRY_PROGRAM_ADDRESS,\r\n    seeds: [encoded, Uint8Array.from([1, 1])],\r\n  });\r\n\r\n  const reverseAddress = await getReverseAddress(trimmedDomain);\r\n\r\n  const ix = new BurnDomainInstruction().getInstruction(\r\n    REGISTRY_PROGRAM_ADDRESS,\r\n    NAME_PROGRAM_ADDRESS,\r\n    SYSTEM_PROGRAM_ADDRESS,\r\n    domainAddress,\r\n    reverseAddress,\r\n    resellingPda,\r\n    pda,\r\n    REVERSE_LOOKUP_CLASS,\r\n    owner,\r\n    refundAddress\r\n  );\r\n\r\n  return ix;\r\n};\r\n"],"names":["_parseSnsTopLevelDomain","getSnsDomainAddress","addressCodec","getProgramDerivedAddress","REGISTRY_PROGRAM_ADDRESS","getReverseAddress","BurnDomainInstruction","NAME_PROGRAM_ADDRESS","SYSTEM_PROGRAM_ADDRESS","REVERSE_LOOKUP_CLASS"],"mappings":";;;;;;;;;;;;AAmCA;;;;;;;;;;;;;AAaG;AACI,MAAM,UAAU,GAAG,OAAO,EAC/B,MAAM,EACN,KAAK,EACL,aAAa,GACI,KAA0B;AAC3C,IAAA,MAAM,aAAa,GAAGA,sCAAuB,CAAC,MAAM,CAAC;AAErD,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,MAAMC,uCAAmB,CAAC;AAClD,QAAA,MAAM,EAAE,aAAa;AACtB,KAAA,CAAC;IACF,MAAM,OAAO,GAAGC,mBAAY,CAAC,MAAM,CAAC,aAAa,CAAC;AAElD,IAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAMC,4BAAwB,CAAC;AAC3C,QAAA,cAAc,EAAEC,kCAAwB;QACxC,KAAK,EAAE,CAAC,OAAO,CAAC;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,YAAY,CAAC,GAAG,MAAMD,4BAAwB,CAAC;AACpD,QAAA,cAAc,EAAEC,kCAAwB;AACxC,QAAA,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAA,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,MAAMC,mCAAiB,CAAC,aAAa,CAAC;AAE7D,IAAA,MAAM,EAAE,GAAG,IAAIC,2CAAqB,EAAE,CAAC,cAAc,CACnDF,kCAAwB,EACxBG,8BAAoB,EACpBC,gCAAsB,EACtB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,GAAG,EACHC,8BAAoB,EACpB,KAAK,EACL,aAAa,CACd;AAED,IAAA,OAAO,EAAE;AACX;;;;"}