{"version":3,"file":"createReverse.mjs","sources":["../../../src/bindings/createReverse.ts"],"sourcesContent":["import { Address, Instruction } from \"@solana/kit\";\r\n\r\nimport {\r\n  CENTRAL_STATE,\r\n  NAME_PROGRAM_ADDRESS,\r\n  REGISTRY_PROGRAM_ADDRESS,\r\n  SNS_ROOT_DOMAIN_ACCOUNT,\r\n  SYSTEM_PROGRAM_ADDRESS,\r\n  SYSVAR_RENT_ADDRESS,\r\n} from \"../constants/addresses\";\r\nimport { CreateReverseInstruction } from \"../instructions/createReverseInstruction\";\r\nimport { _deriveAddress } from \"../utils/deriveAddress\";\r\n\r\n/**\r\n * Parameters for creating a reverse lookup record.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: CreateReverseParams = { domainAddress, domain: \"example\", payer };\r\n * ```\r\n */\r\nexport interface CreateReverseParams {\r\n  /** Domain account address. */\r\n  domainAddress: Address;\r\n  /** Raw reverse lookup payload. */\r\n  domain: string;\r\n  /** Account funding creation. */\r\n  payer: Address;\r\n  /** Parent domain address for a subdomain. */\r\n  parentAddress?: Address;\r\n  /** Parent domain owner for a subdomain. */\r\n  parentOwner?: Address;\r\n}\r\n\r\n/**\r\n * Creates a raw reverse lookup record for the specified domain account.\r\n *\r\n * This low-level helper accepts the stored reverse payload as `domain` and\r\n * does not parse `.sns` or `.sol` suffixes.\r\n *\r\n * @param params Reverse lookup creation parameters\r\n * @param params.domainAddress Domain account the reverse lookup points to\r\n * @param params.domain Raw reverse payload to store\r\n * @param params.payer Account funding reverse lookup creation\r\n * @param params.parentAddress Optional parent domain address for subdomain reverse lookups\r\n * @param params.parentOwner Optional parent domain owner for subdomain reverse lookups\r\n * @returns Transaction instruction.\r\n *\r\n * @example\r\n * ```ts\r\n * const instruction = await createReverse({ domainAddress, domain: \"example\", payer });\r\n * ```\r\n */\r\nexport const createReverse = async ({\r\n  domainAddress,\r\n  domain,\r\n  payer,\r\n  parentAddress,\r\n  parentOwner,\r\n}: CreateReverseParams): Promise<Instruction> => {\r\n  const reverseLookupAccount = await _deriveAddress(\r\n    domainAddress,\r\n    parentAddress,\r\n    CENTRAL_STATE\r\n  );\r\n\r\n  let ix = new CreateReverseInstruction({\r\n    domain: domain,\r\n  }).getInstruction(\r\n    REGISTRY_PROGRAM_ADDRESS,\r\n    NAME_PROGRAM_ADDRESS,\r\n    SNS_ROOT_DOMAIN_ACCOUNT,\r\n    reverseLookupAccount,\r\n    SYSTEM_PROGRAM_ADDRESS,\r\n    CENTRAL_STATE,\r\n    payer,\r\n    SYSVAR_RENT_ADDRESS,\r\n    parentAddress,\r\n    parentOwner\r\n  );\r\n\r\n  return ix;\r\n};\r\n"],"names":[],"mappings":";;;;AAkCA;;;;;;;;;;;;;;;;;;AAkBG;AACU,MAAA,aAAa,GAAG,OAAO,EAClC,aAAa,EACb,MAAM,EACN,KAAK,EACL,aAAa,EACb,WAAW,GACS,KAA0B;IAC9C,MAAM,oBAAoB,GAAG,MAAM,cAAc,CAC/C,aAAa,EACb,aAAa,EACb,aAAa,CACd;AAED,IAAA,IAAI,EAAE,GAAG,IAAI,wBAAwB,CAAC;AACpC,QAAA,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,cAAc,CACf,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,WAAW,CACZ;AAED,IAAA,OAAO,EAAE;AACX;;;;"}