@bonfida/spl-name-service 1.0.0 → 1.0.2

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.
@@ -33,7 +33,6 @@ export declare function updateNameRegistryData(connection: Connection, name: str
33
33
  * @param connection The solana connection object to the RPC node
34
34
  * @param name The name of the name account
35
35
  * @param newOwner The new owner to be set
36
- * @param curentNameOwner the current name Owner
37
36
  * @param nameClass The class of this name, if it exsists
38
37
  * @param nameParent The parent name of this name, if it exists
39
38
  * @param parentOwner Parent name owner
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("@solana/web3.js"),t=require("buffer"),r=require("@solana/spl-token"),i=require("bn.js"),o=require("borsh"),s=require("@bonfida/name-tokenizer"),n=require("@ethersproject/sha2"),a=require("@pythnetwork/client"),c=require("bech32-buffer"),u=require("tweetnacl"),p=require("bs58"),d=require("ipaddr.js"),l=require("punycode");function f(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var y,w=f(u);exports.ErrorType=void 0,(y=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",y.InvalidSubdomain="InvalidSubdomain",y.FavouriteDomainNotFound="FavouriteDomainNotFound",y.MissingParentOwner="MissingParentOwner",y.U32Overflow="U32Overflow",y.InvalidBufferLength="InvalidBufferLength",y.U64Overflow="U64Overflow",y.NoRecordData="NoRecordData",y.InvalidRecordData="InvalidRecordData",y.UnsupportedRecord="UnsupportedRecord",y.InvalidEvmAddress="InvalidEvmAddress",y.InvalidInjectiveAddress="InvalidInjectiveAddress",y.InvalidARecord="InvalidARecord",y.InvalidAAAARecord="InvalidAAAARecord",y.InvalidRecordInput="InvalidRecordInput",y.InvalidSignature="InvalidSignature",y.AccountDoesNotExist="AccountDoesNotExist",y.MultipleRegistries="MultipleRegistries",y.InvalidReverseTwitter="InvalidReverseTwitter",y.NoAccountData="NoAccountData",y.InvalidInput="InvalidInput";class g extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,g)}}class m extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(4===r.length)return r;if(r.length>4)throw new g(exports.ErrorType.U32Overflow);const i=t.Buffer.alloc(4);return r.copy(i),i}static fromBuffer(e){if(4!==e.length)throw new g(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class b extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(8===r.length)return r;if(r.length>8)throw new g(exports.ErrorType.U64Overflow);const i=t.Buffer.alloc(8);return r.copy(i),i}static fromBuffer(e){if(8!==e.length)throw new g(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function x(r,i,o,s,n,a,c,u,p,d,l){const f=[t.Buffer.from(Int8Array.from([0])),new m(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],y=t.Buffer.concat(f),w=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return p?w.push({pubkey:p,isSigner:!0,isWritable:!1}):w.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?w.push({pubkey:d,isSigner:!1,isWritable:!1}):w.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l&&w.push({pubkey:l,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:w,programId:r,data:y})}function h(r,i,o,s,n){const a=[t.Buffer.from(Int8Array.from([1])),o.toBuffer(),new m(s.length).toBuffer(),s],c=t.Buffer.concat(a),u=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:u,programId:r,data:c})}function R(r,i,o,s,n,a,c){const u=[t.Buffer.from(Int8Array.from([2])),o.toBuffer()],p=t.Buffer.concat(u),d=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c||s,isSigner:!0,isWritable:!1}];return n&&d.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&a&&(n||d.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:d,programId:r,data:p})}function S(r,i,o,s){const n=[t.Buffer.from(Int8Array.from([3]))],a=t.Buffer.concat(n),c=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:c,programId:r,data:a})}class v{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return o.serialize(v.schema,this)}getInstruction(i,o,s,n,a,c,u,p,d,l,f){const y=t.Buffer.from(this.serialize()),w=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:r.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new e.TransactionInstruction({keys:w,programId:i,data:y})}}v.schema=new Map([[v,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class A{constructor(e){this.tag=5,this.name=e.name}serialize(){return o.serialize(A.schema,this)}getInstruction(r,i,o,s,n,a,c,u,p){const d=t.Buffer.from(this.serialize());let l=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0}];if(u){if(!p)throw new g(exports.ErrorType.MissingParentOwner);l.push({pubkey:u,isSigner:!1,isWritable:!0}),l.push({pubkey:p,isSigner:!0,isWritable:!1})}return new e.TransactionInstruction({keys:l,programId:r,data:d})}}A.schema=new Map([[A,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class E{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return o.serialize(E.schema,this)}getInstruction(r,i,o,s,n,a,c,u,p,d,l,f,y,w,g,m,b){const x=t.Buffer.from(this.serialize());let h=[];return h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:o,isSigner:!1,isWritable:!1}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:n,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!1,isWritable:!1}),h.push({pubkey:c,isSigner:!1,isWritable:!1}),h.push({pubkey:u,isSigner:!0,isWritable:!0}),h.push({pubkey:p,isSigner:!1,isWritable:!0}),h.push({pubkey:d,isSigner:!1,isWritable:!1}),h.push({pubkey:l,isSigner:!1,isWritable:!1}),h.push({pubkey:f,isSigner:!1,isWritable:!1}),h.push({pubkey:y,isSigner:!1,isWritable:!0}),h.push({pubkey:w,isSigner:!1,isWritable:!1}),h.push({pubkey:g,isSigner:!1,isWritable:!1}),h.push({pubkey:m,isSigner:!1,isWritable:!1}),b&&h.push({pubkey:b,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:h,programId:r,data:x})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const B=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),I="SPL Name Service",k=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),T=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),P=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),N=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),D=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),K=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),W=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),O=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),_=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),M=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW")],L=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),F=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),H=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),z=e=>{const r=I+e,i=n.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")},C=(r,i,o)=>{const s=[r];i?s.push(i.toBuffer()):s.push(t.Buffer.alloc(32)),o?s.push(o.toBuffer()):s.push(t.Buffer.alloc(32));const[n]=e.PublicKey.findProgramAddressSync(s,B);return n};async function U(e,t){const r=z(t.toBase58()),o=C(r,D),{registry:s}=await J.retrieve(e,o);if(!s.data)throw new g(exports.ErrorType.NoAccountData);const n=new i(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()}async function j(e,t){let r=[];for(let e of t){const t=z(e.toBase58()),i=C(t,D);r.push(i)}return(await J.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const G=(e,t=k)=>{let r=z(e);return{pubkey:C(r,void 0,t),hashed:r}},Y=(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:o}=G(i[1]);return{...G(e,o),isSub:!0,parent:o}}if(3===i.length&&r){const{pubkey:e}=G(i[2]),{pubkey:r}=G("\0".concat(i[1]),e),o=t.Buffer.from([1]).toString();return{...G(o.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new g(exports.ErrorType.InvalidInput);return{...G(e,k),isSub:!1,parent:void 0}};const q=(e,t)=>{if(!e)throw new g(t)},V=async(t,i)=>{try{const[o]=await e.PublicKey.findProgramAddress([s.MINT_PREFIX,i.toBuffer()],s.NAME_TOKENIZER_ID);if("0"===(await r.getMint(t,o)).supply.toString())return;const n=[{memcmp:{offset:0,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],a=await t.getProgramAccounts(r.TOKEN_PROGRAM_ID,{filters:n});if(1!=a.length)return;return new e.PublicKey(a[0].account.data.slice(32,64))}catch{return}},X=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],Z=async(e,t)=>{const i=[...X(t.toBase58()),{dataSize:165}],o=(await e.getProgramAccounts(r.TOKEN_PROGRAM_ID,{filters:i})).map((e=>r.AccountLayout.decode(e.account.data))).map((t=>(async(e,t)=>{const r=await s.getRecordFromMint(e,t.mint);if(1===r.length)return s.NftRecord.deserialize(r[0].account.data)})(e,t)));return(await Promise.all(o)).filter((e=>void 0!==e))};class J{constructor(t){this.parentName=new e.PublicKey(t.parentName),this.owner=new e.PublicKey(t.owner),this.class=new e.PublicKey(t.class)}static async retrieve(e,t){var r;const i=await e.getAccountInfo(t);if(!i)throw new g(exports.ErrorType.AccountDoesNotExist);let s=o.deserializeUnchecked(this.schema,J,i.data);s.data=null===(r=i.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:s,nftOwner:await V(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),i=e=>{if(!e)return;const t=o.deserializeUnchecked(this.schema,J,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>i(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const i=[...t];for(;i.length>0;)r.push(...await this._retrieveBatch(e,i.splice(0,100)));return r}}J.HEADER_LEN=96,J.schema=new Map([[J,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class Q{constructor(e){this.name=e.name,this.ticker=e.ticker,this.mint=e.mint,this.decimals=e.decimals,this.website=null==e?void 0:e.website,this.logoUri=null==e?void 0:e.logoUri}serialize(){return o.serialize(Q.schema,this)}static deserialize(e){return o.deserializeUnchecked(Q.schema,Q,e)}}Q.schema=new Map([[Q,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class ${constructor(e){this.mint=e.mint}serialize(){return o.serialize($.schema,this)}static deserialize(e){return o.deserializeUnchecked($.schema,$,e)}}async function ee(e,t){if(!await e.getAccountInfo(t))throw new g(exports.ErrorType.AccountDoesNotExist);return J.retrieve(e,t)}async function te(e){const r=I+e,i=n.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")}async function re(r,i,o){const s=[r];i?s.push(i.toBuffer()):s.push(t.Buffer.alloc(32)),o?s.push(o.toBuffer()):s.push(t.Buffer.alloc(32));const[n]=await e.PublicKey.findProgramAddress(s,B);return n}$.schema=new Map([[$,{kind:"struct",fields:[["mint",[32]]]}]]);const ie=async(e,t=k)=>{let r=await te(e);return{pubkey:await re(r,void 0,t),hashed:r}},oe=async(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:o}=await ie(i[1]);return{...await ie(e,o),isSub:!0,parent:o}}if(3===i.length&&r){const{pubkey:e}=await ie(i[2]),{pubkey:r}=await ie("\0".concat(i[1]),e),o=t.Buffer.from([1]).toString();return{...await ie(o.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new g(exports.ErrorType.InvalidInput);return{...await ie(e,k),isSub:!1,parent:void 0}};var se;exports.Record=void 0,(se=exports.Record||(exports.Record={})).IPFS="IPFS",se.ARWV="ARWV",se.SOL="SOL",se.ETH="ETH",se.BTC="BTC",se.LTC="LTC",se.DOGE="DOGE",se.Email="email",se.Url="url",se.Discord="discord",se.Github="github",se.Reddit="reddit",se.Twitter="twitter",se.Telegram="telegram",se.Pic="pic",se.SHDW="SHDW",se.POINT="POINT",se.BSC="BSC",se.Injective="INJ",se.Backpack="backpack",se.A="A",se.AAAA="AAAA",se.CNAME="CNAME",se.TXT="TXT";const ne=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]]),ae=(e,t,r)=>w.sign.detached.verify(e,t,r.toBytes()),ce=(e,t)=>{const{pubkey:r}=Y(t+"."+e,!0);return r};async function ue(e,t,r,i){const o=ce(t,r);let{registry:s}=await J.retrieve(e,o);if(!s.data)throw new g(exports.ErrorType.NoRecordData);if(i)return de(s,r,o);const n=ne.get(r);return s.data=s.data.slice(0,n),s}const pe=async(e,t)=>await ue(e,t,exports.Record.SOL),de=(e,r,i)=>{const o=null==e?void 0:e.data;if(!o)return;const s=ne.get(r),n=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(o);if(!s)return o.slice(0,n).toString("utf-8");if(s&&n!==s){const e=o.slice(0,n).toString("utf-8");if(r===exports.Record.Injective){const t=c.decode(e);if("inj"===t.prefix&&20===t.data.length)return e}else if(r===exports.Record.BSC||r===exports.Record.ETH){const r=e.slice(0,2),i=e.slice(2);if("0x"===r&&20===t.Buffer.from(i,"hex").length)return e}else if((r===exports.Record.A||r===exports.Record.AAAA)&&d.isValid(e))return e;throw new g(exports.ErrorType.InvalidRecordData)}if(r===exports.Record.SOL){const r=new TextEncoder,s=t.Buffer.concat([o.slice(0,32),i.toBuffer()]),n=r.encode(s.toString("hex"));if(ae(n,o.slice(32),e.owner))return p.encode(o.slice(0,32))}else{if(r===exports.Record.ETH||r===exports.Record.BSC)return"0x"+o.toString("hex");if(r===exports.Record.Injective)return c.encode("inj",o,"bech32");if(r===exports.Record.A||r===exports.Record.AAAA)return d.fromByteArray([...o.slice(0,s)]).toString()}throw new g(exports.ErrorType.InvalidRecordData)},le=(e,r)=>{if(!ne.get(r))return r!==exports.Record.CNAME&&r!==exports.Record.TXT||(e=l.encode(e)),t.Buffer.from(e,"utf-8");if(r===exports.Record.SOL)throw new g(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===exports.Record.ETH||r===exports.Record.BSC)return q("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),t.Buffer.from(e.slice(2),"hex");if(r===exports.Record.Injective){const r=c.decode(e);return q("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),q(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),t.Buffer.from(r.data)}if(r===exports.Record.A){const r=d.parse(e).toByteArray();return q(4===r.length,exports.ErrorType.InvalidARecord),t.Buffer.from(r)}if(r===exports.Record.AAAA){const r=d.parse(e).toByteArray();return q(16===r.length,exports.ErrorType.InvalidAAAARecord),t.Buffer.from(r)}throw new g(exports.ErrorType.InvalidRecordInput)},fe=(e,r,i,o)=>{const s=t.Buffer.concat([e.toBuffer(),r.toBuffer()]),n=ae(s,o,i);return q(n,exports.ErrorType.InvalidSignature),t.Buffer.concat([e.toBuffer(),o])};async function ye(t,r,i,o,s,n,a,c){const u=await te(r),p=await re(u,a,c),d=n||await t.getMinimumBalanceForRentExemption(i);let l;if(c){const{registry:e}=await ee(t,c);l=e.owner}return x(B,e.SystemProgram.programId,p,s,o,u,new b(d),new m(i),a,c,l)}async function we(e,t,r,i,o){const s=await te(t),n=await re(s,i,o);let a;a=i||(await J.retrieve(e,n)).registry.owner;return S(B,n,r,a)}const ge=async(t,r,i,o,s)=>{let[n]=await e.PublicKey.findProgramAddress([T.toBuffer()],T),a=await te(t.toBase58()),c=await re(a,n,o);return[[],[new A({name:r}).getInstruction(T,e.SYSVAR_RENT_PUBKEY,B,k,c,n,i,o,s)]]},me=async(t,r,i,o,s,n)=>{q(i!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=Y(`${i}.${r}`,!0),p=le(o,i).length,d=await t.getMinimumBalanceForRentExemption(p+J.HEADER_LEN);return x(B,e.SystemProgram.programId,a,s,n,c,new b(d),new m(p),void 0,u,s)},be=async(t,r,i,o,s,n)=>{const{pubkey:a,hashed:c,parent:u}=Y(`${exports.Record.SOL}.${r}`,!0),p=fe(i,a,o,s).length,d=await t.getMinimumBalanceForRentExemption(p+J.HEADER_LEN);return[x(B,e.SystemProgram.programId,a,o,n,c,new b(d),new m(p),void 0,u,o)]};class xe{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,t){let r=await e.getAccountInfo(t,"processed");if(!r)throw new g(exports.ErrorType.InvalidReverseTwitter);return o.deserializeUnchecked(this.schema,xe,r.data.slice(J.HEADER_LEN))}}async function he(r,i,s,n,a){const c=await te(n.toString()),u=await re(c,K,W);let p=o.serialize(xe.schema,new xe({twitterRegistryKey:s.toBytes(),twitterHandle:i}));return[x(B,e.SystemProgram.programId,u,n,a,c,new b(await r.getMinimumBalanceForRentExemption(p.length+J.HEADER_LEN)),new m(p.length),K,W,K),h(B,u,new m(0),t.Buffer.from(p),K)]}xe.schema=new Map([[xe,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Re=new e.PublicKey("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),Se=async(e,t)=>{const r=await re(await te(t.toBase58()),void 0,Re),{registry:i}=await J.retrieve(e,r);if(!i.data)throw new g(exports.ErrorType.NoAccountData);return Q.deserialize(i.data)},ve=new e.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Ae{constructor(t){this.tag=t.tag,this.nameAccount=new e.PublicKey(t.nameAccount)}static deserialize(e){return o.deserialize(this.schema,Ae,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new g(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,i){return await e.PublicKey.findProgramAddress([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}static getKeySync(r,i){return e.PublicKey.findProgramAddressSync([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}}Ae.schema=new Map([[Ae,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.BONFIDA_FIDA_BNB=N,exports.BONFIDA_USDC_BNB=O,exports.FavouriteDomain=Ae,exports.HASH_PREFIX=I,exports.Mint=$,exports.NAME_OFFERS_ID=ve,exports.NAME_PROGRAM_ID=B,exports.NameRegistryState=J,exports.Numberu32=m,exports.Numberu64=b,exports.PYTH_FIDA_PRICE_ACC=P,exports.PYTH_MAPPING_ACC=F,exports.RECORD_V1_SIZE=ne,exports.REFERRERS=M,exports.REGISTER_PROGRAM_ID=T,exports.REVERSE_LOOKUP_CLASS=D,exports.ROOT_DOMAIN_ACCOUNT=k,exports.ReverseTwitterRegistryState=xe,exports.SNSError=g,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=L,exports.TOKEN_TLD=Re,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=W,exports.TWITTER_VERIFICATION_AUTHORITY=K,exports.TokenData=Q,exports.USDC_MINT=_,exports.VAULT_OWNER=H,exports.changeTwitterRegistryData=async function(e,t,r,i){const o=await te(e),s=await re(o,void 0,W);return[h(B,s,new m(r),i,t)]},exports.changeVerifiedPubkey=async function(e,t,r,i,o){const s=await te(t),n=await re(s,void 0,W);let a=[R(B,n,i,r,void 0)];const c=await te(r.toString());return await re(c,K,void 0),a.push(await we(e,r.toString(),o,K,W)),a=a.concat(await he(e,t,n,i,o)),a},exports.check=q,exports.checkSolRecord=ae,exports.createInstruction=x,exports.createInstructionV3=E,exports.createNameRegistry=ye,exports.createRecordInstruction=me,exports.createReverseInstruction=A,exports.createReverseName=ge,exports.createReverseTwitterRegistry=he,exports.createSolRecordInstruction=be,exports.createSubdomain=async(e,t,r,i=2e3)=>{const o=[],s=t.split(".")[0];if(!s)throw new g(exports.ErrorType.InvalidSubdomain);const{parent:n,pubkey:a}=Y(t),c=await e.getMinimumBalanceForRentExemption(i+J.HEADER_LEN),u=await ye(e,"\0".concat(s),i,r,r,c,void 0,n);o.push(u);const[,p]=await ge(a,"\0".concat(s),r,n,r);return o.push(...p),[[],o]},exports.createV2Instruction=v,exports.createVerifiedTwitterRegistry=async function(t,r,i,o,s){const n=await te(r),a=await re(n,void 0,W),c=await t.getMinimumBalanceForRentExemption(o+J.HEADER_LEN);let u=[x(B,e.SystemProgram.programId,a,i,s,n,new b(c),new m(o),void 0,W,K)];return u=u.concat(await he(t,r,a,i,s)),u},exports.deleteInstruction=S,exports.deleteNameRegistry=we,exports.deleteTwitterRegistry=async function(e,t){const r=await te(e),i=await re(r,void 0,W),o=await te(t.toString()),s=await re(o,K,W);return[S(B,i,t,t),S(B,s,t,t)]},exports.deserializeRecord=de,exports.findSubdomains=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:D.toBase58()}}],i=await e.getProgramAccounts(B,{filters:r}),o=await U(e,t),s=i.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),n=s.map((e=>Y(e+"."+o).pubkey)),a=await e.getMultipleAccountsInfo(n);return s.filter(((e,t)=>!!a[t]))},exports.getAllDomains=async function(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:k.toBase58()}}];return(await e.getProgramAccounts(B,{filters:r})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const t=[{memcmp:{offset:0,bytes:k.toBase58()}}];return await e.getProgramAccounts(B,{dataSlice:{offset:32,length:32},filters:t})},exports.getArweaveRecord=async(e,t)=>await ue(e,t,exports.Record.ARWV,!0),exports.getBackpackRecord=async(e,t)=>await ue(e,t,exports.Record.Backpack,!0),exports.getBscRecord=async(e,t)=>await ue(e,t,exports.Record.BSC,!0),exports.getBtcRecord=async(e,t)=>await ue(e,t,exports.Record.BTC,!0),exports.getDiscordRecord=async(e,t)=>await ue(e,t,exports.Record.Discord,!0),exports.getDogeRecord=async(e,t)=>await ue(e,t,exports.Record.DOGE,!0),exports.getDomainKey=oe,exports.getDomainKeySync=Y,exports.getEmailRecord=async(e,t)=>await ue(e,t,exports.Record.Email,!0),exports.getEthRecord=async(e,t)=>await ue(e,t,exports.Record.ETH,!0),exports.getFavoriteDomain=async(t,r)=>{const[i]=Ae.getKeySync(ve,new e.PublicKey(r)),o=await Ae.retrieve(t,i),s=await U(t,o.nameAccount);return{domain:o.nameAccount,reverse:s}},exports.getGithubRecord=async(e,t)=>await ue(e,t,exports.Record.Github,!0),exports.getHandleAndRegistryKey=async function(t,r){const i=await te(r.toString()),o=await re(i,K,W);let s=await xe.retrieve(t,o);return[s.twitterHandle,new e.PublicKey(s.twitterRegistryKey)]},exports.getHashedName=te,exports.getHashedNameSync=z,exports.getInjectiveRecord=async(e,t)=>await ue(e,t,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,t)=>await ue(e,t,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,t)=>await ue(e,t,exports.Record.LTC,!0),exports.getNameAccountKey=re,exports.getNameAccountKeySync=C,exports.getNameOwner=ee,exports.getPicRecord=async(e,t)=>await ue(e,t,exports.Record.Pic,!0),exports.getPointRecord=async(e,t)=>await ue(e,t,exports.Record.POINT,!0),exports.getRecord=ue,exports.getRecordKeySync=ce,exports.getRecords=async function(e,t,r,i){const o=r.map((e=>ce(t,e))),s=await J.retrieveBatch(e,o);return i?s.map(((e,i)=>{if(e)return de(e,r[i],ce(t,r[i]))})):s},exports.getRedditRecord=async(e,t)=>await ue(e,t,exports.Record.Reddit,!0),exports.getReverseKey=async(e,t)=>{const{pubkey:r,parent:i}=await oe(e),o=await te(r.toBase58());return await re(o,D,t?i:void 0)},exports.getReverseKeySync=(e,t)=>{const{pubkey:r,parent:i}=Y(e),o=z(r.toBase58());return C(o,D,t?i:void 0)},exports.getShdwRecord=async(e,t)=>await ue(e,t,exports.Record.SHDW,!0),exports.getSolRecord=pe,exports.getTelegramRecord=async(e,t)=>await ue(e,t,exports.Record.Telegram,!0),exports.getTokenInfoFromMint=Se,exports.getTokenInfoFromName=async(t,r)=>{const i=await re(await te(r),void 0,Re),{registry:o}=await J.retrieve(t,i);if(!o.data)throw new g(exports.ErrorType.NoAccountData);const s=new e.PublicKey($.deserialize(o.data).mint);return await Se(t,s)},exports.getTokenizedDomains=async(e,t)=>{const r=await Z(e,t);return(await j(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(t,r){const i=[{memcmp:{offset:0,bytes:W.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:K.toBase58()}}],s=await t.getProgramAccounts(B,{filters:i});for(const t of s)if(t.account.data.length>J.HEADER_LEN+32){let r=t.account.data.slice(J.HEADER_LEN),i=o.deserializeUnchecked(xe.schema,xe,r);return[i.twitterHandle,new e.PublicKey(i.twitterRegistryKey)]}throw new g(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,t)=>await ue(e,t,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,t){const r=await te(t),i=await re(r,void 0,W),{registry:o}=await J.retrieve(e,i);return o},exports.getTwitterRegistryData=async function(r,i){const o=[{memcmp:{offset:0,bytes:W.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(t.Buffer.alloc(32,0)).toBase58()}}],s=await r.getProgramAccounts(B,{filters:o});if(s.length>1)throw new g(exports.ErrorType.MultipleRegistries);return s[0].account.data.slice(J.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const t=await te(e);return await re(t,void 0,W)},exports.getUrlRecord=async(e,t)=>await ue(e,t,exports.Record.Url,!0),exports.performReverseLookup=async function(e,t){const r=await te(t.toBase58()),o=await re(r,D),{registry:s}=await J.retrieve(e,o);if(!s.data)throw new g(exports.ErrorType.NoAccountData);const n=new i(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,t){let r=[];for(let e of t){const t=await te(e.toBase58()),i=await re(t,D);r.push(i)}return(await J.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.registerDomainName=async(t,i,o,s,n,c=_,u)=>{const[p]=e.PublicKey.findProgramAddressSync([T.toBuffer()],T),d=z(i),l=C(d,void 0,k),f=z(l.toBase58()),y=C(f,p),[w]=e.PublicKey.findProgramAddressSync([l.toBuffer()],T),m=M.findIndex((e=>null==u?void 0:u.equals(e)));let b;const x=[];if(-1!==m&&u){b=r.getAssociatedTokenAddressSync(c,u,!0);const e=await t.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=r.createAssociatedTokenAccountInstruction(s,b,u,c);x.push(e)}}const h=new a.PythHttpClient(t,a.getPythProgramKeyForCluster("mainnet-beta")),R=await h.getData(),S=L.get(c.toBase58());if(!S)throw new g(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const v=R.productPrice.get("Crypto."+S+"/USD"),A=R.productFromSymbol.get("Crypto."+S+"/USD"),I=r.getAssociatedTokenAddressSync(c,H),P=new E({name:i,space:o,referrerIdxOpt:-1!=m?m:null}).getInstruction(T,B,k,l,y,e.SystemProgram.programId,p,s,n,F,v.productAccountKey,new e.PublicKey(A.price_account),I,r.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,w,b);return x.push(P),[[],x]},exports.resolve=async(r,i)=>{const{pubkey:o}=Y(i),{registry:s,nftOwner:n}=await J.retrieve(r,o);if(n)return n;try{const o=ce(i,exports.Record.SOL),n=await pe(r,i);if(!(null==n?void 0:n.data))throw new g(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=t.Buffer.concat([n.data.slice(0,32),o.toBuffer()]),u=a.encode(c.toString("hex"));if(!ae(u,n.data.slice(32),s.owner))throw new g(exports.ErrorType.InvalidSignature);return new e.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return s.owner},exports.retrieveNftOwner=V,exports.retrieveNfts=async t=>{const r=await t.getProgramAccounts(s.NAME_TOKENIZER_ID,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e.PublicKey(t.account.data.slice(66,98))))},exports.reverseLookup=U,exports.reverseLookupBatch=j,exports.serializeRecord=le,exports.serializeSolRecord=fe,exports.transferInstruction=R,exports.transferNameOwnership=async function(e,t,r,i,o,s){const n=await te(t),a=await re(n,i,o);let c;return c=i||(await J.retrieve(e,a)).registry.owner,R(B,a,r,c,i,o,s)},exports.updateInstruction=h,exports.updateNameRegistryData=async function(e,t,r,i,o,s){const n=await te(t),a=await re(n,o,s);let c;return c=o||(await J.retrieve(e,a)).registry.owner,h(B,a,new m(r),i,c)},exports.updateRecordInstruction=async(e,t,r,i,o,s)=>{q(r!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:n}=Y(`${r}.${t}`,!0),a=await e.getAccountInfo(n);q(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=le(i,r);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[S(B,n,s,o),await me(e,t,r,i,o,s)];return[h(B,n,new m(0),c,o)]},exports.updateSolRecordInstruction=async(e,t,r,i,o,s)=>{const{pubkey:n}=Y(`${exports.Record.SOL}.${t}`,!0),a=await e.getAccountInfo(n);if(q(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[S(B,n,s,i),await be(e,t,r,i,o,s)];const c=fe(r,n,i,o);return[h(B,n,new m(0),c,i)]};
1
+ "use strict";var e=require("@solana/web3.js"),t=require("buffer"),r=require("@solana/spl-token"),i=require("bn.js"),n=require("borsh"),o=require("@ethersproject/sha2"),s=require("@pythnetwork/client"),a=require("bech32-buffer"),c=require("tweetnacl"),u=require("bs58"),p=require("ipaddr.js"),d=require("punycode");function l(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var f,y=l(c);exports.ErrorType=void 0,(f=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",f.InvalidSubdomain="InvalidSubdomain",f.FavouriteDomainNotFound="FavouriteDomainNotFound",f.MissingParentOwner="MissingParentOwner",f.U32Overflow="U32Overflow",f.InvalidBufferLength="InvalidBufferLength",f.U64Overflow="U64Overflow",f.NoRecordData="NoRecordData",f.InvalidRecordData="InvalidRecordData",f.UnsupportedRecord="UnsupportedRecord",f.InvalidEvmAddress="InvalidEvmAddress",f.InvalidInjectiveAddress="InvalidInjectiveAddress",f.InvalidARecord="InvalidARecord",f.InvalidAAAARecord="InvalidAAAARecord",f.InvalidRecordInput="InvalidRecordInput",f.InvalidSignature="InvalidSignature",f.AccountDoesNotExist="AccountDoesNotExist",f.MultipleRegistries="MultipleRegistries",f.InvalidReverseTwitter="InvalidReverseTwitter",f.NoAccountData="NoAccountData",f.InvalidInput="InvalidInput";class w extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,w)}}class g extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(4===r.length)return r;if(r.length>4)throw new w(exports.ErrorType.U32Overflow);const i=t.Buffer.alloc(4);return r.copy(i),i}static fromBuffer(e){if(4!==e.length)throw new w(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class m extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(8===r.length)return r;if(r.length>8)throw new w(exports.ErrorType.U64Overflow);const i=t.Buffer.alloc(8);return r.copy(i),i}static fromBuffer(e){if(8!==e.length)throw new w(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function b(r,i,n,o,s,a,c,u,p,d,l){const f=[t.Buffer.from(Int8Array.from([0])),new g(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],y=t.Buffer.concat(f),w=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1}];return p?w.push({pubkey:p,isSigner:!0,isWritable:!1}):w.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?w.push({pubkey:d,isSigner:!1,isWritable:!1}):w.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l&&w.push({pubkey:l,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:w,programId:r,data:y})}function h(r,i,n,o,s){const a=[t.Buffer.from(Int8Array.from([1])),n.toBuffer(),new g(o.length).toBuffer(),o],c=t.Buffer.concat(a),u=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:u,programId:r,data:c})}function x(r,i,n,o,s,a,c){const u=[t.Buffer.from(Int8Array.from([2])),n.toBuffer()],p=t.Buffer.concat(u),d=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c||o,isSigner:!0,isWritable:!1}];return s&&d.push({pubkey:s,isSigner:!0,isWritable:!1}),c&&a&&(s||d.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:d,programId:r,data:p})}function R(r,i,n,o){const s=[t.Buffer.from(Int8Array.from([3]))],a=t.Buffer.concat(s),c=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:c,programId:r,data:a})}class S{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return n.serialize(S.schema,this)}getInstruction(i,n,o,s,a,c,u,p,d,l,f){const y=t.Buffer.from(this.serialize()),w=[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:r.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new e.TransactionInstruction({keys:w,programId:i,data:y})}}S.schema=new Map([[S,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class v{constructor(e){this.tag=5,this.name=e.name}serialize(){return n.serialize(v.schema,this)}getInstruction(r,i,n,o,s,a,c,u,p){const d=t.Buffer.from(this.serialize());let l=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0}];if(u){if(!p)throw new w(exports.ErrorType.MissingParentOwner);l.push({pubkey:u,isSigner:!1,isWritable:!0}),l.push({pubkey:p,isSigner:!0,isWritable:!1})}return new e.TransactionInstruction({keys:l,programId:r,data:d})}}v.schema=new Map([[v,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class A{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return n.serialize(A.schema,this)}getInstruction(r,i,n,o,s,a,c,u,p,d,l,f,y,w,g,m,b){const h=t.Buffer.from(this.serialize());let x=[];return x.push({pubkey:i,isSigner:!1,isWritable:!1}),x.push({pubkey:n,isSigner:!1,isWritable:!1}),x.push({pubkey:o,isSigner:!1,isWritable:!0}),x.push({pubkey:s,isSigner:!1,isWritable:!0}),x.push({pubkey:a,isSigner:!1,isWritable:!1}),x.push({pubkey:c,isSigner:!1,isWritable:!1}),x.push({pubkey:u,isSigner:!0,isWritable:!0}),x.push({pubkey:p,isSigner:!1,isWritable:!0}),x.push({pubkey:d,isSigner:!1,isWritable:!1}),x.push({pubkey:l,isSigner:!1,isWritable:!1}),x.push({pubkey:f,isSigner:!1,isWritable:!1}),x.push({pubkey:y,isSigner:!1,isWritable:!0}),x.push({pubkey:w,isSigner:!1,isWritable:!1}),x.push({pubkey:g,isSigner:!1,isWritable:!1}),x.push({pubkey:m,isSigner:!1,isWritable:!1}),b&&x.push({pubkey:b,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:x,programId:r,data:h})}}A.schema=new Map([[A,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const E=new e.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),B=t.Buffer.from("tokenized_name");var k;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(k||(k={}));class I{constructor(t){this.tag=t.tag,this.nonce=t.nonce,this.nameAccount=new e.PublicKey(t.nameAccount),this.owner=new e.PublicKey(t.owner),this.nftMint=new e.PublicKey(t.nftMint)}static deserialize(e){return n.deserialize(this.schema,I,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("NFT record not found");return this.deserialize(r.data)}static async findKey(r,i){return await e.PublicKey.findProgramAddress([t.Buffer.from("nft_record"),r.toBuffer()],i)}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const T=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),P="SPL Name Service",N=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),D=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),K=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),W=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),O=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),_=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),M=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),z=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),L=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),H=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new e.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW")],F=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),C=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),U=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),j=e=>{const r=P+e,i=o.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")},G=(r,i,n)=>{const o=[r];i?o.push(i.toBuffer()):o.push(t.Buffer.alloc(32)),n?o.push(n.toBuffer()):o.push(t.Buffer.alloc(32));const[s]=e.PublicKey.findProgramAddressSync(o,T);return s};async function Y(e,t){const r=j(t.toBase58()),n=G(r,O),{registry:o}=await ee.retrieve(e,n);if(!o.data)throw new w(exports.ErrorType.NoAccountData);const s=new i(o.data.slice(0,4),"le").toNumber();return o.data.slice(4,4+s).toString()}async function q(e,t){let r=[];for(let e of t){const t=j(e.toBase58()),i=G(t,O);r.push(i)}return(await ee.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const V=(e,t=N)=>{let r=j(e);return{pubkey:G(r,void 0,t),hashed:r}},X=(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:n}=V(i[1]);return{...V(e,n),isSub:!0,parent:n}}if(3===i.length&&r){const{pubkey:e}=V(i[2]),{pubkey:r}=V("\0".concat(i[1]),e),n=t.Buffer.from([1]).toString();return{...V(n.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...V(e,N),isSub:!1,parent:void 0}};const Z=(e,t)=>{if(!e)throw new w(t)},J=async(t,i)=>{try{const[n]=await e.PublicKey.findProgramAddress([B,i.toBuffer()],E);if("0"===(await r.getMint(t,n)).supply.toString())return;const o=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],s=await t.getProgramAccounts(r.TOKEN_PROGRAM_ID,{filters:o});if(1!=s.length)return;return new e.PublicKey(s[0].account.data.slice(32,64))}catch{return}},Q=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],$=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(E,{filters:r})})(e,t.mint);if(1===r.length)return I.deserialize(r[0].account.data)};class ee{constructor(t){this.parentName=new e.PublicKey(t.parentName),this.owner=new e.PublicKey(t.owner),this.class=new e.PublicKey(t.class)}static async retrieve(e,t){var r;const i=await e.getAccountInfo(t);if(!i)throw new w(exports.ErrorType.AccountDoesNotExist);let o=n.deserializeUnchecked(this.schema,ee,i.data);o.data=null===(r=i.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:o,nftOwner:await J(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),i=e=>{if(!e)return;const t=n.deserializeUnchecked(this.schema,ee,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>i(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const i=[...t];for(;i.length>0;)r.push(...await this._retrieveBatch(e,i.splice(0,100)));return r}}ee.HEADER_LEN=96,ee.schema=new Map([[ee,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class te{constructor(e){this.name=e.name,this.ticker=e.ticker,this.mint=e.mint,this.decimals=e.decimals,this.website=null==e?void 0:e.website,this.logoUri=null==e?void 0:e.logoUri}serialize(){return n.serialize(te.schema,this)}static deserialize(e){return n.deserializeUnchecked(te.schema,te,e)}}te.schema=new Map([[te,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class re{constructor(e){this.mint=e.mint}serialize(){return n.serialize(re.schema,this)}static deserialize(e){return n.deserializeUnchecked(re.schema,re,e)}}async function ie(e,t){if(!await e.getAccountInfo(t))throw new w(exports.ErrorType.AccountDoesNotExist);return ee.retrieve(e,t)}async function ne(e){const r=P+e,i=o.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")}async function oe(r,i,n){const o=[r];i?o.push(i.toBuffer()):o.push(t.Buffer.alloc(32)),n?o.push(n.toBuffer()):o.push(t.Buffer.alloc(32));const[s]=await e.PublicKey.findProgramAddress(o,T);return s}re.schema=new Map([[re,{kind:"struct",fields:[["mint",[32]]]}]]);const se=async(e,t=N)=>{let r=await ne(e);return{pubkey:await oe(r,void 0,t),hashed:r}},ae=async(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:n}=await se(i[1]);return{...await se(e,n),isSub:!0,parent:n}}if(3===i.length&&r){const{pubkey:e}=await se(i[2]),{pubkey:r}=await se("\0".concat(i[1]),e),n=t.Buffer.from([1]).toString();return{...await se(n.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...await se(e,N),isSub:!1,parent:void 0}};var ce;exports.Record=void 0,(ce=exports.Record||(exports.Record={})).IPFS="IPFS",ce.ARWV="ARWV",ce.SOL="SOL",ce.ETH="ETH",ce.BTC="BTC",ce.LTC="LTC",ce.DOGE="DOGE",ce.Email="email",ce.Url="url",ce.Discord="discord",ce.Github="github",ce.Reddit="reddit",ce.Twitter="twitter",ce.Telegram="telegram",ce.Pic="pic",ce.SHDW="SHDW",ce.POINT="POINT",ce.BSC="BSC",ce.Injective="INJ",ce.Backpack="backpack",ce.A="A",ce.AAAA="AAAA",ce.CNAME="CNAME",ce.TXT="TXT";const ue=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]]),pe=(e,t,r)=>y.sign.detached.verify(e,t,r.toBytes()),de=(e,t)=>{const{pubkey:r}=X(t+"."+e,!0);return r};async function le(e,t,r,i){const n=de(t,r);let{registry:o}=await ee.retrieve(e,n);if(!o.data)throw new w(exports.ErrorType.NoRecordData);if(i)return ye(o,r,n);const s=ue.get(r);return o.data=o.data.slice(0,s),o}const fe=async(e,t)=>await le(e,t,exports.Record.SOL),ye=(e,r,i)=>{const n=null==e?void 0:e.data;if(!n)return;const o=ue.get(r),s=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(n);if(!o)return n.slice(0,s).toString("utf-8");if(o&&s!==o){const e=n.slice(0,s).toString("utf-8");if(r===exports.Record.Injective){const t=a.decode(e);if("inj"===t.prefix&&20===t.data.length)return e}else if(r===exports.Record.BSC||r===exports.Record.ETH){const r=e.slice(0,2),i=e.slice(2);if("0x"===r&&20===t.Buffer.from(i,"hex").length)return e}else if((r===exports.Record.A||r===exports.Record.AAAA)&&p.isValid(e))return e;throw new w(exports.ErrorType.InvalidRecordData)}if(r===exports.Record.SOL){const r=new TextEncoder,o=t.Buffer.concat([n.slice(0,32),i.toBuffer()]),s=r.encode(o.toString("hex"));if(pe(s,n.slice(32),e.owner))return u.encode(n.slice(0,32))}else{if(r===exports.Record.ETH||r===exports.Record.BSC)return"0x"+n.toString("hex");if(r===exports.Record.Injective)return a.encode("inj",n,"bech32");if(r===exports.Record.A||r===exports.Record.AAAA)return p.fromByteArray([...n.slice(0,o)]).toString()}throw new w(exports.ErrorType.InvalidRecordData)},we=(e,r)=>{if(!ue.get(r))return r!==exports.Record.CNAME&&r!==exports.Record.TXT||(e=d.encode(e)),t.Buffer.from(e,"utf-8");if(r===exports.Record.SOL)throw new w(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(r===exports.Record.ETH||r===exports.Record.BSC)return Z("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),t.Buffer.from(e.slice(2),"hex");if(r===exports.Record.Injective){const r=a.decode(e);return Z("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),Z(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),t.Buffer.from(r.data)}if(r===exports.Record.A){const r=p.parse(e).toByteArray();return Z(4===r.length,exports.ErrorType.InvalidARecord),t.Buffer.from(r)}if(r===exports.Record.AAAA){const r=p.parse(e).toByteArray();return Z(16===r.length,exports.ErrorType.InvalidAAAARecord),t.Buffer.from(r)}throw new w(exports.ErrorType.InvalidRecordInput)},ge=(e,r,i,n)=>{const o=t.Buffer.concat([e.toBuffer(),r.toBuffer()]),s=(new TextEncoder).encode(o.toString("hex")),a=pe(s,n,i);return Z(a,exports.ErrorType.InvalidSignature),t.Buffer.concat([e.toBuffer(),n])};async function me(t,r,i,n,o,s,a,c){const u=await ne(r),p=await oe(u,a,c),d=s||await t.getMinimumBalanceForRentExemption(i);let l;if(c){const{registry:e}=await ie(t,c);l=e.owner}return b(T,e.SystemProgram.programId,p,o,n,u,new m(d),new g(i),a,c,l)}async function be(e,t,r,i,n){const o=await ne(t),s=await oe(o,i,n);let a;a=i||(await ee.retrieve(e,s)).registry.owner;return R(T,s,r,a)}const he=async(t,r,i,n,o)=>{let[s]=await e.PublicKey.findProgramAddress([D.toBuffer()],D),a=await ne(t.toBase58()),c=await oe(a,s,n);return[[],[new v({name:r}).getInstruction(D,e.SYSVAR_RENT_PUBKEY,T,N,c,s,i,n,o)]]},xe=async(t,r,i,n,o,s)=>{Z(i!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=X(`${i}.${r}`,!0),p=we(n,i).length,d=await t.getMinimumBalanceForRentExemption(p+ee.HEADER_LEN);return b(T,e.SystemProgram.programId,a,o,s,c,new m(d),new g(p),void 0,u,o)},Re=async(t,r,i,n,o,s)=>{const{pubkey:a,hashed:c,parent:u}=X(`${exports.Record.SOL}.${r}`,!0),p=ge(i,a,n,o).length,d=await t.getMinimumBalanceForRentExemption(p+ee.HEADER_LEN);return[b(T,e.SystemProgram.programId,a,n,s,c,new m(d),new g(p),void 0,u,n)]};class Se{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 w(exports.ErrorType.InvalidReverseTwitter);return n.deserializeUnchecked(this.schema,Se,r.data.slice(ee.HEADER_LEN))}}async function ve(r,i,o,s,a){const c=await ne(s.toString()),u=await oe(c,_,M);let p=n.serialize(Se.schema,new Se({twitterRegistryKey:o.toBytes(),twitterHandle:i}));return[b(T,e.SystemProgram.programId,u,s,a,c,new m(await r.getMinimumBalanceForRentExemption(p.length+ee.HEADER_LEN)),new g(p.length),_,M,_),h(T,u,new g(0),t.Buffer.from(p),_)]}Se.schema=new Map([[Se,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Ae=new e.PublicKey("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),Ee=async(e,t)=>{const r=await oe(await ne(t.toBase58()),void 0,Ae),{registry:i}=await ee.retrieve(e,r);if(!i.data)throw new w(exports.ErrorType.NoAccountData);return te.deserialize(i.data)},Be=new e.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class ke{constructor(t){this.tag=t.tag,this.nameAccount=new e.PublicKey(t.nameAccount)}static deserialize(e){return n.deserialize(this.schema,ke,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new w(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,i){return await e.PublicKey.findProgramAddress([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}static getKeySync(r,i){return e.PublicKey.findProgramAddressSync([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}}ke.schema=new Map([[ke,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.BONFIDA_FIDA_BNB=W,exports.BONFIDA_USDC_BNB=z,exports.FavouriteDomain=ke,exports.HASH_PREFIX=P,exports.Mint=re,exports.NAME_OFFERS_ID=Be,exports.NAME_PROGRAM_ID=T,exports.NameRegistryState=ee,exports.Numberu32=g,exports.Numberu64=m,exports.PYTH_FIDA_PRICE_ACC=K,exports.PYTH_MAPPING_ACC=C,exports.RECORD_V1_SIZE=ue,exports.REFERRERS=H,exports.REGISTER_PROGRAM_ID=D,exports.REVERSE_LOOKUP_CLASS=O,exports.ROOT_DOMAIN_ACCOUNT=N,exports.ReverseTwitterRegistryState=Se,exports.SNSError=w,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=F,exports.TOKEN_TLD=Ae,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=M,exports.TWITTER_VERIFICATION_AUTHORITY=_,exports.TokenData=te,exports.USDC_MINT=L,exports.VAULT_OWNER=U,exports.changeTwitterRegistryData=async function(e,t,r,i){const n=await ne(e),o=await oe(n,void 0,M);return[h(T,o,new g(r),i,t)]},exports.changeVerifiedPubkey=async function(e,t,r,i,n){const o=await ne(t),s=await oe(o,void 0,M);let a=[x(T,s,i,r,void 0)];const c=await ne(r.toString());return await oe(c,_,void 0),a.push(await be(e,r.toString(),n,_,M)),a=a.concat(await ve(e,t,s,i,n)),a},exports.check=Z,exports.checkSolRecord=pe,exports.createInstruction=b,exports.createInstructionV3=A,exports.createNameRegistry=me,exports.createRecordInstruction=xe,exports.createReverseInstruction=v,exports.createReverseName=he,exports.createReverseTwitterRegistry=ve,exports.createSolRecordInstruction=Re,exports.createSubdomain=async(e,t,r,i=2e3)=>{const n=[],o=t.split(".")[0];if(!o)throw new w(exports.ErrorType.InvalidSubdomain);const{parent:s,pubkey:a}=X(t),c=await e.getMinimumBalanceForRentExemption(i+ee.HEADER_LEN),u=await me(e,"\0".concat(o),i,r,r,c,void 0,s);n.push(u);const[,p]=await he(a,"\0".concat(o),r,s,r);return n.push(...p),[[],n]},exports.createV2Instruction=S,exports.createVerifiedTwitterRegistry=async function(t,r,i,n,o){const s=await ne(r),a=await oe(s,void 0,M),c=await t.getMinimumBalanceForRentExemption(n+ee.HEADER_LEN);let u=[b(T,e.SystemProgram.programId,a,i,o,s,new m(c),new g(n),void 0,M,_)];return u=u.concat(await ve(t,r,a,i,o)),u},exports.deleteInstruction=R,exports.deleteNameRegistry=be,exports.deleteTwitterRegistry=async function(e,t){const r=await ne(e),i=await oe(r,void 0,M),n=await ne(t.toString()),o=await oe(n,_,M);return[R(T,i,t,t),R(T,o,t,t)]},exports.deserializeRecord=ye,exports.findSubdomains=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:O.toBase58()}}],i=await e.getProgramAccounts(T,{filters:r}),n=await Y(e,t),o=i.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=o.map((e=>X(e+"."+n).pubkey)),a=await e.getMultipleAccountsInfo(s);return o.filter(((e,t)=>!!a[t]))},exports.getAllDomains=async function(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:N.toBase58()}}];return(await e.getProgramAccounts(T,{filters:r})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const t=[{memcmp:{offset:0,bytes:N.toBase58()}}];return await e.getProgramAccounts(T,{dataSlice:{offset:32,length:32},filters:t})},exports.getArweaveRecord=async(e,t)=>await le(e,t,exports.Record.ARWV,!0),exports.getBackpackRecord=async(e,t)=>await le(e,t,exports.Record.Backpack,!0),exports.getBscRecord=async(e,t)=>await le(e,t,exports.Record.BSC,!0),exports.getBtcRecord=async(e,t)=>await le(e,t,exports.Record.BTC,!0),exports.getDiscordRecord=async(e,t)=>await le(e,t,exports.Record.Discord,!0),exports.getDogeRecord=async(e,t)=>await le(e,t,exports.Record.DOGE,!0),exports.getDomainKey=ae,exports.getDomainKeySync=X,exports.getEmailRecord=async(e,t)=>await le(e,t,exports.Record.Email,!0),exports.getEthRecord=async(e,t)=>await le(e,t,exports.Record.ETH,!0),exports.getFavoriteDomain=async(t,r)=>{const[i]=ke.getKeySync(Be,new e.PublicKey(r)),n=await ke.retrieve(t,i),o=await Y(t,n.nameAccount);return{domain:n.nameAccount,reverse:o}},exports.getGithubRecord=async(e,t)=>await le(e,t,exports.Record.Github,!0),exports.getHandleAndRegistryKey=async function(t,r){const i=await ne(r.toString()),n=await oe(i,_,M);let o=await Se.retrieve(t,n);return[o.twitterHandle,new e.PublicKey(o.twitterRegistryKey)]},exports.getHashedName=ne,exports.getHashedNameSync=j,exports.getInjectiveRecord=async(e,t)=>await le(e,t,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,t)=>await le(e,t,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,t)=>await le(e,t,exports.Record.LTC,!0),exports.getNameAccountKey=oe,exports.getNameAccountKeySync=G,exports.getNameOwner=ie,exports.getPicRecord=async(e,t)=>await le(e,t,exports.Record.Pic,!0),exports.getPointRecord=async(e,t)=>await le(e,t,exports.Record.POINT,!0),exports.getRecord=le,exports.getRecordKeySync=de,exports.getRecords=async function(e,t,r,i){const n=r.map((e=>de(t,e))),o=await ee.retrieveBatch(e,n);return i?o.map(((e,i)=>{if(e)return ye(e,r[i],de(t,r[i]))})):o},exports.getRedditRecord=async(e,t)=>await le(e,t,exports.Record.Reddit,!0),exports.getReverseKey=async(e,t)=>{const{pubkey:r,parent:i}=await ae(e),n=await ne(r.toBase58());return await oe(n,O,t?i:void 0)},exports.getReverseKeySync=(e,t)=>{const{pubkey:r,parent:i}=X(e),n=j(r.toBase58());return G(n,O,t?i:void 0)},exports.getShdwRecord=async(e,t)=>await le(e,t,exports.Record.SHDW,!0),exports.getSolRecord=fe,exports.getTelegramRecord=async(e,t)=>await le(e,t,exports.Record.Telegram,!0),exports.getTokenInfoFromMint=Ee,exports.getTokenInfoFromName=async(t,r)=>{const i=await oe(await ne(r),void 0,Ae),{registry:n}=await ee.retrieve(t,i);if(!n.data)throw new w(exports.ErrorType.NoAccountData);const o=new e.PublicKey(re.deserialize(n.data).mint);return await Ee(t,o)},exports.getTokenizedDomains=async(e,t)=>{const i=await(async(e,t)=>{const i=[...Q(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(r.TOKEN_PROGRAM_ID,{filters:i})).map((e=>r.AccountLayout.decode(e.account.data))).map((t=>$(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await q(e,i.map((e=>e.nameAccount)))).map(((e,t)=>({key:i[t].nameAccount,mint:i[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(t,r){const i=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:_.toBase58()}}],o=await t.getProgramAccounts(T,{filters:i});for(const t of o)if(t.account.data.length>ee.HEADER_LEN+32){let r=t.account.data.slice(ee.HEADER_LEN),i=n.deserializeUnchecked(Se.schema,Se,r);return[i.twitterHandle,new e.PublicKey(i.twitterRegistryKey)]}throw new w(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,t)=>await le(e,t,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,t){const r=await ne(t),i=await oe(r,void 0,M),{registry:n}=await ee.retrieve(e,i);return n},exports.getTwitterRegistryData=async function(r,i){const n=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(t.Buffer.alloc(32,0)).toBase58()}}],o=await r.getProgramAccounts(T,{filters:n});if(o.length>1)throw new w(exports.ErrorType.MultipleRegistries);return o[0].account.data.slice(ee.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const t=await ne(e);return await oe(t,void 0,M)},exports.getUrlRecord=async(e,t)=>await le(e,t,exports.Record.Url,!0),exports.performReverseLookup=async function(e,t){const r=await ne(t.toBase58()),n=await oe(r,O),{registry:o}=await ee.retrieve(e,n);if(!o.data)throw new w(exports.ErrorType.NoAccountData);const s=new i(o.data.slice(0,4),"le").toNumber();return o.data.slice(4,4+s).toString()},exports.performReverseLookupBatch=async function(e,t){let r=[];for(let e of t){const t=await ne(e.toBase58()),i=await oe(t,O);r.push(i)}return(await ee.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.registerDomainName=async(t,i,n,o,a,c=L,u)=>{const[p]=e.PublicKey.findProgramAddressSync([D.toBuffer()],D),d=j(i),l=G(d,void 0,N),f=j(l.toBase58()),y=G(f,p),[g]=e.PublicKey.findProgramAddressSync([l.toBuffer()],D),m=H.findIndex((e=>null==u?void 0:u.equals(e)));let b;const h=[];if(-1!==m&&u){b=r.getAssociatedTokenAddressSync(c,u,!0);const e=await t.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=r.createAssociatedTokenAccountInstruction(o,b,u,c);h.push(e)}}const x=new s.PythHttpClient(t,s.getPythProgramKeyForCluster("mainnet-beta")),R=await x.getData(),S=F.get(c.toBase58());if(!S)throw new w(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const v=R.productPrice.get("Crypto."+S+"/USD"),E=R.productFromSymbol.get("Crypto."+S+"/USD"),B=r.getAssociatedTokenAddressSync(c,U),k=new A({name:i,space:n,referrerIdxOpt:-1!=m?m:null}).getInstruction(D,T,N,l,y,e.SystemProgram.programId,p,o,a,C,v.productAccountKey,new e.PublicKey(E.price_account),B,r.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,g,b);return h.push(k),[[],h]},exports.resolve=async(r,i)=>{const{pubkey:n}=X(i),{registry:o,nftOwner:s}=await ee.retrieve(r,n);if(s)return s;try{const n=de(i,exports.Record.SOL),s=await fe(r,i);if(!(null==s?void 0:s.data))throw new w(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=t.Buffer.concat([s.data.slice(0,32),n.toBuffer()]),u=a.encode(c.toString("hex"));if(!pe(u,s.data.slice(32),o.owner))throw new w(exports.ErrorType.InvalidSignature);return new e.PublicKey(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return o.owner},exports.retrieveNftOwner=J,exports.retrieveNfts=async t=>{const r=await t.getProgramAccounts(E,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e.PublicKey(t.account.data.slice(66,98))))},exports.reverseLookup=Y,exports.reverseLookupBatch=q,exports.serializeRecord=we,exports.serializeSolRecord=ge,exports.transferInstruction=x,exports.transferNameOwnership=async function(e,t,r,i,n,o){const s=await ne(t),a=await oe(s,i,n);let c;return c=i||(await ee.retrieve(e,a)).registry.owner,x(T,a,r,c,i,n,o)},exports.updateInstruction=h,exports.updateNameRegistryData=async function(e,t,r,i,n,o){const s=await ne(t),a=await oe(s,n,o);let c;return c=n||(await ee.retrieve(e,a)).registry.owner,h(T,a,new g(r),i,c)},exports.updateRecordInstruction=async(e,t,r,i,n,o)=>{Z(r!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:s}=X(`${r}.${t}`,!0),a=await e.getAccountInfo(s);Z(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=we(i,r);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[R(T,s,o,n),await xe(e,t,r,i,n,o)];return[h(T,s,new g(0),c,n)]},exports.updateSolRecordInstruction=async(e,t,r,i,n,o)=>{const{pubkey:s}=X(`${exports.Record.SOL}.${t}`,!0),a=await e.getAccountInfo(s);if(Z(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[R(T,s,o,i),await Re(e,t,r,i,n,o)];const c=ge(r,s,i,n);return[h(T,s,new g(0),c,i)]};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{PublicKey as t,TransactionInstruction as e,SystemProgram as i,SYSVAR_RENT_PUBKEY as r}from"@solana/web3.js";import{Buffer as n}from"buffer";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import l from"bn.js";import{serialize as f,deserializeUnchecked as w,deserialize as d}from"borsh";import{MINT_PREFIX as p,NAME_TOKENIZER_ID as m,getRecordFromMint as y,NftRecord as g}from"@bonfida/name-tokenizer";import{sha256 as h}from"@ethersproject/sha2";import{PythHttpClient as b,getPythProgramKeyForCluster as v}from"@pythnetwork/client";import{decode as S,encode as A}from"bech32-buffer";import*as k from"tweetnacl";import B from"bs58";import I from"ipaddr.js";import{encode as E}from"punycode";var R;!function(t){t.SymbolNotFound="SymbolNotFound",t.InvalidSubdomain="InvalidSubdomain",t.FavouriteDomainNotFound="FavouriteDomainNotFound",t.MissingParentOwner="MissingParentOwner",t.U32Overflow="U32Overflow",t.InvalidBufferLength="InvalidBufferLength",t.U64Overflow="U64Overflow",t.NoRecordData="NoRecordData",t.InvalidRecordData="InvalidRecordData",t.UnsupportedRecord="UnsupportedRecord",t.InvalidEvmAddress="InvalidEvmAddress",t.InvalidInjectiveAddress="InvalidInjectiveAddress",t.InvalidARecord="InvalidARecord",t.InvalidAAAARecord="InvalidAAAARecord",t.InvalidRecordInput="InvalidRecordInput",t.InvalidSignature="InvalidSignature",t.AccountDoesNotExist="AccountDoesNotExist",t.MultipleRegistries="MultipleRegistries",t.InvalidReverseTwitter="InvalidReverseTwitter",t.NoAccountData="NoAccountData",t.InvalidInput="InvalidInput"}(R||(R={}));class W extends Error{constructor(t,e){super(e),this.name="SNSError",this.type=t,Error.captureStackTrace&&Error.captureStackTrace(this,W)}}class D extends l{toBuffer(){const t=super.toArray().reverse(),e=n.from(t);if(4===e.length)return e;if(e.length>4)throw new W(R.U32Overflow);const i=n.alloc(4);return e.copy(i),i}static fromBuffer(t){if(4!==t.length)throw new W(R.InvalidBufferLength,`Invalid buffer length: ${t.length}`);return new l([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}class N extends l{toBuffer(){const t=super.toArray().reverse(),e=n.from(t);if(8===e.length)return e;if(e.length>8)throw new W(R.U64Overflow);const i=n.alloc(8);return e.copy(i),i}static fromBuffer(t){if(8!==t.length)throw new W(R.U64Overflow,`Invalid buffer length: ${t.length}`);return new l([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}function x(i,r,a,s,o,c,u,l,f,w,d){const p=[n.from(Int8Array.from([0])),new D(c.length).toBuffer(),c,u.toBuffer(),l.toBuffer()],m=n.concat(p),y=[{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return f?y.push({pubkey:f,isSigner:!0,isWritable:!1}):y.push({pubkey:new t(n.alloc(32)),isSigner:!1,isWritable:!1}),w?y.push({pubkey:w,isSigner:!1,isWritable:!1}):y.push({pubkey:new t(n.alloc(32)),isSigner:!1,isWritable:!1}),d&&y.push({pubkey:d,isSigner:!0,isWritable:!1}),new e({keys:y,programId:i,data:m})}function T(t,i,r,a,s){const o=[n.from(Int8Array.from([1])),r.toBuffer(),new D(a.length).toBuffer(),a],c=n.concat(o);return new e({keys:[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function H(i,r,a,s,o,c,u){const l=[n.from(Int8Array.from([2])),a.toBuffer()],f=n.concat(l),w=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&w.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||w.push({pubkey:t.default,isSigner:!1,isWritable:!1}),w.push({pubkey:c,isSigner:!1,isWritable:!1})),new e({keys:w,programId:i,data:f})}function L(t,i,r,a){const s=[n.from(Int8Array.from([3]))],o=n.concat(s);return new e({keys:[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0}],programId:t,data:o})}class P{constructor(t){this.tag=9,this.name=t.name,this.space=t.space}serialize(){return f(P.schema,this)}getInstruction(t,r,s,o,c,u,l,f,w,d,p){const m=n.from(this.serialize()),y=[{pubkey:r,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:i.programId,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1}];return new e({keys:y,programId:t,data:m})}}P.schema=new Map([[P,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class F{constructor(t){this.tag=5,this.name=t.name}serialize(){return f(F.schema,this)}getInstruction(i,r,a,s,o,c,u,l,f){const w=n.from(this.serialize());let d=[{pubkey:r,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(l){if(!f)throw new W(R.MissingParentOwner);d.push({pubkey:l,isSigner:!1,isWritable:!0}),d.push({pubkey:f,isSigner:!0,isWritable:!1})}return new e({keys:d,programId:i,data:w})}}F.schema=new Map([[F,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class M{constructor(t){this.tag=13,this.name=t.name,this.space=t.space,this.referrerIdxOpt=t.referrerIdxOpt}serialize(){return f(M.schema,this)}getInstruction(t,i,r,a,s,o,c,u,l,f,w,d,p,m,y,g,h){const b=n.from(this.serialize());let v=[];return v.push({pubkey:i,isSigner:!1,isWritable:!1}),v.push({pubkey:r,isSigner:!1,isWritable:!1}),v.push({pubkey:a,isSigner:!1,isWritable:!0}),v.push({pubkey:s,isSigner:!1,isWritable:!0}),v.push({pubkey:o,isSigner:!1,isWritable:!1}),v.push({pubkey:c,isSigner:!1,isWritable:!1}),v.push({pubkey:u,isSigner:!0,isWritable:!0}),v.push({pubkey:l,isSigner:!1,isWritable:!0}),v.push({pubkey:f,isSigner:!1,isWritable:!1}),v.push({pubkey:w,isSigner:!1,isWritable:!1}),v.push({pubkey:d,isSigner:!1,isWritable:!1}),v.push({pubkey:p,isSigner:!1,isWritable:!0}),v.push({pubkey:m,isSigner:!1,isWritable:!1}),v.push({pubkey:y,isSigner:!1,isWritable:!1}),v.push({pubkey:g,isSigner:!1,isWritable:!1}),h&&v.push({pubkey:h,isSigner:!1,isWritable:!0}),new e({keys:v,programId:t,data:b})}}M.schema=new Map([[M,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const z=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),C="SPL Name Service",j=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),U=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),O=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),G=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),K=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),X=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),Y=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),V=96,Z=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),q=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),J=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW")],_=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),Q=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),$=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),tt=t=>{const e=C+t,i=h(n.from(e,"utf8")).slice(2);return n.from(i,"hex")},et=(e,i,r)=>{const a=[e];i?a.push(i.toBuffer()):a.push(n.alloc(32)),r?a.push(r.toBuffer()):a.push(n.alloc(32));const[s]=t.findProgramAddressSync(a,z);return s};async function it(t,e){const i=tt(e.toBase58()),r=et(i,K),{registry:n}=await yt.retrieve(t,r);if(!n.data)throw new W(R.NoAccountData);const a=new l(n.data.slice(0,4),"le").toNumber();return n.data.slice(4,4+a).toString()}async function rt(t,e){let i=[];for(let t of e){const e=tt(t.toBase58()),r=et(e,K);i.push(r)}return(await yt.retrieveBatch(t,i)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new l(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}const nt=async(t,e)=>{const i=[{memcmp:{offset:0,bytes:e.toBase58()}},{memcmp:{offset:64,bytes:K.toBase58()}}],r=await t.getProgramAccounts(z,{filters:i}),n=await it(t,e),a=r.map((t=>{var e;return null===(e=t.account.data.slice(97).toString("utf-8"))||void 0===e?void 0:e.split("\0").join("")})),s=a.map((t=>st(t+"."+n).pubkey)),o=await t.getMultipleAccountsInfo(s);return a.filter(((t,e)=>!!o[e]))},at=(t,e=j)=>{let i=tt(t);return{pubkey:et(i,void 0,e),hashed:i}},st=(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const i=t.split(".");if(2===i.length){const t=n.from([e?1:0]).toString().concat(i[0]),{pubkey:r}=at(i[1]);return{...at(t,r),isSub:!0,parent:r}}if(3===i.length&&e){const{pubkey:t}=at(i[2]),{pubkey:e}=at("\0".concat(i[1]),t),r=n.from([1]).toString();return{...at(r.concat(i[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(i.length>=3)throw new W(R.InvalidInput);return{...at(t,j),isSub:!1,parent:void 0}};async function ot(t,e){const i=[{memcmp:{offset:32,bytes:e.toBase58()}},{memcmp:{offset:0,bytes:j.toBase58()}}];return(await t.getProgramAccounts(z,{filters:i})).map((t=>t.pubkey))}const ct=async t=>{const e=[{memcmp:{offset:0,bytes:j.toBase58()}}];return await t.getProgramAccounts(z,{dataSlice:{offset:32,length:32},filters:e})},ut=(t,e)=>{const{pubkey:i,parent:r}=st(t),n=tt(i.toBase58());return et(n,K,e?r:void 0)},lt=(t,e)=>{if(!t)throw new W(e)},ft=async(e,i)=>{try{const[r]=await t.findProgramAddress([p,i.toBuffer()],m);if("0"===(await s(e,r)).supply.toString())return;const n=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:n});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},wt=async e=>{const i=await e.getProgramAccounts(m,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return i.map((e=>new t(e.account.data.slice(66,98))))},dt=t=>[{memcmp:{offset:32,bytes:t}},{memcmp:{offset:64,bytes:"2"}}],pt=async(t,e)=>{const i=[...dt(e.toBase58()),{dataSize:165}],r=(await t.getProgramAccounts(a,{filters:i})).map((t=>o.decode(t.account.data))).map((e=>(async(t,e)=>{const i=await y(t,e.mint);if(1===i.length)return g.deserialize(i[0].account.data)})(t,e)));return(await Promise.all(r)).filter((t=>void 0!==t))},mt=async(t,e)=>{const i=await pt(t,e);return(await rt(t,i.map((t=>t.nameAccount)))).map(((t,e)=>({key:i[e].nameAccount,mint:i[e].nftMint,reverse:t}))).filter((t=>!!t.reverse))};class yt{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(t,e){var i;const r=await t.getAccountInfo(e);if(!r)throw new W(R.AccountDoesNotExist);let n=w(this.schema,yt,r.data);n.data=null===(i=r.data)||void 0===i?void 0:i.slice(this.HEADER_LEN);return{registry:n,nftOwner:await ft(t,e)}}static async _retrieveBatch(t,e){const i=await t.getMultipleAccountsInfo(e),r=t=>{if(!t)return;const e=w(this.schema,yt,t);return e.data=null==t?void 0:t.slice(this.HEADER_LEN),e};return i.map((t=>r(null==t?void 0:t.data)))}static async retrieveBatch(t,e){let i=[];const r=[...e];for(;r.length>0;)i.push(...await this._retrieveBatch(t,r.splice(0,100)));return i}}yt.HEADER_LEN=96,yt.schema=new Map([[yt,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class gt{constructor(t){this.name=t.name,this.ticker=t.ticker,this.mint=t.mint,this.decimals=t.decimals,this.website=null==t?void 0:t.website,this.logoUri=null==t?void 0:t.logoUri}serialize(){return f(gt.schema,this)}static deserialize(t){return w(gt.schema,gt,t)}}gt.schema=new Map([[gt,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class ht{constructor(t){this.mint=t.mint}serialize(){return f(ht.schema,this)}static deserialize(t){return w(ht.schema,ht,t)}}async function bt(t,e){if(!await t.getAccountInfo(e))throw new W(R.AccountDoesNotExist);return yt.retrieve(t,e)}async function vt(t){const e=C+t,i=h(n.from(e,"utf8")).slice(2);return n.from(i,"hex")}async function St(e,i,r){const a=[e];i?a.push(i.toBuffer()):a.push(n.alloc(32)),r?a.push(r.toBuffer()):a.push(n.alloc(32));const[s]=await t.findProgramAddress(a,z);return s}async function At(t,e){const i=await vt(e.toBase58()),r=await St(i,K),{registry:n}=await yt.retrieve(t,r);if(!n.data)throw new W(R.NoAccountData);const a=new l(n.data.slice(0,4),"le").toNumber();return n.data.slice(4,4+a).toString()}async function kt(t,e){let i=[];for(let t of e){const e=await vt(t.toBase58()),r=await St(e,K);i.push(r)}return(await yt.retrieveBatch(t,i)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new l(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}ht.schema=new Map([[ht,{kind:"struct",fields:[["mint",[32]]]}]]);const Bt=async(t,e=j)=>{let i=await vt(t);return{pubkey:await St(i,void 0,e),hashed:i}},It=async(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const i=t.split(".");if(2===i.length){const t=n.from([e?1:0]).toString().concat(i[0]),{pubkey:r}=await Bt(i[1]);return{...await Bt(t,r),isSub:!0,parent:r}}if(3===i.length&&e){const{pubkey:t}=await Bt(i[2]),{pubkey:e}=await Bt("\0".concat(i[1]),t),r=n.from([1]).toString();return{...await Bt(r.concat(i[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(i.length>=3)throw new W(R.InvalidInput);return{...await Bt(t,j),isSub:!1,parent:void 0}},Et=async(t,e)=>{const{pubkey:i,parent:r}=await It(t),n=await vt(i.toBase58());return await St(n,K,e?r:void 0)};var Rt;!function(t){t.IPFS="IPFS",t.ARWV="ARWV",t.SOL="SOL",t.ETH="ETH",t.BTC="BTC",t.LTC="LTC",t.DOGE="DOGE",t.Email="email",t.Url="url",t.Discord="discord",t.Github="github",t.Reddit="reddit",t.Twitter="twitter",t.Telegram="telegram",t.Pic="pic",t.SHDW="SHDW",t.POINT="POINT",t.BSC="BSC",t.Injective="INJ",t.Backpack="backpack",t.A="A",t.AAAA="AAAA",t.CNAME="CNAME",t.TXT="TXT"}(Rt||(Rt={}));const Wt=new Map([[Rt.SOL,96],[Rt.ETH,20],[Rt.BSC,20],[Rt.Injective,20],[Rt.A,4],[Rt.AAAA,16]]),Dt=(t,e,i)=>k.sign.detached.verify(t,e,i.toBytes()),Nt=async(e,i)=>{const{pubkey:r}=st(i),{registry:a,nftOwner:s}=await yt.retrieve(e,r);if(s)return s;try{const r=xt(i,Rt.SOL),s=await qt(e,i);if(!(null==s?void 0:s.data))throw new W(R.NoRecordData);const o=new TextEncoder,c=n.concat([s.data.slice(0,32),r.toBuffer()]),u=o.encode(c.toString("hex"));if(!Dt(u,s.data.slice(32),a.owner))throw new W(R.InvalidSignature);return new t(s.data.slice(0,32))}catch(t){if(t instanceof Error&&"FetchError"===t.name)throw t}return a.owner},xt=(t,e)=>{const{pubkey:i}=st(e+"."+t,!0);return i};async function Tt(t,e,i,r){const n=xt(e,i);let{registry:a}=await yt.retrieve(t,n);if(!a.data)throw new W(R.NoRecordData);if(r)return te(a,i,n);const s=Wt.get(i);return a.data=a.data.slice(0,s),a}async function Ht(t,e,i,r){const n=i.map((t=>xt(e,t))),a=await yt.retrieveBatch(t,n);return r?a.map(((t,r)=>{if(t)return te(t,i[r],xt(e,i[r]))})):a}const Lt=async(t,e)=>await Tt(t,e,Rt.IPFS,!0),Pt=async(t,e)=>await Tt(t,e,Rt.ARWV,!0),Ft=async(t,e)=>await Tt(t,e,Rt.ETH,!0),Mt=async(t,e)=>await Tt(t,e,Rt.BTC,!0),zt=async(t,e)=>await Tt(t,e,Rt.LTC,!0),Ct=async(t,e)=>await Tt(t,e,Rt.DOGE,!0),jt=async(t,e)=>await Tt(t,e,Rt.Email,!0),Ut=async(t,e)=>await Tt(t,e,Rt.Url,!0),Ot=async(t,e)=>await Tt(t,e,Rt.Discord,!0),Gt=async(t,e)=>await Tt(t,e,Rt.Github,!0),Kt=async(t,e)=>await Tt(t,e,Rt.Reddit,!0),Xt=async(t,e)=>await Tt(t,e,Rt.Twitter,!0),Yt=async(t,e)=>await Tt(t,e,Rt.Telegram,!0),Vt=async(t,e)=>await Tt(t,e,Rt.Pic,!0),Zt=async(t,e)=>await Tt(t,e,Rt.SHDW,!0),qt=async(t,e)=>await Tt(t,e,Rt.SOL),Jt=async(t,e)=>await Tt(t,e,Rt.POINT,!0),_t=async(t,e)=>await Tt(t,e,Rt.BSC,!0),Qt=async(t,e)=>await Tt(t,e,Rt.Injective,!0),$t=async(t,e)=>await Tt(t,e,Rt.Backpack,!0),te=(t,e,i)=>{const r=null==t?void 0:t.data;if(!r)return;const a=Wt.get(e),s=(t=>{const e=Array.from(t);return e.length-1-e.reverse().findIndex((t=>0!==t))+1})(r);if(!a)return r.slice(0,s).toString("utf-8");if(a&&s!==a){const t=r.slice(0,s).toString("utf-8");if(e===Rt.Injective){const e=S(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(e===Rt.BSC||e===Rt.ETH){const e=t.slice(0,2),i=t.slice(2);if("0x"===e&&20===n.from(i,"hex").length)return t}else if((e===Rt.A||e===Rt.AAAA)&&I.isValid(t))return t;throw new W(R.InvalidRecordData)}if(e===Rt.SOL){const e=new TextEncoder,a=n.concat([r.slice(0,32),i.toBuffer()]),s=e.encode(a.toString("hex"));if(Dt(s,r.slice(32),t.owner))return B.encode(r.slice(0,32))}else{if(e===Rt.ETH||e===Rt.BSC)return"0x"+r.toString("hex");if(e===Rt.Injective)return A("inj",r,"bech32");if(e===Rt.A||e===Rt.AAAA)return I.fromByteArray([...r.slice(0,a)]).toString()}throw new W(R.InvalidRecordData)},ee=(t,e)=>{if(!Wt.get(e))return e!==Rt.CNAME&&e!==Rt.TXT||(t=E(t)),n.from(t,"utf-8");if(e===Rt.SOL)throw new W(R.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(e===Rt.ETH||e===Rt.BSC)return lt("0x"===t.slice(0,2),R.InvalidEvmAddress),n.from(t.slice(2),"hex");if(e===Rt.Injective){const e=S(t);return lt("inj"===e.prefix,R.InvalidInjectiveAddress),lt(20===e.data.length,R.InvalidInjectiveAddress),n.from(e.data)}if(e===Rt.A){const e=I.parse(t).toByteArray();return lt(4===e.length,R.InvalidARecord),n.from(e)}if(e===Rt.AAAA){const e=I.parse(t).toByteArray();return lt(16===e.length,R.InvalidAAAARecord),n.from(e)}throw new W(R.InvalidRecordInput)},ie=(t,e,i,r)=>{const a=n.concat([t.toBuffer(),e.toBuffer()]),s=Dt(a,r,i);return lt(s,R.InvalidSignature),n.concat([t.toBuffer(),r])};async function re(t,e,r,n,a,s,o,c){const u=await vt(e),l=await St(u,o,c),f=s||await t.getMinimumBalanceForRentExemption(r);let w;if(c){const{registry:e}=await bt(t,c);w=e.owner}return x(z,i.programId,l,a,n,u,new N(f),new D(r),o,c,w)}async function ne(t,e,i,r,n,a){const s=await vt(e),o=await St(s,n,a);let c;c=n||(await yt.retrieve(t,o)).registry.owner;return T(z,o,new D(i),r,c)}async function ae(t,e,i,r,n,a){const s=await vt(e),o=await St(s,r,n);let c;c=r||(await yt.retrieve(t,o)).registry.owner;return H(z,o,i,c,r,n,a)}async function se(t,e,i,r,n){const a=await vt(e),s=await St(a,r,n);let o;o=r||(await yt.retrieve(t,s)).registry.owner;return L(z,s,i,o)}const oe=async(e,n,s,o,l,f=q,w)=>{const[d]=t.findProgramAddressSync([U.toBuffer()],U),p=tt(n),m=et(p,void 0,j),y=tt(m.toBase58()),g=et(y,d),[h]=t.findProgramAddressSync([m.toBuffer()],U),S=J.findIndex((t=>null==w?void 0:w.equals(t)));let A;const k=[];if(-1!==S&&w){A=c(f,w,!0);const t=await e.getAccountInfo(A);if(!(null==t?void 0:t.data)){const t=u(o,A,w,f);k.push(t)}}const B=new b(e,v("mainnet-beta")),I=await B.getData(),E=_.get(f.toBase58());if(!E)throw new W(R.SymbolNotFound,`No symbol found for mint ${f.toBase58()}`);const D=I.productPrice.get("Crypto."+E+"/USD"),N=I.productFromSymbol.get("Crypto."+E+"/USD"),x=c(f,$),T=new M({name:n,space:s,referrerIdxOpt:-1!=S?S:null}).getInstruction(U,z,j,m,g,i.programId,d,o,l,Q,D.productAccountKey,new t(N.price_account),x,a,r,h,A);return k.push(T),[[],k]},ce=async(e,i,n,a,s)=>{let[o]=await t.findProgramAddress([U.toBuffer()],U),c=await vt(e.toBase58()),u=await St(c,o,a);return[[],[new F({name:i}).getInstruction(U,r,z,j,u,o,n,a,s)]]},ue=async(t,e,i,r=2e3)=>{const n=[],a=e.split(".")[0];if(!a)throw new W(R.InvalidSubdomain);const{parent:s,pubkey:o}=st(e),c=await t.getMinimumBalanceForRentExemption(r+yt.HEADER_LEN),u=await re(t,"\0".concat(a),r,i,i,c,void 0,s);n.push(u);const[,l]=await ce(o,"\0".concat(a),i,s,i);return n.push(...l),[[],n]},le=async(t,e,r,n,a,s)=>{lt(r!==Rt.SOL,R.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=st(`${r}.${e}`,!0),l=ee(n,r).length,f=await t.getMinimumBalanceForRentExemption(l+yt.HEADER_LEN);return x(z,i.programId,o,a,s,c,new N(f),new D(l),void 0,u,a)},fe=async(t,e,i,r,n,a)=>{lt(i!==Rt.SOL,R.UnsupportedRecord);const{pubkey:s}=st(`${i}.${e}`,!0),o=await t.getAccountInfo(s);lt(!!(null==o?void 0:o.data),R.AccountDoesNotExist);const c=ee(r,i);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[L(z,s,a,n),await le(t,e,i,r,n,a)];return[T(z,s,new D(0),c,n)]},we=async(t,e,r,n,a,s)=>{const{pubkey:o,hashed:c,parent:u}=st(`${Rt.SOL}.${e}`,!0),l=ie(r,o,n,a).length,f=await t.getMinimumBalanceForRentExemption(l+yt.HEADER_LEN);return[x(z,i.programId,o,n,s,c,new N(f),new D(l),void 0,u,n)]},de=async(t,e,i,r,n,a)=>{const{pubkey:s}=st(`${Rt.SOL}.${e}`,!0),o=await t.getAccountInfo(s);if(lt(!!(null==o?void 0:o.data),R.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[L(z,s,a,r),await we(t,e,i,r,n,a)];const c=ie(i,s,r,n);return[T(z,s,new D(0),c,r)]};async function pe(t,e,r,n,a){const s=await vt(e),o=await St(s,void 0,Y),c=await t.getMinimumBalanceForRentExemption(n+yt.HEADER_LEN);let u=[x(z,i.programId,o,r,a,s,new N(c),new D(n),void 0,Y,X)];return u=u.concat(await Be(t,e,o,r,a)),u}async function me(t,e,i,r){const n=await vt(t),a=await St(n,void 0,Y);return[T(z,a,new D(i),r,e)]}async function ye(t,e,i,r,n){const a=await vt(e),s=await St(a,void 0,Y);let o=[H(z,s,r,i,void 0)];const c=await vt(i.toString());return await St(c,X,void 0),o.push(await se(t,i.toString(),n,X,Y)),o=o.concat(await Be(t,e,s,r,n)),o}async function ge(t,e){const i=await vt(t),r=await St(i,void 0,Y),n=await vt(e.toString()),a=await St(n,X,Y);return[L(z,r,e,e),L(z,a,e,e)]}async function he(t){const e=await vt(t);return await St(e,void 0,Y)}async function be(t,e){const i=await vt(e),r=await St(i,void 0,Y),{registry:n}=await yt.retrieve(t,r);return n}async function ve(e,i){const r=await vt(i.toString()),n=await St(r,X,Y);let a=await ke.retrieve(e,n);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function Se(e,i){const r=[{memcmp:{offset:0,bytes:Y.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:X.toBase58()}}],n=await e.getProgramAccounts(z,{filters:r});for(const e of n)if(e.account.data.length>yt.HEADER_LEN+32){let i=e.account.data.slice(yt.HEADER_LEN),r=w(ke.schema,ke,i);return[r.twitterHandle,new t(r.twitterRegistryKey)]}throw new W(R.AccountDoesNotExist)}async function Ae(e,i){const r=[{memcmp:{offset:0,bytes:Y.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:new t(n.alloc(32,0)).toBase58()}}],a=await e.getProgramAccounts(z,{filters:r});if(a.length>1)throw new W(R.MultipleRegistries);return a[0].account.data.slice(yt.HEADER_LEN)}class ke{constructor(t){this.twitterRegistryKey=t.twitterRegistryKey,this.twitterHandle=t.twitterHandle}static async retrieve(t,e){let i=await t.getAccountInfo(e,"processed");if(!i)throw new W(R.InvalidReverseTwitter);return w(this.schema,ke,i.data.slice(yt.HEADER_LEN))}}async function Be(t,e,r,a,s){const o=await vt(a.toString()),c=await St(o,X,Y);let u=f(ke.schema,new ke({twitterRegistryKey:r.toBytes(),twitterHandle:e}));return[x(z,i.programId,c,a,s,o,new N(await t.getMinimumBalanceForRentExemption(u.length+yt.HEADER_LEN)),new D(u.length),X,Y,X),T(z,c,new D(0),n.from(u),X)]}ke.schema=new Map([[ke,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Ie=new t("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),Ee=async(t,e)=>{const i=await St(await vt(e.toBase58()),void 0,Ie),{registry:r}=await yt.retrieve(t,i);if(!r.data)throw new W(R.NoAccountData);return gt.deserialize(r.data)},Re=async(e,i)=>{const r=await St(await vt(i),void 0,Ie),{registry:n}=await yt.retrieve(e,r);if(!n.data)throw new W(R.NoAccountData);const a=new t(ht.deserialize(n.data).mint);return await Ee(e,a)},We=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class De{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(t){return d(this.schema,De,t)}static async retrieve(t,e){const i=await t.getAccountInfo(e);if(!i||!i.data)throw new W(R.FavouriteDomainNotFound);return this.deserialize(i.data)}static async getKey(e,i){return await t.findProgramAddress([n.from("favourite_domain"),i.toBuffer()],e)}static getKeySync(e,i){return t.findProgramAddressSync([n.from("favourite_domain"),i.toBuffer()],e)}}De.schema=new Map([[De,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const Ne=async(e,i)=>{const[r]=De.getKeySync(We,new t(i)),n=await De.retrieve(e,r),a=await it(e,n.nameAccount);return{domain:n.nameAccount,reverse:a}};export{G as BONFIDA_FIDA_BNB,Z as BONFIDA_USDC_BNB,R as ErrorType,De as FavouriteDomain,C as HASH_PREFIX,ht as Mint,We as NAME_OFFERS_ID,z as NAME_PROGRAM_ID,yt as NameRegistryState,D as Numberu32,N as Numberu64,O as PYTH_FIDA_PRICE_ACC,Q as PYTH_MAPPING_ACC,Wt as RECORD_V1_SIZE,J as REFERRERS,U as REGISTER_PROGRAM_ID,K as REVERSE_LOOKUP_CLASS,j as ROOT_DOMAIN_ACCOUNT,Rt as Record,ke as ReverseTwitterRegistryState,W as SNSError,V as SOL_RECORD_SIG_LEN,_ as TOKENS_SYM_MINT,Ie as TOKEN_TLD,Y as TWITTER_ROOT_PARENT_REGISTRY_KEY,X as TWITTER_VERIFICATION_AUTHORITY,gt as TokenData,q as USDC_MINT,$ as VAULT_OWNER,me as changeTwitterRegistryData,ye as changeVerifiedPubkey,lt as check,Dt as checkSolRecord,x as createInstruction,M as createInstructionV3,re as createNameRegistry,le as createRecordInstruction,F as createReverseInstruction,ce as createReverseName,Be as createReverseTwitterRegistry,we as createSolRecordInstruction,ue as createSubdomain,P as createV2Instruction,pe as createVerifiedTwitterRegistry,L as deleteInstruction,se as deleteNameRegistry,ge as deleteTwitterRegistry,te as deserializeRecord,nt as findSubdomains,ot as getAllDomains,ct as getAllRegisteredDomains,Pt as getArweaveRecord,$t as getBackpackRecord,_t as getBscRecord,Mt as getBtcRecord,Ot as getDiscordRecord,Ct as getDogeRecord,It as getDomainKey,st as getDomainKeySync,jt as getEmailRecord,Ft as getEthRecord,Ne as getFavoriteDomain,Gt as getGithubRecord,ve as getHandleAndRegistryKey,vt as getHashedName,tt as getHashedNameSync,Qt as getInjectiveRecord,Lt as getIpfsRecord,zt as getLtcRecord,St as getNameAccountKey,et as getNameAccountKeySync,bt as getNameOwner,Vt as getPicRecord,Jt as getPointRecord,Tt as getRecord,xt as getRecordKeySync,Ht as getRecords,Kt as getRedditRecord,Et as getReverseKey,ut as getReverseKeySync,Zt as getShdwRecord,qt as getSolRecord,Yt as getTelegramRecord,Ee as getTokenInfoFromMint,Re as getTokenInfoFromName,mt as getTokenizedDomains,Se as getTwitterHandleandRegistryKeyViaFilters,Xt as getTwitterRecord,be as getTwitterRegistry,Ae as getTwitterRegistryData,he as getTwitterRegistryKey,Ut as getUrlRecord,At as performReverseLookup,kt as performReverseLookupBatch,oe as registerDomainName,Nt as resolve,ft as retrieveNftOwner,wt as retrieveNfts,it as reverseLookup,rt as reverseLookupBatch,ee as serializeRecord,ie as serializeSolRecord,H as transferInstruction,ae as transferNameOwnership,T as updateInstruction,ne as updateNameRegistryData,fe as updateRecordInstruction,de as updateSolRecordInstruction};
1
+ import{PublicKey as t,TransactionInstruction as e,SystemProgram as n,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{Buffer as r}from"buffer";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import l from"bn.js";import{serialize as f,deserialize as d,deserializeUnchecked as w}from"borsh";import{sha256 as p}from"@ethersproject/sha2";import{PythHttpClient as m,getPythProgramKeyForCluster as y}from"@pythnetwork/client";import{decode as g,encode as h}from"bech32-buffer";import*as b from"tweetnacl";import v from"bs58";import S from"ipaddr.js";import{encode as A}from"punycode";var k;!function(t){t.SymbolNotFound="SymbolNotFound",t.InvalidSubdomain="InvalidSubdomain",t.FavouriteDomainNotFound="FavouriteDomainNotFound",t.MissingParentOwner="MissingParentOwner",t.U32Overflow="U32Overflow",t.InvalidBufferLength="InvalidBufferLength",t.U64Overflow="U64Overflow",t.NoRecordData="NoRecordData",t.InvalidRecordData="InvalidRecordData",t.UnsupportedRecord="UnsupportedRecord",t.InvalidEvmAddress="InvalidEvmAddress",t.InvalidInjectiveAddress="InvalidInjectiveAddress",t.InvalidARecord="InvalidARecord",t.InvalidAAAARecord="InvalidAAAARecord",t.InvalidRecordInput="InvalidRecordInput",t.InvalidSignature="InvalidSignature",t.AccountDoesNotExist="AccountDoesNotExist",t.MultipleRegistries="MultipleRegistries",t.InvalidReverseTwitter="InvalidReverseTwitter",t.NoAccountData="NoAccountData",t.InvalidInput="InvalidInput"}(k||(k={}));class B extends Error{constructor(t,e){super(e),this.name="SNSError",this.type=t,Error.captureStackTrace&&Error.captureStackTrace(this,B)}}class I extends l{toBuffer(){const t=super.toArray().reverse(),e=r.from(t);if(4===e.length)return e;if(e.length>4)throw new B(k.U32Overflow);const n=r.alloc(4);return e.copy(n),n}static fromBuffer(t){if(4!==t.length)throw new B(k.InvalidBufferLength,`Invalid buffer length: ${t.length}`);return new l([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}class E extends l{toBuffer(){const t=super.toArray().reverse(),e=r.from(t);if(8===e.length)return e;if(e.length>8)throw new B(k.U64Overflow);const n=r.alloc(8);return e.copy(n),n}static fromBuffer(t){if(8!==t.length)throw new B(k.U64Overflow,`Invalid buffer length: ${t.length}`);return new l([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}function R(n,i,a,s,o,c,u,l,f,d,w){const p=[r.from(Int8Array.from([0])),new I(c.length).toBuffer(),c,u.toBuffer(),l.toBuffer()],m=r.concat(p),y=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return f?y.push({pubkey:f,isSigner:!0,isWritable:!1}):y.push({pubkey:new t(r.alloc(32)),isSigner:!1,isWritable:!1}),d?y.push({pubkey:d,isSigner:!1,isWritable:!1}):y.push({pubkey:new t(r.alloc(32)),isSigner:!1,isWritable:!1}),w&&y.push({pubkey:w,isSigner:!0,isWritable:!1}),new e({keys:y,programId:n,data:m})}function W(t,n,i,a,s){const o=[r.from(Int8Array.from([1])),i.toBuffer(),new I(a.length).toBuffer(),a],c=r.concat(o);return new e({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function D(n,i,a,s,o,c,u){const l=[r.from(Int8Array.from([2])),a.toBuffer()],f=r.concat(l),d=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&d.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||d.push({pubkey:t.default,isSigner:!1,isWritable:!1}),d.push({pubkey:c,isSigner:!1,isWritable:!1})),new e({keys:d,programId:n,data:f})}function N(t,n,i,a){const s=[r.from(Int8Array.from([3]))],o=r.concat(s);return new e({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class x{constructor(t){this.tag=9,this.name=t.name,this.space=t.space}serialize(){return f(x.schema,this)}getInstruction(t,i,s,o,c,u,l,f,d,w,p){const m=r.from(this.serialize()),y=[{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:l,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1}];return new e({keys:y,programId:t,data:m})}}x.schema=new Map([[x,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class T{constructor(t){this.tag=5,this.name=t.name}serialize(){return f(T.schema,this)}getInstruction(n,i,a,s,o,c,u,l,f){const d=r.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(l){if(!f)throw new B(k.MissingParentOwner);w.push({pubkey:l,isSigner:!1,isWritable:!0}),w.push({pubkey:f,isSigner:!0,isWritable:!1})}return new e({keys:w,programId:n,data:d})}}T.schema=new Map([[T,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class H{constructor(t){this.tag=13,this.name=t.name,this.space=t.space,this.referrerIdxOpt=t.referrerIdxOpt}serialize(){return f(H.schema,this)}getInstruction(t,n,i,a,s,o,c,u,l,f,d,w,p,m,y,g,h){const b=r.from(this.serialize());let v=[];return v.push({pubkey:n,isSigner:!1,isWritable:!1}),v.push({pubkey:i,isSigner:!1,isWritable:!1}),v.push({pubkey:a,isSigner:!1,isWritable:!0}),v.push({pubkey:s,isSigner:!1,isWritable:!0}),v.push({pubkey:o,isSigner:!1,isWritable:!1}),v.push({pubkey:c,isSigner:!1,isWritable:!1}),v.push({pubkey:u,isSigner:!0,isWritable:!0}),v.push({pubkey:l,isSigner:!1,isWritable:!0}),v.push({pubkey:f,isSigner:!1,isWritable:!1}),v.push({pubkey:d,isSigner:!1,isWritable:!1}),v.push({pubkey:w,isSigner:!1,isWritable:!1}),v.push({pubkey:p,isSigner:!1,isWritable:!0}),v.push({pubkey:m,isSigner:!1,isWritable:!1}),v.push({pubkey:y,isSigner:!1,isWritable:!1}),v.push({pubkey:g,isSigner:!1,isWritable:!1}),h&&v.push({pubkey:h,isSigner:!1,isWritable:!0}),new e({keys:v,programId:t,data:b})}}H.schema=new Map([[H,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const P=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),L=r.from("tokenized_name");var M;!function(t){t[t.Uninitialized=0]="Uninitialized",t[t.CentralState=1]="CentralState",t[t.ActiveRecord=2]="ActiveRecord",t[t.InactiveRecord=3]="InactiveRecord"}(M||(M={}));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(t){return d(this.schema,F,t)}static async retrieve(t,e){const n=await t.getAccountInfo(e);if(!n||!n.data)throw new Error("NFT record not found");return this.deserialize(n.data)}static async findKey(e,n){return await t.findProgramAddress([r.from("nft_record"),e.toBuffer()],n)}}F.schema=new Map([[F,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const z=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),C="SPL Name Service",j=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),U=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),O=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),G=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),K=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),X=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),Y=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),Z=96,q=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),V=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),J=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW")],_=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),Q=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),$=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),tt=t=>{const e=C+t,n=p(r.from(e,"utf8")).slice(2);return r.from(n,"hex")},et=(e,n,i)=>{const a=[e];n?a.push(n.toBuffer()):a.push(r.alloc(32)),i?a.push(i.toBuffer()):a.push(r.alloc(32));const[s]=t.findProgramAddressSync(a,z);return s};async function nt(t,e){const n=tt(e.toBase58()),i=et(n,K),{registry:r}=await yt.retrieve(t,i);if(!r.data)throw new B(k.NoAccountData);const a=new l(r.data.slice(0,4),"le").toNumber();return r.data.slice(4,4+a).toString()}async function it(t,e){let n=[];for(let t of e){const e=tt(t.toBase58()),i=et(e,K);n.push(i)}return(await yt.retrieveBatch(t,n)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new l(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}const rt=async(t,e)=>{const n=[{memcmp:{offset:0,bytes:e.toBase58()}},{memcmp:{offset:64,bytes:K.toBase58()}}],i=await t.getProgramAccounts(z,{filters:n}),r=await nt(t,e),a=i.map((t=>{var e;return null===(e=t.account.data.slice(97).toString("utf-8"))||void 0===e?void 0:e.split("\0").join("")})),s=a.map((t=>st(t+"."+r).pubkey)),o=await t.getMultipleAccountsInfo(s);return a.filter(((t,e)=>!!o[e]))},at=(t,e=j)=>{let n=tt(t);return{pubkey:et(n,void 0,e),hashed:n}},st=(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=r.from([e?1:0]).toString().concat(n[0]),{pubkey:i}=at(n[1]);return{...at(t,i),isSub:!0,parent:i}}if(3===n.length&&e){const{pubkey:t}=at(n[2]),{pubkey:e}=at("\0".concat(n[1]),t),i=r.from([1]).toString();return{...at(i.concat(n[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new B(k.InvalidInput);return{...at(t,j),isSub:!1,parent:void 0}};async function ot(t,e){const n=[{memcmp:{offset:32,bytes:e.toBase58()}},{memcmp:{offset:0,bytes:j.toBase58()}}];return(await t.getProgramAccounts(z,{filters:n})).map((t=>t.pubkey))}const ct=async t=>{const e=[{memcmp:{offset:0,bytes:j.toBase58()}}];return await t.getProgramAccounts(z,{dataSlice:{offset:32,length:32},filters:e})},ut=(t,e)=>{const{pubkey:n,parent:i}=st(t),r=tt(n.toBase58());return et(r,K,e?i:void 0)},lt=(t,e)=>{if(!t)throw new B(e)},ft=async(e,n)=>{try{const[i]=await t.findProgramAddress([L,n.toBuffer()],P);if("0"===(await s(e,i)).supply.toString())return;const r=[{memcmp:{offset:0,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:r});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},dt=async e=>{const n=await e.getProgramAccounts(P,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return n.map((e=>new t(e.account.data.slice(66,98))))},wt=t=>[{memcmp:{offset:32,bytes:t}},{memcmp:{offset:64,bytes:"2"}}],pt=async(t,e)=>{const n=await(async(t,e)=>{const n=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:e.toBase58()}}];return await t.getProgramAccounts(P,{filters:n})})(t,e.mint);if(1===n.length)return F.deserialize(n[0].account.data)},mt=async(t,e)=>{const n=await(async(t,e)=>{const n=[...wt(e.toBase58()),{dataSize:165}],i=(await t.getProgramAccounts(a,{filters:n})).map((t=>o.decode(t.account.data))).map((e=>pt(t,e)));return(await Promise.all(i)).filter((t=>void 0!==t))})(t,e);return(await it(t,n.map((t=>t.nameAccount)))).map(((t,e)=>({key:n[e].nameAccount,mint:n[e].nftMint,reverse:t}))).filter((t=>!!t.reverse))};class yt{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(t,e){var n;const i=await t.getAccountInfo(e);if(!i)throw new B(k.AccountDoesNotExist);let r=w(this.schema,yt,i.data);r.data=null===(n=i.data)||void 0===n?void 0:n.slice(this.HEADER_LEN);return{registry:r,nftOwner:await ft(t,e)}}static async _retrieveBatch(t,e){const n=await t.getMultipleAccountsInfo(e),i=t=>{if(!t)return;const e=w(this.schema,yt,t);return e.data=null==t?void 0:t.slice(this.HEADER_LEN),e};return n.map((t=>i(null==t?void 0:t.data)))}static async retrieveBatch(t,e){let n=[];const i=[...e];for(;i.length>0;)n.push(...await this._retrieveBatch(t,i.splice(0,100)));return n}}yt.HEADER_LEN=96,yt.schema=new Map([[yt,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class gt{constructor(t){this.name=t.name,this.ticker=t.ticker,this.mint=t.mint,this.decimals=t.decimals,this.website=null==t?void 0:t.website,this.logoUri=null==t?void 0:t.logoUri}serialize(){return f(gt.schema,this)}static deserialize(t){return w(gt.schema,gt,t)}}gt.schema=new Map([[gt,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class ht{constructor(t){this.mint=t.mint}serialize(){return f(ht.schema,this)}static deserialize(t){return w(ht.schema,ht,t)}}async function bt(t,e){if(!await t.getAccountInfo(e))throw new B(k.AccountDoesNotExist);return yt.retrieve(t,e)}async function vt(t){const e=C+t,n=p(r.from(e,"utf8")).slice(2);return r.from(n,"hex")}async function St(e,n,i){const a=[e];n?a.push(n.toBuffer()):a.push(r.alloc(32)),i?a.push(i.toBuffer()):a.push(r.alloc(32));const[s]=await t.findProgramAddress(a,z);return s}async function At(t,e){const n=await vt(e.toBase58()),i=await St(n,K),{registry:r}=await yt.retrieve(t,i);if(!r.data)throw new B(k.NoAccountData);const a=new l(r.data.slice(0,4),"le").toNumber();return r.data.slice(4,4+a).toString()}async function kt(t,e){let n=[];for(let t of e){const e=await vt(t.toBase58()),i=await St(e,K);n.push(i)}return(await yt.retrieveBatch(t,n)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new l(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}ht.schema=new Map([[ht,{kind:"struct",fields:[["mint",[32]]]}]]);const Bt=async(t,e=j)=>{let n=await vt(t);return{pubkey:await St(n,void 0,e),hashed:n}},It=async(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=r.from([e?1:0]).toString().concat(n[0]),{pubkey:i}=await Bt(n[1]);return{...await Bt(t,i),isSub:!0,parent:i}}if(3===n.length&&e){const{pubkey:t}=await Bt(n[2]),{pubkey:e}=await Bt("\0".concat(n[1]),t),i=r.from([1]).toString();return{...await Bt(i.concat(n[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new B(k.InvalidInput);return{...await Bt(t,j),isSub:!1,parent:void 0}},Et=async(t,e)=>{const{pubkey:n,parent:i}=await It(t),r=await vt(n.toBase58());return await St(r,K,e?i:void 0)};var Rt;!function(t){t.IPFS="IPFS",t.ARWV="ARWV",t.SOL="SOL",t.ETH="ETH",t.BTC="BTC",t.LTC="LTC",t.DOGE="DOGE",t.Email="email",t.Url="url",t.Discord="discord",t.Github="github",t.Reddit="reddit",t.Twitter="twitter",t.Telegram="telegram",t.Pic="pic",t.SHDW="SHDW",t.POINT="POINT",t.BSC="BSC",t.Injective="INJ",t.Backpack="backpack",t.A="A",t.AAAA="AAAA",t.CNAME="CNAME",t.TXT="TXT"}(Rt||(Rt={}));const Wt=new Map([[Rt.SOL,96],[Rt.ETH,20],[Rt.BSC,20],[Rt.Injective,20],[Rt.A,4],[Rt.AAAA,16]]),Dt=(t,e,n)=>b.sign.detached.verify(t,e,n.toBytes()),Nt=async(e,n)=>{const{pubkey:i}=st(n),{registry:a,nftOwner:s}=await yt.retrieve(e,i);if(s)return s;try{const i=xt(n,Rt.SOL),s=await Vt(e,n);if(!(null==s?void 0:s.data))throw new B(k.NoRecordData);const o=new TextEncoder,c=r.concat([s.data.slice(0,32),i.toBuffer()]),u=o.encode(c.toString("hex"));if(!Dt(u,s.data.slice(32),a.owner))throw new B(k.InvalidSignature);return new t(s.data.slice(0,32))}catch(t){if(t instanceof Error&&"FetchError"===t.name)throw t}return a.owner},xt=(t,e)=>{const{pubkey:n}=st(e+"."+t,!0);return n};async function Tt(t,e,n,i){const r=xt(e,n);let{registry:a}=await yt.retrieve(t,r);if(!a.data)throw new B(k.NoRecordData);if(i)return te(a,n,r);const s=Wt.get(n);return a.data=a.data.slice(0,s),a}async function Ht(t,e,n,i){const r=n.map((t=>xt(e,t))),a=await yt.retrieveBatch(t,r);return i?a.map(((t,i)=>{if(t)return te(t,n[i],xt(e,n[i]))})):a}const Pt=async(t,e)=>await Tt(t,e,Rt.IPFS,!0),Lt=async(t,e)=>await Tt(t,e,Rt.ARWV,!0),Mt=async(t,e)=>await Tt(t,e,Rt.ETH,!0),Ft=async(t,e)=>await Tt(t,e,Rt.BTC,!0),zt=async(t,e)=>await Tt(t,e,Rt.LTC,!0),Ct=async(t,e)=>await Tt(t,e,Rt.DOGE,!0),jt=async(t,e)=>await Tt(t,e,Rt.Email,!0),Ut=async(t,e)=>await Tt(t,e,Rt.Url,!0),Ot=async(t,e)=>await Tt(t,e,Rt.Discord,!0),Gt=async(t,e)=>await Tt(t,e,Rt.Github,!0),Kt=async(t,e)=>await Tt(t,e,Rt.Reddit,!0),Xt=async(t,e)=>await Tt(t,e,Rt.Twitter,!0),Yt=async(t,e)=>await Tt(t,e,Rt.Telegram,!0),Zt=async(t,e)=>await Tt(t,e,Rt.Pic,!0),qt=async(t,e)=>await Tt(t,e,Rt.SHDW,!0),Vt=async(t,e)=>await Tt(t,e,Rt.SOL),Jt=async(t,e)=>await Tt(t,e,Rt.POINT,!0),_t=async(t,e)=>await Tt(t,e,Rt.BSC,!0),Qt=async(t,e)=>await Tt(t,e,Rt.Injective,!0),$t=async(t,e)=>await Tt(t,e,Rt.Backpack,!0),te=(t,e,n)=>{const i=null==t?void 0:t.data;if(!i)return;const a=Wt.get(e),s=(t=>{const e=Array.from(t);return e.length-1-e.reverse().findIndex((t=>0!==t))+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(e===Rt.Injective){const e=g(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(e===Rt.BSC||e===Rt.ETH){const e=t.slice(0,2),n=t.slice(2);if("0x"===e&&20===r.from(n,"hex").length)return t}else if((e===Rt.A||e===Rt.AAAA)&&S.isValid(t))return t;throw new B(k.InvalidRecordData)}if(e===Rt.SOL){const e=new TextEncoder,a=r.concat([i.slice(0,32),n.toBuffer()]),s=e.encode(a.toString("hex"));if(Dt(s,i.slice(32),t.owner))return v.encode(i.slice(0,32))}else{if(e===Rt.ETH||e===Rt.BSC)return"0x"+i.toString("hex");if(e===Rt.Injective)return h("inj",i,"bech32");if(e===Rt.A||e===Rt.AAAA)return S.fromByteArray([...i.slice(0,a)]).toString()}throw new B(k.InvalidRecordData)},ee=(t,e)=>{if(!Wt.get(e))return e!==Rt.CNAME&&e!==Rt.TXT||(t=A(t)),r.from(t,"utf-8");if(e===Rt.SOL)throw new B(k.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(e===Rt.ETH||e===Rt.BSC)return lt("0x"===t.slice(0,2),k.InvalidEvmAddress),r.from(t.slice(2),"hex");if(e===Rt.Injective){const e=g(t);return lt("inj"===e.prefix,k.InvalidInjectiveAddress),lt(20===e.data.length,k.InvalidInjectiveAddress),r.from(e.data)}if(e===Rt.A){const e=S.parse(t).toByteArray();return lt(4===e.length,k.InvalidARecord),r.from(e)}if(e===Rt.AAAA){const e=S.parse(t).toByteArray();return lt(16===e.length,k.InvalidAAAARecord),r.from(e)}throw new B(k.InvalidRecordInput)},ne=(t,e,n,i)=>{const a=r.concat([t.toBuffer(),e.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=Dt(s,i,n);return lt(o,k.InvalidSignature),r.concat([t.toBuffer(),i])};async function ie(t,e,i,r,a,s,o,c){const u=await vt(e),l=await St(u,o,c),f=s||await t.getMinimumBalanceForRentExemption(i);let d;if(c){const{registry:e}=await bt(t,c);d=e.owner}return R(z,n.programId,l,a,r,u,new E(f),new I(i),o,c,d)}async function re(t,e,n,i,r,a){const s=await vt(e),o=await St(s,r,a);let c;c=r||(await yt.retrieve(t,o)).registry.owner;return W(z,o,new I(n),i,c)}async function ae(t,e,n,i,r,a){const s=await vt(e),o=await St(s,i,r);let c;c=i||(await yt.retrieve(t,o)).registry.owner;return D(z,o,n,c,i,r,a)}async function se(t,e,n,i,r){const a=await vt(e),s=await St(a,i,r);let o;o=i||(await yt.retrieve(t,s)).registry.owner;return N(z,s,n,o)}const oe=async(e,r,s,o,l,f=V,d)=>{const[w]=t.findProgramAddressSync([U.toBuffer()],U),p=tt(r),g=et(p,void 0,j),h=tt(g.toBase58()),b=et(h,w),[v]=t.findProgramAddressSync([g.toBuffer()],U),S=J.findIndex((t=>null==d?void 0:d.equals(t)));let A;const I=[];if(-1!==S&&d){A=c(f,d,!0);const t=await e.getAccountInfo(A);if(!(null==t?void 0:t.data)){const t=u(o,A,d,f);I.push(t)}}const E=new m(e,y("mainnet-beta")),R=await E.getData(),W=_.get(f.toBase58());if(!W)throw new B(k.SymbolNotFound,`No symbol found for mint ${f.toBase58()}`);const D=R.productPrice.get("Crypto."+W+"/USD"),N=R.productFromSymbol.get("Crypto."+W+"/USD"),x=c(f,$),T=new H({name:r,space:s,referrerIdxOpt:-1!=S?S:null}).getInstruction(U,z,j,g,b,n.programId,w,o,l,Q,D.productAccountKey,new t(N.price_account),x,a,i,v,A);return I.push(T),[[],I]},ce=async(e,n,r,a,s)=>{let[o]=await t.findProgramAddress([U.toBuffer()],U),c=await vt(e.toBase58()),u=await St(c,o,a);return[[],[new T({name:n}).getInstruction(U,i,z,j,u,o,r,a,s)]]},ue=async(t,e,n,i=2e3)=>{const r=[],a=e.split(".")[0];if(!a)throw new B(k.InvalidSubdomain);const{parent:s,pubkey:o}=st(e),c=await t.getMinimumBalanceForRentExemption(i+yt.HEADER_LEN),u=await ie(t,"\0".concat(a),i,n,n,c,void 0,s);r.push(u);const[,l]=await ce(o,"\0".concat(a),n,s,n);return r.push(...l),[[],r]},le=async(t,e,i,r,a,s)=>{lt(i!==Rt.SOL,k.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=st(`${i}.${e}`,!0),l=ee(r,i).length,f=await t.getMinimumBalanceForRentExemption(l+yt.HEADER_LEN);return R(z,n.programId,o,a,s,c,new E(f),new I(l),void 0,u,a)},fe=async(t,e,n,i,r,a)=>{lt(n!==Rt.SOL,k.UnsupportedRecord);const{pubkey:s}=st(`${n}.${e}`,!0),o=await t.getAccountInfo(s);lt(!!(null==o?void 0:o.data),k.AccountDoesNotExist);const c=ee(i,n);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[N(z,s,a,r),await le(t,e,n,i,r,a)];return[W(z,s,new I(0),c,r)]},de=async(t,e,i,r,a,s)=>{const{pubkey:o,hashed:c,parent:u}=st(`${Rt.SOL}.${e}`,!0),l=ne(i,o,r,a).length,f=await t.getMinimumBalanceForRentExemption(l+yt.HEADER_LEN);return[R(z,n.programId,o,r,s,c,new E(f),new I(l),void 0,u,r)]},we=async(t,e,n,i,r,a)=>{const{pubkey:s}=st(`${Rt.SOL}.${e}`,!0),o=await t.getAccountInfo(s);if(lt(!!(null==o?void 0:o.data),k.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[N(z,s,a,i),await de(t,e,n,i,r,a)];const c=ne(n,s,i,r);return[W(z,s,new I(0),c,i)]};async function pe(t,e,i,r,a){const s=await vt(e),o=await St(s,void 0,Y),c=await t.getMinimumBalanceForRentExemption(r+yt.HEADER_LEN);let u=[R(z,n.programId,o,i,a,s,new E(c),new I(r),void 0,Y,X)];return u=u.concat(await Be(t,e,o,i,a)),u}async function me(t,e,n,i){const r=await vt(t),a=await St(r,void 0,Y);return[W(z,a,new I(n),i,e)]}async function ye(t,e,n,i,r){const a=await vt(e),s=await St(a,void 0,Y);let o=[D(z,s,i,n,void 0)];const c=await vt(n.toString());return await St(c,X,void 0),o.push(await se(t,n.toString(),r,X,Y)),o=o.concat(await Be(t,e,s,i,r)),o}async function ge(t,e){const n=await vt(t),i=await St(n,void 0,Y),r=await vt(e.toString()),a=await St(r,X,Y);return[N(z,i,e,e),N(z,a,e,e)]}async function he(t){const e=await vt(t);return await St(e,void 0,Y)}async function be(t,e){const n=await vt(e),i=await St(n,void 0,Y),{registry:r}=await yt.retrieve(t,i);return r}async function ve(e,n){const i=await vt(n.toString()),r=await St(i,X,Y);let a=await ke.retrieve(e,r);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function Se(e,n){const i=[{memcmp:{offset:0,bytes:Y.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:X.toBase58()}}],r=await e.getProgramAccounts(z,{filters:i});for(const e of r)if(e.account.data.length>yt.HEADER_LEN+32){let n=e.account.data.slice(yt.HEADER_LEN),i=w(ke.schema,ke,n);return[i.twitterHandle,new t(i.twitterRegistryKey)]}throw new B(k.AccountDoesNotExist)}async function Ae(e,n){const i=[{memcmp:{offset:0,bytes:Y.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:new t(r.alloc(32,0)).toBase58()}}],a=await e.getProgramAccounts(z,{filters:i});if(a.length>1)throw new B(k.MultipleRegistries);return a[0].account.data.slice(yt.HEADER_LEN)}class ke{constructor(t){this.twitterRegistryKey=t.twitterRegistryKey,this.twitterHandle=t.twitterHandle}static async retrieve(t,e){let n=await t.getAccountInfo(e,"processed");if(!n)throw new B(k.InvalidReverseTwitter);return w(this.schema,ke,n.data.slice(yt.HEADER_LEN))}}async function Be(t,e,i,a,s){const o=await vt(a.toString()),c=await St(o,X,Y);let u=f(ke.schema,new ke({twitterRegistryKey:i.toBytes(),twitterHandle:e}));return[R(z,n.programId,c,a,s,o,new E(await t.getMinimumBalanceForRentExemption(u.length+yt.HEADER_LEN)),new I(u.length),X,Y,X),W(z,c,new I(0),r.from(u),X)]}ke.schema=new Map([[ke,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Ie=new t("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),Ee=async(t,e)=>{const n=await St(await vt(e.toBase58()),void 0,Ie),{registry:i}=await yt.retrieve(t,n);if(!i.data)throw new B(k.NoAccountData);return gt.deserialize(i.data)},Re=async(e,n)=>{const i=await St(await vt(n),void 0,Ie),{registry:r}=await yt.retrieve(e,i);if(!r.data)throw new B(k.NoAccountData);const a=new t(ht.deserialize(r.data).mint);return await Ee(e,a)},We=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class De{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(t){return d(this.schema,De,t)}static async retrieve(t,e){const n=await t.getAccountInfo(e);if(!n||!n.data)throw new B(k.FavouriteDomainNotFound);return this.deserialize(n.data)}static async getKey(e,n){return await t.findProgramAddress([r.from("favourite_domain"),n.toBuffer()],e)}static getKeySync(e,n){return t.findProgramAddressSync([r.from("favourite_domain"),n.toBuffer()],e)}}De.schema=new Map([[De,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const Ne=async(e,n)=>{const[i]=De.getKeySync(We,new t(n)),r=await De.retrieve(e,i),a=await nt(e,r.nameAccount);return{domain:r.nameAccount,reverse:a}};export{G as BONFIDA_FIDA_BNB,q as BONFIDA_USDC_BNB,k as ErrorType,De as FavouriteDomain,C as HASH_PREFIX,ht as Mint,We as NAME_OFFERS_ID,z as NAME_PROGRAM_ID,yt as NameRegistryState,I as Numberu32,E as Numberu64,O as PYTH_FIDA_PRICE_ACC,Q as PYTH_MAPPING_ACC,Wt as RECORD_V1_SIZE,J as REFERRERS,U as REGISTER_PROGRAM_ID,K as REVERSE_LOOKUP_CLASS,j as ROOT_DOMAIN_ACCOUNT,Rt as Record,ke as ReverseTwitterRegistryState,B as SNSError,Z as SOL_RECORD_SIG_LEN,_ as TOKENS_SYM_MINT,Ie as TOKEN_TLD,Y as TWITTER_ROOT_PARENT_REGISTRY_KEY,X as TWITTER_VERIFICATION_AUTHORITY,gt as TokenData,V as USDC_MINT,$ as VAULT_OWNER,me as changeTwitterRegistryData,ye as changeVerifiedPubkey,lt as check,Dt as checkSolRecord,R as createInstruction,H as createInstructionV3,ie as createNameRegistry,le as createRecordInstruction,T as createReverseInstruction,ce as createReverseName,Be as createReverseTwitterRegistry,de as createSolRecordInstruction,ue as createSubdomain,x as createV2Instruction,pe as createVerifiedTwitterRegistry,N as deleteInstruction,se as deleteNameRegistry,ge as deleteTwitterRegistry,te as deserializeRecord,rt as findSubdomains,ot as getAllDomains,ct as getAllRegisteredDomains,Lt as getArweaveRecord,$t as getBackpackRecord,_t as getBscRecord,Ft as getBtcRecord,Ot as getDiscordRecord,Ct as getDogeRecord,It as getDomainKey,st as getDomainKeySync,jt as getEmailRecord,Mt as getEthRecord,Ne as getFavoriteDomain,Gt as getGithubRecord,ve as getHandleAndRegistryKey,vt as getHashedName,tt as getHashedNameSync,Qt as getInjectiveRecord,Pt as getIpfsRecord,zt as getLtcRecord,St as getNameAccountKey,et as getNameAccountKeySync,bt as getNameOwner,Zt as getPicRecord,Jt as getPointRecord,Tt as getRecord,xt as getRecordKeySync,Ht as getRecords,Kt as getRedditRecord,Et as getReverseKey,ut as getReverseKeySync,qt as getShdwRecord,Vt as getSolRecord,Yt as getTelegramRecord,Ee as getTokenInfoFromMint,Re as getTokenInfoFromName,mt as getTokenizedDomains,Se as getTwitterHandleandRegistryKeyViaFilters,Xt as getTwitterRecord,be as getTwitterRegistry,Ae as getTwitterRegistryData,he as getTwitterRegistryKey,Ut as getUrlRecord,At as performReverseLookup,kt as performReverseLookupBatch,oe as registerDomainName,Nt as resolve,ft as retrieveNftOwner,dt as retrieveNfts,nt as reverseLookup,it as reverseLookupBatch,ee as serializeRecord,ne as serializeSolRecord,D as transferInstruction,ae as transferNameOwnership,W as updateInstruction,re as updateNameRegistryData,fe as updateRecordInstruction,we as updateSolRecordInstruction};
@@ -0,0 +1,38 @@
1
+ /// <reference types="node" />
2
+ import { Schema } from "borsh";
3
+ import { Connection, PublicKey } from "@solana/web3.js";
4
+ import { Buffer } from "buffer";
5
+ export declare const NAME_TOKENIZER_ID: PublicKey;
6
+ export declare const MINT_PREFIX: Buffer;
7
+ export declare enum Tag {
8
+ Uninitialized = 0,
9
+ CentralState = 1,
10
+ ActiveRecord = 2,
11
+ InactiveRecord = 3
12
+ }
13
+ export declare class NftRecord {
14
+ tag: Tag;
15
+ nonce: number;
16
+ nameAccount: PublicKey;
17
+ owner: PublicKey;
18
+ nftMint: PublicKey;
19
+ static schema: Schema;
20
+ constructor(obj: {
21
+ tag: number;
22
+ nonce: number;
23
+ nameAccount: Uint8Array;
24
+ owner: Uint8Array;
25
+ nftMint: Uint8Array;
26
+ });
27
+ static deserialize(data: Buffer): NftRecord;
28
+ static retrieve(connection: Connection, key: PublicKey): Promise<NftRecord>;
29
+ static findKey(nameAccount: PublicKey, programId: PublicKey): Promise<[PublicKey, number]>;
30
+ }
31
+ /**
32
+ * This function can be used to retrieve a NFT Record given a mint
33
+ *
34
+ * @param connection A solana RPC connection
35
+ * @param mint The mint of the NFT Record
36
+ * @returns
37
+ */
38
+ export declare const getRecordFromMint: (connection: Connection, mint: PublicKey) => Promise<import("@solana/web3.js").GetProgramAccountsResponse>;
package/dist/utils.d.ts CHANGED
@@ -61,10 +61,7 @@ export declare function getAllDomains(connection: Connection, wallet: PublicKey)
61
61
  * @param connection The Solana RPC connection object
62
62
  * @returns
63
63
  */
64
- export declare const getAllRegisteredDomains: (connection: Connection) => Promise<{
65
- pubkey: PublicKey;
66
- account: import("@solana/web3.js").AccountInfo<Buffer>;
67
- }[]>;
64
+ export declare const getAllRegisteredDomains: (connection: Connection) => Promise<import("@solana/web3.js").GetProgramAccountsResponse>;
68
65
  /**
69
66
  * This function can be used to get the key of the reverse account
70
67
  * @param domain The domain to compute the reverse for
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonfida/spl-name-service",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"
@@ -58,9 +58,8 @@
58
58
  "typescript": "^5.0.4"
59
59
  },
60
60
  "dependencies": {
61
- "@bonfida/name-tokenizer": "0.0.9",
62
61
  "@ethersproject/sha2": "^5.7.0",
63
- "@pythnetwork/client": "2.17.0",
62
+ "@pythnetwork/client": "^2.19.0",
64
63
  "@solana/buffer-layout": "^4.0.1",
65
64
  "@solana/spl-token": "0.3.7 ",
66
65
  "bech32-buffer": "^0.2.1",
File without changes