{"version":3,"file":"transferDomain.mjs","sources":["../../../src/bindings/transferDomain.ts"],"sourcesContent":["import { Address, GetAccountInfoApi, Instruction, Rpc } from \"@solana/kit\";\r\n\r\nimport {\r\n  NAME_PROGRAM_ADDRESS,\r\n  SNS_ROOT_DOMAIN_ACCOUNT,\r\n} from \"../constants/addresses\";\r\nimport { TransferInstruction } from \"../instructions/transferInstruction\";\r\nimport { RegistryState } from \"../states/registry\";\r\nimport { _deriveAddress } from \"../utils/deriveAddress\";\r\nimport { _parseSnsTopLevelDomain } from \"../utils/parseSnsDomain\";\r\n\r\n/**\r\n * Parameters for transferring an SNS domain.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: TransferDomainParams = { rpc, domain: \"example.sns\", newOwner };\r\n * ```\r\n */\r\nexport interface TransferDomainParams {\r\n  /** RPC client. */\r\n  rpc: Rpc<GetAccountInfoApi>;\r\n  /** Full `.sns` domain name. */\r\n  domain: string;\r\n  /** New domain owner. */\r\n  newOwner: Address;\r\n}\r\n\r\n/**\r\n * Builds an instruction to transfer a top-level `.sns` domain.\r\n *\r\n * @param params Transfer parameters\r\n * @param params.rpc RPC client implementing account lookup\r\n * @param params.domain Full `.sns` domain name\r\n * @param params.newOwner New owner of the domain\r\n * @returns Transaction instruction.\r\n *\r\n * @example\r\n * ```ts\r\n * const instruction = await transferDomain({ rpc, domain: \"example.sns\", newOwner });\r\n * ```\r\n */\r\nexport const transferDomain = async ({\r\n  rpc,\r\n  domain,\r\n  newOwner,\r\n}: TransferDomainParams): Promise<Instruction> => {\r\n  const trimmedDomain = _parseSnsTopLevelDomain(domain);\r\n\r\n  const domainAddress = await _deriveAddress(\r\n    trimmedDomain,\r\n    SNS_ROOT_DOMAIN_ACCOUNT\r\n  );\r\n\r\n  const currentOwner = (await RegistryState.retrieve(rpc, domainAddress)).owner;\r\n\r\n  const transferInstr = new TransferInstruction({ newOwner }).getInstruction(\r\n    NAME_PROGRAM_ADDRESS,\r\n    domainAddress,\r\n    currentOwner\r\n  );\r\n\r\n  return transferInstr;\r\n};\r\n"],"names":[],"mappings":";;;;;;AA4BA;;;;;;;;;;;;;AAaG;AACI,MAAM,cAAc,GAAG,OAAO,EACnC,GAAG,EACH,MAAM,EACN,QAAQ,GACa,KAA0B;AAC/C,IAAA,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAErD,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,aAAa,EACb,uBAAuB,CACxB;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,KAAK;AAE7E,IAAA,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,cAAc,CACxE,oBAAoB,EACpB,aAAa,EACb,YAAY,CACb;AAED,IAAA,OAAO,aAAa;AACtB;;;;"}