{"version":3,"file":"setPrimaryDomain.mjs","sources":["../../../src/bindings/setPrimaryDomain.ts"],"sourcesContent":["import { Address, GetAccountInfoApi, Instruction, Rpc } from \"@solana/kit\";\r\n\r\nimport {\r\n  NAME_OFFERS_ADDRESS,\r\n  SNS_ROOT_DOMAIN_ACCOUNT,\r\n  SYSTEM_PROGRAM_ADDRESS,\r\n} from \"../constants/addresses\";\r\nimport { RegisterPrimaryInstruction } from \"../instructions/registerPrimaryInstruction\";\r\nimport { PrimaryDomainState } from \"../states/primaryDomain\";\r\nimport { RegistryState } from \"../states/registry\";\r\n\r\n/**\r\n * Input for setting an owner's already-derived SNS primary domain.\r\n *\r\n * @example\r\n * ```ts\r\n * const params: SetPrimaryDomainParams = { rpc, domainAddress, owner };\r\n * ```\r\n */\r\nexport interface SetPrimaryDomainParams {\r\n  /** RPC client used to retrieve the domain registry. */\r\n  rpc: Rpc<GetAccountInfoApi>;\r\n\r\n  /** Already-derived SNS domain account address. */\r\n  domainAddress: Address;\r\n\r\n  /** Owner of the domain account. */\r\n  owner: Address;\r\n}\r\n\r\n/**\r\n * Sets the primary domain for the specified owner.\r\n *\r\n * This is an address-only API: `domainAddress` must be an already-derived SNS\r\n * domain account.\r\n *\r\n * @param params Primary-domain registration parameters\r\n * @param params.rpc RPC client implementing account lookup\r\n * @param params.domainAddress SNS domain account address to set as primary\r\n * @param params.owner Owner of the domain account\r\n * @returns Transaction instruction.\r\n *\r\n * @example\r\n * ```ts\r\n * const instruction = await setPrimaryDomain({ rpc, domainAddress, owner });\r\n * ```\r\n */\r\nexport const setPrimaryDomain = async ({\r\n  rpc,\r\n  domainAddress,\r\n  owner,\r\n}: SetPrimaryDomainParams): Promise<Instruction> => {\r\n  const [registry, primaryAddress] = await Promise.all([\r\n    RegistryState.retrieve(rpc, domainAddress),\r\n    PrimaryDomainState.getAddress(NAME_OFFERS_ADDRESS, owner),\r\n  ]);\r\n\r\n  const parent =\r\n    registry.parentName !== SNS_ROOT_DOMAIN_ACCOUNT\r\n      ? registry.parentName\r\n      : undefined;\r\n\r\n  const ix = new RegisterPrimaryInstruction().getInstruction(\r\n    NAME_OFFERS_ADDRESS,\r\n    domainAddress,\r\n    primaryAddress,\r\n    owner,\r\n    SYSTEM_PROGRAM_ADDRESS,\r\n    parent\r\n  );\r\n  return ix;\r\n};\r\n"],"names":[],"mappings":";;;;;AA8BA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,gBAAgB,GAAG,OAAO,EACrC,GAAG,EACH,aAAa,EACb,KAAK,GACkB,KAA0B;IACjD,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACnD,QAAA,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;AAC1C,QAAA,kBAAkB,CAAC,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC1D,KAAA,CAAC;AAEF,IAAA,MAAM,MAAM,GACV,QAAQ,CAAC,UAAU,KAAK;UACpB,QAAQ,CAAC;UACT,SAAS;IAEf,MAAM,EAAE,GAAG,IAAI,0BAA0B,EAAE,CAAC,cAAc,CACxD,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,MAAM,CACP;AACD,IAAA,OAAO,EAAE;AACX;;;;"}