@bonfida/spl-name-service 1.5.0 → 1.6.0

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