@bonfida/spl-name-service 2.0.0-alpha.5 → 2.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("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").toBuffer()]]),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,exports.Record.BTC]),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=>{const r=We.get(e);if(!r)throw new h(exports.ErrorType.RecordDoestNotSupportGuardianSig);return r},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:n.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(r);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.deserializeRecordV2Content=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;
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").toBuffer()]]),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,exports.Record.BTC]),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=>{const r=We.get(e);if(!r)throw new h(exports.ErrorType.RecordDoestNotSupportGuardianSig);return r},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:n.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(r);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.deserializeRecordV2Content=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),i=Buffer.concat([n.toBuffer(),o]).toString("hex");return Buffer.from(i)},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])};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").toBuffer()]]),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,We.BTC]),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=>{const t=Mt.get(e);if(!t)throw new N(R.RecordDoestNotSupportGuardianSig);return t},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:i.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(t);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 deserializeRecordV2Content,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};
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").toBuffer()]]),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,We.BTC]),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=>{const t=Mt.get(e);if(!t)throw new N(R.RecordDoestNotSupportGuardianSig);return t},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:i.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(t);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),a=Buffer.concat([i.toBuffer(),n]).toString("hex");return Buffer.from(a)},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 deserializeRecordV2Content,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.5",
3
+ "version": "2.0.0-alpha.7",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"