{"version":3,"file":"registerWithNft.cjs","sources":["../../../src/bindings/registerWithNft.ts"],"sourcesContent":["import { Address, IInstruction, getProgramDerivedAddress } from \"@solana/kit\";\r\n\r\nimport { addressCodec, utf8Codec } from \"../codecs\";\r\nimport {\r\n  CENTRAL_STATE,\r\n  METAPLEX_PROGRAM_ADDRESS,\r\n  NAME_PROGRAM_ADDRESS,\r\n  REGISTRY_PROGRAM_ADDRESS,\r\n  REVERSE_LOOKUP_CLASS,\r\n  ROOT_DOMAIN_ADDRESS,\r\n  SYSTEM_PROGRAM_ADDRESS,\r\n  SYSVAR_RENT_ADDRESS,\r\n  TOKEN_PROGRAM_ADDRESS,\r\n  WOLVES_COLLECTION_METADATA,\r\n} from \"../constants/addresses\";\r\nimport { createWithNftInstruction } from \"../instructions/createWithNftInstruction\";\r\nimport { deriveAddress } from \"../utils/deriveAddress\";\r\n\r\ninterface RegisterWithNftParams {\r\n  domain: string;\r\n  space: number;\r\n  buyer: Address;\r\n  nftSource: Address;\r\n  nftMint: Address;\r\n}\r\n\r\n/**\r\n * Registers a .sol domain using a Bonfida Wolves NFT.\r\n *\r\n * @param params - An object containing the following properties:\r\n *   - `domain`: The domain name to be registered.\r\n *   - `space`: The space in bytes to be allocated for the domain registry.\r\n *   - `buyer`: The address of the buyer registering the domain.\r\n *   - `nftSource`: The address of the NFT source account.\r\n *   - `nftMint`: The mint address of the NFT used for registration.\r\n * @returns A promise which resolves to the register with NFT instruction.\r\n */\r\nexport const registerWithNft = async ({\r\n  domain,\r\n  space,\r\n  buyer,\r\n  nftSource,\r\n  nftMint,\r\n}: RegisterWithNftParams): Promise<IInstruction> => {\r\n  const domainAddress = await deriveAddress(domain, ROOT_DOMAIN_ADDRESS);\r\n  const reverseLookupAccount = await deriveAddress(\r\n    domainAddress,\r\n    undefined,\r\n    CENTRAL_STATE\r\n  );\r\n\r\n  const [state] = await getProgramDerivedAddress({\r\n    programAddress: REGISTRY_PROGRAM_ADDRESS,\r\n    seeds: [addressCodec.encode(domainAddress)],\r\n  });\r\n  const [nftMetadata] = await getProgramDerivedAddress({\r\n    programAddress: METAPLEX_PROGRAM_ADDRESS,\r\n    seeds: [\r\n      utf8Codec.encode(\"metadata\"),\r\n      addressCodec.encode(METAPLEX_PROGRAM_ADDRESS),\r\n      addressCodec.encode(nftMint),\r\n    ],\r\n  });\r\n  const [masterEdition] = await getProgramDerivedAddress({\r\n    programAddress: METAPLEX_PROGRAM_ADDRESS,\r\n    seeds: [\r\n      utf8Codec.encode(\"metadata\"),\r\n      addressCodec.encode(METAPLEX_PROGRAM_ADDRESS),\r\n      addressCodec.encode(nftMint),\r\n      utf8Codec.encode(\"edition\"),\r\n    ],\r\n  });\r\n\r\n  const ix = new createWithNftInstruction({\r\n    space,\r\n    name: domain,\r\n  }).getInstruction(\r\n    REGISTRY_PROGRAM_ADDRESS,\r\n    NAME_PROGRAM_ADDRESS,\r\n    ROOT_DOMAIN_ADDRESS,\r\n    domainAddress,\r\n    reverseLookupAccount,\r\n    SYSTEM_PROGRAM_ADDRESS,\r\n    REVERSE_LOOKUP_CLASS,\r\n    buyer,\r\n    nftSource,\r\n    nftMetadata,\r\n    nftMint,\r\n    masterEdition,\r\n    WOLVES_COLLECTION_METADATA,\r\n    TOKEN_PROGRAM_ADDRESS,\r\n    SYSVAR_RENT_ADDRESS,\r\n    state,\r\n    METAPLEX_PROGRAM_ADDRESS\r\n  );\r\n  return ix;\r\n};\r\n"],"names":["async","domain","space","buyer","nftSource","nftMint","domainAddress","deriveAddress","ROOT_DOMAIN_ADDRESS","reverseLookupAccount","undefined","CENTRAL_STATE","state","getProgramDerivedAddress","programAddress","REGISTRY_PROGRAM_ADDRESS","seeds","addressCodec","encode","nftMetadata","METAPLEX_PROGRAM_ADDRESS","utf8Codec","masterEdition","createWithNftInstruction","name","getInstruction","NAME_PROGRAM_ADDRESS","SYSTEM_PROGRAM_ADDRESS","REVERSE_LOOKUP_CLASS","WOLVES_COLLECTION_METADATA","TOKEN_PROGRAM_ADDRESS","SYSVAR_RENT_ADDRESS"],"mappings":"uOAqC+BA,OAC7BC,SACAC,QACAC,QACAC,YACAC,cAEA,MAAMC,QAAsBC,gBAAcN,EAAQO,EAAAA,qBAC5CC,QAA6BF,EAAAA,cACjCD,OACAI,EACAC,EAAAA,gBAGKC,SAAeC,2BAAyB,CAC7CC,eAAgBC,EAAwBA,yBACxCC,MAAO,CAACC,EAAAA,aAAaC,OAAOZ,OAEvBa,SAAqBN,2BAAyB,CACnDC,eAAgBM,EAAwBA,yBACxCJ,MAAO,CACLK,EAASA,UAACH,OAAO,YACjBD,EAAYA,aAACC,OAAOE,4BACpBH,EAAYA,aAACC,OAAOb,OAGjBiB,SAAuBT,2BAAyB,CACrDC,eAAgBM,EAAwBA,yBACxCJ,MAAO,CACLK,EAASA,UAACH,OAAO,YACjBD,EAAYA,aAACC,OAAOE,4BACpBH,EAAYA,aAACC,OAAOb,GACpBgB,EAASA,UAACH,OAAO,cA0BrB,OAtBW,IAAIK,2BAAyB,CACtCrB,QACAsB,KAAMvB,IACLwB,eACDV,EAAAA,yBACAW,EAAoBA,qBACpBlB,EAAmBA,oBACnBF,EACAG,EACAkB,EAAAA,uBACAC,EAAoBA,qBACpBzB,EACAC,EACAe,EACAd,EACAiB,EACAO,EAA0BA,2BAC1BC,wBACAC,EAAAA,oBACAnB,EACAQ,2BAEO"}