@bonfida/spl-name-service 2.0.0-alpha.2 → 2.0.0-alpha.3

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.
@@ -2,6 +2,7 @@
2
2
  import { Buffer } from "buffer";
3
3
  import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
4
4
  import { Record } from "./types/record";
5
+ import { RecordV2 } from "./record_v2";
5
6
  /**
6
7
  * Creates a name account with the given rent budget, allocated space, owner and class.
7
8
  *
@@ -97,24 +98,24 @@ export declare const createRecordInstruction: (connection: Connection, domain: s
97
98
  * @param connection The Solana RPC connection object
98
99
  * @param domain The .sol domain name
99
100
  * @param record The record enum object
100
- * @param data The data (as a UTF-8 string) to store in the record account
101
+ * @param recordV2 The `RecordV2` object that will be serialized into the record via the update instruction
101
102
  * @param owner The owner of the domain
102
103
  * @param payer The fee payer of the transaction
103
104
  * @returns
104
105
  */
105
- export declare const createRecordV2Instruction: (connection: Connection, domain: string, record: Record, space: number, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction>;
106
+ export declare const createRecordV2Instruction: (connection: Connection, domain: string, record: Record, recordV2: RecordV2, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction>;
106
107
  export declare const updateRecordInstruction: (connection: Connection, domain: string, record: Record, data: string, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction[]>;
107
108
  /**
108
109
  * This function updates the content of a record V2. The data serialization follows the SNS-IP 1 guidelines
109
110
  * @param connection The Solana RPC connection object
110
111
  * @param domain The .sol domain name
111
112
  * @param record The record enum object
112
- * @param data The data to write in the record
113
+ * @param recordV2 The `RecordV2` object to serialize into the record
113
114
  * @param owner The owner of the record/domain
114
115
  * @param payer The fee payer of the transaction
115
116
  * @returns The update record instructions
116
117
  */
117
- export declare const updateRecordV2Instruction: (connection: Connection, domain: string, record: Record, data: string, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction[]>;
118
+ export declare const updateRecordV2Instruction: (connection: Connection, domain: string, record: Record, recordV2: RecordV2, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction[]>;
118
119
  /**
119
120
  * This function deletes a record v2 and returns the rent to the fee payer
120
121
  * @param domain The .sol domain name
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("buffer"),r=require("@solana/web3.js"),t=require("@solana/spl-token"),o=require("bn.js"),n=require("borsh"),i=require("@ethersproject/sha2"),s=require("@pythnetwork/client"),a=require("bech32-buffer"),c=require("tweetnacl"),u=require("bs58"),p=require("ipaddr.js"),d=require("punycode"),f=require("@ethersproject/hash"),l=require("@ethersproject/transactions"),g=require("@ethersproject/address");function y(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var w,x=y(c);exports.ErrorType=void 0,(w=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",w.InvalidSubdomain="InvalidSubdomain",w.FavouriteDomainNotFound="FavouriteDomainNotFound",w.MissingParentOwner="MissingParentOwner",w.U32Overflow="U32Overflow",w.InvalidBufferLength="InvalidBufferLength",w.U64Overflow="U64Overflow",w.NoRecordData="NoRecordData",w.InvalidRecordData="InvalidRecordData",w.UnsupportedRecord="UnsupportedRecord",w.InvalidEvmAddress="InvalidEvmAddress",w.InvalidInjectiveAddress="InvalidInjectiveAddress",w.InvalidARecord="InvalidARecord",w.InvalidAAAARecord="InvalidAAAARecord",w.InvalidRecordInput="InvalidRecordInput",w.InvalidSignature="InvalidSignature",w.AccountDoesNotExist="AccountDoesNotExist",w.MultipleRegistries="MultipleRegistries",w.InvalidReverseTwitter="InvalidReverseTwitter",w.NoAccountData="NoAccountData",w.InvalidInput="InvalidInput",w.UnsupportedSignature="UnsupportedSignature",w.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",w.RecordIsNotSigned="RecordIsNotSigned",w.UnsupportedSignatureType="UnsupportedSignatureType";class h extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,h)}}class m extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(4===t.length)return t;if(t.length>4)throw new h(exports.ErrorType.U32Overflow);const o=e.Buffer.alloc(4);return t.copy(o),o}static fromBuffer(e){if(4!==e.length)throw new h(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class R extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(8===t.length)return t;if(t.length>8)throw new h(exports.ErrorType.U64Overflow);const o=e.Buffer.alloc(8);return t.copy(o),o}static fromBuffer(e){if(8!==e.length)throw new h(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function S(t,o,n,i,s,a,c,u,p,d,f){const l=[e.Buffer.from(Int8Array.from([0])),new m(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],g=e.Buffer.concat(l),y=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1}];return p?y.push({pubkey:p,isSigner:!0,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?y.push({pubkey:d,isSigner:!1,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),f&&y.push({pubkey:f,isSigner:!0,isWritable:!1}),new r.TransactionInstruction({keys:y,programId:t,data:g})}function b(t,o,n,i,s){const a=[e.Buffer.from(Int8Array.from([1])),n.toBuffer(),new m(i.length).toBuffer(),i],c=e.Buffer.concat(a),u=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:u,programId:t,data:c})}function v(t,o,n,i,s,a,c){const u=[e.Buffer.from(Int8Array.from([2])),n.toBuffer()],p=e.Buffer.concat(u),d=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c||i,isSigner:!0,isWritable:!1}];return s&&d.push({pubkey:s,isSigner:!0,isWritable:!1}),c&&a&&(s||d.push({pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new r.TransactionInstruction({keys:d,programId:t,data:p})}function A(t,o,n,i){const s=[e.Buffer.from(Int8Array.from([3]))],a=e.Buffer.concat(s),c=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:c,programId:t,data:a})}class E{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return n.serialize(E.schema,this)}getInstruction(o,n,i,s,a,c,u,p,d,f,l){const g=e.Buffer.from(this.serialize()),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:r.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:f,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:y,programId:o,data:g})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(e){this.tag=5,this.name=e.name}serialize(){return n.serialize(B.schema,this)}getInstruction(t,o,n,i,s,a,c,u,p){const d=e.Buffer.from(this.serialize());let f=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0}];if(u){if(!p)throw new h(exports.ErrorType.MissingParentOwner);f.push({pubkey:u,isSigner:!1,isWritable:!0}),f.push({pubkey:p,isSigner:!0,isWritable:!1})}return new r.TransactionInstruction({keys:f,programId:t,data:d})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class I{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return n.serialize(I.schema,this)}getInstruction(t,o,n,i,s,a,c,u,p,d,f,l,g,y,w,x,h){const m=e.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:n,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!0}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!1}),R.push({pubkey:f,isSigner:!1,isWritable:!1}),R.push({pubkey:l,isSigner:!1,isWritable:!1}),R.push({pubkey:g,isSigner:!1,isWritable:!0}),R.push({pubkey:y,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),h&&R.push({pubkey:h,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:R,programId:t,data:m})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const T=new r.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),k=e.Buffer.from("tokenized_name");var P;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(P||(P={}));class N{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new r.PublicKey(e.nameAccount),this.owner=new r.PublicKey(e.owner),this.nftMint=new r.PublicKey(e.nftMint)}static deserialize(e){return n.deserialize(this.schema,N,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("nft_record"),t.toBuffer()],o)}}N.schema=new Map([[N,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const D=new r.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),K="SPL Name Service",W=new r.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),O=new r.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),U=new r.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),L=new r.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),C=new r.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),M=new r.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),z=new r.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),_=new r.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),H=new r.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),G=[new r.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new r.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new r.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new r.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new r.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe")],j=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),V=new r.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),F=new r.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),q=r=>{const t=K+r,o=i.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")},X=(t,o,n)=>{const i=[t];o?i.push(o.toBuffer()):i.push(e.Buffer.alloc(32)),n?i.push(n.toBuffer()):i.push(e.Buffer.alloc(32));const[s]=r.PublicKey.findProgramAddressSync(i,D);return s};async function Y(e,r){const t=q(r.toBase58()),n=X(t,C),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoAccountData);const s=new o(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+s).toString()}async function Z(e,r){let t=[];for(let e of r){const r=q(e.toBase58()),o=X(r,C);t.push(o)}return(await ne.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const J=(e,r=W)=>{let t=q(e);return{pubkey:X(t,void 0,r),hashed:t}},$=(r,t)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t||0]).toString().concat(o[0]),{pubkey:n}=J(o[1]);return{...J(r,n),isSub:!0,parent:n}}if(3===o.length&&t){const{pubkey:r}=J(o[2]),{pubkey:t}=J("\0".concat(o[1]),r),n=e.Buffer.from([1]).toString();return{...J(n.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new h(exports.ErrorType.InvalidInput);return{...J(r,W),isSub:!1,parent:void 0}};const Q=(e,r)=>{const{pubkey:t,parent:o}=$(e),n=q(t.toBase58());return X(n,C,r?o:void 0)},ee=(e,r)=>{if(!e)throw new h(r)},re=async(e,o)=>{try{const[n]=await r.PublicKey.findProgramAddress([k,o.toBuffer()],T);if("0"===(await t.getMint(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],s=await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:i});if(1!=s.length)return;return new r.PublicKey(s[0].account.data.slice(32,64))}catch{return}},te=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],oe=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(T,{filters:t})})(e,r.mint);if(1===t.length)return N.deserialize(t[0].account.data)};class ne{constructor(e){this.parentName=new r.PublicKey(e.parentName),this.owner=new r.PublicKey(e.owner),this.class=new r.PublicKey(e.class)}static async retrieve(e,r){var t;const o=await e.getAccountInfo(r);if(!o)throw new h(exports.ErrorType.AccountDoesNotExist);let i=n.deserializeUnchecked(this.schema,ne,o.data);i.data=null===(t=o.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:i,nftOwner:await re(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),o=e=>{if(!e)return;const r=n.deserializeUnchecked(this.schema,ne,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>o(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const o=[...r];for(;o.length>0;)t.push(...await this._retrieveBatch(e,o.splice(0,100)));return t}}async function ie(e,r){if(!await e.getAccountInfo(r))throw new h(exports.ErrorType.AccountDoesNotExist);return ne.retrieve(e,r)}async function se(r){const t=K+r,o=i.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")}async function ae(t,o,n){const i=[t];o?i.push(o.toBuffer()):i.push(e.Buffer.alloc(32)),n?i.push(n.toBuffer()):i.push(e.Buffer.alloc(32));const[s]=await r.PublicKey.findProgramAddress(i,D);return s}ne.HEADER_LEN=96,ne.schema=new Map([[ne,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const ce=async(e,r=W)=>{let t=await se(e);return{pubkey:await ae(t,void 0,r),hashed:t}},ue=async(r,t=!1)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t?1:0]).toString().concat(o[0]),{pubkey:n}=await ce(o[1]);return{...await ce(r,n),isSub:!0,parent:n}}if(3===o.length&&t){const{pubkey:r}=await ce(o[2]),{pubkey:t}=await ce("\0".concat(o[1]),r),n=e.Buffer.from([1]).toString();return{...await ce(n.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new h(exports.ErrorType.InvalidInput);return{...await ce(r,W),isSub:!1,parent:void 0}};var pe;exports.Record=void 0,(pe=exports.Record||(exports.Record={})).IPFS="IPFS",pe.ARWV="ARWV",pe.SOL="SOL",pe.ETH="ETH",pe.BTC="BTC",pe.LTC="LTC",pe.DOGE="DOGE",pe.Email="email",pe.Url="url",pe.Discord="discord",pe.Github="github",pe.Reddit="reddit",pe.Twitter="twitter",pe.Telegram="telegram",pe.Pic="pic",pe.SHDW="SHDW",pe.POINT="POINT",pe.BSC="BSC",pe.Injective="INJ",pe.Backpack="backpack",pe.A="A",pe.AAAA="AAAA",pe.CNAME="CNAME",pe.TXT="TXT";const de=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]]);var fe;exports.RecordVersion=void 0,(fe=exports.RecordVersion||(exports.RecordVersion={}))[fe.V1=1]="V1",fe[fe.V2=2]="V2";const le=(e,r,t)=>x.sign.detached.verify(e,r,t.toBytes()),ge=(e,r)=>{const{pubkey:t}=$(r+"."+e,exports.RecordVersion.V1);return t};async function ye(e,r,t,o){const n=ge(r,t);let{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoRecordData);if(o)return xe(i,t,n);const s=de.get(t);return i.data=i.data.slice(0,s),i}const we=async(e,r)=>await ye(e,r,exports.Record.SOL),xe=(r,t,o)=>{const n=null==r?void 0:r.data;if(!n)return;const i=de.get(t),s=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(n);if(!i)return n.slice(0,s).toString("utf-8");if(i&&s!==i){const r=n.slice(0,s).toString("utf-8");if(t===exports.Record.Injective){const e=a.decode(r);if("inj"===e.prefix&&20===e.data.length)return r}else if(t===exports.Record.BSC||t===exports.Record.ETH){const t=r.slice(0,2),o=r.slice(2);if("0x"===t&&20===e.Buffer.from(o,"hex").length)return r}else if((t===exports.Record.A||t===exports.Record.AAAA)&&p.isValid(r))return r;throw new h(exports.ErrorType.InvalidRecordData)}if(t===exports.Record.SOL){const t=new TextEncoder,i=e.Buffer.concat([n.slice(0,32),o.toBuffer()]),s=t.encode(i.toString("hex"));if(le(s,n.slice(32),r.owner))return u.encode(n.slice(0,32))}else{if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+n.slice(0,i).toString("hex");if(t===exports.Record.Injective)return a.encode("inj",n.slice(0,i),"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return p.fromByteArray([...n.slice(0,i)]).toString()}throw new h(exports.ErrorType.InvalidRecordData)},he=(r,t)=>{if(!de.get(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(r=d.encode(r)),e.Buffer.from(r,"utf-8");if(t===exports.Record.SOL)throw new h(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(t===exports.Record.ETH||t===exports.Record.BSC)return ee("0x"===r.slice(0,2),exports.ErrorType.InvalidEvmAddress),e.Buffer.from(r.slice(2),"hex");if(t===exports.Record.Injective){const t=a.decode(r);return ee("inj"===t.prefix,exports.ErrorType.InvalidInjectiveAddress),ee(20===t.data.length,exports.ErrorType.InvalidInjectiveAddress),e.Buffer.from(t.data)}if(t===exports.Record.A){const t=p.parse(r).toByteArray();return ee(4===t.length,exports.ErrorType.InvalidARecord),e.Buffer.from(t)}if(t===exports.Record.AAAA){const t=p.parse(r).toByteArray();return ee(16===t.length,exports.ErrorType.InvalidAAAARecord),e.Buffer.from(t)}throw new h(exports.ErrorType.InvalidRecordInput)},me=(r,t,o,n)=>{const i=e.Buffer.concat([r.toBuffer(),t.toBuffer()]),s=(new TextEncoder).encode(i.toString("hex")),a=le(s,n,o);return ee(a,exports.ErrorType.InvalidSignature),e.Buffer.concat([r.toBuffer(),n])};var Re,Se;exports.GuardianSig=void 0,(Re=exports.GuardianSig||(exports.GuardianSig={}))[Re.None=0]="None",Re[Re.Solana=1]="Solana",Re[Re.Ethereum=2]="Ethereum",Re[Re.Injective=3]="Injective",exports.UserSig=void 0,(Se=exports.UserSig||(exports.UserSig={}))[Se.None=0]="None",Se[Se.Solana=1]="Solana";const be={signatureType:exports.UserSig.None,signature:Buffer.alloc(0)},ve={signatureType:exports.GuardianSig.None,signature:Buffer.alloc(0)},Ae=new Map([[exports.Record.Backpack,new r.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Ee=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME]),Be=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),Ie=e=>{switch(e){case exports.GuardianSig.None:return 0;case exports.GuardianSig.Solana:return 64;case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return 65;case exports.UserSig.None:return 0;case exports.UserSig.Solana:return 64;default:throw new h(exports.ErrorType.UnsupportedSignature,`Unsupported signature type: ${e}`)}},Te=e=>{throw new h(exports.ErrorType.RecordDoestNotSupportGuardianSig)},ke=(e,r,t)=>x.sign.detached.verify(e,r,t),Pe=(e,r,t)=>{const o=f.hashMessage(e);return l.recoverAddress(o,r)===g.getAddress(t)},Ne=(e,r,t,o)=>{switch(o){case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return Pe(e.toString(),r.toString(),t.toString());case exports.GuardianSig.Solana:return ke(e,r,t);case exports.GuardianSig.None:throw new h(exports.ErrorType.RecordIsNotSigned);default:throw new h(exports.ErrorType.UnsupportedSignatureType)}},De=(e,r,t,o)=>{switch(o){case exports.UserSig.Solana:return ke(e,r,t);case exports.UserSig.None:throw new h(exports.ErrorType.RecordIsNotSigned);default:throw new h(exports.ErrorType.UnsupportedSignatureType)}};class Ke{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return n.serialize(Ke.schema,this)}static deserialize(e){return n.deserialize(this.schema,Ke,e)}}Ke.LEN=8,Ke.schema=new Map([[Ke,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class We{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return Ke.LEN+this.buffer.length}static deserializeUnchecked(e){const r=n.deserializeUnchecked(Ke.schema,Ke,e);return new We({header:r,buffer:Buffer.from(e.slice(Ke.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return Oe(this.getContent(),e)}getContent(){const e=Ie(this.header.guardianSignature)+Ie(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,r,t=be,o=ve){const n=Ue(e,r),i=Buffer.concat([t.signature,o.signature,n]),s=new Ke({userSignature:t.signatureType,guardianSignature:o.signatureType,contentLength:i.length});return new We({header:s,buffer:i})}checkGuardianSignature(e,r){const t=Ie(this.header.guardianSignature),o=Ie(this.header.userSignature),n=Buffer.from(this.buffer.slice(o,o+t));return Ne(e,n,r,this.header.guardianSignature)}checkUserSignature(e,r){const t=Ie(this.header.userSignature),o=Buffer.from(this.buffer.slice(0,t));return De(e,o,r,this.header.userSignature)}static async retrieve(e,r,t,o){const n=Le(t,r),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.InvalidRecordData);const s=this.deserializeUnchecked(i.data),a=s.getContent(),c=Buffer.concat([n.toBuffer(),a]);if(!(null==o?void 0:o.skipGuardianSig)){const e=Be.has(r)?Buffer.from(s.getContent().slice(32)):Te();s.checkGuardianSignature(c,e)}return(null==o?void 0:o.skipUserSig)||s.checkUserSignature(c,i.owner.toBuffer()),s}static async retrieveBatch(e,r,t){const o=r.map((e=>Le(t,e))),n=await ne.retrieveBatch(e,o),i=[];for(let e of n)try{if(!(null==e?void 0:e.data)){i.push(void 0);continue}const r=We.deserializeUnchecked(null==e?void 0:e.data);i.push(r)}catch{i.push(void 0)}return i}}const Oe=(e,t)=>{if(Ee.has(t)){const r=e.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?d.decode(r):r}if(t===exports.Record.SOL)return new r.PublicKey(e).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+e.toString("hex");if(t===exports.Record.Injective)return a.encode("inj",e,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return p.fromByteArray([...e]).toString();throw new h(exports.ErrorType.InvalidARecord)},Ue=(e,t)=>{if(Ee.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(e=d.encode(e)),Buffer.from(e,"utf-8");if(t===exports.Record.SOL)return new r.PublicKey(e).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return ee("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(t===exports.Record.Injective){const r=a.decode(e);return ee("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),ee(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(r.data)}if(t===exports.Record.A){const r=p.parse(e).toByteArray();return ee(4===r.length,exports.ErrorType.InvalidARecord),Buffer.from(r)}if(t===exports.Record.AAAA){const r=p.parse(e).toByteArray();return ee(16===r.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(r)}throw new h(exports.ErrorType.InvalidARecord)},Le=(e,r)=>{const{pubkey:t}=$(r+"."+e,exports.RecordVersion.V2);return t};async function Ce(e,t,o,n,i,s,a,c){const u=await se(t),p=await ae(u,a,c),d=s||await e.getMinimumBalanceForRentExemption(o);let f;if(c){const{registry:r}=await ie(e,c);f=r.owner}return S(D,r.SystemProgram.programId,p,i,n,u,new R(d),new m(o),a,c,f)}async function Me(e,r,t,o,n){const i=await se(r),s=await ae(i,o,n);let a;a=o||(await ne.retrieve(e,s)).registry.owner;return A(D,s,t,a)}const ze=async(e,t,o,n,i)=>{let[s]=await r.PublicKey.findProgramAddress([O.toBuffer()],O),a=await se(e.toBase58()),c=await ae(a,s,n);return[[],[new B({name:t}).getInstruction(O,r.SYSVAR_RENT_PUBKEY,D,W,c,s,o,n,i)]]},_e=async(e,t,o,n,i,s)=>{ee(o!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=$(`${o}.${t}`,exports.RecordVersion.V1),p=he(n,o).length,d=await e.getMinimumBalanceForRentExemption(p+ne.HEADER_LEN);return S(D,r.SystemProgram.programId,a,i,s,c,new R(d),new m(p),void 0,u,i)},He=async(e,t,o,n,i,s)=>{const{pubkey:a,hashed:c,parent:u}=$(`${o}.${t}`,exports.RecordVersion.V2),p=await e.getMinimumBalanceForRentExemption(n+ne.HEADER_LEN);return S(D,r.SystemProgram.programId,a,i,s,c,new R(p),new m(n),void 0,u,i)},Ge=async(e,t,o,n,i,s)=>{const{pubkey:a,hashed:c,parent:u}=$(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=me(o,a,n,i).length,d=await e.getMinimumBalanceForRentExemption(p+ne.HEADER_LEN);return[S(D,r.SystemProgram.programId,a,n,s,c,new R(d),new m(p),void 0,u,n)]};class je{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new h(exports.ErrorType.InvalidReverseTwitter);return n.deserializeUnchecked(this.schema,je,t.data.slice(ne.HEADER_LEN))}}async function Ve(t,o,i,s,a){const c=await se(s.toString()),u=await ae(c,M,z);let p=n.serialize(je.schema,new je({twitterRegistryKey:i.toBytes(),twitterHandle:o}));return[S(D,r.SystemProgram.programId,u,s,a,c,new R(await t.getMinimumBalanceForRentExemption(p.length+ne.HEADER_LEN)),new m(p.length),M,z,M),b(D,u,new m(0),e.Buffer.from(p),M)]}je.schema=new Map([[je,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Fe=new r.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class qe{constructor(e){this.tag=e.tag,this.nameAccount=new r.PublicKey(e.nameAccount)}static deserialize(e){return n.deserialize(this.schema,qe,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new h(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}static getKeySync(t,o){return r.PublicKey.findProgramAddressSync([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}}qe.schema=new Map([[qe,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.BONFIDA_FIDA_BNB=L,exports.BONFIDA_USDC_BNB=_,exports.FavouriteDomain=qe,exports.Guardians=Ae,exports.HASH_PREFIX=K,exports.NAME_OFFERS_ID=Fe,exports.NAME_PROGRAM_ID=D,exports.NameRegistryState=ne,exports.NullGuardianSig=ve,exports.NullUserSig=be,exports.Numberu32=m,exports.Numberu64=R,exports.PYTH_FIDA_PRICE_ACC=U,exports.PYTH_MAPPING_ACC=V,exports.RECORD_V1_SIZE=de,exports.REFERRERS=G,exports.REGISTER_PROGRAM_ID=O,exports.REVERSE_LOOKUP_CLASS=C,exports.ROOT_DOMAIN_ACCOUNT=W,exports.RecordV2=We,exports.RecordV2Header=Ke,exports.ReverseTwitterRegistryState=je,exports.SELF_SIGNED=Be,exports.SNSError=h,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=j,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=z,exports.TWITTER_VERIFICATION_AUTHORITY=M,exports.USDC_MINT=H,exports.UTF8_ENCODED=Ee,exports.VAULT_OWNER=F,exports.changeTwitterRegistryData=async function(e,r,t,o){const n=await se(e),i=await ae(n,void 0,z);return[b(D,i,new m(t),o,r)]},exports.changeVerifiedPubkey=async function(e,r,t,o,n){const i=await se(r),s=await ae(i,void 0,z);let a=[v(D,s,o,t,void 0)];const c=await se(t.toString());return await ae(c,M,void 0),a.push(await Me(e,t.toString(),n,M,z)),a=a.concat(await Ve(e,r,s,o,n)),a},exports.check=ee,exports.checkSolRecord=le,exports.createInstruction=S,exports.createInstructionV3=I,exports.createNameRegistry=Ce,exports.createRecordInstruction=_e,exports.createRecordV2Instruction=He,exports.createReverseInstruction=B,exports.createReverseName=ze,exports.createReverseTwitterRegistry=Ve,exports.createSolRecordInstruction=Ge,exports.createSubdomain=async(e,r,t,o=2e3)=>{const n=[],i=r.split(".")[0];if(!i)throw new h(exports.ErrorType.InvalidSubdomain);const{parent:s,pubkey:a}=$(r),c=await e.getMinimumBalanceForRentExemption(o+ne.HEADER_LEN),u=await Ce(e,"\0".concat(i),o,t,t,c,void 0,s);n.push(u);const p=Q(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await ze(a,"\0".concat(i),t,s,t);n.push(...e)}return[[],n]},exports.createV2Instruction=E,exports.createVerifiedTwitterRegistry=async function(e,t,o,n,i){const s=await se(t),a=await ae(s,void 0,z),c=await e.getMinimumBalanceForRentExemption(n+ne.HEADER_LEN);let u=[S(D,r.SystemProgram.programId,a,o,i,s,new R(c),new m(n),void 0,z,M)];return u=u.concat(await Ve(e,t,a,o,i)),u},exports.deleteInstruction=A,exports.deleteNameRegistry=Me,exports.deleteRecordV2=async(e,r,t,o)=>{const{pubkey:n}=$(`${r}.${e}`,exports.RecordVersion.V2);return A(D,n,o,t)},exports.deleteTwitterRegistry=async function(e,r){const t=await se(e),o=await ae(t,void 0,z),n=await se(r.toString()),i=await ae(n,M,z);return[A(D,o,r,r),A(D,i,r,r)]},exports.deserializeRecord=xe,exports.deserializeRecordV2=Oe,exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:C.toBase58()}}],o=await e.getProgramAccounts(D,{filters:t}),n=await Y(e,r),i=o.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),s=i.map((e=>$(e+"."+n).pubkey)),a=await e.getMultipleAccountsInfo(s);return i.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:W.toBase58()}}];return(await e.getProgramAccounts(D,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:W.toBase58()}}];return await e.getProgramAccounts(D,{dataSlice:{offset:32,length:32},filters:r})},exports.getArweaveRecord=async(e,r)=>await ye(e,r,exports.Record.ARWV,!0),exports.getBackpackRecord=async(e,r)=>await ye(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await ye(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await ye(e,r,exports.Record.BTC,!0),exports.getDiscordRecord=async(e,r)=>await ye(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await ye(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ue,exports.getDomainKeySync=$,exports.getEmailRecord=async(e,r)=>await ye(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await ye(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(e,t)=>{const[o]=qe.getKeySync(Fe,new r.PublicKey(t)),n=await qe.retrieve(e,o),i=await Y(e,n.nameAccount);return{domain:n.nameAccount,reverse:i}},exports.getGithubRecord=async(e,r)=>await ye(e,r,exports.Record.Github,!0),exports.getGuardianPublickey=Te,exports.getHandleAndRegistryKey=async function(e,t){const o=await se(t.toString()),n=await ae(o,M,z);let i=await je.retrieve(e,n);return[i.twitterHandle,new r.PublicKey(i.twitterRegistryKey)]},exports.getHashedName=se,exports.getHashedNameSync=q,exports.getInjectiveRecord=async(e,r)=>await ye(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await ye(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await ye(e,r,exports.Record.LTC,!0),exports.getMessageToSign=(e,r,t)=>{const o=Ue(e,t),n=Le(r,t);return Buffer.concat([n.toBuffer(),o])},exports.getNameAccountKey=ae,exports.getNameAccountKeySync=X,exports.getNameOwner=ie,exports.getPicRecord=async(e,r)=>await ye(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await ye(e,r,exports.Record.POINT,!0),exports.getRecord=ye,exports.getRecordKeySync=ge,exports.getRecordV2Key=Le,exports.getRecords=async function(e,r,t,o){const n=t.map((e=>ge(r,e))),i=await ne.retrieveBatch(e,n);return o?i.map(((e,o)=>{if(e)return xe(e,t[o],ge(r,t[o]))})):i},exports.getRedditRecord=async(e,r)=>await ye(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:o}=await ue(e),n=await se(t.toBase58());return await ae(n,C,r?o:void 0)},exports.getReverseKeySync=Q,exports.getShdwRecord=async(e,r)=>await ye(e,r,exports.Record.SHDW,!0),exports.getSignatureByteLength=Ie,exports.getSolRecord=we,exports.getTelegramRecord=async(e,r)=>await ye(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const o=await(async(e,r)=>{const o=[...te(r.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>oe(e,r)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,r);return(await Z(e,o.map((e=>e.nameAccount)))).map(((e,r)=>({key:o[r].nameAccount,mint:o[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(e,t){const o=[{memcmp:{offset:0,bytes:z.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:M.toBase58()}}],i=await e.getProgramAccounts(D,{filters:o});for(const e of i)if(e.account.data.length>ne.HEADER_LEN+32){let t=e.account.data.slice(ne.HEADER_LEN),o=n.deserializeUnchecked(je.schema,je,t);return[o.twitterHandle,new r.PublicKey(o.twitterRegistryKey)]}throw new h(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await ye(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await se(r),o=await ae(t,void 0,z),{registry:n}=await ne.retrieve(e,o);return n},exports.getTwitterRegistryData=async function(t,o){const n=[{memcmp:{offset:0,bytes:z.toBase58()}},{memcmp:{offset:32,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:new r.PublicKey(e.Buffer.alloc(32,0)).toBase58()}}],i=await t.getProgramAccounts(D,{filters:n});if(i.length>1)throw new h(exports.ErrorType.MultipleRegistries);return i[0].account.data.slice(ne.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await se(e);return await ae(r,void 0,z)},exports.getUrlRecord=async(e,r)=>await ye(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await se(r.toBase58()),n=await ae(t,C),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoAccountData);const s=new o(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+s).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await se(e.toBase58()),o=await ae(r,C);t.push(o)}return(await ne.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.registerDomainName=async(e,o,n,i,a,c=H,u)=>{const[p]=r.PublicKey.findProgramAddressSync([O.toBuffer()],O),d=q(o),f=X(d,void 0,W),l=q(f.toBase58()),g=X(l,p),[y]=r.PublicKey.findProgramAddressSync([f.toBuffer()],O),w=G.findIndex((e=>null==u?void 0:u.equals(e)));let x;const m=[];if(-1!==w&&u){x=t.getAssociatedTokenAddressSync(c,u,!0);const r=await e.getAccountInfo(x);if(!(null==r?void 0:r.data)){const e=t.createAssociatedTokenAccountInstruction(i,x,u,c);m.push(e)}}const R=new s.PythHttpClient(e,s.getPythProgramKeyForCluster("mainnet-beta")),S=await R.getData(),b=j.get(c.toBase58());if(!b)throw new h(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const v=S.productPrice.get("Crypto."+b+"/USD"),A=S.productFromSymbol.get("Crypto."+b+"/USD"),E=t.getAssociatedTokenAddressSync(c,F),B=new I({name:o,space:n,referrerIdxOpt:-1!=w?w:null}).getInstruction(O,D,W,f,g,r.SystemProgram.programId,p,i,a,V,v.productAccountKey,new r.PublicKey(A.price_account),E,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,y,x);return m.push(B),[[],m]},exports.resolve=async(t,o)=>{const{pubkey:n}=$(o),{registry:i,nftOwner:s}=await ne.retrieve(t,n);if(s)return s;try{const n=ge(o,exports.Record.SOL),s=await we(t,o);if(!(null==s?void 0:s.data))throw new h(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=e.Buffer.concat([s.data.slice(0,32),n.toBuffer()]),u=a.encode(c.toString("hex"));if(!le(u,s.data.slice(32),i.owner))throw new h(exports.ErrorType.InvalidSignature);return new r.PublicKey(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return i.owner},exports.retrieveNftOwner=re,exports.retrieveNfts=async e=>{const t=await e.getProgramAccounts(T,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((e=>new r.PublicKey(e.account.data.slice(66,98))))},exports.reverseLookup=Y,exports.reverseLookupBatch=Z,exports.serializeRecord=he,exports.serializeRecordV2Content=Ue,exports.serializeSolRecord=me,exports.transferInstruction=v,exports.transferNameOwnership=async function(e,r,t,o,n,i){const s=await se(r),a=await ae(s,o,n);let c;return c=o||(await ne.retrieve(e,a)).registry.owner,v(D,a,t,c,o,n,i)},exports.updateInstruction=b,exports.updateNameRegistryData=async function(e,r,t,o,n,i){const s=await se(r),a=await ae(s,n,i);let c;return c=n||(await ne.retrieve(e,a)).registry.owner,b(D,a,new m(t),o,c)},exports.updateRecordInstruction=async(e,r,t,o,n,i)=>{ee(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:s}=$(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(s);ee(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=he(o,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[A(D,s,i,n),await _e(e,r,t,o,n,i)];return[b(D,s,new m(0),c,n)]},exports.updateRecordV2Instruction=async(r,t,o,n,i,s)=>{const{pubkey:a}=$(`${o}.${t}`,exports.RecordVersion.V2),c=await r.getAccountInfo(a),u=We.new(n,o).serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[A(D,a,s,i),await He(r,t,o,u.length,i,s),b(D,a,new m(0),e.Buffer.from(u),i)];return[b(D,a,new m(0),e.Buffer.from(u),i)]},exports.updateSolRecordInstruction=async(e,r,t,o,n,i)=>{const{pubkey:s}=$(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(s);if(ee(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[A(D,s,i,o),await Ge(e,r,t,o,n,i)];const c=me(t,s,o,n);return[b(D,s,new m(0),c,o)]},exports.verifyEthereumSignature=Pe,exports.verifyGuardianSignature=Ne,exports.verifyInjectiveSignature=(e,r,t)=>{throw new Error("TODO")},exports.verifySolanaSignature=ke,exports.verifyUserSignature=De;
1
+ "use strict";var e=require("buffer"),r=require("@solana/web3.js"),t=require("@solana/spl-token"),o=require("bn.js"),n=require("borsh"),i=require("@ethersproject/sha2"),s=require("@pythnetwork/client"),a=require("bech32-buffer"),c=require("tweetnacl"),u=require("bs58"),p=require("ipaddr.js"),d=require("punycode"),f=require("@ethersproject/hash"),l=require("@ethersproject/transactions"),g=require("@ethersproject/address");function y(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var w,x=y(c);exports.ErrorType=void 0,(w=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",w.InvalidSubdomain="InvalidSubdomain",w.FavouriteDomainNotFound="FavouriteDomainNotFound",w.MissingParentOwner="MissingParentOwner",w.U32Overflow="U32Overflow",w.InvalidBufferLength="InvalidBufferLength",w.U64Overflow="U64Overflow",w.NoRecordData="NoRecordData",w.InvalidRecordData="InvalidRecordData",w.UnsupportedRecord="UnsupportedRecord",w.InvalidEvmAddress="InvalidEvmAddress",w.InvalidInjectiveAddress="InvalidInjectiveAddress",w.InvalidARecord="InvalidARecord",w.InvalidAAAARecord="InvalidAAAARecord",w.InvalidRecordInput="InvalidRecordInput",w.InvalidSignature="InvalidSignature",w.AccountDoesNotExist="AccountDoesNotExist",w.MultipleRegistries="MultipleRegistries",w.InvalidReverseTwitter="InvalidReverseTwitter",w.NoAccountData="NoAccountData",w.InvalidInput="InvalidInput",w.UnsupportedSignature="UnsupportedSignature",w.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",w.RecordIsNotSigned="RecordIsNotSigned",w.UnsupportedSignatureType="UnsupportedSignatureType";class h extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,h)}}class m extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(4===t.length)return t;if(t.length>4)throw new h(exports.ErrorType.U32Overflow);const o=e.Buffer.alloc(4);return t.copy(o),o}static fromBuffer(e){if(4!==e.length)throw new h(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class R extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(8===t.length)return t;if(t.length>8)throw new h(exports.ErrorType.U64Overflow);const o=e.Buffer.alloc(8);return t.copy(o),o}static fromBuffer(e){if(8!==e.length)throw new h(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function S(t,o,n,i,s,a,c,u,p,d,f){const l=[e.Buffer.from(Int8Array.from([0])),new m(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],g=e.Buffer.concat(l),y=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1}];return p?y.push({pubkey:p,isSigner:!0,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?y.push({pubkey:d,isSigner:!1,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),f&&y.push({pubkey:f,isSigner:!0,isWritable:!1}),new r.TransactionInstruction({keys:y,programId:t,data:g})}function b(t,o,n,i,s){const a=[e.Buffer.from(Int8Array.from([1])),n.toBuffer(),new m(i.length).toBuffer(),i],c=e.Buffer.concat(a),u=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:u,programId:t,data:c})}function v(t,o,n,i,s,a,c){const u=[e.Buffer.from(Int8Array.from([2])),n.toBuffer()],p=e.Buffer.concat(u),d=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c||i,isSigner:!0,isWritable:!1}];return s&&d.push({pubkey:s,isSigner:!0,isWritable:!1}),c&&a&&(s||d.push({pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new r.TransactionInstruction({keys:d,programId:t,data:p})}function A(t,o,n,i){const s=[e.Buffer.from(Int8Array.from([3]))],a=e.Buffer.concat(s),c=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:c,programId:t,data:a})}class E{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return n.serialize(E.schema,this)}getInstruction(o,n,i,s,a,c,u,p,d,f,l){const g=e.Buffer.from(this.serialize()),y=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:r.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:f,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:y,programId:o,data:g})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(e){this.tag=5,this.name=e.name}serialize(){return n.serialize(B.schema,this)}getInstruction(t,o,n,i,s,a,c,u,p){const d=e.Buffer.from(this.serialize());let f=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0}];if(u){if(!p)throw new h(exports.ErrorType.MissingParentOwner);f.push({pubkey:u,isSigner:!1,isWritable:!0}),f.push({pubkey:p,isSigner:!0,isWritable:!1})}return new r.TransactionInstruction({keys:f,programId:t,data:d})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class I{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return n.serialize(I.schema,this)}getInstruction(t,o,n,i,s,a,c,u,p,d,f,l,g,y,w,x,h){const m=e.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:n,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!0}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!1}),R.push({pubkey:f,isSigner:!1,isWritable:!1}),R.push({pubkey:l,isSigner:!1,isWritable:!1}),R.push({pubkey:g,isSigner:!1,isWritable:!0}),R.push({pubkey:y,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),h&&R.push({pubkey:h,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:R,programId:t,data:m})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const T=new r.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),k=e.Buffer.from("tokenized_name");var P;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(P||(P={}));class N{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new r.PublicKey(e.nameAccount),this.owner=new r.PublicKey(e.owner),this.nftMint=new r.PublicKey(e.nftMint)}static deserialize(e){return n.deserialize(this.schema,N,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("nft_record"),t.toBuffer()],o)}}N.schema=new Map([[N,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const D=new r.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),K="SPL Name Service",W=new r.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),O=new r.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),U=new r.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),L=new r.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),C=new r.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),M=new r.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),z=new r.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),_=new r.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),H=new r.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),G=[new r.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new r.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new r.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new r.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new r.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe")],j=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),V=new r.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),F=new r.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),q=r=>{const t=K+r,o=i.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")},X=(t,o,n)=>{const i=[t];o?i.push(o.toBuffer()):i.push(e.Buffer.alloc(32)),n?i.push(n.toBuffer()):i.push(e.Buffer.alloc(32));const[s]=r.PublicKey.findProgramAddressSync(i,D);return s};async function Y(e,r){const t=q(r.toBase58()),n=X(t,C),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoAccountData);const s=new o(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+s).toString()}async function Z(e,r){let t=[];for(let e of r){const r=q(e.toBase58()),o=X(r,C);t.push(o)}return(await ne.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const J=(e,r=W)=>{let t=q(e);return{pubkey:X(t,void 0,r),hashed:t}},$=(r,t)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t||0]).toString().concat(o[0]),{pubkey:n}=J(o[1]);return{...J(r,n),isSub:!0,parent:n}}if(3===o.length&&t){const{pubkey:r}=J(o[2]),{pubkey:t}=J("\0".concat(o[1]),r),n=e.Buffer.from([1]).toString();return{...J(n.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new h(exports.ErrorType.InvalidInput);return{...J(r,W),isSub:!1,parent:void 0}};const Q=(e,r)=>{const{pubkey:t,parent:o}=$(e),n=q(t.toBase58());return X(n,C,r?o:void 0)},ee=(e,r)=>{if(!e)throw new h(r)},re=async(e,o)=>{try{const[n]=await r.PublicKey.findProgramAddress([k,o.toBuffer()],T);if("0"===(await t.getMint(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],s=await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:i});if(1!=s.length)return;return new r.PublicKey(s[0].account.data.slice(32,64))}catch{return}},te=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],oe=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(T,{filters:t})})(e,r.mint);if(1===t.length)return N.deserialize(t[0].account.data)};class ne{constructor(e){this.parentName=new r.PublicKey(e.parentName),this.owner=new r.PublicKey(e.owner),this.class=new r.PublicKey(e.class)}static async retrieve(e,r){var t;const o=await e.getAccountInfo(r);if(!o)throw new h(exports.ErrorType.AccountDoesNotExist);let i=n.deserializeUnchecked(this.schema,ne,o.data);i.data=null===(t=o.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:i,nftOwner:await re(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),o=e=>{if(!e)return;const r=n.deserializeUnchecked(this.schema,ne,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>o(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const o=[...r];for(;o.length>0;)t.push(...await this._retrieveBatch(e,o.splice(0,100)));return t}}async function ie(e,r){if(!await e.getAccountInfo(r))throw new h(exports.ErrorType.AccountDoesNotExist);return ne.retrieve(e,r)}async function se(r){const t=K+r,o=i.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")}async function ae(t,o,n){const i=[t];o?i.push(o.toBuffer()):i.push(e.Buffer.alloc(32)),n?i.push(n.toBuffer()):i.push(e.Buffer.alloc(32));const[s]=await r.PublicKey.findProgramAddress(i,D);return s}ne.HEADER_LEN=96,ne.schema=new Map([[ne,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const ce=async(e,r=W)=>{let t=await se(e);return{pubkey:await ae(t,void 0,r),hashed:t}},ue=async(r,t=!1)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t?1:0]).toString().concat(o[0]),{pubkey:n}=await ce(o[1]);return{...await ce(r,n),isSub:!0,parent:n}}if(3===o.length&&t){const{pubkey:r}=await ce(o[2]),{pubkey:t}=await ce("\0".concat(o[1]),r),n=e.Buffer.from([1]).toString();return{...await ce(n.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new h(exports.ErrorType.InvalidInput);return{...await ce(r,W),isSub:!1,parent:void 0}};var pe;exports.Record=void 0,(pe=exports.Record||(exports.Record={})).IPFS="IPFS",pe.ARWV="ARWV",pe.SOL="SOL",pe.ETH="ETH",pe.BTC="BTC",pe.LTC="LTC",pe.DOGE="DOGE",pe.Email="email",pe.Url="url",pe.Discord="discord",pe.Github="github",pe.Reddit="reddit",pe.Twitter="twitter",pe.Telegram="telegram",pe.Pic="pic",pe.SHDW="SHDW",pe.POINT="POINT",pe.BSC="BSC",pe.Injective="INJ",pe.Backpack="backpack",pe.A="A",pe.AAAA="AAAA",pe.CNAME="CNAME",pe.TXT="TXT";const de=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]]);var fe;exports.RecordVersion=void 0,(fe=exports.RecordVersion||(exports.RecordVersion={}))[fe.V1=1]="V1",fe[fe.V2=2]="V2";const le=(e,r,t)=>x.sign.detached.verify(e,r,t.toBytes()),ge=(e,r)=>{const{pubkey:t}=$(r+"."+e,exports.RecordVersion.V1);return t};async function ye(e,r,t,o){const n=ge(r,t);let{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoRecordData);if(o)return xe(i,t,n);const s=de.get(t);return i.data=i.data.slice(0,s),i}const we=async(e,r)=>await ye(e,r,exports.Record.SOL),xe=(r,t,o)=>{const n=null==r?void 0:r.data;if(!n)return;const i=de.get(t),s=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(n);if(!i)return n.slice(0,s).toString("utf-8");if(i&&s!==i){const r=n.slice(0,s).toString("utf-8");if(t===exports.Record.Injective){const e=a.decode(r);if("inj"===e.prefix&&20===e.data.length)return r}else if(t===exports.Record.BSC||t===exports.Record.ETH){const t=r.slice(0,2),o=r.slice(2);if("0x"===t&&20===e.Buffer.from(o,"hex").length)return r}else if((t===exports.Record.A||t===exports.Record.AAAA)&&p.isValid(r))return r;throw new h(exports.ErrorType.InvalidRecordData)}if(t===exports.Record.SOL){const t=new TextEncoder,i=e.Buffer.concat([n.slice(0,32),o.toBuffer()]),s=t.encode(i.toString("hex"));if(le(s,n.slice(32),r.owner))return u.encode(n.slice(0,32))}else{if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+n.slice(0,i).toString("hex");if(t===exports.Record.Injective)return a.encode("inj",n.slice(0,i),"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return p.fromByteArray([...n.slice(0,i)]).toString()}throw new h(exports.ErrorType.InvalidRecordData)},he=(r,t)=>{if(!de.get(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(r=d.encode(r)),e.Buffer.from(r,"utf-8");if(t===exports.Record.SOL)throw new h(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(t===exports.Record.ETH||t===exports.Record.BSC)return ee("0x"===r.slice(0,2),exports.ErrorType.InvalidEvmAddress),e.Buffer.from(r.slice(2),"hex");if(t===exports.Record.Injective){const t=a.decode(r);return ee("inj"===t.prefix,exports.ErrorType.InvalidInjectiveAddress),ee(20===t.data.length,exports.ErrorType.InvalidInjectiveAddress),e.Buffer.from(t.data)}if(t===exports.Record.A){const t=p.parse(r).toByteArray();return ee(4===t.length,exports.ErrorType.InvalidARecord),e.Buffer.from(t)}if(t===exports.Record.AAAA){const t=p.parse(r).toByteArray();return ee(16===t.length,exports.ErrorType.InvalidAAAARecord),e.Buffer.from(t)}throw new h(exports.ErrorType.InvalidRecordInput)},me=(r,t,o,n)=>{const i=e.Buffer.concat([r.toBuffer(),t.toBuffer()]),s=(new TextEncoder).encode(i.toString("hex")),a=le(s,n,o);return ee(a,exports.ErrorType.InvalidSignature),e.Buffer.concat([r.toBuffer(),n])};async function Re(e,t,o,n,i,s,a,c){const u=await se(t),p=await ae(u,a,c),d=s||await e.getMinimumBalanceForRentExemption(o);let f;if(c){const{registry:r}=await ie(e,c);f=r.owner}return S(D,r.SystemProgram.programId,p,i,n,u,new R(d),new m(o),a,c,f)}async function Se(e,r,t,o,n){const i=await se(r),s=await ae(i,o,n);let a;a=o||(await ne.retrieve(e,s)).registry.owner;return A(D,s,t,a)}const be=async(e,t,o,n,i)=>{let[s]=await r.PublicKey.findProgramAddress([O.toBuffer()],O),a=await se(e.toBase58()),c=await ae(a,s,n);return[[],[new B({name:t}).getInstruction(O,r.SYSVAR_RENT_PUBKEY,D,W,c,s,o,n,i)]]},ve=async(e,t,o,n,i,s)=>{ee(o!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=$(`${o}.${t}`,exports.RecordVersion.V1),p=he(n,o).length,d=await e.getMinimumBalanceForRentExemption(p+ne.HEADER_LEN);return S(D,r.SystemProgram.programId,a,i,s,c,new R(d),new m(p),void 0,u,i)},Ae=async(e,t,o,n,i,s)=>{const a=n.serialize().length,{pubkey:c,hashed:u,parent:p}=$(`${o}.${t}`,exports.RecordVersion.V2),d=await e.getMinimumBalanceForRentExemption(a+ne.HEADER_LEN);return S(D,r.SystemProgram.programId,c,i,s,u,new R(d),new m(a),void 0,p,i)},Ee=async(e,t,o,n,i,s)=>{const{pubkey:a,hashed:c,parent:u}=$(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=me(o,a,n,i).length,d=await e.getMinimumBalanceForRentExemption(p+ne.HEADER_LEN);return[S(D,r.SystemProgram.programId,a,n,s,c,new R(d),new m(p),void 0,u,n)]};class Be{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new h(exports.ErrorType.InvalidReverseTwitter);return n.deserializeUnchecked(this.schema,Be,t.data.slice(ne.HEADER_LEN))}}async function Ie(t,o,i,s,a){const c=await se(s.toString()),u=await ae(c,M,z);let p=n.serialize(Be.schema,new Be({twitterRegistryKey:i.toBytes(),twitterHandle:o}));return[S(D,r.SystemProgram.programId,u,s,a,c,new R(await t.getMinimumBalanceForRentExemption(p.length+ne.HEADER_LEN)),new m(p.length),M,z,M),b(D,u,new m(0),e.Buffer.from(p),M)]}Be.schema=new Map([[Be,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Te=new r.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class ke{constructor(e){this.tag=e.tag,this.nameAccount=new r.PublicKey(e.nameAccount)}static deserialize(e){return n.deserialize(this.schema,ke,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new h(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}static getKeySync(t,o){return r.PublicKey.findProgramAddressSync([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}}ke.schema=new Map([[ke,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);var Pe,Ne;exports.GuardianSig=void 0,(Pe=exports.GuardianSig||(exports.GuardianSig={}))[Pe.None=0]="None",Pe[Pe.Solana=1]="Solana",Pe[Pe.Ethereum=2]="Ethereum",Pe[Pe.Injective=3]="Injective",exports.UserSig=void 0,(Ne=exports.UserSig||(exports.UserSig={}))[Ne.None=0]="None",Ne[Ne.Solana=1]="Solana";const De={signatureType:exports.UserSig.None,signature:Buffer.alloc(0)},Ke={signatureType:exports.GuardianSig.None,signature:Buffer.alloc(0)},We=new Map([[exports.Record.Backpack,new r.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Oe=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME]),Ue=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),Le=e=>{switch(e){case exports.GuardianSig.None:return 0;case exports.GuardianSig.Solana:return 64;case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return 65;case exports.UserSig.None:return 0;case exports.UserSig.Solana:return 64;default:throw new h(exports.ErrorType.UnsupportedSignature,`Unsupported signature type: ${e}`)}},Ce=e=>{throw new h(exports.ErrorType.RecordDoestNotSupportGuardianSig)},Me=(e,r,t)=>x.sign.detached.verify(e,r,t),ze=(e,r,t)=>{const o=f.hashMessage(e);return l.recoverAddress(o,r)===g.getAddress(t)},_e=(e,r,t,o)=>{switch(o){case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return ze(e.toString(),r.toString(),t.toString());case exports.GuardianSig.Solana:return Me(e,r,t);case exports.GuardianSig.None:throw new h(exports.ErrorType.RecordIsNotSigned);default:throw new h(exports.ErrorType.UnsupportedSignatureType)}},He=(e,r,t,o)=>{switch(o){case exports.UserSig.Solana:return Me(e,r,t);case exports.UserSig.None:throw new h(exports.ErrorType.RecordIsNotSigned);default:throw new h(exports.ErrorType.UnsupportedSignatureType)}};class Ge{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return n.serialize(Ge.schema,this)}static deserialize(e){return n.deserialize(this.schema,Ge,e)}}Ge.LEN=8,Ge.schema=new Map([[Ge,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class je{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return Ge.LEN+this.buffer.length}static deserializeUnchecked(e){const r=n.deserializeUnchecked(Ge.schema,Ge,e);return new je({header:r,buffer:Buffer.from(e.slice(Ge.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return Ve(this.getContent(),e)}getContent(){const e=Le(this.header.guardianSignature)+Le(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,r,t=De,o=Ke){const n=Fe(e,r),i=Buffer.concat([t.signature,o.signature,n]),s=new Ge({userSignature:t.signatureType,guardianSignature:o.signatureType,contentLength:i.length});return new je({header:s,buffer:i})}checkGuardianSignature(e,r){const t=Le(this.header.guardianSignature),o=Le(this.header.userSignature),n=Buffer.from(this.buffer.slice(o,o+t));return _e(e,n,r,this.header.guardianSignature)}checkUserSignature(e,r){const t=Le(this.header.userSignature),o=Buffer.from(this.buffer.slice(0,t));return He(e,o,r,this.header.userSignature)}static async retrieve(e,r,t,o){const n=qe(t,r),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.InvalidRecordData);const s=this.deserializeUnchecked(i.data),a=s.getContent(),c=Buffer.concat([n.toBuffer(),a]);if(!(null==o?void 0:o.skipGuardianSig)){const e=Ue.has(r)?Buffer.from(s.getContent().slice(32)):Ce();s.checkGuardianSignature(c,e)}return(null==o?void 0:o.skipUserSig)||s.checkUserSignature(c,i.owner.toBuffer()),s}static async retrieveBatch(e,r,t){const o=r.map((e=>qe(t,e))),n=await ne.retrieveBatch(e,o),i=[];for(let e of n)try{if(!(null==e?void 0:e.data)){i.push(void 0);continue}const r=je.deserializeUnchecked(null==e?void 0:e.data);i.push(r)}catch{i.push(void 0)}return i}}const Ve=(e,t)=>{if(Oe.has(t)){const r=e.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?d.decode(r):r}if(t===exports.Record.SOL)return new r.PublicKey(e).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+e.toString("hex");if(t===exports.Record.Injective)return a.encode("inj",e,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return p.fromByteArray([...e]).toString();throw new h(exports.ErrorType.InvalidARecord)},Fe=(e,t)=>{if(Oe.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(e=d.encode(e)),Buffer.from(e,"utf-8");if(t===exports.Record.SOL)return new r.PublicKey(e).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return ee("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(t===exports.Record.Injective){const r=a.decode(e);return ee("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),ee(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(r.data)}if(t===exports.Record.A){const r=p.parse(e).toByteArray();return ee(4===r.length,exports.ErrorType.InvalidARecord),Buffer.from(r)}if(t===exports.Record.AAAA){const r=p.parse(e).toByteArray();return ee(16===r.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(r)}throw new h(exports.ErrorType.InvalidARecord)},qe=(e,r)=>{const{pubkey:t}=$(r+"."+e,exports.RecordVersion.V2);return t};exports.BONFIDA_FIDA_BNB=L,exports.BONFIDA_USDC_BNB=_,exports.FavouriteDomain=ke,exports.Guardians=We,exports.HASH_PREFIX=K,exports.NAME_OFFERS_ID=Te,exports.NAME_PROGRAM_ID=D,exports.NameRegistryState=ne,exports.NullGuardianSig=Ke,exports.NullUserSig=De,exports.Numberu32=m,exports.Numberu64=R,exports.PYTH_FIDA_PRICE_ACC=U,exports.PYTH_MAPPING_ACC=V,exports.RECORD_V1_SIZE=de,exports.REFERRERS=G,exports.REGISTER_PROGRAM_ID=O,exports.REVERSE_LOOKUP_CLASS=C,exports.ROOT_DOMAIN_ACCOUNT=W,exports.RecordV2=je,exports.RecordV2Header=Ge,exports.ReverseTwitterRegistryState=Be,exports.SELF_SIGNED=Ue,exports.SNSError=h,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=j,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=z,exports.TWITTER_VERIFICATION_AUTHORITY=M,exports.USDC_MINT=H,exports.UTF8_ENCODED=Oe,exports.VAULT_OWNER=F,exports.changeTwitterRegistryData=async function(e,r,t,o){const n=await se(e),i=await ae(n,void 0,z);return[b(D,i,new m(t),o,r)]},exports.changeVerifiedPubkey=async function(e,r,t,o,n){const i=await se(r),s=await ae(i,void 0,z);let a=[v(D,s,o,t,void 0)];const c=await se(t.toString());return await ae(c,M,void 0),a.push(await Se(e,t.toString(),n,M,z)),a=a.concat(await Ie(e,r,s,o,n)),a},exports.check=ee,exports.checkSolRecord=le,exports.createInstruction=S,exports.createInstructionV3=I,exports.createNameRegistry=Re,exports.createRecordInstruction=ve,exports.createRecordV2Instruction=Ae,exports.createReverseInstruction=B,exports.createReverseName=be,exports.createReverseTwitterRegistry=Ie,exports.createSolRecordInstruction=Ee,exports.createSubdomain=async(e,r,t,o=2e3)=>{const n=[],i=r.split(".")[0];if(!i)throw new h(exports.ErrorType.InvalidSubdomain);const{parent:s,pubkey:a}=$(r),c=await e.getMinimumBalanceForRentExemption(o+ne.HEADER_LEN),u=await Re(e,"\0".concat(i),o,t,t,c,void 0,s);n.push(u);const p=Q(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await be(a,"\0".concat(i),t,s,t);n.push(...e)}return[[],n]},exports.createV2Instruction=E,exports.createVerifiedTwitterRegistry=async function(e,t,o,n,i){const s=await se(t),a=await ae(s,void 0,z),c=await e.getMinimumBalanceForRentExemption(n+ne.HEADER_LEN);let u=[S(D,r.SystemProgram.programId,a,o,i,s,new R(c),new m(n),void 0,z,M)];return u=u.concat(await Ie(e,t,a,o,i)),u},exports.deleteInstruction=A,exports.deleteNameRegistry=Se,exports.deleteRecordV2=async(e,r,t,o)=>{const{pubkey:n}=$(`${r}.${e}`,exports.RecordVersion.V2);return A(D,n,o,t)},exports.deleteTwitterRegistry=async function(e,r){const t=await se(e),o=await ae(t,void 0,z),n=await se(r.toString()),i=await ae(n,M,z);return[A(D,o,r,r),A(D,i,r,r)]},exports.deserializeRecord=xe,exports.deserializeRecordV2=Ve,exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:C.toBase58()}}],o=await e.getProgramAccounts(D,{filters:t}),n=await Y(e,r),i=o.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),s=i.map((e=>$(e+"."+n).pubkey)),a=await e.getMultipleAccountsInfo(s);return i.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:W.toBase58()}}];return(await e.getProgramAccounts(D,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:W.toBase58()}}];return await e.getProgramAccounts(D,{dataSlice:{offset:32,length:32},filters:r})},exports.getArweaveRecord=async(e,r)=>await ye(e,r,exports.Record.ARWV,!0),exports.getBackpackRecord=async(e,r)=>await ye(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await ye(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await ye(e,r,exports.Record.BTC,!0),exports.getDiscordRecord=async(e,r)=>await ye(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await ye(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ue,exports.getDomainKeySync=$,exports.getEmailRecord=async(e,r)=>await ye(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await ye(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(e,t)=>{const[o]=ke.getKeySync(Te,new r.PublicKey(t)),n=await ke.retrieve(e,o),i=await Y(e,n.nameAccount);return{domain:n.nameAccount,reverse:i}},exports.getGithubRecord=async(e,r)=>await ye(e,r,exports.Record.Github,!0),exports.getGuardianPublickey=Ce,exports.getHandleAndRegistryKey=async function(e,t){const o=await se(t.toString()),n=await ae(o,M,z);let i=await Be.retrieve(e,n);return[i.twitterHandle,new r.PublicKey(i.twitterRegistryKey)]},exports.getHashedName=se,exports.getHashedNameSync=q,exports.getInjectiveRecord=async(e,r)=>await ye(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await ye(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await ye(e,r,exports.Record.LTC,!0),exports.getMessageToSign=(e,r,t)=>{const o=Fe(e,t),n=qe(r,t);return Buffer.concat([n.toBuffer(),o])},exports.getNameAccountKey=ae,exports.getNameAccountKeySync=X,exports.getNameOwner=ie,exports.getPicRecord=async(e,r)=>await ye(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await ye(e,r,exports.Record.POINT,!0),exports.getRecord=ye,exports.getRecordKeySync=ge,exports.getRecordV2Key=qe,exports.getRecords=async function(e,r,t,o){const n=t.map((e=>ge(r,e))),i=await ne.retrieveBatch(e,n);return o?i.map(((e,o)=>{if(e)return xe(e,t[o],ge(r,t[o]))})):i},exports.getRedditRecord=async(e,r)=>await ye(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:o}=await ue(e),n=await se(t.toBase58());return await ae(n,C,r?o:void 0)},exports.getReverseKeySync=Q,exports.getShdwRecord=async(e,r)=>await ye(e,r,exports.Record.SHDW,!0),exports.getSignatureByteLength=Le,exports.getSolRecord=we,exports.getTelegramRecord=async(e,r)=>await ye(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const o=await(async(e,r)=>{const o=[...te(r.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>oe(e,r)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,r);return(await Z(e,o.map((e=>e.nameAccount)))).map(((e,r)=>({key:o[r].nameAccount,mint:o[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(e,t){const o=[{memcmp:{offset:0,bytes:z.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:M.toBase58()}}],i=await e.getProgramAccounts(D,{filters:o});for(const e of i)if(e.account.data.length>ne.HEADER_LEN+32){let t=e.account.data.slice(ne.HEADER_LEN),o=n.deserializeUnchecked(Be.schema,Be,t);return[o.twitterHandle,new r.PublicKey(o.twitterRegistryKey)]}throw new h(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await ye(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await se(r),o=await ae(t,void 0,z),{registry:n}=await ne.retrieve(e,o);return n},exports.getTwitterRegistryData=async function(t,o){const n=[{memcmp:{offset:0,bytes:z.toBase58()}},{memcmp:{offset:32,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:new r.PublicKey(e.Buffer.alloc(32,0)).toBase58()}}],i=await t.getProgramAccounts(D,{filters:n});if(i.length>1)throw new h(exports.ErrorType.MultipleRegistries);return i[0].account.data.slice(ne.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await se(e);return await ae(r,void 0,z)},exports.getUrlRecord=async(e,r)=>await ye(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await se(r.toBase58()),n=await ae(t,C),{registry:i}=await ne.retrieve(e,n);if(!i.data)throw new h(exports.ErrorType.NoAccountData);const s=new o(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+s).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await se(e.toBase58()),o=await ae(r,C);t.push(o)}return(await ne.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.registerDomainName=async(e,o,n,i,a,c=H,u)=>{const[p]=r.PublicKey.findProgramAddressSync([O.toBuffer()],O),d=q(o),f=X(d,void 0,W),l=q(f.toBase58()),g=X(l,p),[y]=r.PublicKey.findProgramAddressSync([f.toBuffer()],O),w=G.findIndex((e=>null==u?void 0:u.equals(e)));let x;const m=[];if(-1!==w&&u){x=t.getAssociatedTokenAddressSync(c,u,!0);const r=await e.getAccountInfo(x);if(!(null==r?void 0:r.data)){const e=t.createAssociatedTokenAccountInstruction(i,x,u,c);m.push(e)}}const R=new s.PythHttpClient(e,s.getPythProgramKeyForCluster("mainnet-beta")),S=await R.getData(),b=j.get(c.toBase58());if(!b)throw new h(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const v=S.productPrice.get("Crypto."+b+"/USD"),A=S.productFromSymbol.get("Crypto."+b+"/USD"),E=t.getAssociatedTokenAddressSync(c,F),B=new I({name:o,space:n,referrerIdxOpt:-1!=w?w:null}).getInstruction(O,D,W,f,g,r.SystemProgram.programId,p,i,a,V,v.productAccountKey,new r.PublicKey(A.price_account),E,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,y,x);return m.push(B),[[],m]},exports.resolve=async(t,o)=>{const{pubkey:n}=$(o),{registry:i,nftOwner:s}=await ne.retrieve(t,n);if(s)return s;try{const n=ge(o,exports.Record.SOL),s=await we(t,o);if(!(null==s?void 0:s.data))throw new h(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=e.Buffer.concat([s.data.slice(0,32),n.toBuffer()]),u=a.encode(c.toString("hex"));if(!le(u,s.data.slice(32),i.owner))throw new h(exports.ErrorType.InvalidSignature);return new r.PublicKey(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return i.owner},exports.retrieveNftOwner=re,exports.retrieveNfts=async e=>{const t=await e.getProgramAccounts(T,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((e=>new r.PublicKey(e.account.data.slice(66,98))))},exports.reverseLookup=Y,exports.reverseLookupBatch=Z,exports.serializeRecord=he,exports.serializeRecordV2Content=Fe,exports.serializeSolRecord=me,exports.transferInstruction=v,exports.transferNameOwnership=async function(e,r,t,o,n,i){const s=await se(r),a=await ae(s,o,n);let c;return c=o||(await ne.retrieve(e,a)).registry.owner,v(D,a,t,c,o,n,i)},exports.updateInstruction=b,exports.updateNameRegistryData=async function(e,r,t,o,n,i){const s=await se(r),a=await ae(s,n,i);let c;return c=n||(await ne.retrieve(e,a)).registry.owner,b(D,a,new m(t),o,c)},exports.updateRecordInstruction=async(e,r,t,o,n,i)=>{ee(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:s}=$(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(s);ee(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=he(o,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[A(D,s,i,n),await ve(e,r,t,o,n,i)];return[b(D,s,new m(0),c,n)]},exports.updateRecordV2Instruction=async(r,t,o,n,i,s)=>{const{pubkey:a}=$(`${o}.${t}`,exports.RecordVersion.V2),c=await r.getAccountInfo(a),u=n.serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[A(D,a,s,i),await Ae(r,t,o,n,i,s),b(D,a,new m(0),e.Buffer.from(u),i)];return[b(D,a,new m(0),e.Buffer.from(u),i)]},exports.updateSolRecordInstruction=async(e,r,t,o,n,i)=>{const{pubkey:s}=$(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(s);if(ee(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[A(D,s,i,o),await Ee(e,r,t,o,n,i)];const c=me(t,s,o,n);return[b(D,s,new m(0),c,o)]},exports.verifyEthereumSignature=ze,exports.verifyGuardianSignature=_e,exports.verifyInjectiveSignature=(e,r,t)=>{throw new Error("TODO")},exports.verifySolanaSignature=Me,exports.verifyUserSignature=He;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{Buffer as e}from"buffer";import{PublicKey as t,TransactionInstruction as r,SystemProgram as n,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import f from"bn.js";import{serialize as d,deserialize as l,deserializeUnchecked as w}from"borsh";import{sha256 as p}from"@ethersproject/sha2";import{PythHttpClient as g,getPythProgramKeyForCluster as h}from"@pythnetwork/client";import{decode as m,encode as y}from"bech32-buffer";import*as S from"tweetnacl";import b from"bs58";import v from"ipaddr.js";import{encode as A,decode as k}from"punycode";import{hashMessage as B}from"@ethersproject/hash";import{recoverAddress as I}from"@ethersproject/transactions";import{getAddress as E}from"@ethersproject/address";var R;!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.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(R||(R={}));class N extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,N)}}class W extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(4===r.length)return r;if(r.length>4)throw new N(R.U32Overflow);const n=e.alloc(4);return r.copy(n),n}static fromBuffer(e){if(4!==e.length)throw new N(R.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class D extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(8===r.length)return r;if(r.length>8)throw new N(R.U64Overflow);const n=e.alloc(8);return r.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new N(R.U64Overflow,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function T(n,i,a,s,o,c,u,f,d,l,w){const p=[e.from(Int8Array.from([0])),new W(c.length).toBuffer(),c,u.toBuffer(),f.toBuffer()],g=e.concat(p),h=[{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 d?h.push({pubkey:d,isSigner:!0,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),l?h.push({pubkey:l,isSigner:!1,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),w&&h.push({pubkey:w,isSigner:!0,isWritable:!1}),new r({keys:h,programId:n,data:g})}function x(t,n,i,a,s){const o=[e.from(Int8Array.from([1])),i.toBuffer(),new W(a.length).toBuffer(),a],c=e.concat(o);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function L(n,i,a,s,o,c,u){const f=[e.from(Int8Array.from([2])),a.toBuffer()],d=e.concat(f),l=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&l.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||l.push({pubkey:t.default,isSigner:!1,isWritable:!1}),l.push({pubkey:c,isSigner:!1,isWritable:!1})),new r({keys:l,programId:n,data:d})}function j(t,n,i,a){const s=[e.from(Int8Array.from([3]))],o=e.concat(s);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class C{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(C.schema,this)}getInstruction(t,i,s,o,c,u,f,d,l,w,p){const g=e.from(this.serialize()),h=[{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:n.programId,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1}];return new r({keys:h,programId:t,data:g})}}C.schema=new Map([[C,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class H{constructor(e){this.tag=5,this.name=e.name}serialize(){return d(H.schema,this)}getInstruction(n,i,a,s,o,c,u,f,d){const l=e.from(this.serialize());let w=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:t.default,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0}];if(f){if(!d)throw new N(R.MissingParentOwner);w.push({pubkey:f,isSigner:!1,isWritable:!0}),w.push({pubkey:d,isSigner:!0,isWritable:!1})}return new r({keys:w,programId:n,data:l})}}H.schema=new Map([[H,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class P{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(P.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d,l,w,p,g,h,m,y){const S=e.from(this.serialize());let b=[];return b.push({pubkey:n,isSigner:!1,isWritable:!1}),b.push({pubkey:i,isSigner:!1,isWritable:!1}),b.push({pubkey:a,isSigner:!1,isWritable:!0}),b.push({pubkey:s,isSigner:!1,isWritable:!0}),b.push({pubkey:o,isSigner:!1,isWritable:!1}),b.push({pubkey:c,isSigner:!1,isWritable:!1}),b.push({pubkey:u,isSigner:!0,isWritable:!0}),b.push({pubkey:f,isSigner:!1,isWritable:!0}),b.push({pubkey:d,isSigner:!1,isWritable:!1}),b.push({pubkey:l,isSigner:!1,isWritable:!1}),b.push({pubkey:w,isSigner:!1,isWritable:!1}),b.push({pubkey:p,isSigner:!1,isWritable:!0}),b.push({pubkey:g,isSigner:!1,isWritable:!1}),b.push({pubkey:h,isSigner:!1,isWritable:!1}),b.push({pubkey:m,isSigner:!1,isWritable:!1}),y&&b.push({pubkey:y,isSigner:!1,isWritable:!0}),new r({keys:b,programId:t,data:S})}}P.schema=new Map([[P,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const M=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),U=e.from("tokenized_name");var z;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(z||(z={}));class F{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new t(e.nameAccount),this.owner=new t(e.owner),this.nftMint=new t(e.nftMint)}static deserialize(e){return l(this.schema,F,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,n){return await t.findProgramAddress([e.from("nft_record"),r.toBuffer()],n)}}F.schema=new Map([[F,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const O=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),G="SPL Name Service",X=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),V=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),K=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),Z=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),Y=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),q=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),J=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),$=96,_=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),Q=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ee=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new t("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new t("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe")],te=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),re=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),ne=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),ie=t=>{const r=G+t,n=p(e.from(r,"utf8")).slice(2);return e.from(n,"hex")},ae=(r,n,i)=>{const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=t.findProgramAddressSync(a,O);return s};async function se(e,t){const r=ie(t.toBase58()),n=ae(r,Y),{registry:i}=await be.retrieve(e,n);if(!i.data)throw new N(R.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function oe(e,t){let r=[];for(let e of t){const t=ie(e.toBase58()),n=ae(t,Y);r.push(n)}return(await be.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const ce=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:Y.toBase58()}}],n=await e.getProgramAccounts(O,{filters:r}),i=await se(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>fe(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},ue=(e,t=X)=>{let r=ie(e);return{pubkey:ae(r,void 0,t),hashed:r}},fe=(t,r)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r||0]).toString().concat(n[0]),{pubkey:i}=ue(n[1]);return{...ue(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=ue(n[2]),{pubkey:r}=ue("\0".concat(n[1]),t),i=e.from([1]).toString();return{...ue(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new N(R.InvalidInput);return{...ue(t,X),isSub:!1,parent:void 0}};async function de(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:X.toBase58()}}];return(await e.getProgramAccounts(O,{filters:r})).map((e=>e.pubkey))}const le=async e=>{const t=[{memcmp:{offset:0,bytes:X.toBase58()}}];return await e.getProgramAccounts(O,{dataSlice:{offset:32,length:32},filters:t})},we=(e,t)=>{const{pubkey:r,parent:n}=fe(e),i=ie(r.toBase58());return ae(i,Y,t?n:void 0)},pe=(e,t)=>{if(!e)throw new N(t)},ge=async(e,r)=>{try{const[n]=await t.findProgramAddress([U,r.toBuffer()],M);if("0"===(await s(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},he=async e=>{const r=await e.getProgramAccounts(M,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((e=>new t(e.account.data.slice(66,98))))},me=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ye=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(M,{filters:r})})(e,t.mint);if(1===r.length)return F.deserialize(r[0].account.data)},Se=async(e,t)=>{const r=await(async(e,t)=>{const r=[...me(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>ye(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await oe(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class be{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new N(R.AccountDoesNotExist);let i=w(this.schema,be,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await ge(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=w(this.schema,be,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function ve(e,t){if(!await e.getAccountInfo(t))throw new N(R.AccountDoesNotExist);return be.retrieve(e,t)}async function Ae(t){const r=G+t,n=p(e.from(r,"utf8")).slice(2);return e.from(n,"hex")}async function ke(r,n,i){const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=await t.findProgramAddress(a,O);return s}async function Be(e,t){const r=await Ae(t.toBase58()),n=await ke(r,Y),{registry:i}=await be.retrieve(e,n);if(!i.data)throw new N(R.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Ie(e,t){let r=[];for(let e of t){const t=await Ae(e.toBase58()),n=await ke(t,Y);r.push(n)}return(await be.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}be.HEADER_LEN=96,be.schema=new Map([[be,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const Ee=async(e,t=X)=>{let r=await Ae(e);return{pubkey:await ke(r,void 0,t),hashed:r}},Re=async(t,r=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r?1:0]).toString().concat(n[0]),{pubkey:i}=await Ee(n[1]);return{...await Ee(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=await Ee(n[2]),{pubkey:r}=await Ee("\0".concat(n[1]),t),i=e.from([1]).toString();return{...await Ee(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new N(R.InvalidInput);return{...await Ee(t,X),isSub:!1,parent:void 0}},Ne=async(e,t)=>{const{pubkey:r,parent:n}=await Re(e),i=await Ae(r.toBase58());return await ke(i,Y,t?n:void 0)};var We;!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"}(We||(We={}));const De=new Map([[We.SOL,96],[We.ETH,20],[We.BSC,20],[We.Injective,20],[We.A,4],[We.AAAA,16]]);var Te;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(Te||(Te={}));const xe=(e,t,r)=>S.sign.detached.verify(e,t,r.toBytes()),Le=async(r,n)=>{const{pubkey:i}=fe(n),{registry:a,nftOwner:s}=await be.retrieve(r,i);if(s)return s;try{const i=je(n,We.SOL),s=await _e(r,n);if(!(null==s?void 0:s.data))throw new N(R.NoRecordData);const o=new TextEncoder,c=e.concat([s.data.slice(0,32),i.toBuffer()]),u=o.encode(c.toString("hex"));if(!xe(u,s.data.slice(32),a.owner))throw new N(R.InvalidSignature);return new t(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},je=(e,t)=>{const{pubkey:r}=fe(t+"."+e,Te.V1);return r};async function Ce(e,t,r,n){const i=je(t,r);let{registry:a}=await be.retrieve(e,i);if(!a.data)throw new N(R.NoRecordData);if(n)return nt(a,r,i);const s=De.get(r);return a.data=a.data.slice(0,s),a}async function He(e,t,r,n){const i=r.map((e=>je(t,e))),a=await be.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return nt(e,r[n],je(t,r[n]))})):a}const Pe=async(e,t)=>await Ce(e,t,We.IPFS,!0),Me=async(e,t)=>await Ce(e,t,We.ARWV,!0),Ue=async(e,t)=>await Ce(e,t,We.ETH,!0),ze=async(e,t)=>await Ce(e,t,We.BTC,!0),Fe=async(e,t)=>await Ce(e,t,We.LTC,!0),Oe=async(e,t)=>await Ce(e,t,We.DOGE,!0),Ge=async(e,t)=>await Ce(e,t,We.Email,!0),Xe=async(e,t)=>await Ce(e,t,We.Url,!0),Ve=async(e,t)=>await Ce(e,t,We.Discord,!0),Ke=async(e,t)=>await Ce(e,t,We.Github,!0),Ze=async(e,t)=>await Ce(e,t,We.Reddit,!0),Ye=async(e,t)=>await Ce(e,t,We.Twitter,!0),qe=async(e,t)=>await Ce(e,t,We.Telegram,!0),Je=async(e,t)=>await Ce(e,t,We.Pic,!0),$e=async(e,t)=>await Ce(e,t,We.SHDW,!0),_e=async(e,t)=>await Ce(e,t,We.SOL),Qe=async(e,t)=>await Ce(e,t,We.POINT,!0),et=async(e,t)=>await Ce(e,t,We.BSC,!0),tt=async(e,t)=>await Ce(e,t,We.Injective,!0),rt=async(e,t)=>await Ce(e,t,We.Backpack,!0),nt=(t,r,n)=>{const i=null==t?void 0:t.data;if(!i)return;const a=De.get(r),s=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(i);if(!a)return i.slice(0,s).toString("utf-8");if(a&&s!==a){const t=i.slice(0,s).toString("utf-8");if(r===We.Injective){const e=m(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(r===We.BSC||r===We.ETH){const r=t.slice(0,2),n=t.slice(2);if("0x"===r&&20===e.from(n,"hex").length)return t}else if((r===We.A||r===We.AAAA)&&v.isValid(t))return t;throw new N(R.InvalidRecordData)}if(r===We.SOL){const r=new TextEncoder,a=e.concat([i.slice(0,32),n.toBuffer()]),s=r.encode(a.toString("hex"));if(xe(s,i.slice(32),t.owner))return b.encode(i.slice(0,32))}else{if(r===We.ETH||r===We.BSC)return"0x"+i.slice(0,a).toString("hex");if(r===We.Injective)return y("inj",i.slice(0,a),"bech32");if(r===We.A||r===We.AAAA)return v.fromByteArray([...i.slice(0,a)]).toString()}throw new N(R.InvalidRecordData)},it=(t,r)=>{if(!De.get(r))return r!==We.CNAME&&r!==We.TXT||(t=A(t)),e.from(t,"utf-8");if(r===We.SOL)throw new N(R.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===We.ETH||r===We.BSC)return pe("0x"===t.slice(0,2),R.InvalidEvmAddress),e.from(t.slice(2),"hex");if(r===We.Injective){const r=m(t);return pe("inj"===r.prefix,R.InvalidInjectiveAddress),pe(20===r.data.length,R.InvalidInjectiveAddress),e.from(r.data)}if(r===We.A){const r=v.parse(t).toByteArray();return pe(4===r.length,R.InvalidARecord),e.from(r)}if(r===We.AAAA){const r=v.parse(t).toByteArray();return pe(16===r.length,R.InvalidAAAARecord),e.from(r)}throw new N(R.InvalidRecordInput)},at=(t,r,n,i)=>{const a=e.concat([t.toBuffer(),r.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=xe(s,i,n);return pe(o,R.InvalidSignature),e.concat([t.toBuffer(),i])};var st,ot;!function(e){e[e.None=0]="None",e[e.Solana=1]="Solana",e[e.Ethereum=2]="Ethereum",e[e.Injective=3]="Injective"}(st||(st={})),function(e){e[e.None=0]="None",e[e.Solana=1]="Solana"}(ot||(ot={}));const ct={signatureType:ot.None,signature:Buffer.alloc(0)},ut={signatureType:st.None,signature:Buffer.alloc(0)},ft=new Map([[We.Backpack,new t("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),dt=new Set([We.IPFS,We.ARWV,We.LTC,We.DOGE,We.Email,We.Url,We.Discord,We.Github,We.Reddit,We.Twitter,We.Telegram,We.Pic,We.SHDW,We.POINT,We.Backpack,We.TXT,We.CNAME]),lt=new Set([We.ETH,We.Injective,We.SOL]),wt=e=>{switch(e){case st.None:return 0;case st.Solana:return 64;case st.Ethereum:case st.Injective:return 65;case ot.None:return 0;case ot.Solana:return 64;default:throw new N(R.UnsupportedSignature,`Unsupported signature type: ${e}`)}},pt=e=>{throw new N(R.RecordDoestNotSupportGuardianSig)},gt=(e,t,r)=>S.sign.detached.verify(e,t,r),ht=(e,t,r)=>{const n=B(e);return I(n,t)===E(r)},mt=(e,t,r)=>{throw new Error("TODO")},yt=(e,t,r,n)=>{switch(n){case st.Ethereum:case st.Injective:return ht(e.toString(),t.toString(),r.toString());case st.Solana:return gt(e,t,r);case st.None:throw new N(R.RecordIsNotSigned);default:throw new N(R.UnsupportedSignatureType)}},St=(e,t,r,n)=>{switch(n){case ot.Solana:return gt(e,t,r);case ot.None:throw new N(R.RecordIsNotSigned);default:throw new N(R.UnsupportedSignatureType)}};class bt{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return d(bt.schema,this)}static deserialize(e){return l(this.schema,bt,e)}}bt.LEN=8,bt.schema=new Map([[bt,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class vt{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return bt.LEN+this.buffer.length}static deserializeUnchecked(e){const t=w(bt.schema,bt,e);return new vt({header:t,buffer:Buffer.from(e.slice(bt.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return At(this.getContent(),e)}getContent(){const e=wt(this.header.guardianSignature)+wt(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,t,r=ct,n=ut){const i=kt(e,t),a=Buffer.concat([r.signature,n.signature,i]),s=new bt({userSignature:r.signatureType,guardianSignature:n.signatureType,contentLength:a.length});return new vt({header:s,buffer:a})}checkGuardianSignature(e,t){const r=wt(this.header.guardianSignature),n=wt(this.header.userSignature),i=Buffer.from(this.buffer.slice(n,n+r));return yt(e,i,t,this.header.guardianSignature)}checkUserSignature(e,t){const r=wt(this.header.userSignature),n=Buffer.from(this.buffer.slice(0,r));return St(e,n,t,this.header.userSignature)}static async retrieve(e,t,r,n){const i=It(r,t),{registry:a}=await be.retrieve(e,i);if(!a.data)throw new N(R.InvalidRecordData);const s=this.deserializeUnchecked(a.data),o=s.getContent(),c=Buffer.concat([i.toBuffer(),o]);if(!(null==n?void 0:n.skipGuardianSig)){const e=lt.has(t)?Buffer.from(s.getContent().slice(32)):pt();s.checkGuardianSignature(c,e)}return(null==n?void 0:n.skipUserSig)||s.checkUserSignature(c,a.owner.toBuffer()),s}static async retrieveBatch(e,t,r){const n=t.map((e=>It(r,e))),i=await be.retrieveBatch(e,n),a=[];for(let e of i)try{if(!(null==e?void 0:e.data)){a.push(void 0);continue}const t=vt.deserializeUnchecked(null==e?void 0:e.data);a.push(t)}catch{a.push(void 0)}return a}}const At=(e,r)=>{if(dt.has(r)){const t=e.toString("utf-8");return r===We.CNAME||r===We.TXT?k(t):t}if(r===We.SOL)return new t(e).toBase58();if(r===We.ETH||r===We.BSC)return"0x"+e.toString("hex");if(r===We.Injective)return y("inj",e,"bech32");if(r===We.A||r===We.AAAA)return v.fromByteArray([...e]).toString();throw new N(R.InvalidARecord)},kt=(e,r)=>{if(dt.has(r))return r!==We.CNAME&&r!==We.TXT||(e=A(e)),Buffer.from(e,"utf-8");if(r===We.SOL)return new t(e).toBuffer();if(r===We.ETH||r===We.BSC)return pe("0x"===e.slice(0,2),R.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(r===We.Injective){const t=m(e);return pe("inj"===t.prefix,R.InvalidInjectiveAddress),pe(20===t.data.length,R.InvalidInjectiveAddress),Buffer.from(t.data)}if(r===We.A){const t=v.parse(e).toByteArray();return pe(4===t.length,R.InvalidARecord),Buffer.from(t)}if(r===We.AAAA){const t=v.parse(e).toByteArray();return pe(16===t.length,R.InvalidAAAARecord),Buffer.from(t)}throw new N(R.InvalidARecord)},Bt=(e,t,r)=>{const n=kt(e,r),i=It(t,r);return Buffer.concat([i.toBuffer(),n])},It=(e,t)=>{const{pubkey:r}=fe(t+"."+e,Te.V2);return r};async function Et(e,t,r,i,a,s,o,c){const u=await Ae(t),f=await ke(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(r);let l;if(c){const{registry:t}=await ve(e,c);l=t.owner}return T(O,n.programId,f,a,i,u,new D(d),new W(r),o,c,l)}async function Rt(e,t,r,n,i,a){const s=await Ae(t),o=await ke(s,i,a);let c;c=i||(await be.retrieve(e,o)).registry.owner;return x(O,o,new W(r),n,c)}async function Nt(e,t,r,n,i,a){const s=await Ae(t),o=await ke(s,n,i);let c;c=n||(await be.retrieve(e,o)).registry.owner;return L(O,o,r,c,n,i,a)}async function Wt(e,t,r,n,i){const a=await Ae(t),s=await ke(a,n,i);let o;o=n||(await be.retrieve(e,s)).registry.owner;return j(O,s,r,o)}const Dt=async(e,r,s,o,f,d=Q,l)=>{const[w]=t.findProgramAddressSync([V.toBuffer()],V),p=ie(r),m=ae(p,void 0,X),y=ie(m.toBase58()),S=ae(y,w),[b]=t.findProgramAddressSync([m.toBuffer()],V),v=ee.findIndex((e=>null==l?void 0:l.equals(e)));let A;const k=[];if(-1!==v&&l){A=c(d,l,!0);const t=await e.getAccountInfo(A);if(!(null==t?void 0:t.data)){const e=u(o,A,l,d);k.push(e)}}const B=new g(e,h("mainnet-beta")),I=await B.getData(),E=te.get(d.toBase58());if(!E)throw new N(R.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const W=I.productPrice.get("Crypto."+E+"/USD"),D=I.productFromSymbol.get("Crypto."+E+"/USD"),T=c(d,ne),x=new P({name:r,space:s,referrerIdxOpt:-1!=v?v:null}).getInstruction(V,O,X,m,S,n.programId,w,o,f,re,W.productAccountKey,new t(D.price_account),T,a,i,b,A);return k.push(x),[[],k]},Tt=async(e,r,n,a,s)=>{let[o]=await t.findProgramAddress([V.toBuffer()],V),c=await Ae(e.toBase58()),u=await ke(c,o,a);return[[],[new H({name:r}).getInstruction(V,i,O,X,u,o,n,a,s)]]},xt=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new N(R.InvalidSubdomain);const{parent:s,pubkey:o}=fe(t),c=await e.getMinimumBalanceForRentExemption(n+be.HEADER_LEN),u=await Et(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const f=we(t,!0),d=await e.getAccountInfo(f);if(!(null==d?void 0:d.data)){const[,e]=await Tt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},Lt=async(e,t,r,i,a,s)=>{pe(r!==We.SOL,R.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=fe(`${r}.${t}`,Te.V1),f=it(i,r).length,d=await e.getMinimumBalanceForRentExemption(f+be.HEADER_LEN);return T(O,n.programId,o,a,s,c,new D(d),new W(f),void 0,u,a)},jt=async(e,t,r,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=fe(`${r}.${t}`,Te.V2),f=await e.getMinimumBalanceForRentExemption(i+be.HEADER_LEN);return T(O,n.programId,o,a,s,c,new D(f),new W(i),void 0,u,a)},Ct=async(e,t,r,n,i,a)=>{pe(r!==We.SOL,R.UnsupportedRecord);const{pubkey:s}=fe(`${r}.${t}`,Te.V1),o=await e.getAccountInfo(s);pe(!!(null==o?void 0:o.data),R.AccountDoesNotExist);const c=it(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[j(O,s,a,i),await Lt(e,t,r,n,i,a)];return[x(O,s,new W(0),c,i)]},Ht=async(t,r,n,i,a,s)=>{const{pubkey:o}=fe(`${n}.${r}`,Te.V2),c=await t.getAccountInfo(o),u=vt.new(i,n).serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[j(O,o,s,a),await jt(t,r,n,u.length,a,s),x(O,o,new W(0),e.from(u),a)];return[x(O,o,new W(0),e.from(u),a)]},Pt=async(e,t,r,n)=>{const{pubkey:i}=fe(`${t}.${e}`,Te.V2);return j(O,i,n,r)},Mt=async(e,t,r,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=fe(`${We.SOL}.${t}`,Te.V1),f=at(r,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(f+be.HEADER_LEN);return[T(O,n.programId,o,i,s,c,new D(d),new W(f),void 0,u,i)]},Ut=async(e,t,r,n,i,a)=>{const{pubkey:s}=fe(`${We.SOL}.${t}`,Te.V1),o=await e.getAccountInfo(s);if(pe(!!(null==o?void 0:o.data),R.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[j(O,s,a,n),await Mt(e,t,r,n,i,a)];const c=at(r,s,n,i);return[x(O,s,new W(0),c,n)]};async function zt(e,t,r,i,a){const s=await Ae(t),o=await ke(s,void 0,J),c=await e.getMinimumBalanceForRentExemption(i+be.HEADER_LEN);let u=[T(O,n.programId,o,r,a,s,new D(c),new W(i),void 0,J,q)];return u=u.concat(await Jt(e,t,o,r,a)),u}async function Ft(e,t,r,n){const i=await Ae(e),a=await ke(i,void 0,J);return[x(O,a,new W(r),n,t)]}async function Ot(e,t,r,n,i){const a=await Ae(t),s=await ke(a,void 0,J);let o=[L(O,s,n,r,void 0)];const c=await Ae(r.toString());return await ke(c,q,void 0),o.push(await Wt(e,r.toString(),i,q,J)),o=o.concat(await Jt(e,t,s,n,i)),o}async function Gt(e,t){const r=await Ae(e),n=await ke(r,void 0,J),i=await Ae(t.toString()),a=await ke(i,q,J);return[j(O,n,t,t),j(O,a,t,t)]}async function Xt(e){const t=await Ae(e);return await ke(t,void 0,J)}async function Vt(e,t){const r=await Ae(t),n=await ke(r,void 0,J),{registry:i}=await be.retrieve(e,n);return i}async function Kt(e,r){const n=await Ae(r.toString()),i=await ke(n,q,J);let a=await qt.retrieve(e,i);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function Zt(e,r){const n=[{memcmp:{offset:0,bytes:J.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:q.toBase58()}}],i=await e.getProgramAccounts(O,{filters:n});for(const e of i)if(e.account.data.length>be.HEADER_LEN+32){let r=e.account.data.slice(be.HEADER_LEN),n=w(qt.schema,qt,r);return[n.twitterHandle,new t(n.twitterRegistryKey)]}throw new N(R.AccountDoesNotExist)}async function Yt(r,n){const i=[{memcmp:{offset:0,bytes:J.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:new t(e.alloc(32,0)).toBase58()}}],a=await r.getProgramAccounts(O,{filters:i});if(a.length>1)throw new N(R.MultipleRegistries);return a[0].account.data.slice(be.HEADER_LEN)}class qt{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 N(R.InvalidReverseTwitter);return w(this.schema,qt,r.data.slice(be.HEADER_LEN))}}async function Jt(t,r,i,a,s){const o=await Ae(a.toString()),c=await ke(o,q,J);let u=d(qt.schema,new qt({twitterRegistryKey:i.toBytes(),twitterHandle:r}));return[T(O,n.programId,c,a,s,o,new D(await t.getMinimumBalanceForRentExemption(u.length+be.HEADER_LEN)),new W(u.length),q,J,q),x(O,c,new W(0),e.from(u),q)]}qt.schema=new Map([[qt,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const $t=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class _t{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(e){return l(this.schema,_t,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new N(R.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,n){return await t.findProgramAddress([e.from("favourite_domain"),n.toBuffer()],r)}static getKeySync(r,n){return t.findProgramAddressSync([e.from("favourite_domain"),n.toBuffer()],r)}}_t.schema=new Map([[_t,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const Qt=async(e,r)=>{const[n]=_t.getKeySync($t,new t(r)),i=await _t.retrieve(e,n),a=await se(e,i.nameAccount);return{domain:i.nameAccount,reverse:a}};export{Z as BONFIDA_FIDA_BNB,_ as BONFIDA_USDC_BNB,R as ErrorType,_t as FavouriteDomain,st as GuardianSig,ft as Guardians,G as HASH_PREFIX,$t as NAME_OFFERS_ID,O as NAME_PROGRAM_ID,be as NameRegistryState,ut as NullGuardianSig,ct as NullUserSig,W as Numberu32,D as Numberu64,K as PYTH_FIDA_PRICE_ACC,re as PYTH_MAPPING_ACC,De as RECORD_V1_SIZE,ee as REFERRERS,V as REGISTER_PROGRAM_ID,Y as REVERSE_LOOKUP_CLASS,X as ROOT_DOMAIN_ACCOUNT,We as Record,vt as RecordV2,bt as RecordV2Header,Te as RecordVersion,qt as ReverseTwitterRegistryState,lt as SELF_SIGNED,N as SNSError,$ as SOL_RECORD_SIG_LEN,te as TOKENS_SYM_MINT,J as TWITTER_ROOT_PARENT_REGISTRY_KEY,q as TWITTER_VERIFICATION_AUTHORITY,Q as USDC_MINT,dt as UTF8_ENCODED,ot as UserSig,ne as VAULT_OWNER,Ft as changeTwitterRegistryData,Ot as changeVerifiedPubkey,pe as check,xe as checkSolRecord,T as createInstruction,P as createInstructionV3,Et as createNameRegistry,Lt as createRecordInstruction,jt as createRecordV2Instruction,H as createReverseInstruction,Tt as createReverseName,Jt as createReverseTwitterRegistry,Mt as createSolRecordInstruction,xt as createSubdomain,C as createV2Instruction,zt as createVerifiedTwitterRegistry,j as deleteInstruction,Wt as deleteNameRegistry,Pt as deleteRecordV2,Gt as deleteTwitterRegistry,nt as deserializeRecord,At as deserializeRecordV2,ce as findSubdomains,de as getAllDomains,le as getAllRegisteredDomains,Me as getArweaveRecord,rt as getBackpackRecord,et as getBscRecord,ze as getBtcRecord,Ve as getDiscordRecord,Oe as getDogeRecord,Re as getDomainKey,fe as getDomainKeySync,Ge as getEmailRecord,Ue as getEthRecord,Qt as getFavoriteDomain,Ke as getGithubRecord,pt as getGuardianPublickey,Kt as getHandleAndRegistryKey,Ae as getHashedName,ie as getHashedNameSync,tt as getInjectiveRecord,Pe as getIpfsRecord,Fe as getLtcRecord,Bt as getMessageToSign,ke as getNameAccountKey,ae as getNameAccountKeySync,ve as getNameOwner,Je as getPicRecord,Qe as getPointRecord,Ce as getRecord,je as getRecordKeySync,It as getRecordV2Key,He as getRecords,Ze as getRedditRecord,Ne as getReverseKey,we as getReverseKeySync,$e as getShdwRecord,wt as getSignatureByteLength,_e as getSolRecord,qe as getTelegramRecord,Se as getTokenizedDomains,Zt as getTwitterHandleandRegistryKeyViaFilters,Ye as getTwitterRecord,Vt as getTwitterRegistry,Yt as getTwitterRegistryData,Xt as getTwitterRegistryKey,Xe as getUrlRecord,Be as performReverseLookup,Ie as performReverseLookupBatch,Dt as registerDomainName,Le as resolve,ge as retrieveNftOwner,he as retrieveNfts,se as reverseLookup,oe as reverseLookupBatch,it as serializeRecord,kt as serializeRecordV2Content,at as serializeSolRecord,L as transferInstruction,Nt as transferNameOwnership,x as updateInstruction,Rt as updateNameRegistryData,Ct as updateRecordInstruction,Ht as updateRecordV2Instruction,Ut as updateSolRecordInstruction,ht as verifyEthereumSignature,yt as verifyGuardianSignature,mt as verifyInjectiveSignature,gt as verifySolanaSignature,St as verifyUserSignature};
1
+ import{Buffer as e}from"buffer";import{PublicKey as t,TransactionInstruction as r,SystemProgram as n,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import f from"bn.js";import{serialize as d,deserialize as l,deserializeUnchecked as w}from"borsh";import{sha256 as p}from"@ethersproject/sha2";import{PythHttpClient as g,getPythProgramKeyForCluster as h}from"@pythnetwork/client";import{decode as m,encode as y}from"bech32-buffer";import*as S from"tweetnacl";import b from"bs58";import v from"ipaddr.js";import{encode as A,decode as k}from"punycode";import{hashMessage as B}from"@ethersproject/hash";import{recoverAddress as I}from"@ethersproject/transactions";import{getAddress as E}from"@ethersproject/address";var R;!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.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(R||(R={}));class N extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,N)}}class W extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(4===r.length)return r;if(r.length>4)throw new N(R.U32Overflow);const n=e.alloc(4);return r.copy(n),n}static fromBuffer(e){if(4!==e.length)throw new N(R.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class D extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(8===r.length)return r;if(r.length>8)throw new N(R.U64Overflow);const n=e.alloc(8);return r.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new N(R.U64Overflow,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function T(n,i,a,s,o,c,u,f,d,l,w){const p=[e.from(Int8Array.from([0])),new W(c.length).toBuffer(),c,u.toBuffer(),f.toBuffer()],g=e.concat(p),h=[{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 d?h.push({pubkey:d,isSigner:!0,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),l?h.push({pubkey:l,isSigner:!1,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),w&&h.push({pubkey:w,isSigner:!0,isWritable:!1}),new r({keys:h,programId:n,data:g})}function x(t,n,i,a,s){const o=[e.from(Int8Array.from([1])),i.toBuffer(),new W(a.length).toBuffer(),a],c=e.concat(o);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function L(n,i,a,s,o,c,u){const f=[e.from(Int8Array.from([2])),a.toBuffer()],d=e.concat(f),l=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&l.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||l.push({pubkey:t.default,isSigner:!1,isWritable:!1}),l.push({pubkey:c,isSigner:!1,isWritable:!1})),new r({keys:l,programId:n,data:d})}function j(t,n,i,a){const s=[e.from(Int8Array.from([3]))],o=e.concat(s);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class C{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(C.schema,this)}getInstruction(t,i,s,o,c,u,f,d,l,w,p){const g=e.from(this.serialize()),h=[{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:n.programId,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1}];return new r({keys:h,programId:t,data:g})}}C.schema=new Map([[C,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class H{constructor(e){this.tag=5,this.name=e.name}serialize(){return d(H.schema,this)}getInstruction(n,i,a,s,o,c,u,f,d){const l=e.from(this.serialize());let w=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:t.default,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0}];if(f){if(!d)throw new N(R.MissingParentOwner);w.push({pubkey:f,isSigner:!1,isWritable:!0}),w.push({pubkey:d,isSigner:!0,isWritable:!1})}return new r({keys:w,programId:n,data:l})}}H.schema=new Map([[H,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class P{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(P.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d,l,w,p,g,h,m,y){const S=e.from(this.serialize());let b=[];return b.push({pubkey:n,isSigner:!1,isWritable:!1}),b.push({pubkey:i,isSigner:!1,isWritable:!1}),b.push({pubkey:a,isSigner:!1,isWritable:!0}),b.push({pubkey:s,isSigner:!1,isWritable:!0}),b.push({pubkey:o,isSigner:!1,isWritable:!1}),b.push({pubkey:c,isSigner:!1,isWritable:!1}),b.push({pubkey:u,isSigner:!0,isWritable:!0}),b.push({pubkey:f,isSigner:!1,isWritable:!0}),b.push({pubkey:d,isSigner:!1,isWritable:!1}),b.push({pubkey:l,isSigner:!1,isWritable:!1}),b.push({pubkey:w,isSigner:!1,isWritable:!1}),b.push({pubkey:p,isSigner:!1,isWritable:!0}),b.push({pubkey:g,isSigner:!1,isWritable:!1}),b.push({pubkey:h,isSigner:!1,isWritable:!1}),b.push({pubkey:m,isSigner:!1,isWritable:!1}),y&&b.push({pubkey:y,isSigner:!1,isWritable:!0}),new r({keys:b,programId:t,data:S})}}P.schema=new Map([[P,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const M=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),U=e.from("tokenized_name");var z;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(z||(z={}));class F{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new t(e.nameAccount),this.owner=new t(e.owner),this.nftMint=new t(e.nftMint)}static deserialize(e){return l(this.schema,F,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,n){return await t.findProgramAddress([e.from("nft_record"),r.toBuffer()],n)}}F.schema=new Map([[F,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const O=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),G="SPL Name Service",X=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),V=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),K=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),Z=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),Y=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),q=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),J=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),$=96,_=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),Q=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ee=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new t("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new t("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe")],te=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),re=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),ne=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),ie=t=>{const r=G+t,n=p(e.from(r,"utf8")).slice(2);return e.from(n,"hex")},ae=(r,n,i)=>{const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=t.findProgramAddressSync(a,O);return s};async function se(e,t){const r=ie(t.toBase58()),n=ae(r,Y),{registry:i}=await be.retrieve(e,n);if(!i.data)throw new N(R.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function oe(e,t){let r=[];for(let e of t){const t=ie(e.toBase58()),n=ae(t,Y);r.push(n)}return(await be.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const ce=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:Y.toBase58()}}],n=await e.getProgramAccounts(O,{filters:r}),i=await se(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>fe(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},ue=(e,t=X)=>{let r=ie(e);return{pubkey:ae(r,void 0,t),hashed:r}},fe=(t,r)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r||0]).toString().concat(n[0]),{pubkey:i}=ue(n[1]);return{...ue(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=ue(n[2]),{pubkey:r}=ue("\0".concat(n[1]),t),i=e.from([1]).toString();return{...ue(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new N(R.InvalidInput);return{...ue(t,X),isSub:!1,parent:void 0}};async function de(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:X.toBase58()}}];return(await e.getProgramAccounts(O,{filters:r})).map((e=>e.pubkey))}const le=async e=>{const t=[{memcmp:{offset:0,bytes:X.toBase58()}}];return await e.getProgramAccounts(O,{dataSlice:{offset:32,length:32},filters:t})},we=(e,t)=>{const{pubkey:r,parent:n}=fe(e),i=ie(r.toBase58());return ae(i,Y,t?n:void 0)},pe=(e,t)=>{if(!e)throw new N(t)},ge=async(e,r)=>{try{const[n]=await t.findProgramAddress([U,r.toBuffer()],M);if("0"===(await s(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},he=async e=>{const r=await e.getProgramAccounts(M,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((e=>new t(e.account.data.slice(66,98))))},me=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ye=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(M,{filters:r})})(e,t.mint);if(1===r.length)return F.deserialize(r[0].account.data)},Se=async(e,t)=>{const r=await(async(e,t)=>{const r=[...me(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>ye(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await oe(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class be{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new N(R.AccountDoesNotExist);let i=w(this.schema,be,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await ge(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=w(this.schema,be,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function ve(e,t){if(!await e.getAccountInfo(t))throw new N(R.AccountDoesNotExist);return be.retrieve(e,t)}async function Ae(t){const r=G+t,n=p(e.from(r,"utf8")).slice(2);return e.from(n,"hex")}async function ke(r,n,i){const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=await t.findProgramAddress(a,O);return s}async function Be(e,t){const r=await Ae(t.toBase58()),n=await ke(r,Y),{registry:i}=await be.retrieve(e,n);if(!i.data)throw new N(R.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Ie(e,t){let r=[];for(let e of t){const t=await Ae(e.toBase58()),n=await ke(t,Y);r.push(n)}return(await be.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}be.HEADER_LEN=96,be.schema=new Map([[be,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const Ee=async(e,t=X)=>{let r=await Ae(e);return{pubkey:await ke(r,void 0,t),hashed:r}},Re=async(t,r=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r?1:0]).toString().concat(n[0]),{pubkey:i}=await Ee(n[1]);return{...await Ee(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=await Ee(n[2]),{pubkey:r}=await Ee("\0".concat(n[1]),t),i=e.from([1]).toString();return{...await Ee(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new N(R.InvalidInput);return{...await Ee(t,X),isSub:!1,parent:void 0}},Ne=async(e,t)=>{const{pubkey:r,parent:n}=await Re(e),i=await Ae(r.toBase58());return await ke(i,Y,t?n:void 0)};var We;!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"}(We||(We={}));const De=new Map([[We.SOL,96],[We.ETH,20],[We.BSC,20],[We.Injective,20],[We.A,4],[We.AAAA,16]]);var Te;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(Te||(Te={}));const xe=(e,t,r)=>S.sign.detached.verify(e,t,r.toBytes()),Le=async(r,n)=>{const{pubkey:i}=fe(n),{registry:a,nftOwner:s}=await be.retrieve(r,i);if(s)return s;try{const i=je(n,We.SOL),s=await _e(r,n);if(!(null==s?void 0:s.data))throw new N(R.NoRecordData);const o=new TextEncoder,c=e.concat([s.data.slice(0,32),i.toBuffer()]),u=o.encode(c.toString("hex"));if(!xe(u,s.data.slice(32),a.owner))throw new N(R.InvalidSignature);return new t(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},je=(e,t)=>{const{pubkey:r}=fe(t+"."+e,Te.V1);return r};async function Ce(e,t,r,n){const i=je(t,r);let{registry:a}=await be.retrieve(e,i);if(!a.data)throw new N(R.NoRecordData);if(n)return nt(a,r,i);const s=De.get(r);return a.data=a.data.slice(0,s),a}async function He(e,t,r,n){const i=r.map((e=>je(t,e))),a=await be.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return nt(e,r[n],je(t,r[n]))})):a}const Pe=async(e,t)=>await Ce(e,t,We.IPFS,!0),Me=async(e,t)=>await Ce(e,t,We.ARWV,!0),Ue=async(e,t)=>await Ce(e,t,We.ETH,!0),ze=async(e,t)=>await Ce(e,t,We.BTC,!0),Fe=async(e,t)=>await Ce(e,t,We.LTC,!0),Oe=async(e,t)=>await Ce(e,t,We.DOGE,!0),Ge=async(e,t)=>await Ce(e,t,We.Email,!0),Xe=async(e,t)=>await Ce(e,t,We.Url,!0),Ve=async(e,t)=>await Ce(e,t,We.Discord,!0),Ke=async(e,t)=>await Ce(e,t,We.Github,!0),Ze=async(e,t)=>await Ce(e,t,We.Reddit,!0),Ye=async(e,t)=>await Ce(e,t,We.Twitter,!0),qe=async(e,t)=>await Ce(e,t,We.Telegram,!0),Je=async(e,t)=>await Ce(e,t,We.Pic,!0),$e=async(e,t)=>await Ce(e,t,We.SHDW,!0),_e=async(e,t)=>await Ce(e,t,We.SOL),Qe=async(e,t)=>await Ce(e,t,We.POINT,!0),et=async(e,t)=>await Ce(e,t,We.BSC,!0),tt=async(e,t)=>await Ce(e,t,We.Injective,!0),rt=async(e,t)=>await Ce(e,t,We.Backpack,!0),nt=(t,r,n)=>{const i=null==t?void 0:t.data;if(!i)return;const a=De.get(r),s=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(i);if(!a)return i.slice(0,s).toString("utf-8");if(a&&s!==a){const t=i.slice(0,s).toString("utf-8");if(r===We.Injective){const e=m(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(r===We.BSC||r===We.ETH){const r=t.slice(0,2),n=t.slice(2);if("0x"===r&&20===e.from(n,"hex").length)return t}else if((r===We.A||r===We.AAAA)&&v.isValid(t))return t;throw new N(R.InvalidRecordData)}if(r===We.SOL){const r=new TextEncoder,a=e.concat([i.slice(0,32),n.toBuffer()]),s=r.encode(a.toString("hex"));if(xe(s,i.slice(32),t.owner))return b.encode(i.slice(0,32))}else{if(r===We.ETH||r===We.BSC)return"0x"+i.slice(0,a).toString("hex");if(r===We.Injective)return y("inj",i.slice(0,a),"bech32");if(r===We.A||r===We.AAAA)return v.fromByteArray([...i.slice(0,a)]).toString()}throw new N(R.InvalidRecordData)},it=(t,r)=>{if(!De.get(r))return r!==We.CNAME&&r!==We.TXT||(t=A(t)),e.from(t,"utf-8");if(r===We.SOL)throw new N(R.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===We.ETH||r===We.BSC)return pe("0x"===t.slice(0,2),R.InvalidEvmAddress),e.from(t.slice(2),"hex");if(r===We.Injective){const r=m(t);return pe("inj"===r.prefix,R.InvalidInjectiveAddress),pe(20===r.data.length,R.InvalidInjectiveAddress),e.from(r.data)}if(r===We.A){const r=v.parse(t).toByteArray();return pe(4===r.length,R.InvalidARecord),e.from(r)}if(r===We.AAAA){const r=v.parse(t).toByteArray();return pe(16===r.length,R.InvalidAAAARecord),e.from(r)}throw new N(R.InvalidRecordInput)},at=(t,r,n,i)=>{const a=e.concat([t.toBuffer(),r.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=xe(s,i,n);return pe(o,R.InvalidSignature),e.concat([t.toBuffer(),i])};async function st(e,t,r,i,a,s,o,c){const u=await Ae(t),f=await ke(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(r);let l;if(c){const{registry:t}=await ve(e,c);l=t.owner}return T(O,n.programId,f,a,i,u,new D(d),new W(r),o,c,l)}async function ot(e,t,r,n,i,a){const s=await Ae(t),o=await ke(s,i,a);let c;c=i||(await be.retrieve(e,o)).registry.owner;return x(O,o,new W(r),n,c)}async function ct(e,t,r,n,i,a){const s=await Ae(t),o=await ke(s,n,i);let c;c=n||(await be.retrieve(e,o)).registry.owner;return L(O,o,r,c,n,i,a)}async function ut(e,t,r,n,i){const a=await Ae(t),s=await ke(a,n,i);let o;o=n||(await be.retrieve(e,s)).registry.owner;return j(O,s,r,o)}const ft=async(e,r,s,o,f,d=Q,l)=>{const[w]=t.findProgramAddressSync([V.toBuffer()],V),p=ie(r),m=ae(p,void 0,X),y=ie(m.toBase58()),S=ae(y,w),[b]=t.findProgramAddressSync([m.toBuffer()],V),v=ee.findIndex((e=>null==l?void 0:l.equals(e)));let A;const k=[];if(-1!==v&&l){A=c(d,l,!0);const t=await e.getAccountInfo(A);if(!(null==t?void 0:t.data)){const e=u(o,A,l,d);k.push(e)}}const B=new g(e,h("mainnet-beta")),I=await B.getData(),E=te.get(d.toBase58());if(!E)throw new N(R.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const W=I.productPrice.get("Crypto."+E+"/USD"),D=I.productFromSymbol.get("Crypto."+E+"/USD"),T=c(d,ne),x=new P({name:r,space:s,referrerIdxOpt:-1!=v?v:null}).getInstruction(V,O,X,m,S,n.programId,w,o,f,re,W.productAccountKey,new t(D.price_account),T,a,i,b,A);return k.push(x),[[],k]},dt=async(e,r,n,a,s)=>{let[o]=await t.findProgramAddress([V.toBuffer()],V),c=await Ae(e.toBase58()),u=await ke(c,o,a);return[[],[new H({name:r}).getInstruction(V,i,O,X,u,o,n,a,s)]]},lt=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new N(R.InvalidSubdomain);const{parent:s,pubkey:o}=fe(t),c=await e.getMinimumBalanceForRentExemption(n+be.HEADER_LEN),u=await st(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const f=we(t,!0),d=await e.getAccountInfo(f);if(!(null==d?void 0:d.data)){const[,e]=await dt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},wt=async(e,t,r,i,a,s)=>{pe(r!==We.SOL,R.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=fe(`${r}.${t}`,Te.V1),f=it(i,r).length,d=await e.getMinimumBalanceForRentExemption(f+be.HEADER_LEN);return T(O,n.programId,o,a,s,c,new D(d),new W(f),void 0,u,a)},pt=async(e,t,r,i,a,s)=>{const o=i.serialize().length,{pubkey:c,hashed:u,parent:f}=fe(`${r}.${t}`,Te.V2),d=await e.getMinimumBalanceForRentExemption(o+be.HEADER_LEN);return T(O,n.programId,c,a,s,u,new D(d),new W(o),void 0,f,a)},gt=async(e,t,r,n,i,a)=>{pe(r!==We.SOL,R.UnsupportedRecord);const{pubkey:s}=fe(`${r}.${t}`,Te.V1),o=await e.getAccountInfo(s);pe(!!(null==o?void 0:o.data),R.AccountDoesNotExist);const c=it(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[j(O,s,a,i),await wt(e,t,r,n,i,a)];return[x(O,s,new W(0),c,i)]},ht=async(t,r,n,i,a,s)=>{const{pubkey:o}=fe(`${n}.${r}`,Te.V2),c=await t.getAccountInfo(o),u=i.serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[j(O,o,s,a),await pt(t,r,n,i,a,s),x(O,o,new W(0),e.from(u),a)];return[x(O,o,new W(0),e.from(u),a)]},mt=async(e,t,r,n)=>{const{pubkey:i}=fe(`${t}.${e}`,Te.V2);return j(O,i,n,r)},yt=async(e,t,r,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=fe(`${We.SOL}.${t}`,Te.V1),f=at(r,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(f+be.HEADER_LEN);return[T(O,n.programId,o,i,s,c,new D(d),new W(f),void 0,u,i)]},St=async(e,t,r,n,i,a)=>{const{pubkey:s}=fe(`${We.SOL}.${t}`,Te.V1),o=await e.getAccountInfo(s);if(pe(!!(null==o?void 0:o.data),R.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[j(O,s,a,n),await yt(e,t,r,n,i,a)];const c=at(r,s,n,i);return[x(O,s,new W(0),c,n)]};async function bt(e,t,r,i,a){const s=await Ae(t),o=await ke(s,void 0,J),c=await e.getMinimumBalanceForRentExemption(i+be.HEADER_LEN);let u=[T(O,n.programId,o,r,a,s,new D(c),new W(i),void 0,J,q)];return u=u.concat(await Dt(e,t,o,r,a)),u}async function vt(e,t,r,n){const i=await Ae(e),a=await ke(i,void 0,J);return[x(O,a,new W(r),n,t)]}async function At(e,t,r,n,i){const a=await Ae(t),s=await ke(a,void 0,J);let o=[L(O,s,n,r,void 0)];const c=await Ae(r.toString());return await ke(c,q,void 0),o.push(await ut(e,r.toString(),i,q,J)),o=o.concat(await Dt(e,t,s,n,i)),o}async function kt(e,t){const r=await Ae(e),n=await ke(r,void 0,J),i=await Ae(t.toString()),a=await ke(i,q,J);return[j(O,n,t,t),j(O,a,t,t)]}async function Bt(e){const t=await Ae(e);return await ke(t,void 0,J)}async function It(e,t){const r=await Ae(t),n=await ke(r,void 0,J),{registry:i}=await be.retrieve(e,n);return i}async function Et(e,r){const n=await Ae(r.toString()),i=await ke(n,q,J);let a=await Wt.retrieve(e,i);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function Rt(e,r){const n=[{memcmp:{offset:0,bytes:J.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:q.toBase58()}}],i=await e.getProgramAccounts(O,{filters:n});for(const e of i)if(e.account.data.length>be.HEADER_LEN+32){let r=e.account.data.slice(be.HEADER_LEN),n=w(Wt.schema,Wt,r);return[n.twitterHandle,new t(n.twitterRegistryKey)]}throw new N(R.AccountDoesNotExist)}async function Nt(r,n){const i=[{memcmp:{offset:0,bytes:J.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:new t(e.alloc(32,0)).toBase58()}}],a=await r.getProgramAccounts(O,{filters:i});if(a.length>1)throw new N(R.MultipleRegistries);return a[0].account.data.slice(be.HEADER_LEN)}class Wt{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 N(R.InvalidReverseTwitter);return w(this.schema,Wt,r.data.slice(be.HEADER_LEN))}}async function Dt(t,r,i,a,s){const o=await Ae(a.toString()),c=await ke(o,q,J);let u=d(Wt.schema,new Wt({twitterRegistryKey:i.toBytes(),twitterHandle:r}));return[T(O,n.programId,c,a,s,o,new D(await t.getMinimumBalanceForRentExemption(u.length+be.HEADER_LEN)),new W(u.length),q,J,q),x(O,c,new W(0),e.from(u),q)]}Wt.schema=new Map([[Wt,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Tt=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class xt{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(e){return l(this.schema,xt,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new N(R.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,n){return await t.findProgramAddress([e.from("favourite_domain"),n.toBuffer()],r)}static getKeySync(r,n){return t.findProgramAddressSync([e.from("favourite_domain"),n.toBuffer()],r)}}xt.schema=new Map([[xt,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const Lt=async(e,r)=>{const[n]=xt.getKeySync(Tt,new t(r)),i=await xt.retrieve(e,n),a=await se(e,i.nameAccount);return{domain:i.nameAccount,reverse:a}};var jt,Ct;!function(e){e[e.None=0]="None",e[e.Solana=1]="Solana",e[e.Ethereum=2]="Ethereum",e[e.Injective=3]="Injective"}(jt||(jt={})),function(e){e[e.None=0]="None",e[e.Solana=1]="Solana"}(Ct||(Ct={}));const Ht={signatureType:Ct.None,signature:Buffer.alloc(0)},Pt={signatureType:jt.None,signature:Buffer.alloc(0)},Mt=new Map([[We.Backpack,new t("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Ut=new Set([We.IPFS,We.ARWV,We.LTC,We.DOGE,We.Email,We.Url,We.Discord,We.Github,We.Reddit,We.Twitter,We.Telegram,We.Pic,We.SHDW,We.POINT,We.Backpack,We.TXT,We.CNAME]),zt=new Set([We.ETH,We.Injective,We.SOL]),Ft=e=>{switch(e){case jt.None:return 0;case jt.Solana:return 64;case jt.Ethereum:case jt.Injective:return 65;case Ct.None:return 0;case Ct.Solana:return 64;default:throw new N(R.UnsupportedSignature,`Unsupported signature type: ${e}`)}},Ot=e=>{throw new N(R.RecordDoestNotSupportGuardianSig)},Gt=(e,t,r)=>S.sign.detached.verify(e,t,r),Xt=(e,t,r)=>{const n=B(e);return I(n,t)===E(r)},Vt=(e,t,r)=>{throw new Error("TODO")},Kt=(e,t,r,n)=>{switch(n){case jt.Ethereum:case jt.Injective:return Xt(e.toString(),t.toString(),r.toString());case jt.Solana:return Gt(e,t,r);case jt.None:throw new N(R.RecordIsNotSigned);default:throw new N(R.UnsupportedSignatureType)}},Zt=(e,t,r,n)=>{switch(n){case Ct.Solana:return Gt(e,t,r);case Ct.None:throw new N(R.RecordIsNotSigned);default:throw new N(R.UnsupportedSignatureType)}};class Yt{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return d(Yt.schema,this)}static deserialize(e){return l(this.schema,Yt,e)}}Yt.LEN=8,Yt.schema=new Map([[Yt,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class qt{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return Yt.LEN+this.buffer.length}static deserializeUnchecked(e){const t=w(Yt.schema,Yt,e);return new qt({header:t,buffer:Buffer.from(e.slice(Yt.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return Jt(this.getContent(),e)}getContent(){const e=Ft(this.header.guardianSignature)+Ft(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,t,r=Ht,n=Pt){const i=$t(e,t),a=Buffer.concat([r.signature,n.signature,i]),s=new Yt({userSignature:r.signatureType,guardianSignature:n.signatureType,contentLength:a.length});return new qt({header:s,buffer:a})}checkGuardianSignature(e,t){const r=Ft(this.header.guardianSignature),n=Ft(this.header.userSignature),i=Buffer.from(this.buffer.slice(n,n+r));return Kt(e,i,t,this.header.guardianSignature)}checkUserSignature(e,t){const r=Ft(this.header.userSignature),n=Buffer.from(this.buffer.slice(0,r));return Zt(e,n,t,this.header.userSignature)}static async retrieve(e,t,r,n){const i=Qt(r,t),{registry:a}=await be.retrieve(e,i);if(!a.data)throw new N(R.InvalidRecordData);const s=this.deserializeUnchecked(a.data),o=s.getContent(),c=Buffer.concat([i.toBuffer(),o]);if(!(null==n?void 0:n.skipGuardianSig)){const e=zt.has(t)?Buffer.from(s.getContent().slice(32)):Ot();s.checkGuardianSignature(c,e)}return(null==n?void 0:n.skipUserSig)||s.checkUserSignature(c,a.owner.toBuffer()),s}static async retrieveBatch(e,t,r){const n=t.map((e=>Qt(r,e))),i=await be.retrieveBatch(e,n),a=[];for(let e of i)try{if(!(null==e?void 0:e.data)){a.push(void 0);continue}const t=qt.deserializeUnchecked(null==e?void 0:e.data);a.push(t)}catch{a.push(void 0)}return a}}const Jt=(e,r)=>{if(Ut.has(r)){const t=e.toString("utf-8");return r===We.CNAME||r===We.TXT?k(t):t}if(r===We.SOL)return new t(e).toBase58();if(r===We.ETH||r===We.BSC)return"0x"+e.toString("hex");if(r===We.Injective)return y("inj",e,"bech32");if(r===We.A||r===We.AAAA)return v.fromByteArray([...e]).toString();throw new N(R.InvalidARecord)},$t=(e,r)=>{if(Ut.has(r))return r!==We.CNAME&&r!==We.TXT||(e=A(e)),Buffer.from(e,"utf-8");if(r===We.SOL)return new t(e).toBuffer();if(r===We.ETH||r===We.BSC)return pe("0x"===e.slice(0,2),R.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(r===We.Injective){const t=m(e);return pe("inj"===t.prefix,R.InvalidInjectiveAddress),pe(20===t.data.length,R.InvalidInjectiveAddress),Buffer.from(t.data)}if(r===We.A){const t=v.parse(e).toByteArray();return pe(4===t.length,R.InvalidARecord),Buffer.from(t)}if(r===We.AAAA){const t=v.parse(e).toByteArray();return pe(16===t.length,R.InvalidAAAARecord),Buffer.from(t)}throw new N(R.InvalidARecord)},_t=(e,t,r)=>{const n=$t(e,r),i=Qt(t,r);return Buffer.concat([i.toBuffer(),n])},Qt=(e,t)=>{const{pubkey:r}=fe(t+"."+e,Te.V2);return r};export{Z as BONFIDA_FIDA_BNB,_ as BONFIDA_USDC_BNB,R as ErrorType,xt as FavouriteDomain,jt as GuardianSig,Mt as Guardians,G as HASH_PREFIX,Tt as NAME_OFFERS_ID,O as NAME_PROGRAM_ID,be as NameRegistryState,Pt as NullGuardianSig,Ht as NullUserSig,W as Numberu32,D as Numberu64,K as PYTH_FIDA_PRICE_ACC,re as PYTH_MAPPING_ACC,De as RECORD_V1_SIZE,ee as REFERRERS,V as REGISTER_PROGRAM_ID,Y as REVERSE_LOOKUP_CLASS,X as ROOT_DOMAIN_ACCOUNT,We as Record,qt as RecordV2,Yt as RecordV2Header,Te as RecordVersion,Wt as ReverseTwitterRegistryState,zt as SELF_SIGNED,N as SNSError,$ as SOL_RECORD_SIG_LEN,te as TOKENS_SYM_MINT,J as TWITTER_ROOT_PARENT_REGISTRY_KEY,q as TWITTER_VERIFICATION_AUTHORITY,Q as USDC_MINT,Ut as UTF8_ENCODED,Ct as UserSig,ne as VAULT_OWNER,vt as changeTwitterRegistryData,At as changeVerifiedPubkey,pe as check,xe as checkSolRecord,T as createInstruction,P as createInstructionV3,st as createNameRegistry,wt as createRecordInstruction,pt as createRecordV2Instruction,H as createReverseInstruction,dt as createReverseName,Dt as createReverseTwitterRegistry,yt as createSolRecordInstruction,lt as createSubdomain,C as createV2Instruction,bt as createVerifiedTwitterRegistry,j as deleteInstruction,ut as deleteNameRegistry,mt as deleteRecordV2,kt as deleteTwitterRegistry,nt as deserializeRecord,Jt as deserializeRecordV2,ce as findSubdomains,de as getAllDomains,le as getAllRegisteredDomains,Me as getArweaveRecord,rt as getBackpackRecord,et as getBscRecord,ze as getBtcRecord,Ve as getDiscordRecord,Oe as getDogeRecord,Re as getDomainKey,fe as getDomainKeySync,Ge as getEmailRecord,Ue as getEthRecord,Lt as getFavoriteDomain,Ke as getGithubRecord,Ot as getGuardianPublickey,Et as getHandleAndRegistryKey,Ae as getHashedName,ie as getHashedNameSync,tt as getInjectiveRecord,Pe as getIpfsRecord,Fe as getLtcRecord,_t as getMessageToSign,ke as getNameAccountKey,ae as getNameAccountKeySync,ve as getNameOwner,Je as getPicRecord,Qe as getPointRecord,Ce as getRecord,je as getRecordKeySync,Qt as getRecordV2Key,He as getRecords,Ze as getRedditRecord,Ne as getReverseKey,we as getReverseKeySync,$e as getShdwRecord,Ft as getSignatureByteLength,_e as getSolRecord,qe as getTelegramRecord,Se as getTokenizedDomains,Rt as getTwitterHandleandRegistryKeyViaFilters,Ye as getTwitterRecord,It as getTwitterRegistry,Nt as getTwitterRegistryData,Bt as getTwitterRegistryKey,Xe as getUrlRecord,Be as performReverseLookup,Ie as performReverseLookupBatch,ft as registerDomainName,Le as resolve,ge as retrieveNftOwner,he as retrieveNfts,se as reverseLookup,oe as reverseLookupBatch,it as serializeRecord,$t as serializeRecordV2Content,at as serializeSolRecord,L as transferInstruction,ct as transferNameOwnership,x as updateInstruction,ot as updateNameRegistryData,gt as updateRecordInstruction,ht as updateRecordV2Instruction,St as updateSolRecordInstruction,Xt as verifyEthereumSignature,Kt as verifyGuardianSignature,Vt as verifyInjectiveSignature,Gt as verifySolanaSignature,Zt as verifyUserSignature};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonfida/spl-name-service",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.3",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"