@bonfida/spl-name-service 2.0.0-alpha.17 → 2.0.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("@solana/web3.js"),r=require("buffer"),t=require("@solana/spl-token"),o=require("bn.js"),i=require("borsh"),s=require("@ethersproject/sha2"),n=require("@bonfida/sns-records"),a=require("@pythnetwork/client"),c=require("bech32-buffer"),u=require("tweetnacl"),p=require("bs58"),d=require("ipaddr.js"),l=require("punycode");function f(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var y,g=f(u);exports.ErrorType=void 0,(y=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",y.InvalidSubdomain="InvalidSubdomain",y.FavouriteDomainNotFound="FavouriteDomainNotFound",y.MissingParentOwner="MissingParentOwner",y.U32Overflow="U32Overflow",y.InvalidBufferLength="InvalidBufferLength",y.U64Overflow="U64Overflow",y.NoRecordData="NoRecordData",y.InvalidRecordData="InvalidRecordData",y.UnsupportedRecord="UnsupportedRecord",y.InvalidEvmAddress="InvalidEvmAddress",y.InvalidInjectiveAddress="InvalidInjectiveAddress",y.InvalidARecord="InvalidARecord",y.InvalidAAAARecord="InvalidAAAARecord",y.InvalidRecordInput="InvalidRecordInput",y.InvalidSignature="InvalidSignature",y.AccountDoesNotExist="AccountDoesNotExist",y.MultipleRegistries="MultipleRegistries",y.InvalidReverseTwitter="InvalidReverseTwitter",y.NoAccountData="NoAccountData",y.InvalidInput="InvalidInput",y.InvalidDomain="InvalidDomain",y.InvalidCustomBg="InvalidCustomBackground",y.UnsupportedSignature="UnsupportedSignature",y.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",y.RecordIsNotSigned="RecordIsNotSigned",y.UnsupportedSignatureType="UnsupportedSignatureType";class w extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,w)}}class x extends o{toBuffer(){const e=super.toArray().reverse(),t=r.Buffer.from(e);if(4===t.length)return t;if(t.length>4)throw new w(exports.ErrorType.U32Overflow);const o=r.Buffer.alloc(4);return t.copy(o),o}static fromBuffer(e){if(4!==e.length)throw new w(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class b extends o{toBuffer(){const e=super.toArray().reverse(),t=r.Buffer.from(e);if(8===t.length)return t;if(t.length>8)throw new w(exports.ErrorType.U64Overflow);const o=r.Buffer.alloc(8);return t.copy(o),o}static fromBuffer(e){if(8!==e.length)throw new w(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function m(t,o,i,s,n,a,c,u,p,d,l){const f=[r.Buffer.from(Int8Array.from([0])),new x(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],y=r.Buffer.concat(f),g=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return p?g.push({pubkey:p,isSigner:!0,isWritable:!1}):g.push({pubkey:new e.PublicKey(r.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?g.push({pubkey:d,isSigner:!1,isWritable:!1}):g.push({pubkey:new e.PublicKey(r.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l&&g.push({pubkey:l,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:g,programId:t,data:y})}function R(t,o,i,s,n){const a=[r.Buffer.from(Int8Array.from([1])),i.toBuffer(),new x(s.length).toBuffer(),s],c=r.Buffer.concat(a),u=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:u,programId:t,data:c})}function S(t,o,i,s,n,a,c){const u=[r.Buffer.from(Int8Array.from([2])),i.toBuffer()],p=r.Buffer.concat(u),d=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c||s,isSigner:!0,isWritable:!1}];return n&&d.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&a&&(n||d.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:d,programId:t,data:p})}function h(t,o,i,s){const n=[r.Buffer.from(Int8Array.from([3]))],a=r.Buffer.concat(n),c=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:c,programId:t,data:a})}class A{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return i.serialize(A.schema,this)}getInstruction(o,i,s,n,a,c,u,p,d,l,f){const y=r.Buffer.from(this.serialize()),g=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new e.TransactionInstruction({keys:g,programId:o,data:y})}}A.schema=new Map([[A,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class v{constructor(e){this.tag=12,this.name=e.name}serialize(){return i.serialize(v.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=r.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!1}),f.push({pubkey:a,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!0,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),p&&f.push({pubkey:p,isSigner:!1,isWritable:!0}),d&&f.push({pubkey:d,isSigner:!0,isWritable:!0}),new e.TransactionInstruction({keys:f,programId:t,data:l})}}v.schema=new Map([[v,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class E{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return i.serialize(E.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const m=r.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!1}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:n,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!1}),R.push({pubkey:l,isSigner:!1,isWritable:!1}),R.push({pubkey:f,isSigner:!1,isWritable:!1}),R.push({pubkey:y,isSigner:!1,isWritable:!0}),R.push({pubkey:g,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),b&&R.push({pubkey:b,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:R,programId:t,data:m})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class I{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return i.serialize(I.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const m=r.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!1}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:n,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!0}),R.push({pubkey:l,isSigner:!1,isWritable:!0}),R.push({pubkey:f,isSigner:!1,isWritable:!0}),R.push({pubkey:y,isSigner:!1,isWritable:!0}),R.push({pubkey:g,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),R.push({pubkey:b,isSigner:!1,isWritable:!1}),new e.TransactionInstruction({keys:R,programId:t,data:m})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(){this.tag=16}serialize(){return i.serialize(B.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=r.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!0}),f.push({pubkey:a,isSigner:!1,isWritable:!0}),f.push({pubkey:c,isSigner:!1,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),f.push({pubkey:p,isSigner:!0,isWritable:!1}),f.push({pubkey:d,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:f,programId:t,data:l})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"]]}]]);const k=new e.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),T=r.Buffer.from("tokenized_name");var P;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(P||(P={}));class D{constructor(r){this.tag=r.tag,this.nonce=r.nonce,this.nameAccount=new e.PublicKey(r.nameAccount),this.owner=new e.PublicKey(r.owner),this.nftMint=new e.PublicKey(r.nftMint)}static deserialize(e){return i.deserialize(this.schema,D,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,o){return await e.PublicKey.findProgramAddress([r.Buffer.from("nft_record"),t.toBuffer()],o)}}D.schema=new Map([[D,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const N=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),W="SPL Name Service",K=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),C=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),_=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),O=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),V=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),L=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),M=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),z=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),U=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),H=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new e.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new e.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new e.PublicKey("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new e.PublicKey("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],F=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),j=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),G=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),q=new e.PublicKey("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),X=new e.PublicKey("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),Y=new e.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var Z;exports.Record=void 0,(Z=exports.Record||(exports.Record={})).IPFS="IPFS",Z.ARWV="ARWV",Z.SOL="SOL",Z.ETH="ETH",Z.BTC="BTC",Z.LTC="LTC",Z.DOGE="DOGE",Z.Email="email",Z.Url="url",Z.Discord="discord",Z.Github="github",Z.Reddit="reddit",Z.Twitter="twitter",Z.Telegram="telegram",Z.Pic="pic",Z.SHDW="SHDW",Z.POINT="POINT",Z.BSC="BSC",Z.Injective="INJ",Z.Backpack="backpack",Z.A="A",Z.AAAA="AAAA",Z.CNAME="CNAME",Z.TXT="TXT",Z.Background="background";const J=new Map([[exports.Record.SOL,96],[exports.Record.ETH,20],[exports.Record.BSC,20],[exports.Record.Injective,20],[exports.Record.A,4],[exports.Record.AAAA,16],[exports.Record.Background,32]]);var Q;exports.RecordVersion=void 0,(Q=exports.RecordVersion||(exports.RecordVersion={}))[Q.V1=1]="V1",Q[Q.V2=2]="V2";const $=e=>{const t=W+e,o=s.sha256(r.Buffer.from(t,"utf8")).slice(2);return r.Buffer.from(o,"hex")},ee=(t,o,i)=>{const s=[t];o?s.push(o.toBuffer()):s.push(r.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(r.Buffer.alloc(32));const[n]=e.PublicKey.findProgramAddressSync(s,N);return n};async function re(e,r){const t=$(r.toBase58()),i=ee(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()}async function te(e,r){let t=[];for(let e of r){const r=$(e.toBase58()),o=ee(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const oe=(e,r=K,t)=>{let o=$(e);return{pubkey:ee(o,t,r),hashed:o}},ie=(e,t)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const o=e.split(".");if(2===o.length){const e=r.Buffer.from([t||0]).toString().concat(o[0]),{pubkey:i}=oe(o[1]);return{...oe(e,i,t===exports.RecordVersion.V2?n.CENTRAL_STATE_SNS_RECORDS:void 0),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:e}=oe(o[2]),{pubkey:t}=oe("\0".concat(o[1]),e),i=r.Buffer.from([1]).toString();return{...oe(i.concat(o[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...oe(e,K),isSub:!1,parent:void 0}};const se=(e,r)=>{const{pubkey:t,parent:o}=ie(e),i=$(t.toBase58());return ee(i,V,r?o:void 0)},ne=(e,r)=>{if(!e)throw new w(r)},ae=async(r,o)=>{try{const[i]=await e.PublicKey.findProgramAddress([T,o.toBuffer()],k);if("0"===(await t.getMint(r,i)).supply.toString())return;const s=[{memcmp:{offset:0,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await r.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:s});if(1!=n.length)return;return new e.PublicKey(n[0].account.data.slice(32,64))}catch{return}},ce=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ue=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(k,{filters:t})})(e,r.mint);if(1===t.length)return D.deserialize(t[0].account.data)};class pe{constructor(r){this.parentName=new e.PublicKey(r.parentName),this.owner=new e.PublicKey(r.owner),this.class=new e.PublicKey(r.class)}static async retrieve(e,r){var t;const o=await e.getAccountInfo(r);if(!o)throw new w(exports.ErrorType.AccountDoesNotExist);let s=i.deserializeUnchecked(this.schema,pe,o.data);s.data=null===(t=o.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:s,nftOwner:await ae(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),o=e=>{if(!e)return;const r=i.deserializeUnchecked(this.schema,pe,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>o(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const o=[...r];for(;o.length>0;)t.push(...await this._retrieveBatch(e,o.splice(0,100)));return t}}async function de(e,r){if(!await e.getAccountInfo(r))throw new w(exports.ErrorType.AccountDoesNotExist);return pe.retrieve(e,r)}async function le(e){const t=W+e,o=s.sha256(r.Buffer.from(t,"utf8")).slice(2);return r.Buffer.from(o,"hex")}async function fe(t,o,i){const s=[t];o?s.push(o.toBuffer()):s.push(r.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(r.Buffer.alloc(32));const[n]=await e.PublicKey.findProgramAddress(s,N);return n}pe.HEADER_LEN=96,pe.schema=new Map([[pe,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const ye=async(e,r=K)=>{let t=await le(e);return{pubkey:await fe(t,void 0,r),hashed:t}},ge=async(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const o=e.split(".");if(2===o.length){const e=r.Buffer.from([t?1:0]).toString().concat(o[0]),{pubkey:i}=await ye(o[1]);return{...await ye(e,i),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:e}=await ye(o[2]),{pubkey:t}=await ye("\0".concat(o[1]),e),i=r.Buffer.from([1]).toString();return{...await ye(i.concat(o[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...await ye(e,K),isSub:!1,parent:void 0}},we=(e,r,t)=>g.sign.detached.verify(e,r,t.toBytes()),xe=async(t,o)=>{const{pubkey:i}=ie(o),{registry:s,nftOwner:n}=await pe.retrieve(t,i);if(n)return n;try{const i=be(o,exports.Record.SOL),n=await Re(t,o);if(!(null==n?void 0:n.data))throw new w(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=r.Buffer.concat([n.data.slice(0,32),i.toBuffer()]),u=a.encode(c.toString("hex"));if(!we(u,n.data.slice(32),s.owner))throw new w(exports.ErrorType.InvalidSignature);return new e.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return s.owner},be=(e,r)=>{const{pubkey:t}=ie(r+"."+e,exports.RecordVersion.V1);return t};async function me(e,r,t,o){const i=be(r,t);let{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoRecordData);if(o)return Se(s,t,i);const n=J.get(t);return s.data=s.data.slice(0,n),s}const Re=async(e,r)=>await me(e,r,exports.Record.SOL),Se=(t,o,i)=>{const s=null==t?void 0:t.data;if(!s)return;if(0===s.compare(r.Buffer.alloc(s.length)))return;const n=J.get(o),a=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(s);if(!n)return s.slice(0,a).toString("utf-8");if(o===exports.Record.SOL){const e=new TextEncoder,o=r.Buffer.concat([s.slice(0,32),i.toBuffer()]),n=e.encode(o.toString("hex"));if(we(n,s.slice(32,96),t.owner))return p.encode(s.slice(0,32))}if(n&&a!==n){const e=s.slice(0,a).toString("utf-8");if(o===exports.Record.Injective){const r=c.decode(e);if("inj"===r.prefix&&20===r.data.length)return e}else if(o===exports.Record.BSC||o===exports.Record.ETH){const t=e.slice(0,2),o=e.slice(2);if("0x"===t&&20===r.Buffer.from(o,"hex").length)return e}else if((o===exports.Record.A||o===exports.Record.AAAA)&&d.isValid(e))return e;throw new w(exports.ErrorType.InvalidRecordData)}if(o===exports.Record.ETH||o===exports.Record.BSC)return"0x"+s.slice(0,n).toString("hex");if(o===exports.Record.Injective)return c.encode("inj",s.slice(0,n),"bech32");if(o===exports.Record.A||o===exports.Record.AAAA)return d.fromByteArray([...s.slice(0,n)]).toString();if(o===exports.Record.Background)return new e.PublicKey(s.slice(0,n)).toString();throw new w(exports.ErrorType.InvalidRecordData)},he=(t,o)=>{if(!J.get(o))return o!==exports.Record.CNAME&&o!==exports.Record.TXT||(t=l.encode(t)),r.Buffer.from(t,"utf-8");if(o===exports.Record.SOL)throw new w(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(o===exports.Record.ETH||o===exports.Record.BSC)return ne("0x"===t.slice(0,2),exports.ErrorType.InvalidEvmAddress),r.Buffer.from(t.slice(2),"hex");if(o===exports.Record.Injective){const e=c.decode(t);return ne("inj"===e.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===e.data.length,exports.ErrorType.InvalidInjectiveAddress),r.Buffer.from(e.data)}if(o===exports.Record.A){const e=d.parse(t).toByteArray();return ne(4===e.length,exports.ErrorType.InvalidARecord),r.Buffer.from(e)}if(o===exports.Record.AAAA){const e=d.parse(t).toByteArray();return ne(16===e.length,exports.ErrorType.InvalidAAAARecord),r.Buffer.from(e)}if(o===exports.Record.Background)return new e.PublicKey(t).toBuffer();throw new w(exports.ErrorType.InvalidRecordInput)},Ae=(e,t,o,i)=>{const s=r.Buffer.concat([e.toBuffer(),t.toBuffer()]),n=(new TextEncoder).encode(s.toString("hex")),a=we(n,i,o);return ne(a,exports.ErrorType.InvalidSignature),r.Buffer.concat([e.toBuffer(),i])},ve=new Map([[exports.Record.Backpack,new e.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[exports.Record.Url,new e.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Ee=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME,exports.Record.BTC]),Ie=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),Be=(r,t)=>{if(Ee.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(r=l.encode(r)),Buffer.from(r,"utf-8");if(t===exports.Record.SOL)return new e.PublicKey(r).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return ne("0x"===r.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(r.slice(2),"hex");if(t===exports.Record.Injective){const e=c.decode(r);return ne("inj"===e.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===e.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(e.data)}if(t===exports.Record.A){const e=d.parse(r).toByteArray();return ne(4===e.length,exports.ErrorType.InvalidARecord),Buffer.from(e)}if(t===exports.Record.AAAA){const e=d.parse(r).toByteArray();return ne(16===e.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(e)}throw new w(exports.ErrorType.InvalidARecord)},ke=(e,r)=>{const{pubkey:t}=ie(e),o=$("".concat(r));return ee(o,n.CENTRAL_STATE_SNS_RECORDS,t)};async function Te(r,t,o,i,s,n,a,c){const u=await le(t),p=await fe(u,a,c),d=n||await r.getMinimumBalanceForRentExemption(o);let l;if(c){const{registry:e}=await de(r,c);l=e.owner}return m(N,e.SystemProgram.programId,p,s,i,u,new b(d),new x(o),a,c,l)}async function Pe(e,r,t,o,i){const s=await le(r),n=await fe(s,o,i);let a;a=o||(await pe.retrieve(e,n)).registry.owner;return h(N,n,t,a)}const De=async(r,t,o,i,s)=>{let[n]=await e.PublicKey.findProgramAddress([C.toBuffer()],C),a=await le(r.toBase58()),c=await fe(a,n,i);return[[],[new v({name:t}).getInstruction(C,N,K,c,e.SystemProgram.programId,n,o,e.SYSVAR_RENT_PUBKEY,i,s)]]},Ne=async(r,t,o,i,s,n)=>{ne(o!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=ie(`${o}.${t}`,exports.RecordVersion.V1),p=he(i,o).length,d=await r.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return m(N,e.SystemProgram.programId,a,s,n,c,new b(d),new x(p),void 0,u,s)},We=async(r,t,o,i,s,n)=>{const{pubkey:a,hashed:c,parent:u}=ie(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=Ae(o,a,i,s).length,d=await r.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return[m(N,e.SystemProgram.programId,a,i,n,c,new b(d),new x(p),void 0,u,i)]};class Ke{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new w(exports.ErrorType.InvalidReverseTwitter);return i.deserializeUnchecked(this.schema,Ke,t.data.slice(pe.HEADER_LEN))}}async function Ce(t,o,s,n,a){const c=await le(n.toString()),u=await fe(c,L,M);let p=i.serialize(Ke.schema,new Ke({twitterRegistryKey:s.toBytes(),twitterHandle:o}));return[m(N,e.SystemProgram.programId,u,n,a,c,new b(await t.getMinimumBalanceForRentExemption(p.length+pe.HEADER_LEN)),new x(p.length),L,M,L),R(N,u,new x(0),r.Buffer.from(p),L)]}Ke.schema=new Map([[Ke,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const _e=new e.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Oe{constructor(r){this.tag=r.tag,this.nameAccount=new e.PublicKey(r.nameAccount)}static deserialize(e){return i.deserialize(this.schema,Oe,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new w(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,o){return await e.PublicKey.findProgramAddress([r.Buffer.from("favourite_domain"),o.toBuffer()],t)}static getKeySync(t,o){return e.PublicKey.findProgramAddressSync([r.Buffer.from("favourite_domain"),o.toBuffer()],t)}}Oe.schema=new Map([[Oe,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.CustomBg=void 0,(exports.CustomBg||(exports.CustomBg={})).DegenPoet1="DegenPoet#1";const Ve=new e.PublicKey("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD");exports.BONFIDA_FIDA_BNB=O,exports.BONFIDA_USDC_BNB=z,exports.CUSTOM_BG_TLD=q,exports.FavouriteDomain=Oe,exports.GUARDIANS=ve,exports.HASH_PREFIX=W,exports.METAPLEX_ID=Y,exports.NAME_OFFERS_ID=_e,exports.NAME_PROGRAM_ID=N,exports.NameRegistryState=pe,exports.Numberu32=x,exports.Numberu64=b,exports.PYTH_FIDA_PRICE_ACC=_,exports.PYTH_MAPPING_ACC=j,exports.RECORD_V1_SIZE=J,exports.REFERRERS=H,exports.REGISTER_PROGRAM_ID=C,exports.REVERSE_LOOKUP_CLASS=V,exports.ROOT_DOMAIN_ACCOUNT=K,exports.ReverseTwitterRegistryState=Ke,exports.SELF_SIGNED=Ie,exports.SNSError=w,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=F,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=M,exports.TWITTER_VERIFICATION_AUTHORITY=L,exports.USDC_MINT=U,exports.UTF8_ENCODED=Ee,exports.VAULT_OWNER=G,exports.WOLVES_COLLECTION_METADATA=X,exports.burnDomain=(r,t,o)=>{const{pubkey:i}=ie(r),[s]=e.PublicKey.findProgramAddressSync([i.toBuffer()],C),[n]=e.PublicKey.findProgramAddressSync([i.toBuffer(),Uint8Array.from([1,1])],C);return(new B).getInstruction(C,N,e.SystemProgram.programId,i,se(r),n,s,V,t,o)},exports.burnInstruction=B,exports.changeTwitterRegistryData=async function(e,r,t,o){const i=await le(e),s=await fe(i,void 0,M);return[R(N,s,new x(t),o,r)]},exports.changeVerifiedPubkey=async function(e,r,t,o,i){const s=await le(r),n=await fe(s,void 0,M);let a=[S(N,n,o,t,void 0)];const c=await le(t.toString());return await fe(c,L,void 0),a.push(await Pe(e,t.toString(),i,L,M)),a=a.concat(await Ce(e,r,n,o,i)),a},exports.check=ne,exports.checkSolRecord=we,exports.createInstruction=m,exports.createInstructionV3=E,exports.createNameRegistry=Te,exports.createRecordInstruction=Ne,exports.createRecordV2Instruction=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.allocateAndPostRecord(i,s,a,o,N,"".concat(r),Be(t,r),n.SNS_RECORDS_ID)},exports.createReverseInstruction=v,exports.createReverseName=De,exports.createReverseTwitterRegistry=Ce,exports.createSolRecordInstruction=We,exports.createSubdomain=async(e,r,t,o=2e3)=>{const i=[],s=r.split(".")[0];if(!s)throw new w(exports.ErrorType.InvalidSubdomain);const{parent:n,pubkey:a}=ie(r),c=await e.getMinimumBalanceForRentExemption(o+pe.HEADER_LEN),u=await Te(e,"\0".concat(s),o,t,t,c,void 0,n);i.push(u);const p=se(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await De(a,"\0".concat(s),t,n,t);i.push(...e)}return[[],i]},exports.createV2Instruction=A,exports.createVerifiedTwitterRegistry=async function(r,t,o,i,s){const n=await le(t),a=await fe(n,void 0,M),c=await r.getMinimumBalanceForRentExemption(i+pe.HEADER_LEN);let u=[m(N,e.SystemProgram.programId,a,o,s,n,new b(c),new x(i),void 0,M,L)];return u=u.concat(await Ce(r,t,a,o,s)),u},exports.createWithNftInstruction=I,exports.deleteInstruction=h,exports.deleteNameRegistry=Pe,exports.deleteRecordV2=(e,r,t,o)=>{const{pubkey:i,parent:s}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!s)throw new Error("Invalid parent");return n.deleteRecord(o,s,t,i,N,n.SNS_RECORDS_ID)},exports.deleteTwitterRegistry=async function(e,r){const t=await le(e),o=await fe(t,void 0,M),i=await le(r.toString()),s=await fe(i,L,M);return[h(N,o,r,r),h(N,s,r,r)]},exports.deserializeRecord=Se,exports.deserializeRecordV2Content=(r,t)=>{if(Ee.has(t)){const e=r.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?l.decode(e):e}if(t===exports.Record.SOL)return new e.PublicKey(r).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+r.toString("hex");if(t===exports.Record.Injective)return c.encode("inj",r,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return d.fromByteArray([...r]).toString();throw new w(exports.ErrorType.InvalidARecord)},exports.ethValidateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateEthSignature(o,a,c,t,N,n.Validation.Ethereum,i,s,n.SNS_RECORDS_ID)},exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:V.toBase58()}}],o=await e.getProgramAccounts(N,{filters:t}),i=await re(e,r),s=o.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),n=s.map((e=>ie(e+"."+i).pubkey)),a=await e.getMultipleAccountsInfo(n);return s.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:K.toBase58()}}];return(await e.getProgramAccounts(N,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:K.toBase58()}}];return await e.getProgramAccounts(N,{dataSlice:{offset:32,length:32},filters:r})},exports.getArtistPubkey=e=>{if(e===exports.CustomBg.DegenPoet1)return Ve;throw new w(exports.ErrorType.InvalidCustomBg)},exports.getArweaveRecord=async(e,r)=>await me(e,r,exports.Record.ARWV,!0),exports.getBackgroundRecord=async(e,r)=>await me(e,r,exports.Record.Background,!0),exports.getBackpackRecord=async(e,r)=>await me(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await me(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await me(e,r,exports.Record.BTC,!0),exports.getCustomBgKeys=(e,r)=>{const t=$(r),o=$(e),i=ee(o,void 0,q);return{domainKey:i,bgKey:ee(t,void 0,i)}},exports.getDiscordRecord=async(e,r)=>await me(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await me(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ge,exports.getDomainKeySync=ie,exports.getEmailRecord=async(e,r)=>await me(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await me(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(r,t)=>{const[o]=Oe.getKeySync(_e,new e.PublicKey(t)),i=await Oe.retrieve(r,o),s=await re(r,i.nameAccount);return{domain:i.nameAccount,reverse:s}},exports.getGithubRecord=async(e,r)=>await me(e,r,exports.Record.Github,!0),exports.getHandleAndRegistryKey=async function(r,t){const o=await le(t.toString()),i=await fe(o,L,M);let s=await Ke.retrieve(r,i);return[s.twitterHandle,new e.PublicKey(s.twitterRegistryKey)]},exports.getHashedName=le,exports.getHashedNameSync=$,exports.getInjectiveRecord=async(e,r)=>await me(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await me(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await me(e,r,exports.Record.LTC,!0),exports.getNameAccountKey=fe,exports.getNameAccountKeySync=ee,exports.getNameOwner=de,exports.getPicRecord=async(e,r)=>await me(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await me(e,r,exports.Record.POINT,!0),exports.getRecord=me,exports.getRecordKeySync=be,exports.getRecordV2Key=ke,exports.getRecords=async function(e,r,t,o){const i=t.map((e=>be(r,e))),s=await pe.retrieveBatch(e,i);return o?s.map(((e,o)=>{if(e)return Se(e,t[o],be(r,t[o]))})):s},exports.getRedditRecord=async(e,r)=>await me(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:o}=await ge(e),i=await le(t.toBase58());return await fe(i,V,r?o:void 0)},exports.getReverseKeySync=se,exports.getShdwRecord=async(e,r)=>await me(e,r,exports.Record.SHDW,!0),exports.getSolRecord=Re,exports.getTelegramRecord=async(e,r)=>await me(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const o=await(async(e,r)=>{const o=[...ce(r.toBase58()),{dataSize:165}],i=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>ue(e,r)));return(await Promise.all(i)).filter((e=>void 0!==e))})(e,r);return(await te(e,o.map((e=>e.nameAccount)))).map(((e,r)=>({key:o[r].nameAccount,mint:o[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(r,t){const o=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:L.toBase58()}}],s=await r.getProgramAccounts(N,{filters:o});for(const r of s)if(r.account.data.length>pe.HEADER_LEN+32){let t=r.account.data.slice(pe.HEADER_LEN),o=i.deserializeUnchecked(Ke.schema,Ke,t);return[o.twitterHandle,new e.PublicKey(o.twitterRegistryKey)]}throw new w(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await me(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await le(r),o=await fe(t,void 0,M),{registry:i}=await pe.retrieve(e,o);return i},exports.getTwitterRegistryData=async function(t,o){const i=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(r.Buffer.alloc(32,0)).toBase58()}}],s=await t.getProgramAccounts(N,{filters:i});if(s.length>1)throw new w(exports.ErrorType.MultipleRegistries);return s[0].account.data.slice(pe.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await le(e);return await fe(r,void 0,M)},exports.getUrlRecord=async(e,r)=>await me(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await le(r.toBase58()),i=await fe(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await le(e.toBase58()),o=await fe(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.reallocInstruction=function(t,o,i,s,n,a){const c=[r.Buffer.from(Int8Array.from([4])),a.toBuffer()],u=r.Buffer.concat(c),p=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:p,programId:t,data:u})},exports.registerDomainName=async(r,o,i,s,n,c=U,u)=>{if(o.includes(".")||o.trim().toLowerCase()!==o)throw new w(exports.ErrorType.InvalidDomain);const[p]=e.PublicKey.findProgramAddressSync([C.toBuffer()],C),d=$(o),l=ee(d,void 0,K),f=$(l.toBase58()),y=ee(f,p),[g]=e.PublicKey.findProgramAddressSync([l.toBuffer()],C),x=H.findIndex((e=>null==u?void 0:u.equals(e)));let b;const m=[];if(-1!==x&&u){b=t.getAssociatedTokenAddressSync(c,u,!0);const e=await r.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=t.createAssociatedTokenAccountInstruction(s,b,u,c);m.push(e)}}const R=new a.PythHttpClient(r,a.getPythProgramKeyForCluster("mainnet-beta")),S=await R.getData(),h=F.get(c.toBase58());if(!h)throw new w(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const A=S.productPrice.get("Crypto."+h+"/USD"),v=S.productFromSymbol.get("Crypto."+h+"/USD"),I=t.getAssociatedTokenAddressSync(c,G),B=new E({name:o,space:i,referrerIdxOpt:-1!=x?x:null}).getInstruction(C,N,K,l,y,e.SystemProgram.programId,p,s,n,j,A.productAccountKey,new e.PublicKey(v.price_account),I,t.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,g,b);return m.push(B),[[],m]},exports.registerWithNft=(r,o,i,s,n,a,c,u,p)=>{const[d]=e.PublicKey.findProgramAddressSync([i.toBuffer()],C);return new I({space:o,name:r}).getInstruction(C,N,K,i,s,e.SystemProgram.programId,V,n,a,c,u,p,X,t.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,d,Y)},exports.resolve=xe,exports.retrieveNftOwner=ae,exports.retrieveNfts=async r=>{const t=await r.getProgramAccounts(k,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((r=>new e.PublicKey(r.account.data.slice(66,98))))},exports.reverseLookup=re,exports.reverseLookupBatch=te,exports.serializeRecord=he,exports.serializeRecordV2Content=Be,exports.serializeSolRecord=Ae,exports.transferInstruction=S,exports.transferNameOwnership=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,o,i);let c;return c=o||(await pe.retrieve(e,a)).registry.owner,S(N,a,t,c,o,i,s)},exports.transferSubdomain=async(e,r,t,o)=>{const{pubkey:i,isSub:s,parent:n}=ie(r);if(!n||!s)throw new w(exports.ErrorType.InvalidSubdomain);const{registry:a}=await pe.retrieve(e,i);let c,u;o&&(c=n,u=(await pe.retrieve(e,n)).registry.owner);return S(N,i,t,a.owner,void 0,c,u)},exports.updateInstruction=R,exports.updateNameRegistryData=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,i,s);let c;return c=i||(await pe.retrieve(e,a)).registry.owner,R(N,a,new x(t),o,c)},exports.updateRecordInstruction=async(e,r,t,o,i,s)=>{ne(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:n}=ie(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=he(o,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[h(N,n,s,i),await Ne(e,r,t,o,i,s)];return[R(N,n,new x(0),c,i)]},exports.updateRecordV2Instruction=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.editRecord(i,s,a,o,N,"".concat(r),Be(t,r),n.SNS_RECORDS_ID)},exports.updateSolRecordInstruction=async(e,r,t,o,i,s)=>{const{pubkey:n}=ie(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);if(ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[h(N,n,s,o),await We(e,r,t,o,i,s)];const c=Ae(t,n,o,i);return[R(N,n,new x(0),c,o)]},exports.validateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${t}.${r}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateSolanaSignature(i,a,c,o,s,N,e,n.SNS_RECORDS_ID)},exports.verifyRightOfAssociation=async(e,r,t,o)=>{const i=ke(t,r),s=(await n.Record.retrieve(e,i)).getRoAId();return 0===o.compare(s)},exports.verifyStaleness=async(r,t,o)=>{const i=ke(o,t),s=await xe(r,o),a=await n.Record.retrieve(r,i),c=a.getStalenessId();return 32===c.length&&(s.equals(new e.PublicKey(c))&&a.header.stalenessValidation===n.Validation.Solana)},exports.writRoaRecordV2=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.writeRoa(o,N,s,a,t,i,n.SNS_RECORDS_ID)};
1
+ "use strict";var e=require("@solana/web3.js"),r=require("buffer"),t=require("@solana/spl-token"),o=require("bn.js"),i=require("borsh"),s=require("@ethersproject/sha2"),n=require("@bonfida/sns-records"),a=require("@pythnetwork/client"),c=require("bech32-buffer"),u=require("tweetnacl"),p=require("bs58"),d=require("ipaddr.js"),l=require("punycode");function f(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var y,g=f(u);exports.ErrorType=void 0,(y=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",y.InvalidSubdomain="InvalidSubdomain",y.FavouriteDomainNotFound="FavouriteDomainNotFound",y.MissingParentOwner="MissingParentOwner",y.U32Overflow="U32Overflow",y.InvalidBufferLength="InvalidBufferLength",y.U64Overflow="U64Overflow",y.NoRecordData="NoRecordData",y.InvalidRecordData="InvalidRecordData",y.UnsupportedRecord="UnsupportedRecord",y.InvalidEvmAddress="InvalidEvmAddress",y.InvalidInjectiveAddress="InvalidInjectiveAddress",y.InvalidARecord="InvalidARecord",y.InvalidAAAARecord="InvalidAAAARecord",y.InvalidRecordInput="InvalidRecordInput",y.InvalidSignature="InvalidSignature",y.AccountDoesNotExist="AccountDoesNotExist",y.MultipleRegistries="MultipleRegistries",y.InvalidReverseTwitter="InvalidReverseTwitter",y.NoAccountData="NoAccountData",y.InvalidInput="InvalidInput",y.InvalidDomain="InvalidDomain",y.InvalidCustomBg="InvalidCustomBackground",y.UnsupportedSignature="UnsupportedSignature",y.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",y.RecordIsNotSigned="RecordIsNotSigned",y.UnsupportedSignatureType="UnsupportedSignatureType";class w extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,w)}}class x extends o{toBuffer(){const e=super.toArray().reverse(),t=r.Buffer.from(e);if(4===t.length)return t;if(t.length>4)throw new w(exports.ErrorType.U32Overflow);const o=r.Buffer.alloc(4);return t.copy(o),o}static fromBuffer(e){if(4!==e.length)throw new w(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class b extends o{toBuffer(){const e=super.toArray().reverse(),t=r.Buffer.from(e);if(8===t.length)return t;if(t.length>8)throw new w(exports.ErrorType.U64Overflow);const o=r.Buffer.alloc(8);return t.copy(o),o}static fromBuffer(e){if(8!==e.length)throw new w(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function R(t,o,i,s,n,a,c,u,p,d,l){const f=[r.Buffer.from(Int8Array.from([0])),new x(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],y=r.Buffer.concat(f),g=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return p?g.push({pubkey:p,isSigner:!0,isWritable:!1}):g.push({pubkey:new e.PublicKey(r.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?g.push({pubkey:d,isSigner:!1,isWritable:!1}):g.push({pubkey:new e.PublicKey(r.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l&&g.push({pubkey:l,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:g,programId:t,data:y})}function m(t,o,i,s,n){const a=[r.Buffer.from(Int8Array.from([1])),i.toBuffer(),new x(s.length).toBuffer(),s],c=r.Buffer.concat(a),u=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:u,programId:t,data:c})}function S(t,o,i,s,n,a,c){const u=[r.Buffer.from(Int8Array.from([2])),i.toBuffer()],p=r.Buffer.concat(u),d=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c||s,isSigner:!0,isWritable:!1}];return n&&d.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&a&&(n||d.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:d,programId:t,data:p})}function h(t,o,i,s){const n=[r.Buffer.from(Int8Array.from([3]))],a=r.Buffer.concat(n),c=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:c,programId:t,data:a})}class A{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return i.serialize(A.schema,this)}getInstruction(o,i,s,n,a,c,u,p,d,l,f){const y=r.Buffer.from(this.serialize()),g=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new e.TransactionInstruction({keys:g,programId:o,data:y})}}A.schema=new Map([[A,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class v{constructor(e){this.tag=12,this.name=e.name}serialize(){return i.serialize(v.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=r.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!1}),f.push({pubkey:a,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!0,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),p&&f.push({pubkey:p,isSigner:!1,isWritable:!0}),d&&f.push({pubkey:d,isSigner:!0,isWritable:!0}),new e.TransactionInstruction({keys:f,programId:t,data:l})}}v.schema=new Map([[v,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class E{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return i.serialize(E.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const R=r.Buffer.from(this.serialize());let m=[];return m.push({pubkey:o,isSigner:!1,isWritable:!1}),m.push({pubkey:i,isSigner:!1,isWritable:!1}),m.push({pubkey:s,isSigner:!1,isWritable:!0}),m.push({pubkey:n,isSigner:!1,isWritable:!0}),m.push({pubkey:a,isSigner:!1,isWritable:!1}),m.push({pubkey:c,isSigner:!1,isWritable:!1}),m.push({pubkey:u,isSigner:!0,isWritable:!0}),m.push({pubkey:p,isSigner:!1,isWritable:!0}),m.push({pubkey:d,isSigner:!1,isWritable:!1}),m.push({pubkey:l,isSigner:!1,isWritable:!1}),m.push({pubkey:f,isSigner:!1,isWritable:!1}),m.push({pubkey:y,isSigner:!1,isWritable:!0}),m.push({pubkey:g,isSigner:!1,isWritable:!1}),m.push({pubkey:w,isSigner:!1,isWritable:!1}),m.push({pubkey:x,isSigner:!1,isWritable:!1}),b&&m.push({pubkey:b,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:m,programId:t,data:R})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class I{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return i.serialize(I.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const R=r.Buffer.from(this.serialize());let m=[];return m.push({pubkey:o,isSigner:!1,isWritable:!1}),m.push({pubkey:i,isSigner:!1,isWritable:!1}),m.push({pubkey:s,isSigner:!1,isWritable:!0}),m.push({pubkey:n,isSigner:!1,isWritable:!0}),m.push({pubkey:a,isSigner:!1,isWritable:!1}),m.push({pubkey:c,isSigner:!1,isWritable:!1}),m.push({pubkey:u,isSigner:!0,isWritable:!0}),m.push({pubkey:p,isSigner:!1,isWritable:!0}),m.push({pubkey:d,isSigner:!1,isWritable:!0}),m.push({pubkey:l,isSigner:!1,isWritable:!0}),m.push({pubkey:f,isSigner:!1,isWritable:!0}),m.push({pubkey:y,isSigner:!1,isWritable:!0}),m.push({pubkey:g,isSigner:!1,isWritable:!1}),m.push({pubkey:w,isSigner:!1,isWritable:!1}),m.push({pubkey:x,isSigner:!1,isWritable:!1}),m.push({pubkey:b,isSigner:!1,isWritable:!1}),new e.TransactionInstruction({keys:m,programId:t,data:R})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(){this.tag=16}serialize(){return i.serialize(B.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=r.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!0}),f.push({pubkey:a,isSigner:!1,isWritable:!0}),f.push({pubkey:c,isSigner:!1,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),f.push({pubkey:p,isSigner:!0,isWritable:!1}),f.push({pubkey:d,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:f,programId:t,data:l})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"]]}]]);const k=new e.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),T=r.Buffer.from("tokenized_name");var P;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(P||(P={}));class D{constructor(r){this.tag=r.tag,this.nonce=r.nonce,this.nameAccount=new e.PublicKey(r.nameAccount),this.owner=new e.PublicKey(r.owner),this.nftMint=new e.PublicKey(r.nftMint)}static deserialize(e){return i.deserialize(this.schema,D,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,o){return await e.PublicKey.findProgramAddress([r.Buffer.from("nft_record"),t.toBuffer()],o)}}D.schema=new Map([[D,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const N=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),W="SPL Name Service",K=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),C=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),O=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),_=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),V=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),L=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),M=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),z=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),H=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),U=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new e.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new e.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new e.PublicKey("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new e.PublicKey("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],F=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),j=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),G=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),q=new e.PublicKey("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),X=new e.PublicKey("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),Y=new e.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var Z;exports.Record=void 0,(Z=exports.Record||(exports.Record={})).IPFS="IPFS",Z.ARWV="ARWV",Z.SOL="SOL",Z.ETH="ETH",Z.BTC="BTC",Z.LTC="LTC",Z.DOGE="DOGE",Z.Email="email",Z.Url="url",Z.Discord="discord",Z.Github="github",Z.Reddit="reddit",Z.Twitter="twitter",Z.Telegram="telegram",Z.Pic="pic",Z.SHDW="SHDW",Z.POINT="POINT",Z.BSC="BSC",Z.Injective="INJ",Z.Backpack="backpack",Z.A="A",Z.AAAA="AAAA",Z.CNAME="CNAME",Z.TXT="TXT",Z.Background="background";const J=new Map([[exports.Record.SOL,96],[exports.Record.ETH,20],[exports.Record.BSC,20],[exports.Record.Injective,20],[exports.Record.A,4],[exports.Record.AAAA,16],[exports.Record.Background,32]]);var Q;exports.RecordVersion=void 0,(Q=exports.RecordVersion||(exports.RecordVersion={}))[Q.V1=1]="V1",Q[Q.V2=2]="V2";const $=e=>{const t=W+e,o=s.sha256(r.Buffer.from(t,"utf8")).slice(2);return r.Buffer.from(o,"hex")},ee=(t,o,i)=>{const s=[t];o?s.push(o.toBuffer()):s.push(r.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(r.Buffer.alloc(32));const[n]=e.PublicKey.findProgramAddressSync(s,N);return n};async function re(e,r){const t=$(r.toBase58()),i=ee(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()}async function te(e,r){let t=[];for(let e of r){const r=$(e.toBase58()),o=ee(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const oe=(e,r=K,t)=>{let o=$(e);return{pubkey:ee(o,t,r),hashed:o}},ie=(e,t)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const o=e.split(".");if(2===o.length){const e=r.Buffer.from([t||0]).toString().concat(o[0]),{pubkey:i}=oe(o[1]);return{...oe(e,i,t===exports.RecordVersion.V2?n.CENTRAL_STATE_SNS_RECORDS:void 0),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:e}=oe(o[2]),{pubkey:t}=oe("\0".concat(o[1]),e),i=r.Buffer.from([1]).toString();return{...oe(i.concat(o[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...oe(e,K),isSub:!1,parent:void 0}};const se=(e,r)=>{const{pubkey:t,parent:o}=ie(e),i=$(t.toBase58());return ee(i,V,r?o:void 0)},ne=(e,r)=>{if(!e)throw new w(r)},ae=async(r,o)=>{try{const[i]=await e.PublicKey.findProgramAddress([T,o.toBuffer()],k);if("0"===(await t.getMint(r,i)).supply.toString())return;const s=[{memcmp:{offset:0,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await r.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:s});if(1!=n.length)return;return new e.PublicKey(n[0].account.data.slice(32,64))}catch{return}},ce=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ue=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(k,{filters:t})})(e,r.mint);if(1===t.length)return D.deserialize(t[0].account.data)};class pe{constructor(r){this.parentName=new e.PublicKey(r.parentName),this.owner=new e.PublicKey(r.owner),this.class=new e.PublicKey(r.class)}static async retrieve(e,r){var t;const o=await e.getAccountInfo(r);if(!o)throw new w(exports.ErrorType.AccountDoesNotExist);let s=i.deserializeUnchecked(this.schema,pe,o.data);s.data=null===(t=o.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:s,nftOwner:await ae(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),o=e=>{if(!e)return;const r=i.deserializeUnchecked(this.schema,pe,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>o(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const o=[...r];for(;o.length>0;)t.push(...await this._retrieveBatch(e,o.splice(0,100)));return t}}async function de(e,r){if(!await e.getAccountInfo(r))throw new w(exports.ErrorType.AccountDoesNotExist);return pe.retrieve(e,r)}async function le(e){const t=W+e,o=s.sha256(r.Buffer.from(t,"utf8")).slice(2);return r.Buffer.from(o,"hex")}async function fe(t,o,i){const s=[t];o?s.push(o.toBuffer()):s.push(r.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(r.Buffer.alloc(32));const[n]=await e.PublicKey.findProgramAddress(s,N);return n}pe.HEADER_LEN=96,pe.schema=new Map([[pe,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const ye=async(e,r=K)=>{let t=await le(e);return{pubkey:await fe(t,void 0,r),hashed:t}},ge=async(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const o=e.split(".");if(2===o.length){const e=r.Buffer.from([t?1:0]).toString().concat(o[0]),{pubkey:i}=await ye(o[1]);return{...await ye(e,i),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:e}=await ye(o[2]),{pubkey:t}=await ye("\0".concat(o[1]),e),i=r.Buffer.from([1]).toString();return{...await ye(i.concat(o[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...await ye(e,K),isSub:!1,parent:void 0}},we=(e,r,t)=>g.sign.detached.verify(e,r,t.toBytes()),xe=async(t,o)=>{const{pubkey:i}=ie(o),{registry:s,nftOwner:n}=await pe.retrieve(t,i);if(n)return n;try{const i=be(o,exports.Record.SOL),n=await me(t,o);if(!(null==n?void 0:n.data))throw new w(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=r.Buffer.concat([n.data.slice(0,32),i.toBuffer()]),u=a.encode(c.toString("hex"));if(!we(u,n.data.slice(32),s.owner))throw new w(exports.ErrorType.InvalidSignature);return new e.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return s.owner},be=(e,r)=>{const{pubkey:t}=ie(r+"."+e,exports.RecordVersion.V1);return t};async function Re(e,r,t,o){const i=be(r,t);let{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoRecordData);if(o)return Se(s,t,i);const n=J.get(t);return s.data=s.data.slice(0,n),s}const me=async(e,r)=>await Re(e,r,exports.Record.SOL),Se=(t,o,i)=>{const s=null==t?void 0:t.data;if(!s)return;if(0===s.compare(r.Buffer.alloc(s.length)))return;const n=J.get(o),a=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(s);if(!n)return s.slice(0,a).toString("utf-8");if(o===exports.Record.SOL){const e=new TextEncoder,o=r.Buffer.concat([s.slice(0,32),i.toBuffer()]),n=e.encode(o.toString("hex"));if(we(n,s.slice(32,96),t.owner))return p.encode(s.slice(0,32))}if(n&&a!==n){const e=s.slice(0,a).toString("utf-8");if(o===exports.Record.Injective){const r=c.decode(e);if("inj"===r.prefix&&20===r.data.length)return e}else if(o===exports.Record.BSC||o===exports.Record.ETH){const t=e.slice(0,2),o=e.slice(2);if("0x"===t&&20===r.Buffer.from(o,"hex").length)return e}else if((o===exports.Record.A||o===exports.Record.AAAA)&&d.isValid(e))return e;throw new w(exports.ErrorType.InvalidRecordData)}if(o===exports.Record.ETH||o===exports.Record.BSC)return"0x"+s.slice(0,n).toString("hex");if(o===exports.Record.Injective)return c.encode("inj",s.slice(0,n),"bech32");if(o===exports.Record.A||o===exports.Record.AAAA)return d.fromByteArray([...s.slice(0,n)]).toString();if(o===exports.Record.Background)return new e.PublicKey(s.slice(0,n)).toString();throw new w(exports.ErrorType.InvalidRecordData)},he=(t,o)=>{if(!J.get(o))return o!==exports.Record.CNAME&&o!==exports.Record.TXT||(t=l.encode(t)),r.Buffer.from(t,"utf-8");if(o===exports.Record.SOL)throw new w(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(o===exports.Record.ETH||o===exports.Record.BSC)return ne("0x"===t.slice(0,2),exports.ErrorType.InvalidEvmAddress),r.Buffer.from(t.slice(2),"hex");if(o===exports.Record.Injective){const e=c.decode(t);return ne("inj"===e.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===e.data.length,exports.ErrorType.InvalidInjectiveAddress),r.Buffer.from(e.data)}if(o===exports.Record.A){const e=d.parse(t).toByteArray();return ne(4===e.length,exports.ErrorType.InvalidARecord),r.Buffer.from(e)}if(o===exports.Record.AAAA){const e=d.parse(t).toByteArray();return ne(16===e.length,exports.ErrorType.InvalidAAAARecord),r.Buffer.from(e)}if(o===exports.Record.Background)return new e.PublicKey(t).toBuffer();throw new w(exports.ErrorType.InvalidRecordInput)},Ae=(e,t,o,i)=>{const s=r.Buffer.concat([e.toBuffer(),t.toBuffer()]),n=(new TextEncoder).encode(s.toString("hex")),a=we(n,i,o);return ne(a,exports.ErrorType.InvalidSignature),r.Buffer.concat([e.toBuffer(),i])},ve=new Map([[exports.Record.Backpack,new e.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[exports.Record.Url,new e.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[exports.Record.IPFS,new e.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Ee=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.BSC]),Ie=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME,exports.Record.BTC]),Be=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),ke=(r,t)=>{if(Ie.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(r=l.encode(r)),Buffer.from(r,"utf-8");if(t===exports.Record.SOL)return new e.PublicKey(r).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return ne("0x"===r.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(r.slice(2),"hex");if(t===exports.Record.Injective){const e=c.decode(r);return ne("inj"===e.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===e.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(e.data)}if(t===exports.Record.A){const e=d.parse(r).toByteArray();return ne(4===e.length,exports.ErrorType.InvalidARecord),Buffer.from(e)}if(t===exports.Record.AAAA){const e=d.parse(r).toByteArray();return ne(16===e.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(e)}throw new w(exports.ErrorType.InvalidARecord)},Te=(e,r)=>{const{pubkey:t}=ie(e),o=$("".concat(r));return ee(o,n.CENTRAL_STATE_SNS_RECORDS,t)};async function Pe(r,t,o,i,s,n,a,c){const u=await le(t),p=await fe(u,a,c),d=n||await r.getMinimumBalanceForRentExemption(o);let l;if(c){const{registry:e}=await de(r,c);l=e.owner}return R(N,e.SystemProgram.programId,p,s,i,u,new b(d),new x(o),a,c,l)}async function De(e,r,t,o,i){const s=await le(r),n=await fe(s,o,i);let a;a=o||(await pe.retrieve(e,n)).registry.owner;return h(N,n,t,a)}const Ne=async(r,t,o,i,s)=>{let[n]=await e.PublicKey.findProgramAddress([C.toBuffer()],C),a=await le(r.toBase58()),c=await fe(a,n,i);return[[],[new v({name:t}).getInstruction(C,N,K,c,e.SystemProgram.programId,n,o,e.SYSVAR_RENT_PUBKEY,i,s)]]},We=async(r,t,o,i,s,n)=>{ne(o!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=ie(`${o}.${t}`,exports.RecordVersion.V1),p=he(i,o).length,d=await r.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return R(N,e.SystemProgram.programId,a,s,n,c,new b(d),new x(p),void 0,u,s)},Ke=async(r,t,o,i,s,n)=>{const{pubkey:a,hashed:c,parent:u}=ie(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=Ae(o,a,i,s).length,d=await r.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return[R(N,e.SystemProgram.programId,a,i,n,c,new b(d),new x(p),void 0,u,i)]};class Ce{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new w(exports.ErrorType.InvalidReverseTwitter);return i.deserializeUnchecked(this.schema,Ce,t.data.slice(pe.HEADER_LEN))}}async function Oe(t,o,s,n,a){const c=await le(n.toString()),u=await fe(c,L,M);let p=i.serialize(Ce.schema,new Ce({twitterRegistryKey:s.toBytes(),twitterHandle:o}));return[R(N,e.SystemProgram.programId,u,n,a,c,new b(await t.getMinimumBalanceForRentExemption(p.length+pe.HEADER_LEN)),new x(p.length),L,M,L),m(N,u,new x(0),r.Buffer.from(p),L)]}Ce.schema=new Map([[Ce,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const _e=new e.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Ve{constructor(r){this.tag=r.tag,this.nameAccount=new e.PublicKey(r.nameAccount)}static deserialize(e){return i.deserialize(this.schema,Ve,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new w(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,o){return await e.PublicKey.findProgramAddress([r.Buffer.from("favourite_domain"),o.toBuffer()],t)}static getKeySync(t,o){return e.PublicKey.findProgramAddressSync([r.Buffer.from("favourite_domain"),o.toBuffer()],t)}}Ve.schema=new Map([[Ve,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.CustomBg=void 0,(exports.CustomBg||(exports.CustomBg={})).DegenPoet1="DegenPoet#1";const Le=new e.PublicKey("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD");exports.BONFIDA_FIDA_BNB=_,exports.BONFIDA_USDC_BNB=z,exports.CUSTOM_BG_TLD=q,exports.ETH_ROA_RECORDS=Ee,exports.FavouriteDomain=Ve,exports.GUARDIANS=ve,exports.HASH_PREFIX=W,exports.METAPLEX_ID=Y,exports.NAME_OFFERS_ID=_e,exports.NAME_PROGRAM_ID=N,exports.NameRegistryState=pe,exports.Numberu32=x,exports.Numberu64=b,exports.PYTH_FIDA_PRICE_ACC=O,exports.PYTH_MAPPING_ACC=j,exports.RECORD_V1_SIZE=J,exports.REFERRERS=U,exports.REGISTER_PROGRAM_ID=C,exports.REVERSE_LOOKUP_CLASS=V,exports.ROOT_DOMAIN_ACCOUNT=K,exports.ReverseTwitterRegistryState=Ce,exports.SELF_SIGNED=Be,exports.SNSError=w,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=F,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=M,exports.TWITTER_VERIFICATION_AUTHORITY=L,exports.USDC_MINT=H,exports.UTF8_ENCODED=Ie,exports.VAULT_OWNER=G,exports.WOLVES_COLLECTION_METADATA=X,exports.burnDomain=(r,t,o)=>{const{pubkey:i}=ie(r),[s]=e.PublicKey.findProgramAddressSync([i.toBuffer()],C),[n]=e.PublicKey.findProgramAddressSync([i.toBuffer(),Uint8Array.from([1,1])],C);return(new B).getInstruction(C,N,e.SystemProgram.programId,i,se(r),n,s,V,t,o)},exports.burnInstruction=B,exports.changeTwitterRegistryData=async function(e,r,t,o){const i=await le(e),s=await fe(i,void 0,M);return[m(N,s,new x(t),o,r)]},exports.changeVerifiedPubkey=async function(e,r,t,o,i){const s=await le(r),n=await fe(s,void 0,M);let a=[S(N,n,o,t,void 0)];const c=await le(t.toString());return await fe(c,L,void 0),a.push(await De(e,t.toString(),i,L,M)),a=a.concat(await Oe(e,r,n,o,i)),a},exports.check=ne,exports.checkSolRecord=we,exports.createInstruction=R,exports.createInstructionV3=E,exports.createNameRegistry=Pe,exports.createRecordInstruction=We,exports.createRecordV2Instruction=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.allocateAndPostRecord(i,s,a,o,N,"".concat(r),ke(t,r),n.SNS_RECORDS_ID)},exports.createReverseInstruction=v,exports.createReverseName=Ne,exports.createReverseTwitterRegistry=Oe,exports.createSolRecordInstruction=Ke,exports.createSubdomain=async(e,r,t,o=2e3)=>{const i=[],s=r.split(".")[0];if(!s)throw new w(exports.ErrorType.InvalidSubdomain);const{parent:n,pubkey:a}=ie(r),c=await e.getMinimumBalanceForRentExemption(o+pe.HEADER_LEN),u=await Pe(e,"\0".concat(s),o,t,t,c,void 0,n);i.push(u);const p=se(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await Ne(a,"\0".concat(s),t,n,t);i.push(...e)}return[[],i]},exports.createV2Instruction=A,exports.createVerifiedTwitterRegistry=async function(r,t,o,i,s){const n=await le(t),a=await fe(n,void 0,M),c=await r.getMinimumBalanceForRentExemption(i+pe.HEADER_LEN);let u=[R(N,e.SystemProgram.programId,a,o,s,n,new b(c),new x(i),void 0,M,L)];return u=u.concat(await Oe(r,t,a,o,s)),u},exports.createWithNftInstruction=I,exports.deleteInstruction=h,exports.deleteNameRegistry=De,exports.deleteRecordV2=(e,r,t,o)=>{const{pubkey:i,parent:s}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!s)throw new Error("Invalid parent");return n.deleteRecord(o,s,t,i,N,n.SNS_RECORDS_ID)},exports.deleteTwitterRegistry=async function(e,r){const t=await le(e),o=await fe(t,void 0,M),i=await le(r.toString()),s=await fe(i,L,M);return[h(N,o,r,r),h(N,s,r,r)]},exports.deserializeRecord=Se,exports.deserializeRecordV2Content=(r,t)=>{if(Ie.has(t)){const e=r.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?l.decode(e):e}if(t===exports.Record.SOL)return new e.PublicKey(r).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+r.toString("hex");if(t===exports.Record.Injective)return c.encode("inj",r,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return d.fromByteArray([...r]).toString();throw new w(exports.ErrorType.InvalidARecord)},exports.ethValidateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateEthSignature(o,a,c,t,N,n.Validation.Ethereum,i,s,n.SNS_RECORDS_ID)},exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:V.toBase58()}}],o=await e.getProgramAccounts(N,{filters:t}),i=await re(e,r),s=o.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),n=s.map((e=>ie(e+"."+i).pubkey)),a=await e.getMultipleAccountsInfo(n);return s.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:K.toBase58()}}];return(await e.getProgramAccounts(N,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:K.toBase58()}}];return await e.getProgramAccounts(N,{dataSlice:{offset:32,length:32},filters:r})},exports.getArtistPubkey=e=>{if(e===exports.CustomBg.DegenPoet1)return Le;throw new w(exports.ErrorType.InvalidCustomBg)},exports.getArweaveRecord=async(e,r)=>await Re(e,r,exports.Record.ARWV,!0),exports.getBackgroundRecord=async(e,r)=>await Re(e,r,exports.Record.Background,!0),exports.getBackpackRecord=async(e,r)=>await Re(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await Re(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await Re(e,r,exports.Record.BTC,!0),exports.getCustomBgKeys=(e,r)=>{const t=$(r),o=$(e),i=ee(o,void 0,q);return{domainKey:i,bgKey:ee(t,void 0,i)}},exports.getDiscordRecord=async(e,r)=>await Re(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await Re(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ge,exports.getDomainKeySync=ie,exports.getEmailRecord=async(e,r)=>await Re(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await Re(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(r,t)=>{const[o]=Ve.getKeySync(_e,new e.PublicKey(t)),i=await Ve.retrieve(r,o),s=await re(r,i.nameAccount);return{domain:i.nameAccount,reverse:s}},exports.getGithubRecord=async(e,r)=>await Re(e,r,exports.Record.Github,!0),exports.getHandleAndRegistryKey=async function(r,t){const o=await le(t.toString()),i=await fe(o,L,M);let s=await Ce.retrieve(r,i);return[s.twitterHandle,new e.PublicKey(s.twitterRegistryKey)]},exports.getHashedName=le,exports.getHashedNameSync=$,exports.getInjectiveRecord=async(e,r)=>await Re(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await Re(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await Re(e,r,exports.Record.LTC,!0),exports.getNameAccountKey=fe,exports.getNameAccountKeySync=ee,exports.getNameOwner=de,exports.getPicRecord=async(e,r)=>await Re(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await Re(e,r,exports.Record.POINT,!0),exports.getRecord=Re,exports.getRecordKeySync=be,exports.getRecordV2Key=Te,exports.getRecords=async function(e,r,t,o){const i=t.map((e=>be(r,e))),s=await pe.retrieveBatch(e,i);return o?s.map(((e,o)=>{if(e)return Se(e,t[o],be(r,t[o]))})):s},exports.getRedditRecord=async(e,r)=>await Re(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:o}=await ge(e),i=await le(t.toBase58());return await fe(i,V,r?o:void 0)},exports.getReverseKeySync=se,exports.getShdwRecord=async(e,r)=>await Re(e,r,exports.Record.SHDW,!0),exports.getSolRecord=me,exports.getTelegramRecord=async(e,r)=>await Re(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const o=await(async(e,r)=>{const o=[...ce(r.toBase58()),{dataSize:165}],i=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>ue(e,r)));return(await Promise.all(i)).filter((e=>void 0!==e))})(e,r);return(await te(e,o.map((e=>e.nameAccount)))).map(((e,r)=>({key:o[r].nameAccount,mint:o[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(r,t){const o=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:L.toBase58()}}],s=await r.getProgramAccounts(N,{filters:o});for(const r of s)if(r.account.data.length>pe.HEADER_LEN+32){let t=r.account.data.slice(pe.HEADER_LEN),o=i.deserializeUnchecked(Ce.schema,Ce,t);return[o.twitterHandle,new e.PublicKey(o.twitterRegistryKey)]}throw new w(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await Re(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await le(r),o=await fe(t,void 0,M),{registry:i}=await pe.retrieve(e,o);return i},exports.getTwitterRegistryData=async function(t,o){const i=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(r.Buffer.alloc(32,0)).toBase58()}}],s=await t.getProgramAccounts(N,{filters:i});if(s.length>1)throw new w(exports.ErrorType.MultipleRegistries);return s[0].account.data.slice(pe.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await le(e);return await fe(r,void 0,M)},exports.getUrlRecord=async(e,r)=>await Re(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await le(r.toBase58()),i=await fe(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await le(e.toBase58()),o=await fe(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.reallocInstruction=function(t,o,i,s,n,a){const c=[r.Buffer.from(Int8Array.from([4])),a.toBuffer()],u=r.Buffer.concat(c),p=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:p,programId:t,data:u})},exports.registerDomainName=async(r,o,i,s,n,c=H,u)=>{if(o.includes(".")||o.trim().toLowerCase()!==o)throw new w(exports.ErrorType.InvalidDomain);const[p]=e.PublicKey.findProgramAddressSync([C.toBuffer()],C),d=$(o),l=ee(d,void 0,K),f=$(l.toBase58()),y=ee(f,p),[g]=e.PublicKey.findProgramAddressSync([l.toBuffer()],C),x=U.findIndex((e=>null==u?void 0:u.equals(e)));let b;const R=[];if(-1!==x&&u){b=t.getAssociatedTokenAddressSync(c,u,!0);const e=await r.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=t.createAssociatedTokenAccountInstruction(s,b,u,c);R.push(e)}}const m=new a.PythHttpClient(r,a.getPythProgramKeyForCluster("mainnet-beta")),S=await m.getData(),h=F.get(c.toBase58());if(!h)throw new w(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const A=S.productPrice.get("Crypto."+h+"/USD"),v=S.productFromSymbol.get("Crypto."+h+"/USD"),I=t.getAssociatedTokenAddressSync(c,G),B=new E({name:o,space:i,referrerIdxOpt:-1!=x?x:null}).getInstruction(C,N,K,l,y,e.SystemProgram.programId,p,s,n,j,A.productAccountKey,new e.PublicKey(v.price_account),I,t.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,g,b);return R.push(B),[[],R]},exports.registerWithNft=(r,o,i,s,n,a,c,u,p)=>{const[d]=e.PublicKey.findProgramAddressSync([i.toBuffer()],C);return new I({space:o,name:r}).getInstruction(C,N,K,i,s,e.SystemProgram.programId,V,n,a,c,u,p,X,t.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,d,Y)},exports.resolve=xe,exports.retrieveNftOwner=ae,exports.retrieveNfts=async r=>{const t=await r.getProgramAccounts(k,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((r=>new e.PublicKey(r.account.data.slice(66,98))))},exports.reverseLookup=re,exports.reverseLookupBatch=te,exports.serializeRecord=he,exports.serializeRecordV2Content=ke,exports.serializeSolRecord=Ae,exports.transferInstruction=S,exports.transferNameOwnership=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,o,i);let c;return c=o||(await pe.retrieve(e,a)).registry.owner,S(N,a,t,c,o,i,s)},exports.transferSubdomain=async(e,r,t,o)=>{const{pubkey:i,isSub:s,parent:n}=ie(r);if(!n||!s)throw new w(exports.ErrorType.InvalidSubdomain);const{registry:a}=await pe.retrieve(e,i);let c,u;o&&(c=n,u=(await pe.retrieve(e,n)).registry.owner);return S(N,i,t,a.owner,void 0,c,u)},exports.updateInstruction=m,exports.updateNameRegistryData=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,i,s);let c;return c=i||(await pe.retrieve(e,a)).registry.owner,m(N,a,new x(t),o,c)},exports.updateRecordInstruction=async(e,r,t,o,i,s)=>{ne(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:n}=ie(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=he(o,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[h(N,n,s,i),await We(e,r,t,o,i,s)];return[m(N,n,new x(0),c,i)]},exports.updateRecordV2Instruction=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.editRecord(i,s,a,o,N,"".concat(r),ke(t,r),n.SNS_RECORDS_ID)},exports.updateSolRecordInstruction=async(e,r,t,o,i,s)=>{const{pubkey:n}=ie(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);if(ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[h(N,n,s,o),await Ke(e,r,t,o,i,s)];const c=Ae(t,n,o,i);return[m(N,n,new x(0),c,o)]},exports.validateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${t}.${r}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateSolanaSignature(i,a,c,o,s,N,e,n.SNS_RECORDS_ID)},exports.verifyRightOfAssociation=async(e,r,t,o)=>{const i=Te(t,r),s=await n.Record.retrieve(e,i),a=s.getRoAId(),c=Ee.has(r)?n.Validation.Ethereum:n.Validation.Solana;return 0===o.compare(a)&&s.header.rightOfAssociationValidation===c},exports.verifyStaleness=async(r,t,o)=>{const i=Te(o,t),s=await xe(r,o),a=await n.Record.retrieve(r,i),c=a.getStalenessId();return s.equals(new e.PublicKey(c))&&a.header.stalenessValidation===n.Validation.Solana},exports.writRoaRecordV2=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.writeRoa(o,N,s,a,t,i,n.SNS_RECORDS_ID)};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{PublicKey as e,TransactionInstruction as t,SystemProgram as r,SYSVAR_RENT_PUBKEY as n}from"@solana/web3.js";import{Buffer as i}from"buffer";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import l from"bn.js";import{serialize as d,deserialize as f,deserializeUnchecked as p}from"borsh";import{sha256 as w}from"@ethersproject/sha2";import{CENTRAL_STATE_SNS_RECORDS as g,Record as y,Validation as m,allocateAndPostRecord as h,SNS_RECORDS_ID as b,editRecord as S,deleteRecord as v,validateSolanaSignature as A,writeRoa as k,validateEthSignature as I}from"@bonfida/sns-records";import{PythHttpClient as B,getPythProgramKeyForCluster as E}from"@pythnetwork/client";import{decode as W,encode as R}from"bech32-buffer";import*as D from"tweetnacl";import T from"bs58";import x from"ipaddr.js";import{encode as N,decode as P}from"punycode";var L;!function(e){e.SymbolNotFound="SymbolNotFound",e.InvalidSubdomain="InvalidSubdomain",e.FavouriteDomainNotFound="FavouriteDomainNotFound",e.MissingParentOwner="MissingParentOwner",e.U32Overflow="U32Overflow",e.InvalidBufferLength="InvalidBufferLength",e.U64Overflow="U64Overflow",e.NoRecordData="NoRecordData",e.InvalidRecordData="InvalidRecordData",e.UnsupportedRecord="UnsupportedRecord",e.InvalidEvmAddress="InvalidEvmAddress",e.InvalidInjectiveAddress="InvalidInjectiveAddress",e.InvalidARecord="InvalidARecord",e.InvalidAAAARecord="InvalidAAAARecord",e.InvalidRecordInput="InvalidRecordInput",e.InvalidSignature="InvalidSignature",e.AccountDoesNotExist="AccountDoesNotExist",e.MultipleRegistries="MultipleRegistries",e.InvalidReverseTwitter="InvalidReverseTwitter",e.NoAccountData="NoAccountData",e.InvalidInput="InvalidInput",e.InvalidDomain="InvalidDomain",e.InvalidCustomBg="InvalidCustomBackground",e.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(L||(L={}));class C extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,C)}}class j extends l{toBuffer(){const e=super.toArray().reverse(),t=i.from(e);if(4===t.length)return t;if(t.length>4)throw new C(L.U32Overflow);const r=i.alloc(4);return t.copy(r),r}static fromBuffer(e){if(4!==e.length)throw new C(L.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class H extends l{toBuffer(){const e=super.toArray().reverse(),t=i.from(e);if(8===t.length)return t;if(t.length>8)throw new C(L.U64Overflow);const r=i.alloc(8);return t.copy(r),r}static fromBuffer(e){if(8!==e.length)throw new C(L.U64Overflow,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function M(r,n,a,s,o,c,u,l,d,f,p){const w=[i.from(Int8Array.from([0])),new j(c.length).toBuffer(),c,u.toBuffer(),l.toBuffer()],g=i.concat(w),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return d?y.push({pubkey:d,isSigner:!0,isWritable:!1}):y.push({pubkey:new e(i.alloc(32)),isSigner:!1,isWritable:!1}),f?y.push({pubkey:f,isSigner:!1,isWritable:!1}):y.push({pubkey:new e(i.alloc(32)),isSigner:!1,isWritable:!1}),p&&y.push({pubkey:p,isSigner:!0,isWritable:!1}),new t({keys:y,programId:r,data:g})}function U(e,r,n,a,s){const o=[i.from(Int8Array.from([1])),n.toBuffer(),new j(a.length).toBuffer(),a],c=i.concat(o);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:e,data:c})}function z(r,n,a,s,o,c,u){const l=[i.from(Int8Array.from([2])),a.toBuffer()],d=i.concat(l),f=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&f.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||f.push({pubkey:e.default,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!1,isWritable:!1})),new t({keys:f,programId:r,data:d})}function F(e,r,n,a){const s=[i.from(Int8Array.from([3]))],o=i.concat(s);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0}],programId:e,data:o})}class V{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(V.schema,this)}getInstruction(e,n,s,o,c,u,l,d,f,p,w){const g=i.from(this.serialize()),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r.programId,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1}];return new t({keys:y,programId:e,data:g})}}V.schema=new Map([[V,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class G{constructor(e){this.tag=12,this.name=e.name}serialize(){return d(G.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d){const f=i.from(this.serialize());let p=[];return p.push({pubkey:r,isSigner:!1,isWritable:!1}),p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!1}),p.push({pubkey:o,isSigner:!1,isWritable:!1}),p.push({pubkey:c,isSigner:!0,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),l&&p.push({pubkey:l,isSigner:!1,isWritable:!0}),d&&p.push({pubkey:d,isSigner:!0,isWritable:!0}),new t({keys:p,programId:e,data:f})}}G.schema=new Map([[G,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class O{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(O.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=i.from(this.serialize());let S=[];return S.push({pubkey:r,isSigner:!1,isWritable:!1}),S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!1}),S.push({pubkey:f,isSigner:!1,isWritable:!1}),S.push({pubkey:p,isSigner:!1,isWritable:!1}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),h&&S.push({pubkey:h,isSigner:!1,isWritable:!0}),new t({keys:S,programId:e,data:b})}}O.schema=new Map([[O,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class X{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return d(X.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=i.from(this.serialize());let S=[];return S.push({pubkey:r,isSigner:!1,isWritable:!1}),S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!0}),S.push({pubkey:f,isSigner:!1,isWritable:!0}),S.push({pubkey:p,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),S.push({pubkey:h,isSigner:!1,isWritable:!1}),new t({keys:S,programId:e,data:b})}}X.schema=new Map([[X,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class K{constructor(){this.tag=16}serialize(){return d(K.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d){const f=i.from(this.serialize());let p=[];return p.push({pubkey:r,isSigner:!1,isWritable:!1}),p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!0}),p.push({pubkey:o,isSigner:!1,isWritable:!0}),p.push({pubkey:c,isSigner:!1,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),p.push({pubkey:l,isSigner:!0,isWritable:!1}),p.push({pubkey:d,isSigner:!1,isWritable:!0}),new t({keys:p,programId:e,data:f})}}function q(e,r,n,a,s,o){const c=[i.from(Int8Array.from([4])),o.toBuffer()],u=i.concat(c);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:e,data:u})}K.schema=new Map([[K,{kind:"struct",fields:[["tag","u8"]]}]]);const Z=new e("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),J=i.from("tokenized_name");var Y;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(Y||(Y={}));class Q{constructor(t){this.tag=t.tag,this.nonce=t.nonce,this.nameAccount=new e(t.nameAccount),this.owner=new e(t.owner),this.nftMint=new e(t.nftMint)}static deserialize(e){return f(this.schema,Q,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("NFT record not found");return this.deserialize(r.data)}static async findKey(t,r){return await e.findProgramAddress([i.from("nft_record"),t.toBuffer()],r)}}Q.schema=new Map([[Q,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const $=new e("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),_="SPL Name Service",ee=new e("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),te=new e("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),re=new e("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),ne=new e("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),ie=new e("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),ae=new e("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),se=new e("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),oe=96,ce=new e("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),ue=new e("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),le=[new e("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new e("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new e("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new e("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new e("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],de=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),fe=new e("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),pe=new e("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),we=new e("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),ge=new e("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),ye=new e("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var me;!function(e){e.IPFS="IPFS",e.ARWV="ARWV",e.SOL="SOL",e.ETH="ETH",e.BTC="BTC",e.LTC="LTC",e.DOGE="DOGE",e.Email="email",e.Url="url",e.Discord="discord",e.Github="github",e.Reddit="reddit",e.Twitter="twitter",e.Telegram="telegram",e.Pic="pic",e.SHDW="SHDW",e.POINT="POINT",e.BSC="BSC",e.Injective="INJ",e.Backpack="backpack",e.A="A",e.AAAA="AAAA",e.CNAME="CNAME",e.TXT="TXT",e.Background="background"}(me||(me={}));const he=new Map([[me.SOL,96],[me.ETH,20],[me.BSC,20],[me.Injective,20],[me.A,4],[me.AAAA,16],[me.Background,32]]);var be;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(be||(be={}));const Se=e=>{const t=_+e,r=w(i.from(t,"utf8")).slice(2);return i.from(r,"hex")},ve=(t,r,n)=>{const a=[t];r?a.push(r.toBuffer()):a.push(i.alloc(32)),n?a.push(n.toBuffer()):a.push(i.alloc(32));const[s]=e.findProgramAddressSync(a,$);return s};async function Ae(e,t){const r=Se(t.toBase58()),n=ve(r,ie),{registry:i}=await je.retrieve(e,n);if(!i.data)throw new C(L.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function ke(e,t){let r=[];for(let e of t){const t=Se(e.toBase58()),n=ve(t,ie);r.push(n)}return(await je.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const Ie=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:ie.toBase58()}}],n=await e.getProgramAccounts($,{filters:r}),i=await Ae(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>Ee(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},Be=(e,t=ee,r)=>{let n=Se(e);return{pubkey:ve(n,r,t),hashed:n}},Ee=(e,t)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=i.from([t||0]).toString().concat(r[0]),{pubkey:n}=Be(r[1]);return{...Be(e,n,t===be.V2?g:void 0),isSub:!0,parent:n}}if(3===r.length&&t){const{pubkey:e}=Be(r[2]),{pubkey:t}=Be("\0".concat(r[1]),e),n=i.from([1]).toString();return{...Be(n.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new C(L.InvalidInput);return{...Be(e,ee),isSub:!1,parent:void 0}};async function We(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:ee.toBase58()}}];return(await e.getProgramAccounts($,{filters:r})).map((e=>e.pubkey))}const Re=async e=>{const t=[{memcmp:{offset:0,bytes:ee.toBase58()}}];return await e.getProgramAccounts($,{dataSlice:{offset:32,length:32},filters:t})},De=(e,t)=>{const{pubkey:r,parent:n}=Ee(e),i=Se(r.toBase58());return ve(i,ie,t?n:void 0)},Te=(e,t)=>{if(!e)throw new C(t)},xe=async(t,r)=>{try{const[n]=await e.findProgramAddress([J,r.toBuffer()],Z);if("0"===(await s(t,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await t.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new e(o[0].account.data.slice(32,64))}catch{return}},Ne=async t=>{const r=await t.getProgramAccounts(Z,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e(t.account.data.slice(66,98))))},Pe=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],Le=async(e,t)=>{const r=await(async(e,t)=>{const r=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:t.toBase58()}}];return await e.getProgramAccounts(Z,{filters:r})})(e,t.mint);if(1===r.length)return Q.deserialize(r[0].account.data)},Ce=async(e,t)=>{const r=await(async(e,t)=>{const r=[...Pe(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>Le(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await ke(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class je{constructor(t){this.parentName=new e(t.parentName),this.owner=new e(t.owner),this.class=new e(t.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new C(L.AccountDoesNotExist);let i=p(this.schema,je,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await xe(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=p(this.schema,je,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function He(e,t){if(!await e.getAccountInfo(t))throw new C(L.AccountDoesNotExist);return je.retrieve(e,t)}async function Me(e){const t=_+e,r=w(i.from(t,"utf8")).slice(2);return i.from(r,"hex")}async function Ue(t,r,n){const a=[t];r?a.push(r.toBuffer()):a.push(i.alloc(32)),n?a.push(n.toBuffer()):a.push(i.alloc(32));const[s]=await e.findProgramAddress(a,$);return s}async function ze(e,t){const r=await Me(t.toBase58()),n=await Ue(r,ie),{registry:i}=await je.retrieve(e,n);if(!i.data)throw new C(L.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Fe(e,t){let r=[];for(let e of t){const t=await Me(e.toBase58()),n=await Ue(t,ie);r.push(n)}return(await je.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}je.HEADER_LEN=96,je.schema=new Map([[je,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const Ve=async(e,t=ee)=>{let r=await Me(e);return{pubkey:await Ue(r,void 0,t),hashed:r}},Ge=async(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=i.from([t?1:0]).toString().concat(r[0]),{pubkey:n}=await Ve(r[1]);return{...await Ve(e,n),isSub:!0,parent:n}}if(3===r.length&&t){const{pubkey:e}=await Ve(r[2]),{pubkey:t}=await Ve("\0".concat(r[1]),e),n=i.from([1]).toString();return{...await Ve(n.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new C(L.InvalidInput);return{...await Ve(e,ee),isSub:!1,parent:void 0}},Oe=async(e,t)=>{const{pubkey:r,parent:n}=await Ge(e),i=await Me(r.toBase58());return await Ue(i,ie,t?n:void 0)},Xe=(e,t,r)=>D.sign.detached.verify(e,t,r.toBytes()),Ke=async(t,r)=>{const{pubkey:n}=Ee(r),{registry:a,nftOwner:s}=await je.retrieve(t,n);if(s)return s;try{const n=qe(r,me.SOL),s=await dt(t,r);if(!(null==s?void 0:s.data))throw new C(L.NoRecordData);const o=new TextEncoder,c=i.concat([s.data.slice(0,32),n.toBuffer()]),u=o.encode(c.toString("hex"));if(!Xe(u,s.data.slice(32),a.owner))throw new C(L.InvalidSignature);return new e(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},qe=(e,t)=>{const{pubkey:r}=Ee(t+"."+e,be.V1);return r};async function Ze(e,t,r,n){const i=qe(t,r);let{registry:a}=await je.retrieve(e,i);if(!a.data)throw new C(L.NoRecordData);if(n)return mt(a,r,i);const s=he.get(r);return a.data=a.data.slice(0,s),a}async function Je(e,t,r,n){const i=r.map((e=>qe(t,e))),a=await je.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return mt(e,r[n],qe(t,r[n]))})):a}const Ye=async(e,t)=>await Ze(e,t,me.IPFS,!0),Qe=async(e,t)=>await Ze(e,t,me.ARWV,!0),$e=async(e,t)=>await Ze(e,t,me.ETH,!0),_e=async(e,t)=>await Ze(e,t,me.BTC,!0),et=async(e,t)=>await Ze(e,t,me.LTC,!0),tt=async(e,t)=>await Ze(e,t,me.DOGE,!0),rt=async(e,t)=>await Ze(e,t,me.Email,!0),nt=async(e,t)=>await Ze(e,t,me.Url,!0),it=async(e,t)=>await Ze(e,t,me.Discord,!0),at=async(e,t)=>await Ze(e,t,me.Github,!0),st=async(e,t)=>await Ze(e,t,me.Reddit,!0),ot=async(e,t)=>await Ze(e,t,me.Twitter,!0),ct=async(e,t)=>await Ze(e,t,me.Telegram,!0),ut=async(e,t)=>await Ze(e,t,me.Pic,!0),lt=async(e,t)=>await Ze(e,t,me.SHDW,!0),dt=async(e,t)=>await Ze(e,t,me.SOL),ft=async(e,t)=>await Ze(e,t,me.POINT,!0),pt=async(e,t)=>await Ze(e,t,me.BSC,!0),wt=async(e,t)=>await Ze(e,t,me.Injective,!0),gt=async(e,t)=>await Ze(e,t,me.Backpack,!0),yt=async(e,t)=>await Ze(e,t,me.Background,!0),mt=(t,r,n)=>{const a=null==t?void 0:t.data;if(!a)return;if(0===a.compare(i.alloc(a.length)))return;const s=he.get(r),o=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(a);if(!s)return a.slice(0,o).toString("utf-8");if(r===me.SOL){const e=new TextEncoder,r=i.concat([a.slice(0,32),n.toBuffer()]),s=e.encode(r.toString("hex"));if(Xe(s,a.slice(32,96),t.owner))return T.encode(a.slice(0,32))}if(s&&o!==s){const e=a.slice(0,o).toString("utf-8");if(r===me.Injective){const t=W(e);if("inj"===t.prefix&&20===t.data.length)return e}else if(r===me.BSC||r===me.ETH){const t=e.slice(0,2),r=e.slice(2);if("0x"===t&&20===i.from(r,"hex").length)return e}else if((r===me.A||r===me.AAAA)&&x.isValid(e))return e;throw new C(L.InvalidRecordData)}if(r===me.ETH||r===me.BSC)return"0x"+a.slice(0,s).toString("hex");if(r===me.Injective)return R("inj",a.slice(0,s),"bech32");if(r===me.A||r===me.AAAA)return x.fromByteArray([...a.slice(0,s)]).toString();if(r===me.Background)return new e(a.slice(0,s)).toString();throw new C(L.InvalidRecordData)},ht=(t,r)=>{if(!he.get(r))return r!==me.CNAME&&r!==me.TXT||(t=N(t)),i.from(t,"utf-8");if(r===me.SOL)throw new C(L.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===me.ETH||r===me.BSC)return Te("0x"===t.slice(0,2),L.InvalidEvmAddress),i.from(t.slice(2),"hex");if(r===me.Injective){const e=W(t);return Te("inj"===e.prefix,L.InvalidInjectiveAddress),Te(20===e.data.length,L.InvalidInjectiveAddress),i.from(e.data)}if(r===me.A){const e=x.parse(t).toByteArray();return Te(4===e.length,L.InvalidARecord),i.from(e)}if(r===me.AAAA){const e=x.parse(t).toByteArray();return Te(16===e.length,L.InvalidAAAARecord),i.from(e)}if(r===me.Background)return new e(t).toBuffer();throw new C(L.InvalidRecordInput)},bt=(e,t,r,n)=>{const a=i.concat([e.toBuffer(),t.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=Xe(s,n,r);return Te(o,L.InvalidSignature),i.concat([e.toBuffer(),n])},St=new Map([[me.Backpack,new e("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[me.Url,new e("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),vt=async(t,r,n)=>{const i=Wt(n,r),a=await Ke(t,n),s=await y.retrieve(t,i),o=s.getStalenessId();return 32===o.length&&(a.equals(new e(o))&&s.header.stalenessValidation===m.Solana)},At=async(e,t,r,n)=>{const i=Wt(r,t),a=(await y.retrieve(e,i)).getRoAId();return 0===n.compare(a)},kt=new Set([me.IPFS,me.ARWV,me.LTC,me.DOGE,me.Email,me.Url,me.Discord,me.Github,me.Reddit,me.Twitter,me.Telegram,me.Pic,me.SHDW,me.POINT,me.Backpack,me.TXT,me.CNAME,me.BTC]),It=new Set([me.ETH,me.Injective,me.SOL]),Bt=(t,r)=>{if(kt.has(r)){const e=t.toString("utf-8");return r===me.CNAME||r===me.TXT?P(e):e}if(r===me.SOL)return new e(t).toBase58();if(r===me.ETH||r===me.BSC)return"0x"+t.toString("hex");if(r===me.Injective)return R("inj",t,"bech32");if(r===me.A||r===me.AAAA)return x.fromByteArray([...t]).toString();throw new C(L.InvalidARecord)},Et=(t,r)=>{if(kt.has(r))return r!==me.CNAME&&r!==me.TXT||(t=N(t)),Buffer.from(t,"utf-8");if(r===me.SOL)return new e(t).toBuffer();if(r===me.ETH||r===me.BSC)return Te("0x"===t.slice(0,2),L.InvalidEvmAddress),Buffer.from(t.slice(2),"hex");if(r===me.Injective){const e=W(t);return Te("inj"===e.prefix,L.InvalidInjectiveAddress),Te(20===e.data.length,L.InvalidInjectiveAddress),Buffer.from(e.data)}if(r===me.A){const e=x.parse(t).toByteArray();return Te(4===e.length,L.InvalidARecord),Buffer.from(e)}if(r===me.AAAA){const e=x.parse(t).toByteArray();return Te(16===e.length,L.InvalidAAAARecord),Buffer.from(e)}throw new C(L.InvalidARecord)},Wt=(e,t)=>{const{pubkey:r}=Ee(e),n=Se("".concat(t));return ve(n,g,r)};async function Rt(e,t,n,i,a,s,o,c){const u=await Me(t),l=await Ue(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(n);let f;if(c){const{registry:t}=await He(e,c);f=t.owner}return M($,r.programId,l,a,i,u,new H(d),new j(n),o,c,f)}async function Dt(e,t,r,n,i,a){const s=await Me(t),o=await Ue(s,i,a);let c;c=i||(await je.retrieve(e,o)).registry.owner;return U($,o,new j(r),n,c)}async function Tt(e,t,r,n,i,a){const s=await Me(t),o=await Ue(s,n,i);let c;c=n||(await je.retrieve(e,o)).registry.owner;return z($,o,r,c,n,i,a)}async function xt(e,t,r,n,i){const a=await Me(t),s=await Ue(a,n,i);let o;o=n||(await je.retrieve(e,s)).registry.owner;return F($,s,r,o)}const Nt=async(t,i,s,o,l,d=ue,f)=>{if(i.includes(".")||i.trim().toLowerCase()!==i)throw new C(L.InvalidDomain);const[p]=e.findProgramAddressSync([te.toBuffer()],te),w=Se(i),g=ve(w,void 0,ee),y=Se(g.toBase58()),m=ve(y,p),[h]=e.findProgramAddressSync([g.toBuffer()],te),b=le.findIndex((e=>null==f?void 0:f.equals(e)));let S;const v=[];if(-1!==b&&f){S=c(d,f,!0);const e=await t.getAccountInfo(S);if(!(null==e?void 0:e.data)){const e=u(o,S,f,d);v.push(e)}}const A=new B(t,E("mainnet-beta")),k=await A.getData(),I=de.get(d.toBase58());if(!I)throw new C(L.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const W=k.productPrice.get("Crypto."+I+"/USD"),R=k.productFromSymbol.get("Crypto."+I+"/USD"),D=c(d,pe),T=new O({name:i,space:s,referrerIdxOpt:-1!=b?b:null}).getInstruction(te,$,ee,g,m,r.programId,p,o,l,fe,W.productAccountKey,new e(R.price_account),D,a,n,h,S);return v.push(T),[[],v]},Pt=async(t,i,a,s,o)=>{let[c]=await e.findProgramAddress([te.toBuffer()],te),u=await Me(t.toBase58()),l=await Ue(u,c,s);return[[],[new G({name:i}).getInstruction(te,$,ee,l,r.programId,c,a,n,s,o)]]},Lt=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new C(L.InvalidSubdomain);const{parent:s,pubkey:o}=Ee(t),c=await e.getMinimumBalanceForRentExemption(n+je.HEADER_LEN),u=await Rt(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const l=De(t,!0),d=await e.getAccountInfo(l);if(!(null==d?void 0:d.data)){const[,e]=await Pt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},Ct=async(e,t,n,i,a,s)=>{Te(n!==me.SOL,L.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=Ee(`${n}.${t}`,be.V1),l=ht(i,n).length,d=await e.getMinimumBalanceForRentExemption(l+je.HEADER_LEN);return M($,r.programId,o,a,s,c,new H(d),new j(l),void 0,u,a)},jt=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return h(i,a,s,n,$,"".concat(t),Et(r,t),b)},Ht=async(e,t,r,n,i,a)=>{Te(r!==me.SOL,L.UnsupportedRecord);const{pubkey:s}=Ee(`${r}.${t}`,be.V1),o=await e.getAccountInfo(s);Te(!!(null==o?void 0:o.data),L.AccountDoesNotExist);const c=ht(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[F($,s,a,i),await Ct(e,t,r,n,i,a)];return[U($,s,new j(0),c,i)]},Mt=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return S(i,a,s,n,$,"".concat(t),Et(r,t),b)},Ut=(e,t,r,n)=>{const{pubkey:i,parent:a}=Ee(`${t}.${e}`,be.V2);if(!a)throw new Error("Invalid parent");return v(n,a,r,i,$,b)},zt=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${r}.${t}`,be.V2);if(!o)throw new Error("Invalid parent");return A(i,s,o,n,a,$,e,b)},Ft=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return k(n,$,a,s,r,i,b)},Vt=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${t}.${e}`,be.V2);if(!o)throw new Error("Invalid parent");return I(n,s,o,r,$,m.Ethereum,i,a,b)},Gt=async(e,t,n,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=Ee(`${me.SOL}.${t}`,be.V1),l=bt(n,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(l+je.HEADER_LEN);return[M($,r.programId,o,i,s,c,new H(d),new j(l),void 0,u,i)]},Ot=async(e,t,r,n,i,a)=>{const{pubkey:s}=Ee(`${me.SOL}.${t}`,be.V1),o=await e.getAccountInfo(s);if(Te(!!(null==o?void 0:o.data),L.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[F($,s,a,n),await Gt(e,t,r,n,i,a)];const c=bt(r,s,n,i);return[U($,s,new j(0),c,n)]},Xt=(t,n,i)=>{const{pubkey:a}=Ee(t),[s]=e.findProgramAddressSync([a.toBuffer()],te),[o]=e.findProgramAddressSync([a.toBuffer(),Uint8Array.from([1,1])],te);return(new K).getInstruction(te,$,r.programId,a,De(t),o,s,ie,n,i)},Kt=(t,i,s,o,c,u,l,d,f)=>{const[p]=e.findProgramAddressSync([s.toBuffer()],te);return new X({space:i,name:t}).getInstruction(te,$,ee,s,o,r.programId,ie,c,u,l,d,f,ge,a,n,p,ye)},qt=async(e,t,r,n)=>{const{pubkey:i,isSub:a,parent:s}=Ee(t);if(!s||!a)throw new C(L.InvalidSubdomain);const{registry:o}=await je.retrieve(e,i);let c,u;n&&(c=s,u=(await je.retrieve(e,s)).registry.owner);return z($,i,r,o.owner,void 0,c,u)};async function Zt(e,t,n,i,a){const s=await Me(t),o=await Ue(s,void 0,se),c=await e.getMinimumBalanceForRentExemption(i+je.HEADER_LEN);let u=[M($,r.programId,o,n,a,s,new H(c),new j(i),void 0,se,ae)];return u=u.concat(await ir(e,t,o,n,a)),u}async function Jt(e,t,r,n){const i=await Me(e),a=await Ue(i,void 0,se);return[U($,a,new j(r),n,t)]}async function Yt(e,t,r,n,i){const a=await Me(t),s=await Ue(a,void 0,se);let o=[z($,s,n,r,void 0)];const c=await Me(r.toString());return await Ue(c,ae,void 0),o.push(await xt(e,r.toString(),i,ae,se)),o=o.concat(await ir(e,t,s,n,i)),o}async function Qt(e,t){const r=await Me(e),n=await Ue(r,void 0,se),i=await Me(t.toString()),a=await Ue(i,ae,se);return[F($,n,t,t),F($,a,t,t)]}async function $t(e){const t=await Me(e);return await Ue(t,void 0,se)}async function _t(e,t){const r=await Me(t),n=await Ue(r,void 0,se),{registry:i}=await je.retrieve(e,n);return i}async function er(t,r){const n=await Me(r.toString()),i=await Ue(n,ae,se);let a=await nr.retrieve(t,i);return[a.twitterHandle,new e(a.twitterRegistryKey)]}async function tr(t,r){const n=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:ae.toBase58()}}],i=await t.getProgramAccounts($,{filters:n});for(const t of i)if(t.account.data.length>je.HEADER_LEN+32){let r=t.account.data.slice(je.HEADER_LEN),n=p(nr.schema,nr,r);return[n.twitterHandle,new e(n.twitterRegistryKey)]}throw new C(L.AccountDoesNotExist)}async function rr(t,r){const n=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:new e(i.alloc(32,0)).toBase58()}}],a=await t.getProgramAccounts($,{filters:n});if(a.length>1)throw new C(L.MultipleRegistries);return a[0].account.data.slice(je.HEADER_LEN)}class nr{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,t){let r=await e.getAccountInfo(t,"processed");if(!r)throw new C(L.InvalidReverseTwitter);return p(this.schema,nr,r.data.slice(je.HEADER_LEN))}}async function ir(e,t,n,a,s){const o=await Me(a.toString()),c=await Ue(o,ae,se);let u=d(nr.schema,new nr({twitterRegistryKey:n.toBytes(),twitterHandle:t}));return[M($,r.programId,c,a,s,o,new H(await e.getMinimumBalanceForRentExemption(u.length+je.HEADER_LEN)),new j(u.length),ae,se,ae),U($,c,new j(0),i.from(u),ae)]}nr.schema=new Map([[nr,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const ar=new e("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class sr{constructor(t){this.tag=t.tag,this.nameAccount=new e(t.nameAccount)}static deserialize(e){return f(this.schema,sr,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new C(L.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(t,r){return await e.findProgramAddress([i.from("favourite_domain"),r.toBuffer()],t)}static getKeySync(t,r){return e.findProgramAddressSync([i.from("favourite_domain"),r.toBuffer()],t)}}sr.schema=new Map([[sr,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const or=async(t,r)=>{const[n]=sr.getKeySync(ar,new e(r)),i=await sr.retrieve(t,n),a=await Ae(t,i.nameAccount);return{domain:i.nameAccount,reverse:a}};var cr;!function(e){e.DegenPoet1="DegenPoet#1"}(cr||(cr={}));const ur=new e("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD"),lr=(e,t)=>{const r=Se(t),n=Se(e),i=ve(n,void 0,we);return{domainKey:i,bgKey:ve(r,void 0,i)}},dr=e=>{if(e===cr.DegenPoet1)return ur;throw new C(L.InvalidCustomBg)};export{ne as BONFIDA_FIDA_BNB,ce as BONFIDA_USDC_BNB,we as CUSTOM_BG_TLD,cr as CustomBg,L as ErrorType,sr as FavouriteDomain,St as GUARDIANS,_ as HASH_PREFIX,ye as METAPLEX_ID,ar as NAME_OFFERS_ID,$ as NAME_PROGRAM_ID,je as NameRegistryState,j as Numberu32,H as Numberu64,re as PYTH_FIDA_PRICE_ACC,fe as PYTH_MAPPING_ACC,he as RECORD_V1_SIZE,le as REFERRERS,te as REGISTER_PROGRAM_ID,ie as REVERSE_LOOKUP_CLASS,ee as ROOT_DOMAIN_ACCOUNT,me as Record,be as RecordVersion,nr as ReverseTwitterRegistryState,It as SELF_SIGNED,C as SNSError,oe as SOL_RECORD_SIG_LEN,de as TOKENS_SYM_MINT,se as TWITTER_ROOT_PARENT_REGISTRY_KEY,ae as TWITTER_VERIFICATION_AUTHORITY,ue as USDC_MINT,kt as UTF8_ENCODED,pe as VAULT_OWNER,ge as WOLVES_COLLECTION_METADATA,Xt as burnDomain,K as burnInstruction,Jt as changeTwitterRegistryData,Yt as changeVerifiedPubkey,Te as check,Xe as checkSolRecord,M as createInstruction,O as createInstructionV3,Rt as createNameRegistry,Ct as createRecordInstruction,jt as createRecordV2Instruction,G as createReverseInstruction,Pt as createReverseName,ir as createReverseTwitterRegistry,Gt as createSolRecordInstruction,Lt as createSubdomain,V as createV2Instruction,Zt as createVerifiedTwitterRegistry,X as createWithNftInstruction,F as deleteInstruction,xt as deleteNameRegistry,Ut as deleteRecordV2,Qt as deleteTwitterRegistry,mt as deserializeRecord,Bt as deserializeRecordV2Content,Vt as ethValidateRecordV2Content,Ie as findSubdomains,We as getAllDomains,Re as getAllRegisteredDomains,dr as getArtistPubkey,Qe as getArweaveRecord,yt as getBackgroundRecord,gt as getBackpackRecord,pt as getBscRecord,_e as getBtcRecord,lr as getCustomBgKeys,it as getDiscordRecord,tt as getDogeRecord,Ge as getDomainKey,Ee as getDomainKeySync,rt as getEmailRecord,$e as getEthRecord,or as getFavoriteDomain,at as getGithubRecord,er as getHandleAndRegistryKey,Me as getHashedName,Se as getHashedNameSync,wt as getInjectiveRecord,Ye as getIpfsRecord,et as getLtcRecord,Ue as getNameAccountKey,ve as getNameAccountKeySync,He as getNameOwner,ut as getPicRecord,ft as getPointRecord,Ze as getRecord,qe as getRecordKeySync,Wt as getRecordV2Key,Je as getRecords,st as getRedditRecord,Oe as getReverseKey,De as getReverseKeySync,lt as getShdwRecord,dt as getSolRecord,ct as getTelegramRecord,Ce as getTokenizedDomains,tr as getTwitterHandleandRegistryKeyViaFilters,ot as getTwitterRecord,_t as getTwitterRegistry,rr as getTwitterRegistryData,$t as getTwitterRegistryKey,nt as getUrlRecord,ze as performReverseLookup,Fe as performReverseLookupBatch,q as reallocInstruction,Nt as registerDomainName,Kt as registerWithNft,Ke as resolve,xe as retrieveNftOwner,Ne as retrieveNfts,Ae as reverseLookup,ke as reverseLookupBatch,ht as serializeRecord,Et as serializeRecordV2Content,bt as serializeSolRecord,z as transferInstruction,Tt as transferNameOwnership,qt as transferSubdomain,U as updateInstruction,Dt as updateNameRegistryData,Ht as updateRecordInstruction,Mt as updateRecordV2Instruction,Ot as updateSolRecordInstruction,zt as validateRecordV2Content,At as verifyRightOfAssociation,vt as verifyStaleness,Ft as writRoaRecordV2};
1
+ import{PublicKey as e,TransactionInstruction as t,SystemProgram as r,SYSVAR_RENT_PUBKEY as n}from"@solana/web3.js";import{Buffer as i}from"buffer";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import l from"bn.js";import{serialize as d,deserialize as f,deserializeUnchecked as p}from"borsh";import{sha256 as w}from"@ethersproject/sha2";import{CENTRAL_STATE_SNS_RECORDS as g,Record as y,Validation as m,allocateAndPostRecord as h,SNS_RECORDS_ID as b,editRecord as S,deleteRecord as v,validateSolanaSignature as A,writeRoa as k,validateEthSignature as I}from"@bonfida/sns-records";import{PythHttpClient as B,getPythProgramKeyForCluster as E}from"@pythnetwork/client";import{decode as W,encode as R}from"bech32-buffer";import*as D from"tweetnacl";import T from"bs58";import x from"ipaddr.js";import{encode as N,decode as P}from"punycode";var j;!function(e){e.SymbolNotFound="SymbolNotFound",e.InvalidSubdomain="InvalidSubdomain",e.FavouriteDomainNotFound="FavouriteDomainNotFound",e.MissingParentOwner="MissingParentOwner",e.U32Overflow="U32Overflow",e.InvalidBufferLength="InvalidBufferLength",e.U64Overflow="U64Overflow",e.NoRecordData="NoRecordData",e.InvalidRecordData="InvalidRecordData",e.UnsupportedRecord="UnsupportedRecord",e.InvalidEvmAddress="InvalidEvmAddress",e.InvalidInjectiveAddress="InvalidInjectiveAddress",e.InvalidARecord="InvalidARecord",e.InvalidAAAARecord="InvalidAAAARecord",e.InvalidRecordInput="InvalidRecordInput",e.InvalidSignature="InvalidSignature",e.AccountDoesNotExist="AccountDoesNotExist",e.MultipleRegistries="MultipleRegistries",e.InvalidReverseTwitter="InvalidReverseTwitter",e.NoAccountData="NoAccountData",e.InvalidInput="InvalidInput",e.InvalidDomain="InvalidDomain",e.InvalidCustomBg="InvalidCustomBackground",e.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(j||(j={}));class C extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,C)}}class L extends l{toBuffer(){const e=super.toArray().reverse(),t=i.from(e);if(4===t.length)return t;if(t.length>4)throw new C(j.U32Overflow);const r=i.alloc(4);return t.copy(r),r}static fromBuffer(e){if(4!==e.length)throw new C(j.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class H extends l{toBuffer(){const e=super.toArray().reverse(),t=i.from(e);if(8===t.length)return t;if(t.length>8)throw new C(j.U64Overflow);const r=i.alloc(8);return t.copy(r),r}static fromBuffer(e){if(8!==e.length)throw new C(j.U64Overflow,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function M(r,n,a,s,o,c,u,l,d,f,p){const w=[i.from(Int8Array.from([0])),new L(c.length).toBuffer(),c,u.toBuffer(),l.toBuffer()],g=i.concat(w),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return d?y.push({pubkey:d,isSigner:!0,isWritable:!1}):y.push({pubkey:new e(i.alloc(32)),isSigner:!1,isWritable:!1}),f?y.push({pubkey:f,isSigner:!1,isWritable:!1}):y.push({pubkey:new e(i.alloc(32)),isSigner:!1,isWritable:!1}),p&&y.push({pubkey:p,isSigner:!0,isWritable:!1}),new t({keys:y,programId:r,data:g})}function z(e,r,n,a,s){const o=[i.from(Int8Array.from([1])),n.toBuffer(),new L(a.length).toBuffer(),a],c=i.concat(o);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:e,data:c})}function F(r,n,a,s,o,c,u){const l=[i.from(Int8Array.from([2])),a.toBuffer()],d=i.concat(l),f=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&f.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||f.push({pubkey:e.default,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!1,isWritable:!1})),new t({keys:f,programId:r,data:d})}function U(e,r,n,a){const s=[i.from(Int8Array.from([3]))],o=i.concat(s);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0}],programId:e,data:o})}class V{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(V.schema,this)}getInstruction(e,n,s,o,c,u,l,d,f,p,w){const g=i.from(this.serialize()),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r.programId,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1}];return new t({keys:y,programId:e,data:g})}}V.schema=new Map([[V,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class K{constructor(e){this.tag=12,this.name=e.name}serialize(){return d(K.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d){const f=i.from(this.serialize());let p=[];return p.push({pubkey:r,isSigner:!1,isWritable:!1}),p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!1}),p.push({pubkey:o,isSigner:!1,isWritable:!1}),p.push({pubkey:c,isSigner:!0,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),l&&p.push({pubkey:l,isSigner:!1,isWritable:!0}),d&&p.push({pubkey:d,isSigner:!0,isWritable:!0}),new t({keys:p,programId:e,data:f})}}K.schema=new Map([[K,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class O{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(O.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=i.from(this.serialize());let S=[];return S.push({pubkey:r,isSigner:!1,isWritable:!1}),S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!1}),S.push({pubkey:f,isSigner:!1,isWritable:!1}),S.push({pubkey:p,isSigner:!1,isWritable:!1}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),h&&S.push({pubkey:h,isSigner:!1,isWritable:!0}),new t({keys:S,programId:e,data:b})}}O.schema=new Map([[O,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class X{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return d(X.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=i.from(this.serialize());let S=[];return S.push({pubkey:r,isSigner:!1,isWritable:!1}),S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!0}),S.push({pubkey:f,isSigner:!1,isWritable:!0}),S.push({pubkey:p,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),S.push({pubkey:h,isSigner:!1,isWritable:!1}),new t({keys:S,programId:e,data:b})}}X.schema=new Map([[X,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class G{constructor(){this.tag=16}serialize(){return d(G.schema,this)}getInstruction(e,r,n,a,s,o,c,u,l,d){const f=i.from(this.serialize());let p=[];return p.push({pubkey:r,isSigner:!1,isWritable:!1}),p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!0}),p.push({pubkey:o,isSigner:!1,isWritable:!0}),p.push({pubkey:c,isSigner:!1,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),p.push({pubkey:l,isSigner:!0,isWritable:!1}),p.push({pubkey:d,isSigner:!1,isWritable:!0}),new t({keys:p,programId:e,data:f})}}function q(e,r,n,a,s,o){const c=[i.from(Int8Array.from([4])),o.toBuffer()],u=i.concat(c);return new t({keys:[{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:e,data:u})}G.schema=new Map([[G,{kind:"struct",fields:[["tag","u8"]]}]]);const Z=new e("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),J=i.from("tokenized_name");var Q;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(Q||(Q={}));class Y{constructor(t){this.tag=t.tag,this.nonce=t.nonce,this.nameAccount=new e(t.nameAccount),this.owner=new e(t.owner),this.nftMint=new e(t.nftMint)}static deserialize(e){return f(this.schema,Y,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("NFT record not found");return this.deserialize(r.data)}static async findKey(t,r){return await e.findProgramAddress([i.from("nft_record"),t.toBuffer()],r)}}Y.schema=new Map([[Y,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const $=new e("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),_="SPL Name Service",ee=new e("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),te=new e("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),re=new e("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),ne=new e("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),ie=new e("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),ae=new e("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),se=new e("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),oe=96,ce=new e("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),ue=new e("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),le=[new e("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new e("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new e("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new e("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new e("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],de=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),fe=new e("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),pe=new e("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),we=new e("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),ge=new e("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),ye=new e("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var me;!function(e){e.IPFS="IPFS",e.ARWV="ARWV",e.SOL="SOL",e.ETH="ETH",e.BTC="BTC",e.LTC="LTC",e.DOGE="DOGE",e.Email="email",e.Url="url",e.Discord="discord",e.Github="github",e.Reddit="reddit",e.Twitter="twitter",e.Telegram="telegram",e.Pic="pic",e.SHDW="SHDW",e.POINT="POINT",e.BSC="BSC",e.Injective="INJ",e.Backpack="backpack",e.A="A",e.AAAA="AAAA",e.CNAME="CNAME",e.TXT="TXT",e.Background="background"}(me||(me={}));const he=new Map([[me.SOL,96],[me.ETH,20],[me.BSC,20],[me.Injective,20],[me.A,4],[me.AAAA,16],[me.Background,32]]);var be;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(be||(be={}));const Se=e=>{const t=_+e,r=w(i.from(t,"utf8")).slice(2);return i.from(r,"hex")},ve=(t,r,n)=>{const a=[t];r?a.push(r.toBuffer()):a.push(i.alloc(32)),n?a.push(n.toBuffer()):a.push(i.alloc(32));const[s]=e.findProgramAddressSync(a,$);return s};async function Ae(e,t){const r=Se(t.toBase58()),n=ve(r,ie),{registry:i}=await Le.retrieve(e,n);if(!i.data)throw new C(j.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function ke(e,t){let r=[];for(let e of t){const t=Se(e.toBase58()),n=ve(t,ie);r.push(n)}return(await Le.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const Ie=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:ie.toBase58()}}],n=await e.getProgramAccounts($,{filters:r}),i=await Ae(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>Ee(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},Be=(e,t=ee,r)=>{let n=Se(e);return{pubkey:ve(n,r,t),hashed:n}},Ee=(e,t)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=i.from([t||0]).toString().concat(r[0]),{pubkey:n}=Be(r[1]);return{...Be(e,n,t===be.V2?g:void 0),isSub:!0,parent:n}}if(3===r.length&&t){const{pubkey:e}=Be(r[2]),{pubkey:t}=Be("\0".concat(r[1]),e),n=i.from([1]).toString();return{...Be(n.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new C(j.InvalidInput);return{...Be(e,ee),isSub:!1,parent:void 0}};async function We(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:ee.toBase58()}}];return(await e.getProgramAccounts($,{filters:r})).map((e=>e.pubkey))}const Re=async e=>{const t=[{memcmp:{offset:0,bytes:ee.toBase58()}}];return await e.getProgramAccounts($,{dataSlice:{offset:32,length:32},filters:t})},De=(e,t)=>{const{pubkey:r,parent:n}=Ee(e),i=Se(r.toBase58());return ve(i,ie,t?n:void 0)},Te=(e,t)=>{if(!e)throw new C(t)},xe=async(t,r)=>{try{const[n]=await e.findProgramAddress([J,r.toBuffer()],Z);if("0"===(await s(t,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await t.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new e(o[0].account.data.slice(32,64))}catch{return}},Ne=async t=>{const r=await t.getProgramAccounts(Z,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e(t.account.data.slice(66,98))))},Pe=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],je=async(e,t)=>{const r=await(async(e,t)=>{const r=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:t.toBase58()}}];return await e.getProgramAccounts(Z,{filters:r})})(e,t.mint);if(1===r.length)return Y.deserialize(r[0].account.data)},Ce=async(e,t)=>{const r=await(async(e,t)=>{const r=[...Pe(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>je(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await ke(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class Le{constructor(t){this.parentName=new e(t.parentName),this.owner=new e(t.owner),this.class=new e(t.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new C(j.AccountDoesNotExist);let i=p(this.schema,Le,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await xe(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=p(this.schema,Le,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function He(e,t){if(!await e.getAccountInfo(t))throw new C(j.AccountDoesNotExist);return Le.retrieve(e,t)}async function Me(e){const t=_+e,r=w(i.from(t,"utf8")).slice(2);return i.from(r,"hex")}async function ze(t,r,n){const a=[t];r?a.push(r.toBuffer()):a.push(i.alloc(32)),n?a.push(n.toBuffer()):a.push(i.alloc(32));const[s]=await e.findProgramAddress(a,$);return s}async function Fe(e,t){const r=await Me(t.toBase58()),n=await ze(r,ie),{registry:i}=await Le.retrieve(e,n);if(!i.data)throw new C(j.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Ue(e,t){let r=[];for(let e of t){const t=await Me(e.toBase58()),n=await ze(t,ie);r.push(n)}return(await Le.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}Le.HEADER_LEN=96,Le.schema=new Map([[Le,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const Ve=async(e,t=ee)=>{let r=await Me(e);return{pubkey:await ze(r,void 0,t),hashed:r}},Ke=async(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=i.from([t?1:0]).toString().concat(r[0]),{pubkey:n}=await Ve(r[1]);return{...await Ve(e,n),isSub:!0,parent:n}}if(3===r.length&&t){const{pubkey:e}=await Ve(r[2]),{pubkey:t}=await Ve("\0".concat(r[1]),e),n=i.from([1]).toString();return{...await Ve(n.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new C(j.InvalidInput);return{...await Ve(e,ee),isSub:!1,parent:void 0}},Oe=async(e,t)=>{const{pubkey:r,parent:n}=await Ke(e),i=await Me(r.toBase58());return await ze(i,ie,t?n:void 0)},Xe=(e,t,r)=>D.sign.detached.verify(e,t,r.toBytes()),Ge=async(t,r)=>{const{pubkey:n}=Ee(r),{registry:a,nftOwner:s}=await Le.retrieve(t,n);if(s)return s;try{const n=qe(r,me.SOL),s=await dt(t,r);if(!(null==s?void 0:s.data))throw new C(j.NoRecordData);const o=new TextEncoder,c=i.concat([s.data.slice(0,32),n.toBuffer()]),u=o.encode(c.toString("hex"));if(!Xe(u,s.data.slice(32),a.owner))throw new C(j.InvalidSignature);return new e(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},qe=(e,t)=>{const{pubkey:r}=Ee(t+"."+e,be.V1);return r};async function Ze(e,t,r,n){const i=qe(t,r);let{registry:a}=await Le.retrieve(e,i);if(!a.data)throw new C(j.NoRecordData);if(n)return mt(a,r,i);const s=he.get(r);return a.data=a.data.slice(0,s),a}async function Je(e,t,r,n){const i=r.map((e=>qe(t,e))),a=await Le.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return mt(e,r[n],qe(t,r[n]))})):a}const Qe=async(e,t)=>await Ze(e,t,me.IPFS,!0),Ye=async(e,t)=>await Ze(e,t,me.ARWV,!0),$e=async(e,t)=>await Ze(e,t,me.ETH,!0),_e=async(e,t)=>await Ze(e,t,me.BTC,!0),et=async(e,t)=>await Ze(e,t,me.LTC,!0),tt=async(e,t)=>await Ze(e,t,me.DOGE,!0),rt=async(e,t)=>await Ze(e,t,me.Email,!0),nt=async(e,t)=>await Ze(e,t,me.Url,!0),it=async(e,t)=>await Ze(e,t,me.Discord,!0),at=async(e,t)=>await Ze(e,t,me.Github,!0),st=async(e,t)=>await Ze(e,t,me.Reddit,!0),ot=async(e,t)=>await Ze(e,t,me.Twitter,!0),ct=async(e,t)=>await Ze(e,t,me.Telegram,!0),ut=async(e,t)=>await Ze(e,t,me.Pic,!0),lt=async(e,t)=>await Ze(e,t,me.SHDW,!0),dt=async(e,t)=>await Ze(e,t,me.SOL),ft=async(e,t)=>await Ze(e,t,me.POINT,!0),pt=async(e,t)=>await Ze(e,t,me.BSC,!0),wt=async(e,t)=>await Ze(e,t,me.Injective,!0),gt=async(e,t)=>await Ze(e,t,me.Backpack,!0),yt=async(e,t)=>await Ze(e,t,me.Background,!0),mt=(t,r,n)=>{const a=null==t?void 0:t.data;if(!a)return;if(0===a.compare(i.alloc(a.length)))return;const s=he.get(r),o=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(a);if(!s)return a.slice(0,o).toString("utf-8");if(r===me.SOL){const e=new TextEncoder,r=i.concat([a.slice(0,32),n.toBuffer()]),s=e.encode(r.toString("hex"));if(Xe(s,a.slice(32,96),t.owner))return T.encode(a.slice(0,32))}if(s&&o!==s){const e=a.slice(0,o).toString("utf-8");if(r===me.Injective){const t=W(e);if("inj"===t.prefix&&20===t.data.length)return e}else if(r===me.BSC||r===me.ETH){const t=e.slice(0,2),r=e.slice(2);if("0x"===t&&20===i.from(r,"hex").length)return e}else if((r===me.A||r===me.AAAA)&&x.isValid(e))return e;throw new C(j.InvalidRecordData)}if(r===me.ETH||r===me.BSC)return"0x"+a.slice(0,s).toString("hex");if(r===me.Injective)return R("inj",a.slice(0,s),"bech32");if(r===me.A||r===me.AAAA)return x.fromByteArray([...a.slice(0,s)]).toString();if(r===me.Background)return new e(a.slice(0,s)).toString();throw new C(j.InvalidRecordData)},ht=(t,r)=>{if(!he.get(r))return r!==me.CNAME&&r!==me.TXT||(t=N(t)),i.from(t,"utf-8");if(r===me.SOL)throw new C(j.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===me.ETH||r===me.BSC)return Te("0x"===t.slice(0,2),j.InvalidEvmAddress),i.from(t.slice(2),"hex");if(r===me.Injective){const e=W(t);return Te("inj"===e.prefix,j.InvalidInjectiveAddress),Te(20===e.data.length,j.InvalidInjectiveAddress),i.from(e.data)}if(r===me.A){const e=x.parse(t).toByteArray();return Te(4===e.length,j.InvalidARecord),i.from(e)}if(r===me.AAAA){const e=x.parse(t).toByteArray();return Te(16===e.length,j.InvalidAAAARecord),i.from(e)}if(r===me.Background)return new e(t).toBuffer();throw new C(j.InvalidRecordInput)},bt=(e,t,r,n)=>{const a=i.concat([e.toBuffer(),t.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=Xe(s,n,r);return Te(o,j.InvalidSignature),i.concat([e.toBuffer(),n])},St=new Map([[me.Backpack,new e("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[me.Url,new e("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[me.IPFS,new e("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),vt=new Set([me.ETH,me.Injective,me.BSC]),At=async(t,r,n)=>{const i=Rt(n,r),a=await Ge(t,n),s=await y.retrieve(t,i),o=s.getStalenessId();return a.equals(new e(o))&&s.header.stalenessValidation===m.Solana},kt=async(e,t,r,n)=>{const i=Rt(r,t),a=await y.retrieve(e,i),s=a.getRoAId(),o=vt.has(t)?m.Ethereum:m.Solana;return 0===n.compare(s)&&a.header.rightOfAssociationValidation===o},It=new Set([me.IPFS,me.ARWV,me.LTC,me.DOGE,me.Email,me.Url,me.Discord,me.Github,me.Reddit,me.Twitter,me.Telegram,me.Pic,me.SHDW,me.POINT,me.Backpack,me.TXT,me.CNAME,me.BTC]),Bt=new Set([me.ETH,me.Injective,me.SOL]),Et=(t,r)=>{if(It.has(r)){const e=t.toString("utf-8");return r===me.CNAME||r===me.TXT?P(e):e}if(r===me.SOL)return new e(t).toBase58();if(r===me.ETH||r===me.BSC)return"0x"+t.toString("hex");if(r===me.Injective)return R("inj",t,"bech32");if(r===me.A||r===me.AAAA)return x.fromByteArray([...t]).toString();throw new C(j.InvalidARecord)},Wt=(t,r)=>{if(It.has(r))return r!==me.CNAME&&r!==me.TXT||(t=N(t)),Buffer.from(t,"utf-8");if(r===me.SOL)return new e(t).toBuffer();if(r===me.ETH||r===me.BSC)return Te("0x"===t.slice(0,2),j.InvalidEvmAddress),Buffer.from(t.slice(2),"hex");if(r===me.Injective){const e=W(t);return Te("inj"===e.prefix,j.InvalidInjectiveAddress),Te(20===e.data.length,j.InvalidInjectiveAddress),Buffer.from(e.data)}if(r===me.A){const e=x.parse(t).toByteArray();return Te(4===e.length,j.InvalidARecord),Buffer.from(e)}if(r===me.AAAA){const e=x.parse(t).toByteArray();return Te(16===e.length,j.InvalidAAAARecord),Buffer.from(e)}throw new C(j.InvalidARecord)},Rt=(e,t)=>{const{pubkey:r}=Ee(e),n=Se("".concat(t));return ve(n,g,r)};async function Dt(e,t,n,i,a,s,o,c){const u=await Me(t),l=await ze(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(n);let f;if(c){const{registry:t}=await He(e,c);f=t.owner}return M($,r.programId,l,a,i,u,new H(d),new L(n),o,c,f)}async function Tt(e,t,r,n,i,a){const s=await Me(t),o=await ze(s,i,a);let c;c=i||(await Le.retrieve(e,o)).registry.owner;return z($,o,new L(r),n,c)}async function xt(e,t,r,n,i,a){const s=await Me(t),o=await ze(s,n,i);let c;c=n||(await Le.retrieve(e,o)).registry.owner;return F($,o,r,c,n,i,a)}async function Nt(e,t,r,n,i){const a=await Me(t),s=await ze(a,n,i);let o;o=n||(await Le.retrieve(e,s)).registry.owner;return U($,s,r,o)}const Pt=async(t,i,s,o,l,d=ue,f)=>{if(i.includes(".")||i.trim().toLowerCase()!==i)throw new C(j.InvalidDomain);const[p]=e.findProgramAddressSync([te.toBuffer()],te),w=Se(i),g=ve(w,void 0,ee),y=Se(g.toBase58()),m=ve(y,p),[h]=e.findProgramAddressSync([g.toBuffer()],te),b=le.findIndex((e=>null==f?void 0:f.equals(e)));let S;const v=[];if(-1!==b&&f){S=c(d,f,!0);const e=await t.getAccountInfo(S);if(!(null==e?void 0:e.data)){const e=u(o,S,f,d);v.push(e)}}const A=new B(t,E("mainnet-beta")),k=await A.getData(),I=de.get(d.toBase58());if(!I)throw new C(j.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const W=k.productPrice.get("Crypto."+I+"/USD"),R=k.productFromSymbol.get("Crypto."+I+"/USD"),D=c(d,pe),T=new O({name:i,space:s,referrerIdxOpt:-1!=b?b:null}).getInstruction(te,$,ee,g,m,r.programId,p,o,l,fe,W.productAccountKey,new e(R.price_account),D,a,n,h,S);return v.push(T),[[],v]},jt=async(t,i,a,s,o)=>{let[c]=await e.findProgramAddress([te.toBuffer()],te),u=await Me(t.toBase58()),l=await ze(u,c,s);return[[],[new K({name:i}).getInstruction(te,$,ee,l,r.programId,c,a,n,s,o)]]},Ct=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new C(j.InvalidSubdomain);const{parent:s,pubkey:o}=Ee(t),c=await e.getMinimumBalanceForRentExemption(n+Le.HEADER_LEN),u=await Dt(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const l=De(t,!0),d=await e.getAccountInfo(l);if(!(null==d?void 0:d.data)){const[,e]=await jt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},Lt=async(e,t,n,i,a,s)=>{Te(n!==me.SOL,j.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=Ee(`${n}.${t}`,be.V1),l=ht(i,n).length,d=await e.getMinimumBalanceForRentExemption(l+Le.HEADER_LEN);return M($,r.programId,o,a,s,c,new H(d),new L(l),void 0,u,a)},Ht=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return h(i,a,s,n,$,"".concat(t),Wt(r,t),b)},Mt=async(e,t,r,n,i,a)=>{Te(r!==me.SOL,j.UnsupportedRecord);const{pubkey:s}=Ee(`${r}.${t}`,be.V1),o=await e.getAccountInfo(s);Te(!!(null==o?void 0:o.data),j.AccountDoesNotExist);const c=ht(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[U($,s,a,i),await Lt(e,t,r,n,i,a)];return[z($,s,new L(0),c,i)]},zt=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return S(i,a,s,n,$,"".concat(t),Wt(r,t),b)},Ft=(e,t,r,n)=>{const{pubkey:i,parent:a}=Ee(`${t}.${e}`,be.V2);if(!a)throw new Error("Invalid parent");return v(n,a,r,i,$,b)},Ut=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${r}.${t}`,be.V2);if(!o)throw new Error("Invalid parent");return A(i,s,o,n,a,$,e,b)},Vt=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return k(n,$,a,s,r,i,b)},Kt=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${t}.${e}`,be.V2);if(!o)throw new Error("Invalid parent");return I(n,s,o,r,$,m.Ethereum,i,a,b)},Ot=async(e,t,n,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=Ee(`${me.SOL}.${t}`,be.V1),l=bt(n,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(l+Le.HEADER_LEN);return[M($,r.programId,o,i,s,c,new H(d),new L(l),void 0,u,i)]},Xt=async(e,t,r,n,i,a)=>{const{pubkey:s}=Ee(`${me.SOL}.${t}`,be.V1),o=await e.getAccountInfo(s);if(Te(!!(null==o?void 0:o.data),j.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[U($,s,a,n),await Ot(e,t,r,n,i,a)];const c=bt(r,s,n,i);return[z($,s,new L(0),c,n)]},Gt=(t,n,i)=>{const{pubkey:a}=Ee(t),[s]=e.findProgramAddressSync([a.toBuffer()],te),[o]=e.findProgramAddressSync([a.toBuffer(),Uint8Array.from([1,1])],te);return(new G).getInstruction(te,$,r.programId,a,De(t),o,s,ie,n,i)},qt=(t,i,s,o,c,u,l,d,f)=>{const[p]=e.findProgramAddressSync([s.toBuffer()],te);return new X({space:i,name:t}).getInstruction(te,$,ee,s,o,r.programId,ie,c,u,l,d,f,ge,a,n,p,ye)},Zt=async(e,t,r,n)=>{const{pubkey:i,isSub:a,parent:s}=Ee(t);if(!s||!a)throw new C(j.InvalidSubdomain);const{registry:o}=await Le.retrieve(e,i);let c,u;n&&(c=s,u=(await Le.retrieve(e,s)).registry.owner);return F($,i,r,o.owner,void 0,c,u)};async function Jt(e,t,n,i,a){const s=await Me(t),o=await ze(s,void 0,se),c=await e.getMinimumBalanceForRentExemption(i+Le.HEADER_LEN);let u=[M($,r.programId,o,n,a,s,new H(c),new L(i),void 0,se,ae)];return u=u.concat(await ar(e,t,o,n,a)),u}async function Qt(e,t,r,n){const i=await Me(e),a=await ze(i,void 0,se);return[z($,a,new L(r),n,t)]}async function Yt(e,t,r,n,i){const a=await Me(t),s=await ze(a,void 0,se);let o=[F($,s,n,r,void 0)];const c=await Me(r.toString());return await ze(c,ae,void 0),o.push(await Nt(e,r.toString(),i,ae,se)),o=o.concat(await ar(e,t,s,n,i)),o}async function $t(e,t){const r=await Me(e),n=await ze(r,void 0,se),i=await Me(t.toString()),a=await ze(i,ae,se);return[U($,n,t,t),U($,a,t,t)]}async function _t(e){const t=await Me(e);return await ze(t,void 0,se)}async function er(e,t){const r=await Me(t),n=await ze(r,void 0,se),{registry:i}=await Le.retrieve(e,n);return i}async function tr(t,r){const n=await Me(r.toString()),i=await ze(n,ae,se);let a=await ir.retrieve(t,i);return[a.twitterHandle,new e(a.twitterRegistryKey)]}async function rr(t,r){const n=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:ae.toBase58()}}],i=await t.getProgramAccounts($,{filters:n});for(const t of i)if(t.account.data.length>Le.HEADER_LEN+32){let r=t.account.data.slice(Le.HEADER_LEN),n=p(ir.schema,ir,r);return[n.twitterHandle,new e(n.twitterRegistryKey)]}throw new C(j.AccountDoesNotExist)}async function nr(t,r){const n=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:new e(i.alloc(32,0)).toBase58()}}],a=await t.getProgramAccounts($,{filters:n});if(a.length>1)throw new C(j.MultipleRegistries);return a[0].account.data.slice(Le.HEADER_LEN)}class ir{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,t){let r=await e.getAccountInfo(t,"processed");if(!r)throw new C(j.InvalidReverseTwitter);return p(this.schema,ir,r.data.slice(Le.HEADER_LEN))}}async function ar(e,t,n,a,s){const o=await Me(a.toString()),c=await ze(o,ae,se);let u=d(ir.schema,new ir({twitterRegistryKey:n.toBytes(),twitterHandle:t}));return[M($,r.programId,c,a,s,o,new H(await e.getMinimumBalanceForRentExemption(u.length+Le.HEADER_LEN)),new L(u.length),ae,se,ae),z($,c,new L(0),i.from(u),ae)]}ir.schema=new Map([[ir,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const sr=new e("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class or{constructor(t){this.tag=t.tag,this.nameAccount=new e(t.nameAccount)}static deserialize(e){return f(this.schema,or,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new C(j.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(t,r){return await e.findProgramAddress([i.from("favourite_domain"),r.toBuffer()],t)}static getKeySync(t,r){return e.findProgramAddressSync([i.from("favourite_domain"),r.toBuffer()],t)}}or.schema=new Map([[or,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const cr=async(t,r)=>{const[n]=or.getKeySync(sr,new e(r)),i=await or.retrieve(t,n),a=await Ae(t,i.nameAccount);return{domain:i.nameAccount,reverse:a}};var ur;!function(e){e.DegenPoet1="DegenPoet#1"}(ur||(ur={}));const lr=new e("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD"),dr=(e,t)=>{const r=Se(t),n=Se(e),i=ve(n,void 0,we);return{domainKey:i,bgKey:ve(r,void 0,i)}},fr=e=>{if(e===ur.DegenPoet1)return lr;throw new C(j.InvalidCustomBg)};export{ne as BONFIDA_FIDA_BNB,ce as BONFIDA_USDC_BNB,we as CUSTOM_BG_TLD,ur as CustomBg,vt as ETH_ROA_RECORDS,j as ErrorType,or as FavouriteDomain,St as GUARDIANS,_ as HASH_PREFIX,ye as METAPLEX_ID,sr as NAME_OFFERS_ID,$ as NAME_PROGRAM_ID,Le as NameRegistryState,L as Numberu32,H as Numberu64,re as PYTH_FIDA_PRICE_ACC,fe as PYTH_MAPPING_ACC,he as RECORD_V1_SIZE,le as REFERRERS,te as REGISTER_PROGRAM_ID,ie as REVERSE_LOOKUP_CLASS,ee as ROOT_DOMAIN_ACCOUNT,me as Record,be as RecordVersion,ir as ReverseTwitterRegistryState,Bt as SELF_SIGNED,C as SNSError,oe as SOL_RECORD_SIG_LEN,de as TOKENS_SYM_MINT,se as TWITTER_ROOT_PARENT_REGISTRY_KEY,ae as TWITTER_VERIFICATION_AUTHORITY,ue as USDC_MINT,It as UTF8_ENCODED,pe as VAULT_OWNER,ge as WOLVES_COLLECTION_METADATA,Gt as burnDomain,G as burnInstruction,Qt as changeTwitterRegistryData,Yt as changeVerifiedPubkey,Te as check,Xe as checkSolRecord,M as createInstruction,O as createInstructionV3,Dt as createNameRegistry,Lt as createRecordInstruction,Ht as createRecordV2Instruction,K as createReverseInstruction,jt as createReverseName,ar as createReverseTwitterRegistry,Ot as createSolRecordInstruction,Ct as createSubdomain,V as createV2Instruction,Jt as createVerifiedTwitterRegistry,X as createWithNftInstruction,U as deleteInstruction,Nt as deleteNameRegistry,Ft as deleteRecordV2,$t as deleteTwitterRegistry,mt as deserializeRecord,Et as deserializeRecordV2Content,Kt as ethValidateRecordV2Content,Ie as findSubdomains,We as getAllDomains,Re as getAllRegisteredDomains,fr as getArtistPubkey,Ye as getArweaveRecord,yt as getBackgroundRecord,gt as getBackpackRecord,pt as getBscRecord,_e as getBtcRecord,dr as getCustomBgKeys,it as getDiscordRecord,tt as getDogeRecord,Ke as getDomainKey,Ee as getDomainKeySync,rt as getEmailRecord,$e as getEthRecord,cr as getFavoriteDomain,at as getGithubRecord,tr as getHandleAndRegistryKey,Me as getHashedName,Se as getHashedNameSync,wt as getInjectiveRecord,Qe as getIpfsRecord,et as getLtcRecord,ze as getNameAccountKey,ve as getNameAccountKeySync,He as getNameOwner,ut as getPicRecord,ft as getPointRecord,Ze as getRecord,qe as getRecordKeySync,Rt as getRecordV2Key,Je as getRecords,st as getRedditRecord,Oe as getReverseKey,De as getReverseKeySync,lt as getShdwRecord,dt as getSolRecord,ct as getTelegramRecord,Ce as getTokenizedDomains,rr as getTwitterHandleandRegistryKeyViaFilters,ot as getTwitterRecord,er as getTwitterRegistry,nr as getTwitterRegistryData,_t as getTwitterRegistryKey,nt as getUrlRecord,Fe as performReverseLookup,Ue as performReverseLookupBatch,q as reallocInstruction,Pt as registerDomainName,qt as registerWithNft,Ge as resolve,xe as retrieveNftOwner,Ne as retrieveNfts,Ae as reverseLookup,ke as reverseLookupBatch,ht as serializeRecord,Wt as serializeRecordV2Content,bt as serializeSolRecord,F as transferInstruction,xt as transferNameOwnership,Zt as transferSubdomain,z as updateInstruction,Tt as updateNameRegistryData,Mt as updateRecordInstruction,zt as updateRecordV2Instruction,Xt as updateSolRecordInstruction,Ut as validateRecordV2Content,kt as verifyRightOfAssociation,At as verifyStaleness,Vt as writRoaRecordV2};
@@ -2,6 +2,7 @@
2
2
  import { Record } from "./types/record";
3
3
  import { Connection, PublicKey } from "@solana/web3.js";
4
4
  export declare const GUARDIANS: Map<Record, PublicKey>;
5
+ export declare const ETH_ROA_RECORDS: Set<Record>;
5
6
  export declare const verifyStaleness: (connection: Connection, record: Record, domain: string) => Promise<boolean>;
6
7
  export declare const verifyRightOfAssociation: (connection: Connection, record: Record, domain: string, verifier: Buffer) => Promise<boolean>;
7
8
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonfida/spl-name-service",
3
- "version": "2.0.0-alpha.17",
3
+ "version": "2.0.0-alpha.18",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"