@bonfida/spl-name-service 2.0.0-alpha.14 → 2.0.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindings.d.ts +6 -5
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/record_v2.d.ts +3 -167
- package/dist/utils.d.ts +1 -1
- package/package.json +2 -1
package/dist/bindings.d.ts
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { Buffer } from "buffer";
|
|
3
3
|
import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
|
|
4
4
|
import { Record } from "./types/record";
|
|
5
|
-
import { RecordV2 } from "./record_v2";
|
|
6
5
|
/**
|
|
7
6
|
* Creates a name account with the given rent budget, allocated space, owner and class.
|
|
8
7
|
*
|
|
@@ -95,7 +94,6 @@ export declare const createSubdomain: (connection: Connection, subdomain: string
|
|
|
95
94
|
export declare const createRecordInstruction: (connection: Connection, domain: string, record: Record, data: string, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction>;
|
|
96
95
|
/**
|
|
97
96
|
* This function can be used be create a record V2, it handles the serialization of the record data following SNS-IP 1 guidelines
|
|
98
|
-
* @param connection The Solana RPC connection object
|
|
99
97
|
* @param domain The .sol domain name
|
|
100
98
|
* @param record The record enum object
|
|
101
99
|
* @param recordV2 The `RecordV2` object that will be serialized into the record via the update instruction
|
|
@@ -103,7 +101,7 @@ export declare const createRecordInstruction: (connection: Connection, domain: s
|
|
|
103
101
|
* @param payer The fee payer of the transaction
|
|
104
102
|
* @returns
|
|
105
103
|
*/
|
|
106
|
-
export declare const createRecordV2Instruction: (
|
|
104
|
+
export declare const createRecordV2Instruction: (domain: string, record: Record, content: string, owner: PublicKey, payer: PublicKey) => TransactionInstruction;
|
|
107
105
|
export declare const updateRecordInstruction: (connection: Connection, domain: string, record: Record, data: string, owner: PublicKey, payer: PublicKey) => Promise<TransactionInstruction[]>;
|
|
108
106
|
/**
|
|
109
107
|
* This function updates the content of a record V2. The data serialization follows the SNS-IP 1 guidelines
|
|
@@ -115,7 +113,7 @@ export declare const updateRecordInstruction: (connection: Connection, domain: s
|
|
|
115
113
|
* @param payer The fee payer of the transaction
|
|
116
114
|
* @returns The update record instructions
|
|
117
115
|
*/
|
|
118
|
-
export declare const updateRecordV2Instruction: (
|
|
116
|
+
export declare const updateRecordV2Instruction: (domain: string, record: Record, content: string, owner: PublicKey, payer: PublicKey) => TransactionInstruction;
|
|
119
117
|
/**
|
|
120
118
|
* This function deletes a record v2 and returns the rent to the fee payer
|
|
121
119
|
* @param domain The .sol domain name
|
|
@@ -124,7 +122,10 @@ export declare const updateRecordV2Instruction: (connection: Connection, domain:
|
|
|
124
122
|
* @param payer The fee payer of the transaction
|
|
125
123
|
* @returns The delete transaction instruction
|
|
126
124
|
*/
|
|
127
|
-
export declare const deleteRecordV2: (domain: string, record: Record, owner: PublicKey, payer: PublicKey) =>
|
|
125
|
+
export declare const deleteRecordV2: (domain: string, record: Record, owner: PublicKey, payer: PublicKey) => TransactionInstruction;
|
|
126
|
+
export declare const validateRecordV2Content: (staleness: boolean, domain: string, record: Record, owner: PublicKey, payer: PublicKey, verifier: PublicKey) => TransactionInstruction;
|
|
127
|
+
export declare const writRoaRecordV2: (domain: string, record: Record, owner: PublicKey, payer: PublicKey, roaId: PublicKey) => TransactionInstruction;
|
|
128
|
+
export declare const ethValidateRecordV2Content: (domain: string, record: Record, owner: PublicKey, payer: PublicKey, signature: Buffer, expectedPubkey: Buffer) => TransactionInstruction;
|
|
128
129
|
/**
|
|
129
130
|
* This function can be used to create a SOL record (V1)
|
|
130
131
|
* @param connection The Solana RPC connection object
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("buffer"),r=require("@solana/web3.js"),t=require("@solana/spl-token"),i=require("bn.js"),s=require("borsh"),o=require("@ethersproject/sha2"),n=require("@pythnetwork/client"),a=require("bech32-buffer"),c=require("tweetnacl"),u=require("bs58"),p=require("ipaddr.js"),d=require("punycode"),f=require("@ethersproject/hash"),l=require("@ethersproject/transactions"),g=require("@ethersproject/address");function y(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var w,h=y(c);exports.ErrorType=void 0,(w=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",w.InvalidSubdomain="InvalidSubdomain",w.FavouriteDomainNotFound="FavouriteDomainNotFound",w.MissingParentOwner="MissingParentOwner",w.U32Overflow="U32Overflow",w.InvalidBufferLength="InvalidBufferLength",w.U64Overflow="U64Overflow",w.NoRecordData="NoRecordData",w.InvalidRecordData="InvalidRecordData",w.UnsupportedRecord="UnsupportedRecord",w.InvalidEvmAddress="InvalidEvmAddress",w.InvalidInjectiveAddress="InvalidInjectiveAddress",w.InvalidARecord="InvalidARecord",w.InvalidAAAARecord="InvalidAAAARecord",w.InvalidRecordInput="InvalidRecordInput",w.InvalidSignature="InvalidSignature",w.AccountDoesNotExist="AccountDoesNotExist",w.MultipleRegistries="MultipleRegistries",w.InvalidReverseTwitter="InvalidReverseTwitter",w.NoAccountData="NoAccountData",w.InvalidInput="InvalidInput",w.InvalidDomain="InvalidDomain",w.InvalidCustomBg="InvalidCustomBackground",w.UnsupportedSignature="UnsupportedSignature",w.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",w.RecordIsNotSigned="RecordIsNotSigned",w.UnsupportedSignatureType="UnsupportedSignatureType";class x extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,x)}}class m extends i{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(4===t.length)return t;if(t.length>4)throw new x(exports.ErrorType.U32Overflow);const i=e.Buffer.alloc(4);return t.copy(i),i}static fromBuffer(e){if(4!==e.length)throw new x(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 r=super.toArray().reverse(),t=e.Buffer.from(r);if(8===t.length)return t;if(t.length>8)throw new x(exports.ErrorType.U64Overflow);const i=e.Buffer.alloc(8);return t.copy(i),i}static fromBuffer(e){if(8!==e.length)throw new x(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function S(t,i,s,o,n,a,c,u,p,d,f){const l=[e.Buffer.from(Int8Array.from([0])),new m(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],g=e.Buffer.concat(l),y=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1}];return p?y.push({pubkey:p,isSigner:!0,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?y.push({pubkey:d,isSigner:!1,isWritable:!1}):y.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),f&&y.push({pubkey:f,isSigner:!0,isWritable:!1}),new r.TransactionInstruction({keys:y,programId:t,data:g})}function R(t,i,s,o,n){const a=[e.Buffer.from(Int8Array.from([1])),s.toBuffer(),new m(o.length).toBuffer(),o],c=e.Buffer.concat(a),u=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:u,programId:t,data:c})}function v(t,i,s,o,n,a,c){const u=[e.Buffer.from(Int8Array.from([2])),s.toBuffer()],p=e.Buffer.concat(u),d=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c||o,isSigner:!0,isWritable:!1}];return n&&d.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&a&&(n||d.push({pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new r.TransactionInstruction({keys:d,programId:t,data:p})}function A(t,i,s,o){const n=[e.Buffer.from(Int8Array.from([3]))],a=e.Buffer.concat(n),c=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:c,programId:t,data:a})}class E{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return s.serialize(E.schema,this)}getInstruction(i,s,o,n,a,c,u,p,d,f,l){const g=e.Buffer.from(this.serialize()),y=[{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:y,programId:i,data:g})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(e){this.tag=12,this.name=e.name}serialize(){return s.serialize(B.schema,this)}getInstruction(t,i,s,o,n,a,c,u,p,d){const f=e.Buffer.from(this.serialize());let l=[];return l.push({pubkey:i,isSigner:!1,isWritable:!1}),l.push({pubkey:s,isSigner:!1,isWritable:!1}),l.push({pubkey:o,isSigner:!1,isWritable:!0}),l.push({pubkey:n,isSigner:!1,isWritable:!1}),l.push({pubkey:a,isSigner:!1,isWritable:!1}),l.push({pubkey:c,isSigner:!0,isWritable:!0}),l.push({pubkey:u,isSigner:!1,isWritable:!1}),p&&l.push({pubkey:p,isSigner:!1,isWritable:!0}),d&&l.push({pubkey:d,isSigner:!0,isWritable:!0}),new r.TransactionInstruction({keys:l,programId:t,data:f})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class k{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return s.serialize(k.schema,this)}getInstruction(t,i,s,o,n,a,c,u,p,d,f,l,g,y,w,h,x){const m=e.Buffer.from(this.serialize());let b=[];return b.push({pubkey:i,isSigner:!1,isWritable:!1}),b.push({pubkey:s,isSigner:!1,isWritable:!1}),b.push({pubkey:o,isSigner:!1,isWritable:!0}),b.push({pubkey:n,isSigner:!1,isWritable:!0}),b.push({pubkey:a,isSigner:!1,isWritable:!1}),b.push({pubkey:c,isSigner:!1,isWritable:!1}),b.push({pubkey:u,isSigner:!0,isWritable:!0}),b.push({pubkey:p,isSigner:!1,isWritable:!0}),b.push({pubkey:d,isSigner:!1,isWritable:!1}),b.push({pubkey:f,isSigner:!1,isWritable:!1}),b.push({pubkey:l,isSigner:!1,isWritable:!1}),b.push({pubkey:g,isSigner:!1,isWritable:!0}),b.push({pubkey:y,isSigner:!1,isWritable:!1}),b.push({pubkey:w,isSigner:!1,isWritable:!1}),b.push({pubkey:h,isSigner:!1,isWritable:!1}),x&&b.push({pubkey:x,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:b,programId:t,data:m})}}k.schema=new Map([[k,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class I{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return s.serialize(I.schema,this)}getInstruction(t,i,s,o,n,a,c,u,p,d,f,l,g,y,w,h,x){const m=e.Buffer.from(this.serialize());let b=[];return b.push({pubkey:i,isSigner:!1,isWritable:!1}),b.push({pubkey:s,isSigner:!1,isWritable:!1}),b.push({pubkey:o,isSigner:!1,isWritable:!0}),b.push({pubkey:n,isSigner:!1,isWritable:!0}),b.push({pubkey:a,isSigner:!1,isWritable:!1}),b.push({pubkey:c,isSigner:!1,isWritable:!1}),b.push({pubkey:u,isSigner:!0,isWritable:!0}),b.push({pubkey:p,isSigner:!1,isWritable:!0}),b.push({pubkey:d,isSigner:!1,isWritable:!0}),b.push({pubkey:f,isSigner:!1,isWritable:!0}),b.push({pubkey:l,isSigner:!1,isWritable:!0}),b.push({pubkey:g,isSigner:!1,isWritable:!0}),b.push({pubkey:y,isSigner:!1,isWritable:!1}),b.push({pubkey:w,isSigner:!1,isWritable:!1}),b.push({pubkey:h,isSigner:!1,isWritable:!1}),b.push({pubkey:x,isSigner:!1,isWritable:!1}),new r.TransactionInstruction({keys:b,programId:t,data:m})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class T{constructor(){this.tag=16}serialize(){return s.serialize(T.schema,this)}getInstruction(t,i,s,o,n,a,c,u,p,d){const f=e.Buffer.from(this.serialize());let l=[];return l.push({pubkey:i,isSigner:!1,isWritable:!1}),l.push({pubkey:s,isSigner:!1,isWritable:!1}),l.push({pubkey:o,isSigner:!1,isWritable:!0}),l.push({pubkey:n,isSigner:!1,isWritable:!0}),l.push({pubkey:a,isSigner:!1,isWritable:!0}),l.push({pubkey:c,isSigner:!1,isWritable:!0}),l.push({pubkey:u,isSigner:!1,isWritable:!1}),l.push({pubkey:p,isSigner:!0,isWritable:!1}),l.push({pubkey:d,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:l,programId:t,data:f})}}T.schema=new Map([[T,{kind:"struct",fields:[["tag","u8"]]}]]);const P=new r.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),N=e.Buffer.from("tokenized_name");var D;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(D||(D={}));class W{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new r.PublicKey(e.nameAccount),this.owner=new r.PublicKey(e.owner),this.nftMint=new r.PublicKey(e.nftMint)}static deserialize(e){return s.deserialize(this.schema,W,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,i){return await r.PublicKey.findProgramAddress([e.Buffer.from("nft_record"),t.toBuffer()],i)}}W.schema=new Map([[W,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const K=new r.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),C="SPL Name Service",L=new r.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),U=new r.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),O=new r.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),z=new r.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),M=new r.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),_=new r.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),G=new r.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),V=new r.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),j=new r.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),H=[new r.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new r.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new r.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new r.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new r.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new r.PublicKey("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new r.PublicKey("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],F=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),q=new r.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),X=new r.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),Y=new r.PublicKey("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),Z=new r.PublicKey("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),J=new r.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Q=r=>{const t=C+r,i=o.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(i,"hex")},$=(t,i,s)=>{const o=[t];i?o.push(i.toBuffer()):o.push(e.Buffer.alloc(32)),s?o.push(s.toBuffer()):o.push(e.Buffer.alloc(32));const[n]=r.PublicKey.findProgramAddressSync(o,K);return n};async function ee(e,r){const t=Q(r.toBase58()),s=$(t,M),{registry:o}=await ue.retrieve(e,s);if(!o.data)throw new x(exports.ErrorType.NoAccountData);const n=new i(o.data.slice(0,4),"le").toNumber();return o.data.slice(4,4+n).toString()}async function re(e,r){let t=[];for(let e of r){const r=Q(e.toBase58()),i=$(r,M);t.push(i)}return(await ue.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const te=(e,r=L)=>{let t=Q(e);return{pubkey:$(t,void 0,r),hashed:t}},ie=(r,t)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const i=r.split(".");if(2===i.length){const r=e.Buffer.from([t||0]).toString().concat(i[0]),{pubkey:s}=te(i[1]);return{...te(r,s),isSub:!0,parent:s}}if(3===i.length&&t){const{pubkey:r}=te(i[2]),{pubkey:t}=te("\0".concat(i[1]),r),s=e.Buffer.from([1]).toString();return{...te(s.concat(i[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(i.length>=3)throw new x(exports.ErrorType.InvalidInput);return{...te(r,L),isSub:!1,parent:void 0}};const se=(e,r)=>{const{pubkey:t,parent:i}=ie(e),s=Q(t.toBase58());return $(s,M,r?i:void 0)},oe=(e,r)=>{if(!e)throw new x(r)},ne=async(e,i)=>{try{const[s]=await r.PublicKey.findProgramAddress([N,i.toBuffer()],P);if("0"===(await t.getMint(e,s)).supply.toString())return;const o=[{memcmp:{offset:0,bytes:s.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o});if(1!=n.length)return;return new r.PublicKey(n[0].account.data.slice(32,64))}catch{return}},ae=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ce=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(P,{filters:t})})(e,r.mint);if(1===t.length)return W.deserialize(t[0].account.data)};class ue{constructor(e){this.parentName=new r.PublicKey(e.parentName),this.owner=new r.PublicKey(e.owner),this.class=new r.PublicKey(e.class)}static async retrieve(e,r){var t;const i=await e.getAccountInfo(r);if(!i)throw new x(exports.ErrorType.AccountDoesNotExist);let o=s.deserializeUnchecked(this.schema,ue,i.data);o.data=null===(t=i.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:o,nftOwner:await ne(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),i=e=>{if(!e)return;const r=s.deserializeUnchecked(this.schema,ue,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>i(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const i=[...r];for(;i.length>0;)t.push(...await this._retrieveBatch(e,i.splice(0,100)));return t}}async function pe(e,r){if(!await e.getAccountInfo(r))throw new x(exports.ErrorType.AccountDoesNotExist);return ue.retrieve(e,r)}async function de(r){const t=C+r,i=o.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(i,"hex")}async function fe(t,i,s){const o=[t];i?o.push(i.toBuffer()):o.push(e.Buffer.alloc(32)),s?o.push(s.toBuffer()):o.push(e.Buffer.alloc(32));const[n]=await r.PublicKey.findProgramAddress(o,K);return n}ue.HEADER_LEN=96,ue.schema=new Map([[ue,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const le=async(e,r=L)=>{let t=await de(e);return{pubkey:await fe(t,void 0,r),hashed:t}},ge=async(r,t=!1)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const i=r.split(".");if(2===i.length){const r=e.Buffer.from([t?1:0]).toString().concat(i[0]),{pubkey:s}=await le(i[1]);return{...await le(r,s),isSub:!0,parent:s}}if(3===i.length&&t){const{pubkey:r}=await le(i[2]),{pubkey:t}=await le("\0".concat(i[1]),r),s=e.Buffer.from([1]).toString();return{...await le(s.concat(i[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(i.length>=3)throw new x(exports.ErrorType.InvalidInput);return{...await le(r,L),isSub:!1,parent:void 0}};var ye;exports.Record=void 0,(ye=exports.Record||(exports.Record={})).IPFS="IPFS",ye.ARWV="ARWV",ye.SOL="SOL",ye.ETH="ETH",ye.BTC="BTC",ye.LTC="LTC",ye.DOGE="DOGE",ye.Email="email",ye.Url="url",ye.Discord="discord",ye.Github="github",ye.Reddit="reddit",ye.Twitter="twitter",ye.Telegram="telegram",ye.Pic="pic",ye.SHDW="SHDW",ye.POINT="POINT",ye.BSC="BSC",ye.Injective="INJ",ye.Backpack="backpack",ye.A="A",ye.AAAA="AAAA",ye.CNAME="CNAME",ye.TXT="TXT",ye.Background="background";const we=new Map([[exports.Record.SOL,96],[exports.Record.ETH,20],[exports.Record.BSC,20],[exports.Record.Injective,20],[exports.Record.A,4],[exports.Record.AAAA,16],[exports.Record.Background,32]]);var he;exports.RecordVersion=void 0,(he=exports.RecordVersion||(exports.RecordVersion={}))[he.V1=1]="V1",he[he.V2=2]="V2";const xe=(e,r,t)=>h.sign.detached.verify(e,r,t.toBytes()),me=(e,r)=>{const{pubkey:t}=ie(r+"."+e,exports.RecordVersion.V1);return t};async function be(e,r,t,i){const s=me(r,t);let{registry:o}=await ue.retrieve(e,s);if(!o.data)throw new x(exports.ErrorType.NoRecordData);if(i)return Re(o,t,s);const n=we.get(t);return o.data=o.data.slice(0,n),o}const Se=async(e,r)=>await be(e,r,exports.Record.SOL),Re=(t,i,s)=>{const o=null==t?void 0:t.data;if(!o)return;if(0===o.compare(e.Buffer.alloc(o.length)))return;const n=we.get(i),c=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(o);if(!n)return o.slice(0,c).toString("utf-8");if(i===exports.Record.SOL){const r=new TextEncoder,i=e.Buffer.concat([o.slice(0,32),s.toBuffer()]),n=r.encode(i.toString("hex"));if(xe(n,o.slice(32,96),t.owner))return u.encode(o.slice(0,32))}if(n&&c!==n){const r=o.slice(0,c).toString("utf-8");if(i===exports.Record.Injective){const e=a.decode(r);if("inj"===e.prefix&&20===e.data.length)return r}else if(i===exports.Record.BSC||i===exports.Record.ETH){const t=r.slice(0,2),i=r.slice(2);if("0x"===t&&20===e.Buffer.from(i,"hex").length)return r}else if((i===exports.Record.A||i===exports.Record.AAAA)&&p.isValid(r))return r;throw new x(exports.ErrorType.InvalidRecordData)}if(i===exports.Record.ETH||i===exports.Record.BSC)return"0x"+o.slice(0,n).toString("hex");if(i===exports.Record.Injective)return a.encode("inj",o.slice(0,n),"bech32");if(i===exports.Record.A||i===exports.Record.AAAA)return p.fromByteArray([...o.slice(0,n)]).toString();if(i===exports.Record.Background)return new r.PublicKey(o.slice(0,n)).toString();throw new x(exports.ErrorType.InvalidRecordData)},ve=(t,i)=>{if(!we.get(i))return i!==exports.Record.CNAME&&i!==exports.Record.TXT||(t=d.encode(t)),e.Buffer.from(t,"utf-8");if(i===exports.Record.SOL)throw new x(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(i===exports.Record.ETH||i===exports.Record.BSC)return oe("0x"===t.slice(0,2),exports.ErrorType.InvalidEvmAddress),e.Buffer.from(t.slice(2),"hex");if(i===exports.Record.Injective){const r=a.decode(t);return oe("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),oe(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),e.Buffer.from(r.data)}if(i===exports.Record.A){const r=p.parse(t).toByteArray();return oe(4===r.length,exports.ErrorType.InvalidARecord),e.Buffer.from(r)}if(i===exports.Record.AAAA){const r=p.parse(t).toByteArray();return oe(16===r.length,exports.ErrorType.InvalidAAAARecord),e.Buffer.from(r)}if(i===exports.Record.Background)return new r.PublicKey(t).toBuffer();throw new x(exports.ErrorType.InvalidRecordInput)},Ae=(r,t,i,s)=>{const o=e.Buffer.concat([r.toBuffer(),t.toBuffer()]),n=(new TextEncoder).encode(o.toString("hex")),a=xe(n,s,i);return oe(a,exports.ErrorType.InvalidSignature),e.Buffer.concat([r.toBuffer(),s])};async function Ee(e,t,i,s,o,n,a,c){const u=await de(t),p=await fe(u,a,c),d=n||await e.getMinimumBalanceForRentExemption(i);let f;if(c){const{registry:r}=await pe(e,c);f=r.owner}return S(K,r.SystemProgram.programId,p,o,s,u,new b(d),new m(i),a,c,f)}async function Be(e,r,t,i,s){const o=await de(r),n=await fe(o,i,s);let a;a=i||(await ue.retrieve(e,n)).registry.owner;return A(K,n,t,a)}const ke=async(e,t,i,s,o)=>{let[n]=await r.PublicKey.findProgramAddress([U.toBuffer()],U),a=await de(e.toBase58()),c=await fe(a,n,s);return[[],[new B({name:t}).getInstruction(U,K,L,c,r.SystemProgram.programId,n,i,r.SYSVAR_RENT_PUBKEY,s,o)]]},Ie=async(e,t,i,s,o,n)=>{oe(i!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=ie(`${i}.${t}`,exports.RecordVersion.V1),p=ve(s,i).length,d=await e.getMinimumBalanceForRentExemption(p+ue.HEADER_LEN);return S(K,r.SystemProgram.programId,a,o,n,c,new b(d),new m(p),void 0,u,o)},Te=async(e,t,i,s,o,n)=>{const a=s.serialize().length,{pubkey:c,hashed:u,parent:p}=ie(`${i}.${t}`,exports.RecordVersion.V2),d=await e.getMinimumBalanceForRentExemption(a+ue.HEADER_LEN);return S(K,r.SystemProgram.programId,c,o,n,u,new b(d),new m(a),void 0,p,o)},Pe=async(e,t,i,s,o,n)=>{const{pubkey:a,hashed:c,parent:u}=ie(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=Ae(i,a,s,o).length,d=await e.getMinimumBalanceForRentExemption(p+ue.HEADER_LEN);return[S(K,r.SystemProgram.programId,a,s,n,c,new b(d),new m(p),void 0,u,s)]};class Ne{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new x(exports.ErrorType.InvalidReverseTwitter);return s.deserializeUnchecked(this.schema,Ne,t.data.slice(ue.HEADER_LEN))}}async function De(t,i,o,n,a){const c=await de(n.toString()),u=await fe(c,_,G);let p=s.serialize(Ne.schema,new Ne({twitterRegistryKey:o.toBytes(),twitterHandle:i}));return[S(K,r.SystemProgram.programId,u,n,a,c,new b(await t.getMinimumBalanceForRentExemption(p.length+ue.HEADER_LEN)),new m(p.length),_,G,_),R(K,u,new m(0),e.Buffer.from(p),_)]}Ne.schema=new Map([[Ne,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const We=new r.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Ke{constructor(e){this.tag=e.tag,this.nameAccount=new r.PublicKey(e.nameAccount)}static deserialize(e){return s.deserialize(this.schema,Ke,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new x(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,i){return await r.PublicKey.findProgramAddress([e.Buffer.from("favourite_domain"),i.toBuffer()],t)}static getKeySync(t,i){return r.PublicKey.findProgramAddressSync([e.Buffer.from("favourite_domain"),i.toBuffer()],t)}}Ke.schema=new Map([[Ke,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.CustomBg=void 0,(exports.CustomBg||(exports.CustomBg={})).DegenPoet1="DegenPoet#1";const Ce=new r.PublicKey("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD");var Le,Ue;exports.GuardianSig=void 0,(Le=exports.GuardianSig||(exports.GuardianSig={}))[Le.None=0]="None",Le[Le.Solana=1]="Solana",Le[Le.Ethereum=2]="Ethereum",Le[Le.Injective=3]="Injective",exports.UserSig=void 0,(Ue=exports.UserSig||(exports.UserSig={}))[Ue.None=0]="None",Ue[Ue.Solana=1]="Solana";const Oe={signatureType:exports.UserSig.None,signature:Buffer.alloc(0)},ze={signatureType:exports.GuardianSig.None,signature:Buffer.alloc(0)},Me=new Map([[exports.Record.Backpack,new r.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3").toBuffer()]]),_e=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME,exports.Record.BTC]),Ge=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),Ve=e=>{switch(e){case exports.GuardianSig.None:return 0;case exports.GuardianSig.Solana:return 64;case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return 65;case exports.UserSig.None:return 0;case exports.UserSig.Solana:return 64;default:throw new x(exports.ErrorType.UnsupportedSignature,`Unsupported signature type: ${e}`)}},je=e=>{const r=Me.get(e);if(!r)throw new x(exports.ErrorType.RecordDoestNotSupportGuardianSig);return r},He=(e,r,t)=>h.sign.detached.verify(e,r,t),Fe=(e,r,t)=>{const i=f.hashMessage(e);return l.recoverAddress(i,r)===g.getAddress(t)},qe=(e,r,t,i)=>{switch(i){case exports.GuardianSig.Ethereum:case exports.GuardianSig.Injective:return Fe(e.toString(),r.toString(),t.toString());case exports.GuardianSig.Solana:return He(e,r,t);case exports.GuardianSig.None:throw new x(exports.ErrorType.RecordIsNotSigned);default:throw new x(exports.ErrorType.UnsupportedSignatureType)}},Xe=(e,r,t,i)=>{switch(i){case exports.UserSig.Solana:return He(e,r,t);case exports.UserSig.None:throw new x(exports.ErrorType.RecordIsNotSigned);default:throw new x(exports.ErrorType.UnsupportedSignatureType)}};class Ye{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return s.serialize(Ye.schema,this)}static deserialize(e){return s.deserialize(this.schema,Ye,e)}}Ye.LEN=8,Ye.schema=new Map([[Ye,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class Ze{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return Ye.LEN+this.buffer.length}static deserializeUnchecked(e){const r=s.deserializeUnchecked(Ye.schema,Ye,e);return new Ze({header:r,buffer:Buffer.from(e.slice(Ye.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return Je(this.getContent(),e)}getContent(){const e=Ve(this.header.guardianSignature)+Ve(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,r,t=Oe,i=ze){const s=Qe(e,r),o=Buffer.concat([t.signature,i.signature,s]),n=new Ye({userSignature:t.signatureType,guardianSignature:i.signatureType,contentLength:s.length});return new Ze({header:n,buffer:o})}checkGuardianSignature(e,r){const t=Ve(this.header.guardianSignature),i=Ve(this.header.userSignature),s=Buffer.from(this.buffer.slice(i,i+t));return qe(e,s,r,this.header.guardianSignature)}checkUserSignature(e,r){const t=Ve(this.header.userSignature),i=Buffer.from(this.buffer.slice(0,t));return Xe(e,i,r,this.header.userSignature)}static async retrieve(e,r,t,i){const s=$e(t,r),{registry:o}=await ue.retrieve(e,s);if(!o.data)throw new x(exports.ErrorType.InvalidRecordData);const n=this.deserializeUnchecked(o.data),a=n.getContent(),c=Buffer.concat([s.toBuffer(),a]);if(!(null==i?void 0:i.skipGuardianSig)){const e=Ge.has(r)?Buffer.from(n.getContent().slice(32)):je(r);n.checkGuardianSignature(c,e)}return(null==i?void 0:i.skipUserSig)||n.checkUserSignature(c,o.owner.toBuffer()),n}static async retrieveBatch(e,r,t){const i=r.map((e=>$e(t,e))),s=await ue.retrieveBatch(e,i),o=[];for(let e of s)try{if(!(null==e?void 0:e.data)){o.push(void 0);continue}const r=Ze.deserializeUnchecked(null==e?void 0:e.data);o.push(r)}catch{o.push(void 0)}return o}}const Je=(e,t)=>{if(_e.has(t)){const r=e.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?d.decode(r):r}if(t===exports.Record.SOL)return new r.PublicKey(e).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+e.toString("hex");if(t===exports.Record.Injective)return a.encode("inj",e,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return p.fromByteArray([...e]).toString();throw new x(exports.ErrorType.InvalidARecord)},Qe=(e,t)=>{if(_e.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(e=d.encode(e)),Buffer.from(e,"utf-8");if(t===exports.Record.SOL)return new r.PublicKey(e).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return oe("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(t===exports.Record.Injective){const r=a.decode(e);return oe("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),oe(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(r.data)}if(t===exports.Record.A){const r=p.parse(e).toByteArray();return oe(4===r.length,exports.ErrorType.InvalidARecord),Buffer.from(r)}if(t===exports.Record.AAAA){const r=p.parse(e).toByteArray();return oe(16===r.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(r)}throw new x(exports.ErrorType.InvalidARecord)},$e=(e,r)=>{const{pubkey:t}=ie(r+"."+e,exports.RecordVersion.V2);return t};exports.BONFIDA_FIDA_BNB=z,exports.BONFIDA_USDC_BNB=V,exports.CUSTOM_BG_TLD=Y,exports.FavouriteDomain=Ke,exports.Guardians=Me,exports.HASH_PREFIX=C,exports.METAPLEX_ID=J,exports.NAME_OFFERS_ID=We,exports.NAME_PROGRAM_ID=K,exports.NameRegistryState=ue,exports.NullGuardianSig=ze,exports.NullUserSig=Oe,exports.Numberu32=m,exports.Numberu64=b,exports.PYTH_FIDA_PRICE_ACC=O,exports.PYTH_MAPPING_ACC=q,exports.RECORD_V1_SIZE=we,exports.REFERRERS=H,exports.REGISTER_PROGRAM_ID=U,exports.REVERSE_LOOKUP_CLASS=M,exports.ROOT_DOMAIN_ACCOUNT=L,exports.RecordV2=Ze,exports.RecordV2Header=Ye,exports.ReverseTwitterRegistryState=Ne,exports.SELF_SIGNED=Ge,exports.SNSError=x,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=F,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=G,exports.TWITTER_VERIFICATION_AUTHORITY=_,exports.USDC_MINT=j,exports.UTF8_ENCODED=_e,exports.VAULT_OWNER=X,exports.WOLVES_COLLECTION_METADATA=Z,exports.burnDomain=(e,t,i)=>{const{pubkey:s}=ie(e),[o]=r.PublicKey.findProgramAddressSync([s.toBuffer()],U),[n]=r.PublicKey.findProgramAddressSync([s.toBuffer(),Uint8Array.from([1,1])],U);return(new T).getInstruction(U,K,r.SystemProgram.programId,s,se(e),n,o,M,t,i)},exports.burnInstruction=T,exports.changeTwitterRegistryData=async function(e,r,t,i){const s=await de(e),o=await fe(s,void 0,G);return[R(K,o,new m(t),i,r)]},exports.changeVerifiedPubkey=async function(e,r,t,i,s){const o=await de(r),n=await fe(o,void 0,G);let a=[v(K,n,i,t,void 0)];const c=await de(t.toString());return await fe(c,_,void 0),a.push(await Be(e,t.toString(),s,_,G)),a=a.concat(await De(e,r,n,i,s)),a},exports.check=oe,exports.checkSolRecord=xe,exports.createInstruction=S,exports.createInstructionV3=k,exports.createNameRegistry=Ee,exports.createRecordInstruction=Ie,exports.createRecordV2Instruction=Te,exports.createReverseInstruction=B,exports.createReverseName=ke,exports.createReverseTwitterRegistry=De,exports.createSolRecordInstruction=Pe,exports.createSubdomain=async(e,r,t,i=2e3)=>{const s=[],o=r.split(".")[0];if(!o)throw new x(exports.ErrorType.InvalidSubdomain);const{parent:n,pubkey:a}=ie(r),c=await e.getMinimumBalanceForRentExemption(i+ue.HEADER_LEN),u=await Ee(e,"\0".concat(o),i,t,t,c,void 0,n);s.push(u);const p=se(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await ke(a,"\0".concat(o),t,n,t);s.push(...e)}return[[],s]},exports.createV2Instruction=E,exports.createVerifiedTwitterRegistry=async function(e,t,i,s,o){const n=await de(t),a=await fe(n,void 0,G),c=await e.getMinimumBalanceForRentExemption(s+ue.HEADER_LEN);let u=[S(K,r.SystemProgram.programId,a,i,o,n,new b(c),new m(s),void 0,G,_)];return u=u.concat(await De(e,t,a,i,o)),u},exports.createWithNftInstruction=I,exports.deleteInstruction=A,exports.deleteNameRegistry=Be,exports.deleteRecordV2=async(e,r,t,i)=>{const{pubkey:s}=ie(`${r}.${e}`,exports.RecordVersion.V2);return A(K,s,i,t)},exports.deleteTwitterRegistry=async function(e,r){const t=await de(e),i=await fe(t,void 0,G),s=await de(r.toString()),o=await fe(s,_,G);return[A(K,i,r,r),A(K,o,r,r)]},exports.deserializeRecord=Re,exports.deserializeRecordV2Content=Je,exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:M.toBase58()}}],i=await e.getProgramAccounts(K,{filters:t}),s=await ee(e,r),o=i.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),n=o.map((e=>ie(e+"."+s).pubkey)),a=await e.getMultipleAccountsInfo(n);return o.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:L.toBase58()}}];return(await e.getProgramAccounts(K,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:L.toBase58()}}];return await e.getProgramAccounts(K,{dataSlice:{offset:32,length:32},filters:r})},exports.getArtistPubkey=e=>{if(e===exports.CustomBg.DegenPoet1)return Ce;throw new x(exports.ErrorType.InvalidCustomBg)},exports.getArweaveRecord=async(e,r)=>await be(e,r,exports.Record.ARWV,!0),exports.getBackgroundRecord=async(e,r)=>await be(e,r,exports.Record.Background,!0),exports.getBackpackRecord=async(e,r)=>await be(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await be(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await be(e,r,exports.Record.BTC,!0),exports.getCustomBgKeys=(e,r)=>{const t=Q(r),i=Q(e),s=$(i,void 0,Y);return{domainKey:s,bgKey:$(t,void 0,s)}},exports.getDiscordRecord=async(e,r)=>await be(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await be(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ge,exports.getDomainKeySync=ie,exports.getEmailRecord=async(e,r)=>await be(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await be(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(e,t)=>{const[i]=Ke.getKeySync(We,new r.PublicKey(t)),s=await Ke.retrieve(e,i),o=await ee(e,s.nameAccount);return{domain:s.nameAccount,reverse:o}},exports.getGithubRecord=async(e,r)=>await be(e,r,exports.Record.Github,!0),exports.getGuardianPublickey=je,exports.getHandleAndRegistryKey=async function(e,t){const i=await de(t.toString()),s=await fe(i,_,G);let o=await Ne.retrieve(e,s);return[o.twitterHandle,new r.PublicKey(o.twitterRegistryKey)]},exports.getHashedName=de,exports.getHashedNameSync=Q,exports.getInjectiveRecord=async(e,r)=>await be(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await be(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await be(e,r,exports.Record.LTC,!0),exports.getMessageToSign=(e,r,t)=>{const i=Qe(e,t),s=$e(r,t),o=Buffer.concat([s.toBuffer(),i]).toString("hex");return Buffer.from(o)},exports.getNameAccountKey=fe,exports.getNameAccountKeySync=$,exports.getNameOwner=pe,exports.getPicRecord=async(e,r)=>await be(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await be(e,r,exports.Record.POINT,!0),exports.getRecord=be,exports.getRecordKeySync=me,exports.getRecordV2Key=$e,exports.getRecords=async function(e,r,t,i){const s=t.map((e=>me(r,e))),o=await ue.retrieveBatch(e,s);return i?o.map(((e,i)=>{if(e)return Re(e,t[i],me(r,t[i]))})):o},exports.getRedditRecord=async(e,r)=>await be(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:i}=await ge(e),s=await de(t.toBase58());return await fe(s,M,r?i:void 0)},exports.getReverseKeySync=se,exports.getShdwRecord=async(e,r)=>await be(e,r,exports.Record.SHDW,!0),exports.getSignatureByteLength=Ve,exports.getSolRecord=Se,exports.getTelegramRecord=async(e,r)=>await be(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const i=await(async(e,r)=>{const i=[...ae(r.toBase58()),{dataSize:165}],s=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:i})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>ce(e,r)));return(await Promise.all(s)).filter((e=>void 0!==e))})(e,r);return(await re(e,i.map((e=>e.nameAccount)))).map(((e,r)=>({key:i[r].nameAccount,mint:i[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(e,t){const i=[{memcmp:{offset:0,bytes:G.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:_.toBase58()}}],o=await e.getProgramAccounts(K,{filters:i});for(const e of o)if(e.account.data.length>ue.HEADER_LEN+32){let t=e.account.data.slice(ue.HEADER_LEN),i=s.deserializeUnchecked(Ne.schema,Ne,t);return[i.twitterHandle,new r.PublicKey(i.twitterRegistryKey)]}throw new x(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await be(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await de(r),i=await fe(t,void 0,G),{registry:s}=await ue.retrieve(e,i);return s},exports.getTwitterRegistryData=async function(t,i){const s=[{memcmp:{offset:0,bytes:G.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:new r.PublicKey(e.Buffer.alloc(32,0)).toBase58()}}],o=await t.getProgramAccounts(K,{filters:s});if(o.length>1)throw new x(exports.ErrorType.MultipleRegistries);return o[0].account.data.slice(ue.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await de(e);return await fe(r,void 0,G)},exports.getUrlRecord=async(e,r)=>await be(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await de(r.toBase58()),s=await fe(t,M),{registry:o}=await ue.retrieve(e,s);if(!o.data)throw new x(exports.ErrorType.NoAccountData);const n=new i(o.data.slice(0,4),"le").toNumber();return o.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await de(e.toBase58()),i=await fe(r,M);t.push(i)}return(await ue.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.reallocInstruction=function(t,i,s,o,n,a){const c=[e.Buffer.from(Int8Array.from([4])),a.toBuffer()],u=e.Buffer.concat(c),p=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:p,programId:t,data:u})},exports.registerDomainName=async(e,i,s,o,a,c=j,u)=>{if(i.includes(".")||i.trim().toLowerCase()!==i)throw new x(exports.ErrorType.InvalidDomain);const[p]=r.PublicKey.findProgramAddressSync([U.toBuffer()],U),d=Q(i),f=$(d,void 0,L),l=Q(f.toBase58()),g=$(l,p),[y]=r.PublicKey.findProgramAddressSync([f.toBuffer()],U),w=H.findIndex((e=>null==u?void 0:u.equals(e)));let h;const m=[];if(-1!==w&&u){h=t.getAssociatedTokenAddressSync(c,u,!0);const r=await e.getAccountInfo(h);if(!(null==r?void 0:r.data)){const e=t.createAssociatedTokenAccountInstruction(o,h,u,c);m.push(e)}}const b=new n.PythHttpClient(e,n.getPythProgramKeyForCluster("mainnet-beta")),S=await b.getData(),R=F.get(c.toBase58());if(!R)throw new x(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const v=S.productPrice.get("Crypto."+R+"/USD"),A=S.productFromSymbol.get("Crypto."+R+"/USD"),E=t.getAssociatedTokenAddressSync(c,X),B=new k({name:i,space:s,referrerIdxOpt:-1!=w?w:null}).getInstruction(U,K,L,f,g,r.SystemProgram.programId,p,o,a,q,v.productAccountKey,new r.PublicKey(A.price_account),E,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,y,h);return m.push(B),[[],m]},exports.registerWithNft=(e,i,s,o,n,a,c,u,p)=>{const[d]=r.PublicKey.findProgramAddressSync([s.toBuffer()],U);return new I({space:i,name:e}).getInstruction(U,K,L,s,o,r.SystemProgram.programId,M,n,a,c,u,p,Z,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,d,J)},exports.resolve=async(t,i)=>{const{pubkey:s}=ie(i),{registry:o,nftOwner:n}=await ue.retrieve(t,s);if(n)return n;try{const s=me(i,exports.Record.SOL),n=await Se(t,i);if(!(null==n?void 0:n.data))throw new x(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=e.Buffer.concat([n.data.slice(0,32),s.toBuffer()]),u=a.encode(c.toString("hex"));if(!xe(u,n.data.slice(32),o.owner))throw new x(exports.ErrorType.InvalidSignature);return new r.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return o.owner},exports.retrieveNftOwner=ne,exports.retrieveNfts=async e=>{const t=await e.getProgramAccounts(P,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((e=>new r.PublicKey(e.account.data.slice(66,98))))},exports.reverseLookup=ee,exports.reverseLookupBatch=re,exports.serializeRecord=ve,exports.serializeRecordV2Content=Qe,exports.serializeSolRecord=Ae,exports.transferInstruction=v,exports.transferNameOwnership=async function(e,r,t,i,s,o){const n=await de(r),a=await fe(n,i,s);let c;return c=i||(await ue.retrieve(e,a)).registry.owner,v(K,a,t,c,i,s,o)},exports.transferSubdomain=async(e,r,t,i)=>{const{pubkey:s,isSub:o,parent:n}=ie(r);if(!n||!o)throw new x(exports.ErrorType.InvalidSubdomain);const{registry:a}=await ue.retrieve(e,s);let c,u;i&&(c=n,u=(await ue.retrieve(e,n)).registry.owner);return v(K,s,t,a.owner,void 0,c,u)},exports.updateInstruction=R,exports.updateNameRegistryData=async function(e,r,t,i,s,o){const n=await de(r),a=await fe(n,s,o);let c;return c=s||(await ue.retrieve(e,a)).registry.owner,R(K,a,new m(t),i,c)},exports.updateRecordInstruction=async(e,r,t,i,s,o)=>{oe(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:n}=ie(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);oe(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=ve(i,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[A(K,n,o,s),await Ie(e,r,t,i,s,o)];return[R(K,n,new m(0),c,s)]},exports.updateRecordV2Instruction=async(r,t,i,s,o,n)=>{const{pubkey:a}=ie(`${i}.${t}`,exports.RecordVersion.V2),c=await r.getAccountInfo(a),u=s.serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[A(K,a,n,o),await Te(r,t,i,s,o,n),R(K,a,new m(0),e.Buffer.from(u),o)];return[R(K,a,new m(0),e.Buffer.from(u),o)]},exports.updateSolRecordInstruction=async(e,r,t,i,s,o)=>{const{pubkey:n}=ie(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);if(oe(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[A(K,n,o,i),await Pe(e,r,t,i,s,o)];const c=Ae(t,n,i,s);return[R(K,n,new m(0),c,i)]},exports.verifyEthereumSignature=Fe,exports.verifyGuardianSignature=qe,exports.verifyInjectiveSignature=(e,r,t)=>{throw new Error("TODO")},exports.verifySolanaSignature=He,exports.verifyUserSignature=Xe;
|
|
1
|
+
"use strict";var e=require("buffer"),r=require("@solana/web3.js"),t=require("@solana/spl-token"),o=require("bn.js"),i=require("borsh"),s=require("@ethersproject/sha2"),n=require("@bonfida/sns-records"),a=require("@pythnetwork/client"),c=require("bech32-buffer"),u=require("tweetnacl"),p=require("bs58"),d=require("ipaddr.js"),l=require("punycode");function f(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var y,g=f(u);exports.ErrorType=void 0,(y=exports.ErrorType||(exports.ErrorType={})).SymbolNotFound="SymbolNotFound",y.InvalidSubdomain="InvalidSubdomain",y.FavouriteDomainNotFound="FavouriteDomainNotFound",y.MissingParentOwner="MissingParentOwner",y.U32Overflow="U32Overflow",y.InvalidBufferLength="InvalidBufferLength",y.U64Overflow="U64Overflow",y.NoRecordData="NoRecordData",y.InvalidRecordData="InvalidRecordData",y.UnsupportedRecord="UnsupportedRecord",y.InvalidEvmAddress="InvalidEvmAddress",y.InvalidInjectiveAddress="InvalidInjectiveAddress",y.InvalidARecord="InvalidARecord",y.InvalidAAAARecord="InvalidAAAARecord",y.InvalidRecordInput="InvalidRecordInput",y.InvalidSignature="InvalidSignature",y.AccountDoesNotExist="AccountDoesNotExist",y.MultipleRegistries="MultipleRegistries",y.InvalidReverseTwitter="InvalidReverseTwitter",y.NoAccountData="NoAccountData",y.InvalidInput="InvalidInput",y.InvalidDomain="InvalidDomain",y.InvalidCustomBg="InvalidCustomBackground",y.UnsupportedSignature="UnsupportedSignature",y.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",y.RecordIsNotSigned="RecordIsNotSigned",y.UnsupportedSignatureType="UnsupportedSignatureType";class w extends Error{constructor(e,r){super(r),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,w)}}class x extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(4===t.length)return t;if(t.length>4)throw new w(exports.ErrorType.U32Overflow);const o=e.Buffer.alloc(4);return t.copy(o),o}static fromBuffer(e){if(4!==e.length)throw new w(exports.ErrorType.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class b extends o{toBuffer(){const r=super.toArray().reverse(),t=e.Buffer.from(r);if(8===t.length)return t;if(t.length>8)throw new w(exports.ErrorType.U64Overflow);const o=e.Buffer.alloc(8);return t.copy(o),o}static fromBuffer(e){if(8!==e.length)throw new w(exports.ErrorType.U64Overflow,`Invalid buffer length: ${e.length}`);return new o([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function m(t,o,i,s,n,a,c,u,p,d,l){const f=[e.Buffer.from(Int8Array.from([0])),new x(a.length).toBuffer(),a,c.toBuffer(),u.toBuffer()],y=e.Buffer.concat(f),g=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return p?g.push({pubkey:p,isSigner:!0,isWritable:!1}):g.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d?g.push({pubkey:d,isSigner:!1,isWritable:!1}):g.push({pubkey:new r.PublicKey(e.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l&&g.push({pubkey:l,isSigner:!0,isWritable:!1}),new r.TransactionInstruction({keys:g,programId:t,data:y})}function R(t,o,i,s,n){const a=[e.Buffer.from(Int8Array.from([1])),i.toBuffer(),new x(s.length).toBuffer(),s],c=e.Buffer.concat(a),u=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:u,programId:t,data:c})}function S(t,o,i,s,n,a,c){const u=[e.Buffer.from(Int8Array.from([2])),i.toBuffer()],p=e.Buffer.concat(u),d=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c||s,isSigner:!0,isWritable:!1}];return n&&d.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&a&&(n||d.push({pubkey:r.PublicKey.default,isSigner:!1,isWritable:!1}),d.push({pubkey:a,isSigner:!1,isWritable:!1})),new r.TransactionInstruction({keys:d,programId:t,data:p})}function h(t,o,i,s){const n=[e.Buffer.from(Int8Array.from([3]))],a=e.Buffer.concat(n),c=[{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:c,programId:t,data:a})}class A{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return i.serialize(A.schema,this)}getInstruction(o,i,s,n,a,c,u,p,d,l,f){const y=e.Buffer.from(this.serialize()),g=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:t.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:g,programId:o,data:y})}}A.schema=new Map([[A,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class v{constructor(e){this.tag=12,this.name=e.name}serialize(){return i.serialize(v.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=e.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!1}),f.push({pubkey:a,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!0,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),p&&f.push({pubkey:p,isSigner:!1,isWritable:!0}),d&&f.push({pubkey:d,isSigner:!0,isWritable:!0}),new r.TransactionInstruction({keys:f,programId:t,data:l})}}v.schema=new Map([[v,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class E{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return i.serialize(E.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const m=e.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!1}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:n,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!1}),R.push({pubkey:l,isSigner:!1,isWritable:!1}),R.push({pubkey:f,isSigner:!1,isWritable:!1}),R.push({pubkey:y,isSigner:!1,isWritable:!0}),R.push({pubkey:g,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),b&&R.push({pubkey:b,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:R,programId:t,data:m})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class I{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return i.serialize(I.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d,l,f,y,g,w,x,b){const m=e.Buffer.from(this.serialize());let R=[];return R.push({pubkey:o,isSigner:!1,isWritable:!1}),R.push({pubkey:i,isSigner:!1,isWritable:!1}),R.push({pubkey:s,isSigner:!1,isWritable:!0}),R.push({pubkey:n,isSigner:!1,isWritable:!0}),R.push({pubkey:a,isSigner:!1,isWritable:!1}),R.push({pubkey:c,isSigner:!1,isWritable:!1}),R.push({pubkey:u,isSigner:!0,isWritable:!0}),R.push({pubkey:p,isSigner:!1,isWritable:!0}),R.push({pubkey:d,isSigner:!1,isWritable:!0}),R.push({pubkey:l,isSigner:!1,isWritable:!0}),R.push({pubkey:f,isSigner:!1,isWritable:!0}),R.push({pubkey:y,isSigner:!1,isWritable:!0}),R.push({pubkey:g,isSigner:!1,isWritable:!1}),R.push({pubkey:w,isSigner:!1,isWritable:!1}),R.push({pubkey:x,isSigner:!1,isWritable:!1}),R.push({pubkey:b,isSigner:!1,isWritable:!1}),new r.TransactionInstruction({keys:R,programId:t,data:m})}}I.schema=new Map([[I,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(){this.tag=16}serialize(){return i.serialize(B.schema,this)}getInstruction(t,o,i,s,n,a,c,u,p,d){const l=e.Buffer.from(this.serialize());let f=[];return f.push({pubkey:o,isSigner:!1,isWritable:!1}),f.push({pubkey:i,isSigner:!1,isWritable:!1}),f.push({pubkey:s,isSigner:!1,isWritable:!0}),f.push({pubkey:n,isSigner:!1,isWritable:!0}),f.push({pubkey:a,isSigner:!1,isWritable:!0}),f.push({pubkey:c,isSigner:!1,isWritable:!0}),f.push({pubkey:u,isSigner:!1,isWritable:!1}),f.push({pubkey:p,isSigner:!0,isWritable:!1}),f.push({pubkey:d,isSigner:!1,isWritable:!0}),new r.TransactionInstruction({keys:f,programId:t,data:l})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"]]}]]);const k=new r.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),T=e.Buffer.from("tokenized_name");var P;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(P||(P={}));class D{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new r.PublicKey(e.nameAccount),this.owner=new r.PublicKey(e.owner),this.nftMint=new r.PublicKey(e.nftMint)}static deserialize(e){return i.deserialize(this.schema,D,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new Error("NFT record not found");return this.deserialize(t.data)}static async findKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("nft_record"),t.toBuffer()],o)}}D.schema=new Map([[D,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const N=new r.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),W="SPL Name Service",K=new r.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),C=new r.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),_=new r.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),O=new r.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),V=new r.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),L=new r.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),M=new r.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),z=new r.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),U=new r.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),H=[new r.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new r.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new r.PublicKey("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new r.PublicKey("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new r.PublicKey("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new r.PublicKey("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new r.PublicKey("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],F=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),j=new r.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),G=new r.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),q=new r.PublicKey("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),X=new r.PublicKey("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),Y=new r.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var Z;exports.Record=void 0,(Z=exports.Record||(exports.Record={})).IPFS="IPFS",Z.ARWV="ARWV",Z.SOL="SOL",Z.ETH="ETH",Z.BTC="BTC",Z.LTC="LTC",Z.DOGE="DOGE",Z.Email="email",Z.Url="url",Z.Discord="discord",Z.Github="github",Z.Reddit="reddit",Z.Twitter="twitter",Z.Telegram="telegram",Z.Pic="pic",Z.SHDW="SHDW",Z.POINT="POINT",Z.BSC="BSC",Z.Injective="INJ",Z.Backpack="backpack",Z.A="A",Z.AAAA="AAAA",Z.CNAME="CNAME",Z.TXT="TXT",Z.Background="background";const J=new Map([[exports.Record.SOL,96],[exports.Record.ETH,20],[exports.Record.BSC,20],[exports.Record.Injective,20],[exports.Record.A,4],[exports.Record.AAAA,16],[exports.Record.Background,32]]);var Q;exports.RecordVersion=void 0,(Q=exports.RecordVersion||(exports.RecordVersion={}))[Q.V1=1]="V1",Q[Q.V2=2]="V2";const $=r=>{const t=W+r,o=s.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")},ee=(t,o,i)=>{const s=[t];o?s.push(o.toBuffer()):s.push(e.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(e.Buffer.alloc(32));const[n]=r.PublicKey.findProgramAddressSync(s,N);return n};async function re(e,r){const t=$(r.toBase58()),i=ee(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()}async function te(e,r){let t=[];for(let e of r){const r=$(e.toBase58()),o=ee(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))}const oe=(e,r=K,t)=>{let o=$(e);return{pubkey:ee(o,t,r),hashed:o}},ie=(r,t)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t||0]).toString().concat(o[0]),{pubkey:i}=oe(o[1]);return{...oe(r,i,t===exports.RecordVersion.V2?n.CENTRAL_STATE_SNS_RECORDS:void 0),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:r}=oe(o[2]),{pubkey:t}=oe("\0".concat(o[1]),r),i=e.Buffer.from([1]).toString();return{...oe(i.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...oe(r,K),isSub:!1,parent:void 0}};const se=(e,r)=>{const{pubkey:t,parent:o}=ie(e),i=$(t.toBase58());return ee(i,V,r?o:void 0)},ne=(e,r)=>{if(!e)throw new w(r)},ae=async(e,o)=>{try{const[i]=await r.PublicKey.findProgramAddress([T,o.toBuffer()],k);if("0"===(await t.getMint(e,i)).supply.toString())return;const s=[{memcmp:{offset:0,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:s});if(1!=n.length)return;return new r.PublicKey(n[0].account.data.slice(32,64))}catch{return}},ce=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],ue=async(e,r)=>{const t=await(async(e,r)=>{const t=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:r.toBase58()}}];return await e.getProgramAccounts(k,{filters:t})})(e,r.mint);if(1===t.length)return D.deserialize(t[0].account.data)};class pe{constructor(e){this.parentName=new r.PublicKey(e.parentName),this.owner=new r.PublicKey(e.owner),this.class=new r.PublicKey(e.class)}static async retrieve(e,r){var t;const o=await e.getAccountInfo(r);if(!o)throw new w(exports.ErrorType.AccountDoesNotExist);let s=i.deserializeUnchecked(this.schema,pe,o.data);s.data=null===(t=o.data)||void 0===t?void 0:t.slice(this.HEADER_LEN);return{registry:s,nftOwner:await ae(e,r)}}static async _retrieveBatch(e,r){const t=await e.getMultipleAccountsInfo(r),o=e=>{if(!e)return;const r=i.deserializeUnchecked(this.schema,pe,e);return r.data=null==e?void 0:e.slice(this.HEADER_LEN),r};return t.map((e=>o(null==e?void 0:e.data)))}static async retrieveBatch(e,r){let t=[];const o=[...r];for(;o.length>0;)t.push(...await this._retrieveBatch(e,o.splice(0,100)));return t}}async function de(e,r){if(!await e.getAccountInfo(r))throw new w(exports.ErrorType.AccountDoesNotExist);return pe.retrieve(e,r)}async function le(r){const t=W+r,o=s.sha256(e.Buffer.from(t,"utf8")).slice(2);return e.Buffer.from(o,"hex")}async function fe(t,o,i){const s=[t];o?s.push(o.toBuffer()):s.push(e.Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(e.Buffer.alloc(32));const[n]=await r.PublicKey.findProgramAddress(s,N);return n}pe.HEADER_LEN=96,pe.schema=new Map([[pe,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const ye=async(e,r=K)=>{let t=await le(e);return{pubkey:await fe(t,void 0,r),hashed:t}},ge=async(r,t=!1)=>{r.endsWith(".sol")&&(r=r.slice(0,-4));const o=r.split(".");if(2===o.length){const r=e.Buffer.from([t?1:0]).toString().concat(o[0]),{pubkey:i}=await ye(o[1]);return{...await ye(r,i),isSub:!0,parent:i}}if(3===o.length&&t){const{pubkey:r}=await ye(o[2]),{pubkey:t}=await ye("\0".concat(o[1]),r),i=e.Buffer.from([1]).toString();return{...await ye(i.concat(o[0]),t),isSub:!0,parent:r,isSubRecord:!0}}if(o.length>=3)throw new w(exports.ErrorType.InvalidInput);return{...await ye(r,K),isSub:!1,parent:void 0}},we=(e,r,t)=>g.sign.detached.verify(e,r,t.toBytes()),xe=async(t,o)=>{const{pubkey:i}=ie(o),{registry:s,nftOwner:n}=await pe.retrieve(t,i);if(n)return n;try{const i=be(o,exports.Record.SOL),n=await Re(t,o);if(!(null==n?void 0:n.data))throw new w(exports.ErrorType.NoRecordData);const a=new TextEncoder,c=e.Buffer.concat([n.data.slice(0,32),i.toBuffer()]),u=a.encode(c.toString("hex"));if(!we(u,n.data.slice(32),s.owner))throw new w(exports.ErrorType.InvalidSignature);return new r.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return s.owner},be=(e,r)=>{const{pubkey:t}=ie(r+"."+e,exports.RecordVersion.V1);return t};async function me(e,r,t,o){const i=be(r,t);let{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoRecordData);if(o)return Se(s,t,i);const n=J.get(t);return s.data=s.data.slice(0,n),s}const Re=async(e,r)=>await me(e,r,exports.Record.SOL),Se=(t,o,i)=>{const s=null==t?void 0:t.data;if(!s)return;if(0===s.compare(e.Buffer.alloc(s.length)))return;const n=J.get(o),a=(e=>{const r=Array.from(e);return r.length-1-r.reverse().findIndex((e=>0!==e))+1})(s);if(!n)return s.slice(0,a).toString("utf-8");if(o===exports.Record.SOL){const r=new TextEncoder,o=e.Buffer.concat([s.slice(0,32),i.toBuffer()]),n=r.encode(o.toString("hex"));if(we(n,s.slice(32,96),t.owner))return p.encode(s.slice(0,32))}if(n&&a!==n){const r=s.slice(0,a).toString("utf-8");if(o===exports.Record.Injective){const e=c.decode(r);if("inj"===e.prefix&&20===e.data.length)return r}else if(o===exports.Record.BSC||o===exports.Record.ETH){const t=r.slice(0,2),o=r.slice(2);if("0x"===t&&20===e.Buffer.from(o,"hex").length)return r}else if((o===exports.Record.A||o===exports.Record.AAAA)&&d.isValid(r))return r;throw new w(exports.ErrorType.InvalidRecordData)}if(o===exports.Record.ETH||o===exports.Record.BSC)return"0x"+s.slice(0,n).toString("hex");if(o===exports.Record.Injective)return c.encode("inj",s.slice(0,n),"bech32");if(o===exports.Record.A||o===exports.Record.AAAA)return d.fromByteArray([...s.slice(0,n)]).toString();if(o===exports.Record.Background)return new r.PublicKey(s.slice(0,n)).toString();throw new w(exports.ErrorType.InvalidRecordData)},he=(t,o)=>{if(!J.get(o))return o!==exports.Record.CNAME&&o!==exports.Record.TXT||(t=l.encode(t)),e.Buffer.from(t,"utf-8");if(o===exports.Record.SOL)throw new w(exports.ErrorType.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(o===exports.Record.ETH||o===exports.Record.BSC)return ne("0x"===t.slice(0,2),exports.ErrorType.InvalidEvmAddress),e.Buffer.from(t.slice(2),"hex");if(o===exports.Record.Injective){const r=c.decode(t);return ne("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),e.Buffer.from(r.data)}if(o===exports.Record.A){const r=d.parse(t).toByteArray();return ne(4===r.length,exports.ErrorType.InvalidARecord),e.Buffer.from(r)}if(o===exports.Record.AAAA){const r=d.parse(t).toByteArray();return ne(16===r.length,exports.ErrorType.InvalidAAAARecord),e.Buffer.from(r)}if(o===exports.Record.Background)return new r.PublicKey(t).toBuffer();throw new w(exports.ErrorType.InvalidRecordInput)},Ae=(r,t,o,i)=>{const s=e.Buffer.concat([r.toBuffer(),t.toBuffer()]),n=(new TextEncoder).encode(s.toString("hex")),a=we(n,i,o);return ne(a,exports.ErrorType.InvalidSignature),e.Buffer.concat([r.toBuffer(),i])},ve=new Map([[exports.Record.Backpack,new r.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[exports.Record.Url,new r.PublicKey("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),Ee=new Set([exports.Record.IPFS,exports.Record.ARWV,exports.Record.LTC,exports.Record.DOGE,exports.Record.Email,exports.Record.Url,exports.Record.Discord,exports.Record.Github,exports.Record.Reddit,exports.Record.Twitter,exports.Record.Telegram,exports.Record.Pic,exports.Record.SHDW,exports.Record.POINT,exports.Record.Backpack,exports.Record.TXT,exports.Record.CNAME,exports.Record.BTC]),Ie=new Set([exports.Record.ETH,exports.Record.Injective,exports.Record.SOL]),Be=(e,t)=>{if(Ee.has(t))return t!==exports.Record.CNAME&&t!==exports.Record.TXT||(e=l.encode(e)),Buffer.from(e,"utf-8");if(t===exports.Record.SOL)return new r.PublicKey(e).toBuffer();if(t===exports.Record.ETH||t===exports.Record.BSC)return ne("0x"===e.slice(0,2),exports.ErrorType.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(t===exports.Record.Injective){const r=c.decode(e);return ne("inj"===r.prefix,exports.ErrorType.InvalidInjectiveAddress),ne(20===r.data.length,exports.ErrorType.InvalidInjectiveAddress),Buffer.from(r.data)}if(t===exports.Record.A){const r=d.parse(e).toByteArray();return ne(4===r.length,exports.ErrorType.InvalidARecord),Buffer.from(r)}if(t===exports.Record.AAAA){const r=d.parse(e).toByteArray();return ne(16===r.length,exports.ErrorType.InvalidAAAARecord),Buffer.from(r)}throw new w(exports.ErrorType.InvalidARecord)},ke=(e,r)=>{const{pubkey:t}=ie(e),o=$("".concat(r));return ee(o,n.CENTRAL_STATE_SNS_RECORDS,t)};async function Te(e,t,o,i,s,n,a,c){const u=await le(t),p=await fe(u,a,c),d=n||await e.getMinimumBalanceForRentExemption(o);let l;if(c){const{registry:r}=await de(e,c);l=r.owner}return m(N,r.SystemProgram.programId,p,s,i,u,new b(d),new x(o),a,c,l)}async function Pe(e,r,t,o,i){const s=await le(r),n=await fe(s,o,i);let a;a=o||(await pe.retrieve(e,n)).registry.owner;return h(N,n,t,a)}const De=async(e,t,o,i,s)=>{let[n]=await r.PublicKey.findProgramAddress([C.toBuffer()],C),a=await le(e.toBase58()),c=await fe(a,n,i);return[[],[new v({name:t}).getInstruction(C,N,K,c,r.SystemProgram.programId,n,o,r.SYSVAR_RENT_PUBKEY,i,s)]]},Ne=async(e,t,o,i,s,n)=>{ne(o!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:a,hashed:c,parent:u}=ie(`${o}.${t}`,exports.RecordVersion.V1),p=he(i,o).length,d=await e.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return m(N,r.SystemProgram.programId,a,s,n,c,new b(d),new x(p),void 0,u,s)},We=async(e,t,o,i,s,n)=>{const{pubkey:a,hashed:c,parent:u}=ie(`${exports.Record.SOL}.${t}`,exports.RecordVersion.V1),p=Ae(o,a,i,s).length,d=await e.getMinimumBalanceForRentExemption(p+pe.HEADER_LEN);return[m(N,r.SystemProgram.programId,a,i,n,c,new b(d),new x(p),void 0,u,i)]};class Ke{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,r){let t=await e.getAccountInfo(r,"processed");if(!t)throw new w(exports.ErrorType.InvalidReverseTwitter);return i.deserializeUnchecked(this.schema,Ke,t.data.slice(pe.HEADER_LEN))}}async function Ce(t,o,s,n,a){const c=await le(n.toString()),u=await fe(c,L,M);let p=i.serialize(Ke.schema,new Ke({twitterRegistryKey:s.toBytes(),twitterHandle:o}));return[m(N,r.SystemProgram.programId,u,n,a,c,new b(await t.getMinimumBalanceForRentExemption(p.length+pe.HEADER_LEN)),new x(p.length),L,M,L),R(N,u,new x(0),e.Buffer.from(p),L)]}Ke.schema=new Map([[Ke,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const _e=new r.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Oe{constructor(e){this.tag=e.tag,this.nameAccount=new r.PublicKey(e.nameAccount)}static deserialize(e){return i.deserialize(this.schema,Oe,e)}static async retrieve(e,r){const t=await e.getAccountInfo(r);if(!t||!t.data)throw new w(exports.ErrorType.FavouriteDomainNotFound);return this.deserialize(t.data)}static async getKey(t,o){return await r.PublicKey.findProgramAddress([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}static getKeySync(t,o){return r.PublicKey.findProgramAddressSync([e.Buffer.from("favourite_domain"),o.toBuffer()],t)}}Oe.schema=new Map([[Oe,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);exports.CustomBg=void 0,(exports.CustomBg||(exports.CustomBg={})).DegenPoet1="DegenPoet#1";const Ve=new r.PublicKey("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD");exports.BONFIDA_FIDA_BNB=O,exports.BONFIDA_USDC_BNB=z,exports.CUSTOM_BG_TLD=q,exports.FavouriteDomain=Oe,exports.GUARDIANS=ve,exports.HASH_PREFIX=W,exports.METAPLEX_ID=Y,exports.NAME_OFFERS_ID=_e,exports.NAME_PROGRAM_ID=N,exports.NameRegistryState=pe,exports.Numberu32=x,exports.Numberu64=b,exports.PYTH_FIDA_PRICE_ACC=_,exports.PYTH_MAPPING_ACC=j,exports.RECORD_V1_SIZE=J,exports.REFERRERS=H,exports.REGISTER_PROGRAM_ID=C,exports.REVERSE_LOOKUP_CLASS=V,exports.ROOT_DOMAIN_ACCOUNT=K,exports.ReverseTwitterRegistryState=Ke,exports.SELF_SIGNED=Ie,exports.SNSError=w,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=F,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=M,exports.TWITTER_VERIFICATION_AUTHORITY=L,exports.USDC_MINT=U,exports.UTF8_ENCODED=Ee,exports.VAULT_OWNER=G,exports.WOLVES_COLLECTION_METADATA=X,exports.burnDomain=(e,t,o)=>{const{pubkey:i}=ie(e),[s]=r.PublicKey.findProgramAddressSync([i.toBuffer()],C),[n]=r.PublicKey.findProgramAddressSync([i.toBuffer(),Uint8Array.from([1,1])],C);return(new B).getInstruction(C,N,r.SystemProgram.programId,i,se(e),n,s,V,t,o)},exports.burnInstruction=B,exports.changeTwitterRegistryData=async function(e,r,t,o){const i=await le(e),s=await fe(i,void 0,M);return[R(N,s,new x(t),o,r)]},exports.changeVerifiedPubkey=async function(e,r,t,o,i){const s=await le(r),n=await fe(s,void 0,M);let a=[S(N,n,o,t,void 0)];const c=await le(t.toString());return await fe(c,L,void 0),a.push(await Pe(e,t.toString(),i,L,M)),a=a.concat(await Ce(e,r,n,o,i)),a},exports.check=ne,exports.checkSolRecord=we,exports.createInstruction=m,exports.createInstructionV3=E,exports.createNameRegistry=Te,exports.createRecordInstruction=Ne,exports.createRecordV2Instruction=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.allocateAndPostRecord(i,s,a,o,N,"".concat(r),Be(t,r),n.SNS_RECORDS_ID)},exports.createReverseInstruction=v,exports.createReverseName=De,exports.createReverseTwitterRegistry=Ce,exports.createSolRecordInstruction=We,exports.createSubdomain=async(e,r,t,o=2e3)=>{const i=[],s=r.split(".")[0];if(!s)throw new w(exports.ErrorType.InvalidSubdomain);const{parent:n,pubkey:a}=ie(r),c=await e.getMinimumBalanceForRentExemption(o+pe.HEADER_LEN),u=await Te(e,"\0".concat(s),o,t,t,c,void 0,n);i.push(u);const p=se(r,!0),d=await e.getAccountInfo(p);if(!(null==d?void 0:d.data)){const[,e]=await De(a,"\0".concat(s),t,n,t);i.push(...e)}return[[],i]},exports.createV2Instruction=A,exports.createVerifiedTwitterRegistry=async function(e,t,o,i,s){const n=await le(t),a=await fe(n,void 0,M),c=await e.getMinimumBalanceForRentExemption(i+pe.HEADER_LEN);let u=[m(N,r.SystemProgram.programId,a,o,s,n,new b(c),new x(i),void 0,M,L)];return u=u.concat(await Ce(e,t,a,o,s)),u},exports.createWithNftInstruction=I,exports.deleteInstruction=h,exports.deleteNameRegistry=Pe,exports.deleteRecordV2=(e,r,t,o)=>{const{pubkey:i,parent:s}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!s)throw new Error("Invalid parent");return n.deleteRecord(o,s,t,i,N,n.SNS_RECORDS_ID)},exports.deleteTwitterRegistry=async function(e,r){const t=await le(e),o=await fe(t,void 0,M),i=await le(r.toString()),s=await fe(i,L,M);return[h(N,o,r,r),h(N,s,r,r)]},exports.deserializeRecord=Se,exports.deserializeRecordV2Content=(e,t)=>{if(Ee.has(t)){const r=e.toString("utf-8");return t===exports.Record.CNAME||t===exports.Record.TXT?l.decode(r):r}if(t===exports.Record.SOL)return new r.PublicKey(e).toBase58();if(t===exports.Record.ETH||t===exports.Record.BSC)return"0x"+e.toString("hex");if(t===exports.Record.Injective)return c.encode("inj",e,"bech32");if(t===exports.Record.A||t===exports.Record.AAAA)return d.fromByteArray([...e]).toString();throw new w(exports.ErrorType.InvalidARecord)},exports.ethValidateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateEthSignature(o,a,c,t,N,n.Validation.Ethereum,i,s,n.SNS_RECORDS_ID)},exports.findSubdomains=async(e,r)=>{const t=[{memcmp:{offset:0,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:V.toBase58()}}],o=await e.getProgramAccounts(N,{filters:t}),i=await re(e,r),s=o.map((e=>{var r;return null===(r=e.account.data.slice(97).toString("utf-8"))||void 0===r?void 0:r.split("\0").join("")})),n=s.map((e=>ie(e+"."+i).pubkey)),a=await e.getMultipleAccountsInfo(n);return s.filter(((e,r)=>!!a[r]))},exports.getAllDomains=async function(e,r){const t=[{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:0,bytes:K.toBase58()}}];return(await e.getProgramAccounts(N,{filters:t})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const r=[{memcmp:{offset:0,bytes:K.toBase58()}}];return await e.getProgramAccounts(N,{dataSlice:{offset:32,length:32},filters:r})},exports.getArtistPubkey=e=>{if(e===exports.CustomBg.DegenPoet1)return Ve;throw new w(exports.ErrorType.InvalidCustomBg)},exports.getArweaveRecord=async(e,r)=>await me(e,r,exports.Record.ARWV,!0),exports.getBackgroundRecord=async(e,r)=>await me(e,r,exports.Record.Background,!0),exports.getBackpackRecord=async(e,r)=>await me(e,r,exports.Record.Backpack,!0),exports.getBscRecord=async(e,r)=>await me(e,r,exports.Record.BSC,!0),exports.getBtcRecord=async(e,r)=>await me(e,r,exports.Record.BTC,!0),exports.getCustomBgKeys=(e,r)=>{const t=$(r),o=$(e),i=ee(o,void 0,q);return{domainKey:i,bgKey:ee(t,void 0,i)}},exports.getDiscordRecord=async(e,r)=>await me(e,r,exports.Record.Discord,!0),exports.getDogeRecord=async(e,r)=>await me(e,r,exports.Record.DOGE,!0),exports.getDomainKey=ge,exports.getDomainKeySync=ie,exports.getEmailRecord=async(e,r)=>await me(e,r,exports.Record.Email,!0),exports.getEthRecord=async(e,r)=>await me(e,r,exports.Record.ETH,!0),exports.getFavoriteDomain=async(e,t)=>{const[o]=Oe.getKeySync(_e,new r.PublicKey(t)),i=await Oe.retrieve(e,o),s=await re(e,i.nameAccount);return{domain:i.nameAccount,reverse:s}},exports.getGithubRecord=async(e,r)=>await me(e,r,exports.Record.Github,!0),exports.getHandleAndRegistryKey=async function(e,t){const o=await le(t.toString()),i=await fe(o,L,M);let s=await Ke.retrieve(e,i);return[s.twitterHandle,new r.PublicKey(s.twitterRegistryKey)]},exports.getHashedName=le,exports.getHashedNameSync=$,exports.getInjectiveRecord=async(e,r)=>await me(e,r,exports.Record.Injective,!0),exports.getIpfsRecord=async(e,r)=>await me(e,r,exports.Record.IPFS,!0),exports.getLtcRecord=async(e,r)=>await me(e,r,exports.Record.LTC,!0),exports.getNameAccountKey=fe,exports.getNameAccountKeySync=ee,exports.getNameOwner=de,exports.getPicRecord=async(e,r)=>await me(e,r,exports.Record.Pic,!0),exports.getPointRecord=async(e,r)=>await me(e,r,exports.Record.POINT,!0),exports.getRecord=me,exports.getRecordKeySync=be,exports.getRecordV2Key=ke,exports.getRecords=async function(e,r,t,o){const i=t.map((e=>be(r,e))),s=await pe.retrieveBatch(e,i);return o?s.map(((e,o)=>{if(e)return Se(e,t[o],be(r,t[o]))})):s},exports.getRedditRecord=async(e,r)=>await me(e,r,exports.Record.Reddit,!0),exports.getReverseKey=async(e,r)=>{const{pubkey:t,parent:o}=await ge(e),i=await le(t.toBase58());return await fe(i,V,r?o:void 0)},exports.getReverseKeySync=se,exports.getShdwRecord=async(e,r)=>await me(e,r,exports.Record.SHDW,!0),exports.getSolRecord=Re,exports.getTelegramRecord=async(e,r)=>await me(e,r,exports.Record.Telegram,!0),exports.getTokenizedDomains=async(e,r)=>{const o=await(async(e,r)=>{const o=[...ce(r.toBase58()),{dataSize:165}],i=(await e.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:o})).map((e=>t.AccountLayout.decode(e.account.data))).map((r=>ue(e,r)));return(await Promise.all(i)).filter((e=>void 0!==e))})(e,r);return(await te(e,o.map((e=>e.nameAccount)))).map(((e,r)=>({key:o[r].nameAccount,mint:o[r].nftMint,reverse:e}))).filter((e=>!!e.reverse))},exports.getTwitterHandleandRegistryKeyViaFilters=async function(e,t){const o=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:L.toBase58()}}],s=await e.getProgramAccounts(N,{filters:o});for(const e of s)if(e.account.data.length>pe.HEADER_LEN+32){let t=e.account.data.slice(pe.HEADER_LEN),o=i.deserializeUnchecked(Ke.schema,Ke,t);return[o.twitterHandle,new r.PublicKey(o.twitterRegistryKey)]}throw new w(exports.ErrorType.AccountDoesNotExist)},exports.getTwitterRecord=async(e,r)=>await me(e,r,exports.Record.Twitter,!0),exports.getTwitterRegistry=async function(e,r){const t=await le(r),o=await fe(t,void 0,M),{registry:i}=await pe.retrieve(e,o);return i},exports.getTwitterRegistryData=async function(t,o){const i=[{memcmp:{offset:0,bytes:M.toBase58()}},{memcmp:{offset:32,bytes:o.toBase58()}},{memcmp:{offset:64,bytes:new r.PublicKey(e.Buffer.alloc(32,0)).toBase58()}}],s=await t.getProgramAccounts(N,{filters:i});if(s.length>1)throw new w(exports.ErrorType.MultipleRegistries);return s[0].account.data.slice(pe.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const r=await le(e);return await fe(r,void 0,M)},exports.getUrlRecord=async(e,r)=>await me(e,r,exports.Record.Url,!0),exports.performReverseLookup=async function(e,r){const t=await le(r.toBase58()),i=await fe(t,V),{registry:s}=await pe.retrieve(e,i);if(!s.data)throw new w(exports.ErrorType.NoAccountData);const n=new o(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,r){let t=[];for(let e of r){const r=await le(e.toBase58()),o=await fe(r,V);t.push(o)}return(await pe.retrieveBatch(e,t)).map((e=>{if(void 0===e||void 0===e.data)return;let r=new o(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+r).toString()}))},exports.reallocInstruction=function(t,o,i,s,n,a){const c=[e.Buffer.from(Int8Array.from([4])),a.toBuffer()],u=e.Buffer.concat(c),p=[{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new r.TransactionInstruction({keys:p,programId:t,data:u})},exports.registerDomainName=async(e,o,i,s,n,c=U,u)=>{if(o.includes(".")||o.trim().toLowerCase()!==o)throw new w(exports.ErrorType.InvalidDomain);const[p]=r.PublicKey.findProgramAddressSync([C.toBuffer()],C),d=$(o),l=ee(d,void 0,K),f=$(l.toBase58()),y=ee(f,p),[g]=r.PublicKey.findProgramAddressSync([l.toBuffer()],C),x=H.findIndex((e=>null==u?void 0:u.equals(e)));let b;const m=[];if(-1!==x&&u){b=t.getAssociatedTokenAddressSync(c,u,!0);const r=await e.getAccountInfo(b);if(!(null==r?void 0:r.data)){const e=t.createAssociatedTokenAccountInstruction(s,b,u,c);m.push(e)}}const R=new a.PythHttpClient(e,a.getPythProgramKeyForCluster("mainnet-beta")),S=await R.getData(),h=F.get(c.toBase58());if(!h)throw new w(exports.ErrorType.SymbolNotFound,`No symbol found for mint ${c.toBase58()}`);const A=S.productPrice.get("Crypto."+h+"/USD"),v=S.productFromSymbol.get("Crypto."+h+"/USD"),I=t.getAssociatedTokenAddressSync(c,G),B=new E({name:o,space:i,referrerIdxOpt:-1!=x?x:null}).getInstruction(C,N,K,l,y,r.SystemProgram.programId,p,s,n,j,A.productAccountKey,new r.PublicKey(v.price_account),I,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,g,b);return m.push(B),[[],m]},exports.registerWithNft=(e,o,i,s,n,a,c,u,p)=>{const[d]=r.PublicKey.findProgramAddressSync([i.toBuffer()],C);return new I({space:o,name:e}).getInstruction(C,N,K,i,s,r.SystemProgram.programId,V,n,a,c,u,p,X,t.TOKEN_PROGRAM_ID,r.SYSVAR_RENT_PUBKEY,d,Y)},exports.resolve=xe,exports.retrieveNftOwner=ae,exports.retrieveNfts=async e=>{const t=await e.getProgramAccounts(k,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return t.map((e=>new r.PublicKey(e.account.data.slice(66,98))))},exports.reverseLookup=re,exports.reverseLookupBatch=te,exports.serializeRecord=he,exports.serializeRecordV2Content=Be,exports.serializeSolRecord=Ae,exports.transferInstruction=S,exports.transferNameOwnership=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,o,i);let c;return c=o||(await pe.retrieve(e,a)).registry.owner,S(N,a,t,c,o,i,s)},exports.transferSubdomain=async(e,r,t,o)=>{const{pubkey:i,isSub:s,parent:n}=ie(r);if(!n||!s)throw new w(exports.ErrorType.InvalidSubdomain);const{registry:a}=await pe.retrieve(e,i);let c,u;o&&(c=n,u=(await pe.retrieve(e,n)).registry.owner);return S(N,i,t,a.owner,void 0,c,u)},exports.updateInstruction=R,exports.updateNameRegistryData=async function(e,r,t,o,i,s){const n=await le(r),a=await fe(n,i,s);let c;return c=i||(await pe.retrieve(e,a)).registry.owner,R(N,a,new x(t),o,c)},exports.updateRecordInstruction=async(e,r,t,o,i,s)=>{ne(t!==exports.Record.SOL,exports.ErrorType.UnsupportedRecord);const{pubkey:n}=ie(`${t}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist);const c=he(o,t);if((null==a?void 0:a.data.slice(96).length)!==c.length)return[h(N,n,s,i),await Ne(e,r,t,o,i,s)];return[R(N,n,new x(0),c,i)]},exports.updateRecordV2Instruction=(r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${t}.${r}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.editRecord(s,a,c,i,N,"".concat(t),e.Buffer.from(o),n.SNS_RECORDS_ID)},exports.updateSolRecordInstruction=async(e,r,t,o,i,s)=>{const{pubkey:n}=ie(`${exports.Record.SOL}.${r}`,exports.RecordVersion.V1),a=await e.getAccountInfo(n);if(ne(!!(null==a?void 0:a.data),exports.ErrorType.AccountDoesNotExist),96!==(null==a?void 0:a.data.length))return[h(N,n,s,o),await We(e,r,t,o,i,s)];const c=Ae(t,n,o,i);return[R(N,n,new x(0),c,o)]},exports.validateRecordV2Content=(e,r,t,o,i,s)=>{const{pubkey:a,parent:c}=ie(`${t}.${r}`,exports.RecordVersion.V2);if(!c)throw new Error("Invalid parent");return n.validateSolanaSignature(i,a,c,o,s,N,e,n.SNS_RECORDS_ID)},exports.verifyRightOfAssociation=async(e,r,t,o)=>{const i=ke(t,r),s=(await n.Record.retrieve(e,i)).getRoAId();return 0===o.compare(s)},exports.verifyStaleness=async(e,t,o)=>{const i=ke(o,t),s=await xe(e,o),a=await n.Record.retrieve(e,i),c=a.getStalenessId();return 32===c.length&&(s.equals(new r.PublicKey(c))&&a.header.stalenessValidation===n.Validation.Solana)},exports.writRoaRecordV2=(e,r,t,o,i)=>{const{pubkey:s,parent:a}=ie(`${r}.${e}`,exports.RecordVersion.V2);if(!a)throw new Error("Invalid parent");return n.writeRoa(o,N,s,a,t,i,n.SNS_RECORDS_ID)};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Buffer as e}from"buffer";import{PublicKey as t,TransactionInstruction as r,SystemProgram as n,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import f from"bn.js";import{serialize as d,deserialize as l,deserializeUnchecked as p}from"borsh";import{sha256 as g}from"@ethersproject/sha2";import{PythHttpClient as w,getPythProgramKeyForCluster as h}from"@pythnetwork/client";import{decode as m,encode as y}from"bech32-buffer";import*as b from"tweetnacl";import S from"bs58";import v from"ipaddr.js";import{encode as A,decode as k}from"punycode";import{hashMessage as B}from"@ethersproject/hash";import{recoverAddress as I}from"@ethersproject/transactions";import{getAddress as E}from"@ethersproject/address";var W;!function(e){e.SymbolNotFound="SymbolNotFound",e.InvalidSubdomain="InvalidSubdomain",e.FavouriteDomainNotFound="FavouriteDomainNotFound",e.MissingParentOwner="MissingParentOwner",e.U32Overflow="U32Overflow",e.InvalidBufferLength="InvalidBufferLength",e.U64Overflow="U64Overflow",e.NoRecordData="NoRecordData",e.InvalidRecordData="InvalidRecordData",e.UnsupportedRecord="UnsupportedRecord",e.InvalidEvmAddress="InvalidEvmAddress",e.InvalidInjectiveAddress="InvalidInjectiveAddress",e.InvalidARecord="InvalidARecord",e.InvalidAAAARecord="InvalidAAAARecord",e.InvalidRecordInput="InvalidRecordInput",e.InvalidSignature="InvalidSignature",e.AccountDoesNotExist="AccountDoesNotExist",e.MultipleRegistries="MultipleRegistries",e.InvalidReverseTwitter="InvalidReverseTwitter",e.NoAccountData="NoAccountData",e.InvalidInput="InvalidInput",e.InvalidDomain="InvalidDomain",e.InvalidCustomBg="InvalidCustomBackground",e.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(W||(W={}));class R extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,R)}}class D extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(4===r.length)return r;if(r.length>4)throw new R(W.U32Overflow);const n=e.alloc(4);return r.copy(n),n}static fromBuffer(e){if(4!==e.length)throw new R(W.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class N extends f{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(8===r.length)return r;if(r.length>8)throw new R(W.U64Overflow);const n=e.alloc(8);return r.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new R(W.U64Overflow,`Invalid buffer length: ${e.length}`);return new f([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function T(n,i,a,s,o,c,u,f,d,l,p){const g=[e.from(Int8Array.from([0])),new D(c.length).toBuffer(),c,u.toBuffer(),f.toBuffer()],w=e.concat(g),h=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return d?h.push({pubkey:d,isSigner:!0,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),l?h.push({pubkey:l,isSigner:!1,isWritable:!1}):h.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),p&&h.push({pubkey:p,isSigner:!0,isWritable:!1}),new r({keys:h,programId:n,data:w})}function x(t,n,i,a,s){const o=[e.from(Int8Array.from([1])),i.toBuffer(),new D(a.length).toBuffer(),a],c=e.concat(o);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function L(n,i,a,s,o,c,u){const f=[e.from(Int8Array.from([2])),a.toBuffer()],d=e.concat(f),l=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&l.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||l.push({pubkey:t.default,isSigner:!1,isWritable:!1}),l.push({pubkey:c,isSigner:!1,isWritable:!1})),new r({keys:l,programId:n,data:d})}function P(t,n,i,a){const s=[e.from(Int8Array.from([3]))],o=e.concat(s);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class j{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(j.schema,this)}getInstruction(t,i,s,o,c,u,f,d,l,p,g){const w=e.from(this.serialize()),h=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n.programId,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1}];return new r({keys:h,programId:t,data:w})}}j.schema=new Map([[j,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class C{constructor(e){this.tag=12,this.name=e.name}serialize(){return d(C.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d){const l=e.from(this.serialize());let p=[];return p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:i,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!1}),p.push({pubkey:o,isSigner:!1,isWritable:!1}),p.push({pubkey:c,isSigner:!0,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),f&&p.push({pubkey:f,isSigner:!1,isWritable:!0}),d&&p.push({pubkey:d,isSigner:!0,isWritable:!0}),new r({keys:p,programId:t,data:l})}}C.schema=new Map([[C,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class U{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(U.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d,l,p,g,w,h,m,y){const b=e.from(this.serialize());let S=[];return S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:f,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!1}),S.push({pubkey:l,isSigner:!1,isWritable:!1}),S.push({pubkey:p,isSigner:!1,isWritable:!1}),S.push({pubkey:g,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!1}),S.push({pubkey:h,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),y&&S.push({pubkey:y,isSigner:!1,isWritable:!0}),new r({keys:S,programId:t,data:b})}}U.schema=new Map([[U,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class z{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return d(z.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d,l,p,g,w,h,m,y){const b=e.from(this.serialize());let S=[];return S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:f,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:p,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!1}),S.push({pubkey:h,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),new r({keys:S,programId:t,data:b})}}z.schema=new Map([[z,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class H{constructor(){this.tag=16}serialize(){return d(H.schema,this)}getInstruction(t,n,i,a,s,o,c,u,f,d){const l=e.from(this.serialize());let p=[];return p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:i,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!0}),p.push({pubkey:o,isSigner:!1,isWritable:!0}),p.push({pubkey:c,isSigner:!1,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),p.push({pubkey:f,isSigner:!0,isWritable:!1}),p.push({pubkey:d,isSigner:!1,isWritable:!0}),new r({keys:p,programId:t,data:l})}}function M(t,n,i,a,s,o){const c=[e.from(Int8Array.from([4])),o.toBuffer()],u=e.concat(c);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:u})}H.schema=new Map([[H,{kind:"struct",fields:[["tag","u8"]]}]]);const F=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),G=e.from("tokenized_name");var O;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(O||(O={}));class V{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new t(e.nameAccount),this.owner=new t(e.owner),this.nftMint=new t(e.nftMint)}static deserialize(e){return l(this.schema,V,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("NFT record not found");return this.deserialize(r.data)}static async findKey(r,n){return await t.findProgramAddress([e.from("nft_record"),r.toBuffer()],n)}}V.schema=new Map([[V,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const X=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),K="SPL Name Service",q=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),Z=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),J=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),Y=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),Q=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),$=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),_=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),ee=96,te=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),re=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ne=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new t("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new t("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new t("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new t("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],ie=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),ae=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),se=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),oe=new t("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),ce=new t("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),ue=new t("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),fe=t=>{const r=K+t,n=g(e.from(r,"utf8")).slice(2);return e.from(n,"hex")},de=(r,n,i)=>{const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=t.findProgramAddressSync(a,X);return s};async function le(e,t){const r=fe(t.toBase58()),n=de(r,Q),{registry:i}=await Ee.retrieve(e,n);if(!i.data)throw new R(W.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function pe(e,t){let r=[];for(let e of t){const t=fe(e.toBase58()),n=de(t,Q);r.push(n)}return(await Ee.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const ge=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:Q.toBase58()}}],n=await e.getProgramAccounts(X,{filters:r}),i=await le(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>he(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},we=(e,t=q)=>{let r=fe(e);return{pubkey:de(r,void 0,t),hashed:r}},he=(t,r)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r||0]).toString().concat(n[0]),{pubkey:i}=we(n[1]);return{...we(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=we(n[2]),{pubkey:r}=we("\0".concat(n[1]),t),i=e.from([1]).toString();return{...we(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new R(W.InvalidInput);return{...we(t,q),isSub:!1,parent:void 0}};async function me(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:q.toBase58()}}];return(await e.getProgramAccounts(X,{filters:r})).map((e=>e.pubkey))}const ye=async e=>{const t=[{memcmp:{offset:0,bytes:q.toBase58()}}];return await e.getProgramAccounts(X,{dataSlice:{offset:32,length:32},filters:t})},be=(e,t)=>{const{pubkey:r,parent:n}=he(e),i=fe(r.toBase58());return de(i,Q,t?n:void 0)},Se=(e,t)=>{if(!e)throw new R(t)},ve=async(e,r)=>{try{const[n]=await t.findProgramAddress([G,r.toBuffer()],F);if("0"===(await s(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},Ae=async e=>{const r=await e.getProgramAccounts(F,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((e=>new t(e.account.data.slice(66,98))))},ke=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],Be=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(F,{filters:r})})(e,t.mint);if(1===r.length)return V.deserialize(r[0].account.data)},Ie=async(e,t)=>{const r=await(async(e,t)=>{const r=[...ke(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>Be(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await pe(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class Ee{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new R(W.AccountDoesNotExist);let i=p(this.schema,Ee,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await ve(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=p(this.schema,Ee,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function We(e,t){if(!await e.getAccountInfo(t))throw new R(W.AccountDoesNotExist);return Ee.retrieve(e,t)}async function Re(t){const r=K+t,n=g(e.from(r,"utf8")).slice(2);return e.from(n,"hex")}async function De(r,n,i){const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=await t.findProgramAddress(a,X);return s}async function Ne(e,t){const r=await Re(t.toBase58()),n=await De(r,Q),{registry:i}=await Ee.retrieve(e,n);if(!i.data)throw new R(W.NoAccountData);const a=new f(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Te(e,t){let r=[];for(let e of t){const t=await Re(e.toBase58()),n=await De(t,Q);r.push(n)}return(await Ee.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new f(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}Ee.HEADER_LEN=96,Ee.schema=new Map([[Ee,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const xe=async(e,t=q)=>{let r=await Re(e);return{pubkey:await De(r,void 0,t),hashed:r}},Le=async(t,r=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r?1:0]).toString().concat(n[0]),{pubkey:i}=await xe(n[1]);return{...await xe(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=await xe(n[2]),{pubkey:r}=await xe("\0".concat(n[1]),t),i=e.from([1]).toString();return{...await xe(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new R(W.InvalidInput);return{...await xe(t,q),isSub:!1,parent:void 0}},Pe=async(e,t)=>{const{pubkey:r,parent:n}=await Le(e),i=await Re(r.toBase58());return await De(i,Q,t?n:void 0)};var je;!function(e){e.IPFS="IPFS",e.ARWV="ARWV",e.SOL="SOL",e.ETH="ETH",e.BTC="BTC",e.LTC="LTC",e.DOGE="DOGE",e.Email="email",e.Url="url",e.Discord="discord",e.Github="github",e.Reddit="reddit",e.Twitter="twitter",e.Telegram="telegram",e.Pic="pic",e.SHDW="SHDW",e.POINT="POINT",e.BSC="BSC",e.Injective="INJ",e.Backpack="backpack",e.A="A",e.AAAA="AAAA",e.CNAME="CNAME",e.TXT="TXT",e.Background="background"}(je||(je={}));const Ce=new Map([[je.SOL,96],[je.ETH,20],[je.BSC,20],[je.Injective,20],[je.A,4],[je.AAAA,16],[je.Background,32]]);var Ue;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(Ue||(Ue={}));const ze=(e,t,r)=>b.sign.detached.verify(e,t,r.toBytes()),He=async(r,n)=>{const{pubkey:i}=he(n),{registry:a,nftOwner:s}=await Ee.retrieve(r,i);if(s)return s;try{const i=Me(n,je.SOL),s=await it(r,n);if(!(null==s?void 0:s.data))throw new R(W.NoRecordData);const o=new TextEncoder,c=e.concat([s.data.slice(0,32),i.toBuffer()]),u=o.encode(c.toString("hex"));if(!ze(u,s.data.slice(32),a.owner))throw new R(W.InvalidSignature);return new t(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},Me=(e,t)=>{const{pubkey:r}=he(t+"."+e,Ue.V1);return r};async function Fe(e,t,r,n){const i=Me(t,r);let{registry:a}=await Ee.retrieve(e,i);if(!a.data)throw new R(W.NoRecordData);if(n)return ft(a,r,i);const s=Ce.get(r);return a.data=a.data.slice(0,s),a}async function Ge(e,t,r,n){const i=r.map((e=>Me(t,e))),a=await Ee.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return ft(e,r[n],Me(t,r[n]))})):a}const Oe=async(e,t)=>await Fe(e,t,je.IPFS,!0),Ve=async(e,t)=>await Fe(e,t,je.ARWV,!0),Xe=async(e,t)=>await Fe(e,t,je.ETH,!0),Ke=async(e,t)=>await Fe(e,t,je.BTC,!0),qe=async(e,t)=>await Fe(e,t,je.LTC,!0),Ze=async(e,t)=>await Fe(e,t,je.DOGE,!0),Je=async(e,t)=>await Fe(e,t,je.Email,!0),Ye=async(e,t)=>await Fe(e,t,je.Url,!0),Qe=async(e,t)=>await Fe(e,t,je.Discord,!0),$e=async(e,t)=>await Fe(e,t,je.Github,!0),_e=async(e,t)=>await Fe(e,t,je.Reddit,!0),et=async(e,t)=>await Fe(e,t,je.Twitter,!0),tt=async(e,t)=>await Fe(e,t,je.Telegram,!0),rt=async(e,t)=>await Fe(e,t,je.Pic,!0),nt=async(e,t)=>await Fe(e,t,je.SHDW,!0),it=async(e,t)=>await Fe(e,t,je.SOL),at=async(e,t)=>await Fe(e,t,je.POINT,!0),st=async(e,t)=>await Fe(e,t,je.BSC,!0),ot=async(e,t)=>await Fe(e,t,je.Injective,!0),ct=async(e,t)=>await Fe(e,t,je.Backpack,!0),ut=async(e,t)=>await Fe(e,t,je.Background,!0),ft=(r,n,i)=>{const a=null==r?void 0:r.data;if(!a)return;if(0===a.compare(e.alloc(a.length)))return;const s=Ce.get(n),o=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(a);if(!s)return a.slice(0,o).toString("utf-8");if(n===je.SOL){const t=new TextEncoder,n=e.concat([a.slice(0,32),i.toBuffer()]),s=t.encode(n.toString("hex"));if(ze(s,a.slice(32,96),r.owner))return S.encode(a.slice(0,32))}if(s&&o!==s){const t=a.slice(0,o).toString("utf-8");if(n===je.Injective){const e=m(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(n===je.BSC||n===je.ETH){const r=t.slice(0,2),n=t.slice(2);if("0x"===r&&20===e.from(n,"hex").length)return t}else if((n===je.A||n===je.AAAA)&&v.isValid(t))return t;throw new R(W.InvalidRecordData)}if(n===je.ETH||n===je.BSC)return"0x"+a.slice(0,s).toString("hex");if(n===je.Injective)return y("inj",a.slice(0,s),"bech32");if(n===je.A||n===je.AAAA)return v.fromByteArray([...a.slice(0,s)]).toString();if(n===je.Background)return new t(a.slice(0,s)).toString();throw new R(W.InvalidRecordData)},dt=(r,n)=>{if(!Ce.get(n))return n!==je.CNAME&&n!==je.TXT||(r=A(r)),e.from(r,"utf-8");if(n===je.SOL)throw new R(W.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(n===je.ETH||n===je.BSC)return Se("0x"===r.slice(0,2),W.InvalidEvmAddress),e.from(r.slice(2),"hex");if(n===je.Injective){const t=m(r);return Se("inj"===t.prefix,W.InvalidInjectiveAddress),Se(20===t.data.length,W.InvalidInjectiveAddress),e.from(t.data)}if(n===je.A){const t=v.parse(r).toByteArray();return Se(4===t.length,W.InvalidARecord),e.from(t)}if(n===je.AAAA){const t=v.parse(r).toByteArray();return Se(16===t.length,W.InvalidAAAARecord),e.from(t)}if(n===je.Background)return new t(r).toBuffer();throw new R(W.InvalidRecordInput)},lt=(t,r,n,i)=>{const a=e.concat([t.toBuffer(),r.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=ze(s,i,n);return Se(o,W.InvalidSignature),e.concat([t.toBuffer(),i])};async function pt(e,t,r,i,a,s,o,c){const u=await Re(t),f=await De(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(r);let l;if(c){const{registry:t}=await We(e,c);l=t.owner}return T(X,n.programId,f,a,i,u,new N(d),new D(r),o,c,l)}async function gt(e,t,r,n,i,a){const s=await Re(t),o=await De(s,i,a);let c;c=i||(await Ee.retrieve(e,o)).registry.owner;return x(X,o,new D(r),n,c)}async function wt(e,t,r,n,i,a){const s=await Re(t),o=await De(s,n,i);let c;c=n||(await Ee.retrieve(e,o)).registry.owner;return L(X,o,r,c,n,i,a)}async function ht(e,t,r,n,i){const a=await Re(t),s=await De(a,n,i);let o;o=n||(await Ee.retrieve(e,s)).registry.owner;return P(X,s,r,o)}const mt=async(e,r,s,o,f,d=re,l)=>{if(r.includes(".")||r.trim().toLowerCase()!==r)throw new R(W.InvalidDomain);const[p]=t.findProgramAddressSync([Z.toBuffer()],Z),g=fe(r),m=de(g,void 0,q),y=fe(m.toBase58()),b=de(y,p),[S]=t.findProgramAddressSync([m.toBuffer()],Z),v=ne.findIndex((e=>null==l?void 0:l.equals(e)));let A;const k=[];if(-1!==v&&l){A=c(d,l,!0);const t=await e.getAccountInfo(A);if(!(null==t?void 0:t.data)){const e=u(o,A,l,d);k.push(e)}}const B=new w(e,h("mainnet-beta")),I=await B.getData(),E=ie.get(d.toBase58());if(!E)throw new R(W.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const D=I.productPrice.get("Crypto."+E+"/USD"),N=I.productFromSymbol.get("Crypto."+E+"/USD"),T=c(d,se),x=new U({name:r,space:s,referrerIdxOpt:-1!=v?v:null}).getInstruction(Z,X,q,m,b,n.programId,p,o,f,ae,D.productAccountKey,new t(N.price_account),T,a,i,S,A);return k.push(x),[[],k]},yt=async(e,r,a,s,o)=>{let[c]=await t.findProgramAddress([Z.toBuffer()],Z),u=await Re(e.toBase58()),f=await De(u,c,s);return[[],[new C({name:r}).getInstruction(Z,X,q,f,n.programId,c,a,i,s,o)]]},bt=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new R(W.InvalidSubdomain);const{parent:s,pubkey:o}=he(t),c=await e.getMinimumBalanceForRentExemption(n+Ee.HEADER_LEN),u=await pt(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const f=be(t,!0),d=await e.getAccountInfo(f);if(!(null==d?void 0:d.data)){const[,e]=await yt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},St=async(e,t,r,i,a,s)=>{Se(r!==je.SOL,W.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=he(`${r}.${t}`,Ue.V1),f=dt(i,r).length,d=await e.getMinimumBalanceForRentExemption(f+Ee.HEADER_LEN);return T(X,n.programId,o,a,s,c,new N(d),new D(f),void 0,u,a)},vt=async(e,t,r,i,a,s)=>{const o=i.serialize().length,{pubkey:c,hashed:u,parent:f}=he(`${r}.${t}`,Ue.V2),d=await e.getMinimumBalanceForRentExemption(o+Ee.HEADER_LEN);return T(X,n.programId,c,a,s,u,new N(d),new D(o),void 0,f,a)},At=async(e,t,r,n,i,a)=>{Se(r!==je.SOL,W.UnsupportedRecord);const{pubkey:s}=he(`${r}.${t}`,Ue.V1),o=await e.getAccountInfo(s);Se(!!(null==o?void 0:o.data),W.AccountDoesNotExist);const c=dt(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[P(X,s,a,i),await St(e,t,r,n,i,a)];return[x(X,s,new D(0),c,i)]},kt=async(t,r,n,i,a,s)=>{const{pubkey:o}=he(`${n}.${r}`,Ue.V2),c=await t.getAccountInfo(o),u=i.serialize();if(c&&(null==c?void 0:c.data.slice(96).length)!==u.length)return[P(X,o,s,a),await vt(t,r,n,i,a,s),x(X,o,new D(0),e.from(u),a)];return[x(X,o,new D(0),e.from(u),a)]},Bt=async(e,t,r,n)=>{const{pubkey:i}=he(`${t}.${e}`,Ue.V2);return P(X,i,n,r)},It=async(e,t,r,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=he(`${je.SOL}.${t}`,Ue.V1),f=lt(r,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(f+Ee.HEADER_LEN);return[T(X,n.programId,o,i,s,c,new N(d),new D(f),void 0,u,i)]},Et=async(e,t,r,n,i,a)=>{const{pubkey:s}=he(`${je.SOL}.${t}`,Ue.V1),o=await e.getAccountInfo(s);if(Se(!!(null==o?void 0:o.data),W.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[P(X,s,a,n),await It(e,t,r,n,i,a)];const c=lt(r,s,n,i);return[x(X,s,new D(0),c,n)]},Wt=(e,r,i)=>{const{pubkey:a}=he(e),[s]=t.findProgramAddressSync([a.toBuffer()],Z),[o]=t.findProgramAddressSync([a.toBuffer(),Uint8Array.from([1,1])],Z);return(new H).getInstruction(Z,X,n.programId,a,be(e),o,s,Q,r,i)},Rt=(e,r,s,o,c,u,f,d,l)=>{const[p]=t.findProgramAddressSync([s.toBuffer()],Z);return new z({space:r,name:e}).getInstruction(Z,X,q,s,o,n.programId,Q,c,u,f,d,l,ce,a,i,p,ue)},Dt=async(e,t,r,n)=>{const{pubkey:i,isSub:a,parent:s}=he(t);if(!s||!a)throw new R(W.InvalidSubdomain);const{registry:o}=await Ee.retrieve(e,i);let c,u;n&&(c=s,u=(await Ee.retrieve(e,s)).registry.owner);return L(X,i,r,o.owner,void 0,c,u)};async function Nt(e,t,r,i,a){const s=await Re(t),o=await De(s,void 0,_),c=await e.getMinimumBalanceForRentExemption(i+Ee.HEADER_LEN);let u=[T(X,n.programId,o,r,a,s,new N(c),new D(i),void 0,_,$)];return u=u.concat(await Mt(e,t,o,r,a)),u}async function Tt(e,t,r,n){const i=await Re(e),a=await De(i,void 0,_);return[x(X,a,new D(r),n,t)]}async function xt(e,t,r,n,i){const a=await Re(t),s=await De(a,void 0,_);let o=[L(X,s,n,r,void 0)];const c=await Re(r.toString());return await De(c,$,void 0),o.push(await ht(e,r.toString(),i,$,_)),o=o.concat(await Mt(e,t,s,n,i)),o}async function Lt(e,t){const r=await Re(e),n=await De(r,void 0,_),i=await Re(t.toString()),a=await De(i,$,_);return[P(X,n,t,t),P(X,a,t,t)]}async function Pt(e){const t=await Re(e);return await De(t,void 0,_)}async function jt(e,t){const r=await Re(t),n=await De(r,void 0,_),{registry:i}=await Ee.retrieve(e,n);return i}async function Ct(e,r){const n=await Re(r.toString()),i=await De(n,$,_);let a=await Ht.retrieve(e,i);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function Ut(e,r){const n=[{memcmp:{offset:0,bytes:_.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:$.toBase58()}}],i=await e.getProgramAccounts(X,{filters:n});for(const e of i)if(e.account.data.length>Ee.HEADER_LEN+32){let r=e.account.data.slice(Ee.HEADER_LEN),n=p(Ht.schema,Ht,r);return[n.twitterHandle,new t(n.twitterRegistryKey)]}throw new R(W.AccountDoesNotExist)}async function zt(r,n){const i=[{memcmp:{offset:0,bytes:_.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:new t(e.alloc(32,0)).toBase58()}}],a=await r.getProgramAccounts(X,{filters:i});if(a.length>1)throw new R(W.MultipleRegistries);return a[0].account.data.slice(Ee.HEADER_LEN)}class Ht{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 R(W.InvalidReverseTwitter);return p(this.schema,Ht,r.data.slice(Ee.HEADER_LEN))}}async function Mt(t,r,i,a,s){const o=await Re(a.toString()),c=await De(o,$,_);let u=d(Ht.schema,new Ht({twitterRegistryKey:i.toBytes(),twitterHandle:r}));return[T(X,n.programId,c,a,s,o,new N(await t.getMinimumBalanceForRentExemption(u.length+Ee.HEADER_LEN)),new D(u.length),$,_,$),x(X,c,new D(0),e.from(u),$)]}Ht.schema=new Map([[Ht,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Ft=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Gt{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(e){return l(this.schema,Gt,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new R(W.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,n){return await t.findProgramAddress([e.from("favourite_domain"),n.toBuffer()],r)}static getKeySync(r,n){return t.findProgramAddressSync([e.from("favourite_domain"),n.toBuffer()],r)}}Gt.schema=new Map([[Gt,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const Ot=async(e,r)=>{const[n]=Gt.getKeySync(Ft,new t(r)),i=await Gt.retrieve(e,n),a=await le(e,i.nameAccount);return{domain:i.nameAccount,reverse:a}};var Vt;!function(e){e.DegenPoet1="DegenPoet#1"}(Vt||(Vt={}));const Xt=new t("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD"),Kt=(e,t)=>{const r=fe(t),n=fe(e),i=de(n,void 0,oe);return{domainKey:i,bgKey:de(r,void 0,i)}},qt=e=>{if(e===Vt.DegenPoet1)return Xt;throw new R(W.InvalidCustomBg)};var Zt,Jt;!function(e){e[e.None=0]="None",e[e.Solana=1]="Solana",e[e.Ethereum=2]="Ethereum",e[e.Injective=3]="Injective"}(Zt||(Zt={})),function(e){e[e.None=0]="None",e[e.Solana=1]="Solana"}(Jt||(Jt={}));const Yt={signatureType:Jt.None,signature:Buffer.alloc(0)},Qt={signatureType:Zt.None,signature:Buffer.alloc(0)},$t=new Map([[je.Backpack,new t("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3").toBuffer()]]),_t=new Set([je.IPFS,je.ARWV,je.LTC,je.DOGE,je.Email,je.Url,je.Discord,je.Github,je.Reddit,je.Twitter,je.Telegram,je.Pic,je.SHDW,je.POINT,je.Backpack,je.TXT,je.CNAME,je.BTC]),er=new Set([je.ETH,je.Injective,je.SOL]),tr=e=>{switch(e){case Zt.None:return 0;case Zt.Solana:return 64;case Zt.Ethereum:case Zt.Injective:return 65;case Jt.None:return 0;case Jt.Solana:return 64;default:throw new R(W.UnsupportedSignature,`Unsupported signature type: ${e}`)}},rr=e=>{const t=$t.get(e);if(!t)throw new R(W.RecordDoestNotSupportGuardianSig);return t},nr=(e,t,r)=>b.sign.detached.verify(e,t,r),ir=(e,t,r)=>{const n=B(e);return I(n,t)===E(r)},ar=(e,t,r)=>{throw new Error("TODO")},sr=(e,t,r,n)=>{switch(n){case Zt.Ethereum:case Zt.Injective:return ir(e.toString(),t.toString(),r.toString());case Zt.Solana:return nr(e,t,r);case Zt.None:throw new R(W.RecordIsNotSigned);default:throw new R(W.UnsupportedSignatureType)}},or=(e,t,r,n)=>{switch(n){case Jt.Solana:return nr(e,t,r);case Jt.None:throw new R(W.RecordIsNotSigned);default:throw new R(W.UnsupportedSignatureType)}};class cr{constructor(e){this.userSignature=e.userSignature,this.guardianSignature=e.guardianSignature,this.contentLength=e.contentLength}serialize(){return d(cr.schema,this)}static deserialize(e){return l(this.schema,cr,e)}}cr.LEN=8,cr.schema=new Map([[cr,{kind:"struct",fields:[["userSignature","u16"],["guardianSignature","u16"],["contentLength","u32"]]}]]);class ur{constructor(e){this.header=e.header,this.buffer=e.buffer}getLength(){return cr.LEN+this.buffer.length}static deserializeUnchecked(e){const t=p(cr.schema,cr,e);return new ur({header:t,buffer:Buffer.from(e.slice(cr.LEN))})}serialize(){const e=this.header.serialize();return Buffer.concat([e,this.buffer])}deserializeContent(e){return fr(this.getContent(),e)}getContent(){const e=tr(this.header.guardianSignature)+tr(this.header.userSignature);return Buffer.from(this.buffer.slice(e,e+this.header.contentLength))}static new(e,t,r=Yt,n=Qt){const i=dr(e,t),a=Buffer.concat([r.signature,n.signature,i]),s=new cr({userSignature:r.signatureType,guardianSignature:n.signatureType,contentLength:i.length});return new ur({header:s,buffer:a})}checkGuardianSignature(e,t){const r=tr(this.header.guardianSignature),n=tr(this.header.userSignature),i=Buffer.from(this.buffer.slice(n,n+r));return sr(e,i,t,this.header.guardianSignature)}checkUserSignature(e,t){const r=tr(this.header.userSignature),n=Buffer.from(this.buffer.slice(0,r));return or(e,n,t,this.header.userSignature)}static async retrieve(e,t,r,n){const i=pr(r,t),{registry:a}=await Ee.retrieve(e,i);if(!a.data)throw new R(W.InvalidRecordData);const s=this.deserializeUnchecked(a.data),o=s.getContent(),c=Buffer.concat([i.toBuffer(),o]);if(!(null==n?void 0:n.skipGuardianSig)){const e=er.has(t)?Buffer.from(s.getContent().slice(32)):rr(t);s.checkGuardianSignature(c,e)}return(null==n?void 0:n.skipUserSig)||s.checkUserSignature(c,a.owner.toBuffer()),s}static async retrieveBatch(e,t,r){const n=t.map((e=>pr(r,e))),i=await Ee.retrieveBatch(e,n),a=[];for(let e of i)try{if(!(null==e?void 0:e.data)){a.push(void 0);continue}const t=ur.deserializeUnchecked(null==e?void 0:e.data);a.push(t)}catch{a.push(void 0)}return a}}const fr=(e,r)=>{if(_t.has(r)){const t=e.toString("utf-8");return r===je.CNAME||r===je.TXT?k(t):t}if(r===je.SOL)return new t(e).toBase58();if(r===je.ETH||r===je.BSC)return"0x"+e.toString("hex");if(r===je.Injective)return y("inj",e,"bech32");if(r===je.A||r===je.AAAA)return v.fromByteArray([...e]).toString();throw new R(W.InvalidARecord)},dr=(e,r)=>{if(_t.has(r))return r!==je.CNAME&&r!==je.TXT||(e=A(e)),Buffer.from(e,"utf-8");if(r===je.SOL)return new t(e).toBuffer();if(r===je.ETH||r===je.BSC)return Se("0x"===e.slice(0,2),W.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(r===je.Injective){const t=m(e);return Se("inj"===t.prefix,W.InvalidInjectiveAddress),Se(20===t.data.length,W.InvalidInjectiveAddress),Buffer.from(t.data)}if(r===je.A){const t=v.parse(e).toByteArray();return Se(4===t.length,W.InvalidARecord),Buffer.from(t)}if(r===je.AAAA){const t=v.parse(e).toByteArray();return Se(16===t.length,W.InvalidAAAARecord),Buffer.from(t)}throw new R(W.InvalidARecord)},lr=(e,t,r)=>{const n=dr(e,r),i=pr(t,r),a=Buffer.concat([i.toBuffer(),n]).toString("hex");return Buffer.from(a)},pr=(e,t)=>{const{pubkey:r}=he(t+"."+e,Ue.V2);return r};export{Y as BONFIDA_FIDA_BNB,te as BONFIDA_USDC_BNB,oe as CUSTOM_BG_TLD,Vt as CustomBg,W as ErrorType,Gt as FavouriteDomain,Zt as GuardianSig,$t as Guardians,K as HASH_PREFIX,ue as METAPLEX_ID,Ft as NAME_OFFERS_ID,X as NAME_PROGRAM_ID,Ee as NameRegistryState,Qt as NullGuardianSig,Yt as NullUserSig,D as Numberu32,N as Numberu64,J as PYTH_FIDA_PRICE_ACC,ae as PYTH_MAPPING_ACC,Ce as RECORD_V1_SIZE,ne as REFERRERS,Z as REGISTER_PROGRAM_ID,Q as REVERSE_LOOKUP_CLASS,q as ROOT_DOMAIN_ACCOUNT,je as Record,ur as RecordV2,cr as RecordV2Header,Ue as RecordVersion,Ht as ReverseTwitterRegistryState,er as SELF_SIGNED,R as SNSError,ee as SOL_RECORD_SIG_LEN,ie as TOKENS_SYM_MINT,_ as TWITTER_ROOT_PARENT_REGISTRY_KEY,$ as TWITTER_VERIFICATION_AUTHORITY,re as USDC_MINT,_t as UTF8_ENCODED,Jt as UserSig,se as VAULT_OWNER,ce as WOLVES_COLLECTION_METADATA,Wt as burnDomain,H as burnInstruction,Tt as changeTwitterRegistryData,xt as changeVerifiedPubkey,Se as check,ze as checkSolRecord,T as createInstruction,U as createInstructionV3,pt as createNameRegistry,St as createRecordInstruction,vt as createRecordV2Instruction,C as createReverseInstruction,yt as createReverseName,Mt as createReverseTwitterRegistry,It as createSolRecordInstruction,bt as createSubdomain,j as createV2Instruction,Nt as createVerifiedTwitterRegistry,z as createWithNftInstruction,P as deleteInstruction,ht as deleteNameRegistry,Bt as deleteRecordV2,Lt as deleteTwitterRegistry,ft as deserializeRecord,fr as deserializeRecordV2Content,ge as findSubdomains,me as getAllDomains,ye as getAllRegisteredDomains,qt as getArtistPubkey,Ve as getArweaveRecord,ut as getBackgroundRecord,ct as getBackpackRecord,st as getBscRecord,Ke as getBtcRecord,Kt as getCustomBgKeys,Qe as getDiscordRecord,Ze as getDogeRecord,Le as getDomainKey,he as getDomainKeySync,Je as getEmailRecord,Xe as getEthRecord,Ot as getFavoriteDomain,$e as getGithubRecord,rr as getGuardianPublickey,Ct as getHandleAndRegistryKey,Re as getHashedName,fe as getHashedNameSync,ot as getInjectiveRecord,Oe as getIpfsRecord,qe as getLtcRecord,lr as getMessageToSign,De as getNameAccountKey,de as getNameAccountKeySync,We as getNameOwner,rt as getPicRecord,at as getPointRecord,Fe as getRecord,Me as getRecordKeySync,pr as getRecordV2Key,Ge as getRecords,_e as getRedditRecord,Pe as getReverseKey,be as getReverseKeySync,nt as getShdwRecord,tr as getSignatureByteLength,it as getSolRecord,tt as getTelegramRecord,Ie as getTokenizedDomains,Ut as getTwitterHandleandRegistryKeyViaFilters,et as getTwitterRecord,jt as getTwitterRegistry,zt as getTwitterRegistryData,Pt as getTwitterRegistryKey,Ye as getUrlRecord,Ne as performReverseLookup,Te as performReverseLookupBatch,M as reallocInstruction,mt as registerDomainName,Rt as registerWithNft,He as resolve,ve as retrieveNftOwner,Ae as retrieveNfts,le as reverseLookup,pe as reverseLookupBatch,dt as serializeRecord,dr as serializeRecordV2Content,lt as serializeSolRecord,L as transferInstruction,wt as transferNameOwnership,Dt as transferSubdomain,x as updateInstruction,gt as updateNameRegistryData,At as updateRecordInstruction,kt as updateRecordV2Instruction,Et as updateSolRecordInstruction,ir as verifyEthereumSignature,sr as verifyGuardianSignature,ar as verifyInjectiveSignature,nr as verifySolanaSignature,or as verifyUserSignature};
|
|
1
|
+
import{Buffer as e}from"buffer";import{PublicKey as t,TransactionInstruction as r,SystemProgram as n,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as a,getMint as s,AccountLayout as o,getAssociatedTokenAddressSync as c,createAssociatedTokenAccountInstruction as u}from"@solana/spl-token";import l from"bn.js";import{serialize as d,deserialize as f,deserializeUnchecked as p}from"borsh";import{sha256 as w}from"@ethersproject/sha2";import{CENTRAL_STATE_SNS_RECORDS as g,Record as y,Validation as m,allocateAndPostRecord as h,SNS_RECORDS_ID as b,editRecord as S,deleteRecord as v,validateSolanaSignature as A,writeRoa as k,validateEthSignature as I}from"@bonfida/sns-records";import{PythHttpClient as B,getPythProgramKeyForCluster as E}from"@pythnetwork/client";import{decode as W,encode as R}from"bech32-buffer";import*as D from"tweetnacl";import T from"bs58";import x from"ipaddr.js";import{encode as N,decode as P}from"punycode";var L;!function(e){e.SymbolNotFound="SymbolNotFound",e.InvalidSubdomain="InvalidSubdomain",e.FavouriteDomainNotFound="FavouriteDomainNotFound",e.MissingParentOwner="MissingParentOwner",e.U32Overflow="U32Overflow",e.InvalidBufferLength="InvalidBufferLength",e.U64Overflow="U64Overflow",e.NoRecordData="NoRecordData",e.InvalidRecordData="InvalidRecordData",e.UnsupportedRecord="UnsupportedRecord",e.InvalidEvmAddress="InvalidEvmAddress",e.InvalidInjectiveAddress="InvalidInjectiveAddress",e.InvalidARecord="InvalidARecord",e.InvalidAAAARecord="InvalidAAAARecord",e.InvalidRecordInput="InvalidRecordInput",e.InvalidSignature="InvalidSignature",e.AccountDoesNotExist="AccountDoesNotExist",e.MultipleRegistries="MultipleRegistries",e.InvalidReverseTwitter="InvalidReverseTwitter",e.NoAccountData="NoAccountData",e.InvalidInput="InvalidInput",e.InvalidDomain="InvalidDomain",e.InvalidCustomBg="InvalidCustomBackground",e.UnsupportedSignature="UnsupportedSignature",e.RecordDoestNotSupportGuardianSig="RecordDoestNotSupportGuardianSig",e.RecordIsNotSigned="RecordIsNotSigned",e.UnsupportedSignatureType="UnsupportedSignatureType"}(L||(L={}));class C extends Error{constructor(e,t){super(t),this.name="SNSError",this.type=e,Error.captureStackTrace&&Error.captureStackTrace(this,C)}}class j extends l{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(4===r.length)return r;if(r.length>4)throw new C(L.U32Overflow);const n=e.alloc(4);return r.copy(n),n}static fromBuffer(e){if(4!==e.length)throw new C(L.InvalidBufferLength,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class H extends l{toBuffer(){const t=super.toArray().reverse(),r=e.from(t);if(8===r.length)return r;if(r.length>8)throw new C(L.U64Overflow);const n=e.alloc(8);return r.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new C(L.U64Overflow,`Invalid buffer length: ${e.length}`);return new l([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function M(n,i,a,s,o,c,u,l,d,f,p){const w=[e.from(Int8Array.from([0])),new j(c.length).toBuffer(),c,u.toBuffer(),l.toBuffer()],g=e.concat(w),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 d?y.push({pubkey:d,isSigner:!0,isWritable:!1}):y.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),f?y.push({pubkey:f,isSigner:!1,isWritable:!1}):y.push({pubkey:new t(e.alloc(32)),isSigner:!1,isWritable:!1}),p&&y.push({pubkey:p,isSigner:!0,isWritable:!1}),new r({keys:y,programId:n,data:g})}function U(t,n,i,a,s){const o=[e.from(Int8Array.from([1])),i.toBuffer(),new j(a.length).toBuffer(),a],c=e.concat(o);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function z(n,i,a,s,o,c,u){const l=[e.from(Int8Array.from([2])),a.toBuffer()],d=e.concat(l),f=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u||s,isSigner:!0,isWritable:!1}];return o&&f.push({pubkey:o,isSigner:!0,isWritable:!1}),u&&c&&(o||f.push({pubkey:t.default,isSigner:!1,isWritable:!1}),f.push({pubkey:c,isSigner:!1,isWritable:!1})),new r({keys:f,programId:n,data:d})}function F(t,n,i,a){const s=[e.from(Int8Array.from([3]))],o=e.concat(s);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class V{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return d(V.schema,this)}getInstruction(t,i,s,o,c,u,l,d,f,p,w){const g=e.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:d,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1}];return new r({keys:y,programId:t,data:g})}}V.schema=new Map([[V,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class G{constructor(e){this.tag=12,this.name=e.name}serialize(){return d(G.schema,this)}getInstruction(t,n,i,a,s,o,c,u,l,d){const f=e.from(this.serialize());let p=[];return p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:i,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!1}),p.push({pubkey:o,isSigner:!1,isWritable:!1}),p.push({pubkey:c,isSigner:!0,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),l&&p.push({pubkey:l,isSigner:!1,isWritable:!0}),d&&p.push({pubkey:d,isSigner:!0,isWritable:!0}),new r({keys:p,programId:t,data:f})}}G.schema=new Map([[G,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class O{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return d(O.schema,this)}getInstruction(t,n,i,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=e.from(this.serialize());let S=[];return S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!1}),S.push({pubkey:f,isSigner:!1,isWritable:!1}),S.push({pubkey:p,isSigner:!1,isWritable:!1}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),h&&S.push({pubkey:h,isSigner:!1,isWritable:!0}),new r({keys:S,programId:t,data:b})}}O.schema=new Map([[O,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);class X{constructor(e){this.tag=17,this.name=e.name,this.space=e.space}serialize(){return d(X.schema,this)}getInstruction(t,n,i,a,s,o,c,u,l,d,f,p,w,g,y,m,h){const b=e.from(this.serialize());let S=[];return S.push({pubkey:n,isSigner:!1,isWritable:!1}),S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!0}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:o,isSigner:!1,isWritable:!1}),S.push({pubkey:c,isSigner:!1,isWritable:!1}),S.push({pubkey:u,isSigner:!0,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!0}),S.push({pubkey:d,isSigner:!1,isWritable:!0}),S.push({pubkey:f,isSigner:!1,isWritable:!0}),S.push({pubkey:p,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!0}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),S.push({pubkey:h,isSigner:!1,isWritable:!1}),new r({keys:S,programId:t,data:b})}}X.schema=new Map([[X,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class K{constructor(){this.tag=16}serialize(){return d(K.schema,this)}getInstruction(t,n,i,a,s,o,c,u,l,d){const f=e.from(this.serialize());let p=[];return p.push({pubkey:n,isSigner:!1,isWritable:!1}),p.push({pubkey:i,isSigner:!1,isWritable:!1}),p.push({pubkey:a,isSigner:!1,isWritable:!0}),p.push({pubkey:s,isSigner:!1,isWritable:!0}),p.push({pubkey:o,isSigner:!1,isWritable:!0}),p.push({pubkey:c,isSigner:!1,isWritable:!0}),p.push({pubkey:u,isSigner:!1,isWritable:!1}),p.push({pubkey:l,isSigner:!0,isWritable:!1}),p.push({pubkey:d,isSigner:!1,isWritable:!0}),new r({keys:p,programId:t,data:f})}}function q(t,n,i,a,s,o){const c=[e.from(Int8Array.from([4])),o.toBuffer()],u=e.concat(c);return new r({keys:[{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:u})}K.schema=new Map([[K,{kind:"struct",fields:[["tag","u8"]]}]]);const Z=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),J=e.from("tokenized_name");var Y;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.CentralState=1]="CentralState",e[e.ActiveRecord=2]="ActiveRecord",e[e.InactiveRecord=3]="InactiveRecord"}(Y||(Y={}));class Q{constructor(e){this.tag=e.tag,this.nonce=e.nonce,this.nameAccount=new t(e.nameAccount),this.owner=new t(e.owner),this.nftMint=new t(e.nftMint)}static deserialize(e){return f(this.schema,Q,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("NFT record not found");return this.deserialize(r.data)}static async findKey(r,n){return await t.findProgramAddress([e.from("nft_record"),r.toBuffer()],n)}}Q.schema=new Map([[Q,{kind:"struct",fields:[["tag","u8"],["nonce","u8"],["nameAccount",[32]],["owner",[32]],["nftMint",[32]]]}]]);const $=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),_="SPL Name Service",ee=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),te=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),re=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),ne=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),ie=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),ae=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),se=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),oe=96,ce=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),ue=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),le=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs"),new t("ADCp4QXFajHrhy4f43pD6GJFtQLkdBY2mjS9DfCk7tNW"),new t("2XTgjw8yi1E3Etgj4CUyRD7Zk49gynH2U9gA5N2MY4NP"),new t("5oDWj8vr3vbcq9JZTtwXqrkCMZggMsDzNietvbr1BNfe"),new t("8kJqxAbqbPLGLMgB6FhLcnw2SiUEavx2aEGM3WQGhtJF"),new t("HemvJzwxvVpWBjPETpaseAH395WAxb2G73MeUfjVkK1u")],de=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),fe=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),pe=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi"),we=new t("BPeXUQDqGbzxeK1LJby6ugvCBuo7kRSEUkjD726mUVsz"),ge=new t("72aLKvXeV4aansAQtxKymeXDevT5ed6sCuz9iN62ugPT"),ye=new t("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");var me;!function(e){e.IPFS="IPFS",e.ARWV="ARWV",e.SOL="SOL",e.ETH="ETH",e.BTC="BTC",e.LTC="LTC",e.DOGE="DOGE",e.Email="email",e.Url="url",e.Discord="discord",e.Github="github",e.Reddit="reddit",e.Twitter="twitter",e.Telegram="telegram",e.Pic="pic",e.SHDW="SHDW",e.POINT="POINT",e.BSC="BSC",e.Injective="INJ",e.Backpack="backpack",e.A="A",e.AAAA="AAAA",e.CNAME="CNAME",e.TXT="TXT",e.Background="background"}(me||(me={}));const he=new Map([[me.SOL,96],[me.ETH,20],[me.BSC,20],[me.Injective,20],[me.A,4],[me.AAAA,16],[me.Background,32]]);var be;!function(e){e[e.V1=1]="V1",e[e.V2=2]="V2"}(be||(be={}));const Se=t=>{const r=_+t,n=w(e.from(r,"utf8")).slice(2);return e.from(n,"hex")},ve=(r,n,i)=>{const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=t.findProgramAddressSync(a,$);return s};async function Ae(e,t){const r=Se(t.toBase58()),n=ve(r,ie),{registry:i}=await je.retrieve(e,n);if(!i.data)throw new C(L.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function ke(e,t){let r=[];for(let e of t){const t=Se(e.toBase58()),n=ve(t,ie);r.push(n)}return(await je.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}const Ie=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:ie.toBase58()}}],n=await e.getProgramAccounts($,{filters:r}),i=await Ae(e,t),a=n.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),s=a.map((e=>Ee(e+"."+i).pubkey)),o=await e.getMultipleAccountsInfo(s);return a.filter(((e,t)=>!!o[t]))},Be=(e,t=ee,r)=>{let n=Se(e);return{pubkey:ve(n,r,t),hashed:n}},Ee=(t,r)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r||0]).toString().concat(n[0]),{pubkey:i}=Be(n[1]);return{...Be(t,i,r===be.V2?g:void 0),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=Be(n[2]),{pubkey:r}=Be("\0".concat(n[1]),t),i=e.from([1]).toString();return{...Be(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new C(L.InvalidInput);return{...Be(t,ee),isSub:!1,parent:void 0}};async function We(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:ee.toBase58()}}];return(await e.getProgramAccounts($,{filters:r})).map((e=>e.pubkey))}const Re=async e=>{const t=[{memcmp:{offset:0,bytes:ee.toBase58()}}];return await e.getProgramAccounts($,{dataSlice:{offset:32,length:32},filters:t})},De=(e,t)=>{const{pubkey:r,parent:n}=Ee(e),i=Se(r.toBase58());return ve(i,ie,t?n:void 0)},Te=(e,t)=>{if(!e)throw new C(t)},xe=async(e,r)=>{try{const[n]=await t.findProgramAddress([J,r.toBuffer()],Z);if("0"===(await s(e,n)).supply.toString())return;const i=[{memcmp:{offset:0,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(a,{filters:i});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},Ne=async e=>{const r=await e.getProgramAccounts(Z,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((e=>new t(e.account.data.slice(66,98))))},Pe=e=>[{memcmp:{offset:32,bytes:e}},{memcmp:{offset:64,bytes:"2"}}],Le=async(e,t)=>{const r=await(async(e,t)=>{const r=[{memcmp:{offset:0,bytes:"3"}},{memcmp:{offset:66,bytes:t.toBase58()}}];return await e.getProgramAccounts(Z,{filters:r})})(e,t.mint);if(1===r.length)return Q.deserialize(r[0].account.data)},Ce=async(e,t)=>{const r=await(async(e,t)=>{const r=[...Pe(t.toBase58()),{dataSize:165}],n=(await e.getProgramAccounts(a,{filters:r})).map((e=>o.decode(e.account.data))).map((t=>Le(e,t)));return(await Promise.all(n)).filter((e=>void 0!==e))})(e,t);return(await ke(e,r.map((e=>e.nameAccount)))).map(((e,t)=>({key:r[t].nameAccount,mint:r[t].nftMint,reverse:e}))).filter((e=>!!e.reverse))};class je{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(e,t){var r;const n=await e.getAccountInfo(t);if(!n)throw new C(L.AccountDoesNotExist);let i=p(this.schema,je,n.data);i.data=null===(r=n.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:i,nftOwner:await xe(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),n=e=>{if(!e)return;const t=p(this.schema,je,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>n(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const n=[...t];for(;n.length>0;)r.push(...await this._retrieveBatch(e,n.splice(0,100)));return r}}async function He(e,t){if(!await e.getAccountInfo(t))throw new C(L.AccountDoesNotExist);return je.retrieve(e,t)}async function Me(t){const r=_+t,n=w(e.from(r,"utf8")).slice(2);return e.from(n,"hex")}async function Ue(r,n,i){const a=[r];n?a.push(n.toBuffer()):a.push(e.alloc(32)),i?a.push(i.toBuffer()):a.push(e.alloc(32));const[s]=await t.findProgramAddress(a,$);return s}async function ze(e,t){const r=await Me(t.toBase58()),n=await Ue(r,ie),{registry:i}=await je.retrieve(e,n);if(!i.data)throw new C(L.NoAccountData);const a=new l(i.data.slice(0,4),"le").toNumber();return i.data.slice(4,4+a).toString()}async function Fe(e,t){let r=[];for(let e of t){const t=await Me(e.toBase58()),n=await Ue(t,ie);r.push(n)}return(await je.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new l(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))}je.HEADER_LEN=96,je.schema=new Map([[je,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);const Ve=async(e,t=ee)=>{let r=await Me(e);return{pubkey:await Ue(r,void 0,t),hashed:r}},Ge=async(t,r=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const n=t.split(".");if(2===n.length){const t=e.from([r?1:0]).toString().concat(n[0]),{pubkey:i}=await Ve(n[1]);return{...await Ve(t,i),isSub:!0,parent:i}}if(3===n.length&&r){const{pubkey:t}=await Ve(n[2]),{pubkey:r}=await Ve("\0".concat(n[1]),t),i=e.from([1]).toString();return{...await Ve(i.concat(n[0]),r),isSub:!0,parent:t,isSubRecord:!0}}if(n.length>=3)throw new C(L.InvalidInput);return{...await Ve(t,ee),isSub:!1,parent:void 0}},Oe=async(e,t)=>{const{pubkey:r,parent:n}=await Ge(e),i=await Me(r.toBase58());return await Ue(i,ie,t?n:void 0)},Xe=(e,t,r)=>D.sign.detached.verify(e,t,r.toBytes()),Ke=async(r,n)=>{const{pubkey:i}=Ee(n),{registry:a,nftOwner:s}=await je.retrieve(r,i);if(s)return s;try{const i=qe(n,me.SOL),s=await dt(r,n);if(!(null==s?void 0:s.data))throw new C(L.NoRecordData);const o=new TextEncoder,c=e.concat([s.data.slice(0,32),i.toBuffer()]),u=o.encode(c.toString("hex"));if(!Xe(u,s.data.slice(32),a.owner))throw new C(L.InvalidSignature);return new t(s.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e}return a.owner},qe=(e,t)=>{const{pubkey:r}=Ee(t+"."+e,be.V1);return r};async function Ze(e,t,r,n){const i=qe(t,r);let{registry:a}=await je.retrieve(e,i);if(!a.data)throw new C(L.NoRecordData);if(n)return mt(a,r,i);const s=he.get(r);return a.data=a.data.slice(0,s),a}async function Je(e,t,r,n){const i=r.map((e=>qe(t,e))),a=await je.retrieveBatch(e,i);return n?a.map(((e,n)=>{if(e)return mt(e,r[n],qe(t,r[n]))})):a}const Ye=async(e,t)=>await Ze(e,t,me.IPFS,!0),Qe=async(e,t)=>await Ze(e,t,me.ARWV,!0),$e=async(e,t)=>await Ze(e,t,me.ETH,!0),_e=async(e,t)=>await Ze(e,t,me.BTC,!0),et=async(e,t)=>await Ze(e,t,me.LTC,!0),tt=async(e,t)=>await Ze(e,t,me.DOGE,!0),rt=async(e,t)=>await Ze(e,t,me.Email,!0),nt=async(e,t)=>await Ze(e,t,me.Url,!0),it=async(e,t)=>await Ze(e,t,me.Discord,!0),at=async(e,t)=>await Ze(e,t,me.Github,!0),st=async(e,t)=>await Ze(e,t,me.Reddit,!0),ot=async(e,t)=>await Ze(e,t,me.Twitter,!0),ct=async(e,t)=>await Ze(e,t,me.Telegram,!0),ut=async(e,t)=>await Ze(e,t,me.Pic,!0),lt=async(e,t)=>await Ze(e,t,me.SHDW,!0),dt=async(e,t)=>await Ze(e,t,me.SOL),ft=async(e,t)=>await Ze(e,t,me.POINT,!0),pt=async(e,t)=>await Ze(e,t,me.BSC,!0),wt=async(e,t)=>await Ze(e,t,me.Injective,!0),gt=async(e,t)=>await Ze(e,t,me.Backpack,!0),yt=async(e,t)=>await Ze(e,t,me.Background,!0),mt=(r,n,i)=>{const a=null==r?void 0:r.data;if(!a)return;if(0===a.compare(e.alloc(a.length)))return;const s=he.get(n),o=(e=>{const t=Array.from(e);return t.length-1-t.reverse().findIndex((e=>0!==e))+1})(a);if(!s)return a.slice(0,o).toString("utf-8");if(n===me.SOL){const t=new TextEncoder,n=e.concat([a.slice(0,32),i.toBuffer()]),s=t.encode(n.toString("hex"));if(Xe(s,a.slice(32,96),r.owner))return T.encode(a.slice(0,32))}if(s&&o!==s){const t=a.slice(0,o).toString("utf-8");if(n===me.Injective){const e=W(t);if("inj"===e.prefix&&20===e.data.length)return t}else if(n===me.BSC||n===me.ETH){const r=t.slice(0,2),n=t.slice(2);if("0x"===r&&20===e.from(n,"hex").length)return t}else if((n===me.A||n===me.AAAA)&&x.isValid(t))return t;throw new C(L.InvalidRecordData)}if(n===me.ETH||n===me.BSC)return"0x"+a.slice(0,s).toString("hex");if(n===me.Injective)return R("inj",a.slice(0,s),"bech32");if(n===me.A||n===me.AAAA)return x.fromByteArray([...a.slice(0,s)]).toString();if(n===me.Background)return new t(a.slice(0,s)).toString();throw new C(L.InvalidRecordData)},ht=(r,n)=>{if(!he.get(n))return n!==me.CNAME&&n!==me.TXT||(r=N(r)),e.from(r,"utf-8");if(n===me.SOL)throw new C(L.UnsupportedRecord,"Use `serializeSolRecord` for SOL record");if(n===me.ETH||n===me.BSC)return Te("0x"===r.slice(0,2),L.InvalidEvmAddress),e.from(r.slice(2),"hex");if(n===me.Injective){const t=W(r);return Te("inj"===t.prefix,L.InvalidInjectiveAddress),Te(20===t.data.length,L.InvalidInjectiveAddress),e.from(t.data)}if(n===me.A){const t=x.parse(r).toByteArray();return Te(4===t.length,L.InvalidARecord),e.from(t)}if(n===me.AAAA){const t=x.parse(r).toByteArray();return Te(16===t.length,L.InvalidAAAARecord),e.from(t)}if(n===me.Background)return new t(r).toBuffer();throw new C(L.InvalidRecordInput)},bt=(t,r,n,i)=>{const a=e.concat([t.toBuffer(),r.toBuffer()]),s=(new TextEncoder).encode(a.toString("hex")),o=Xe(s,i,n);return Te(o,L.InvalidSignature),e.concat([t.toBuffer(),i])},St=new Map([[me.Backpack,new t("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")],[me.Url,new t("ExXjtfdQe8JacoqP9Z535WzQKjF4CzW1TTRKRgpxvya3")]]),vt=async(e,r,n)=>{const i=Wt(n,r),a=await Ke(e,n),s=await y.retrieve(e,i),o=s.getStalenessId();return 32===o.length&&(a.equals(new t(o))&&s.header.stalenessValidation===m.Solana)},At=async(e,t,r,n)=>{const i=Wt(r,t),a=(await y.retrieve(e,i)).getRoAId();return 0===n.compare(a)},kt=new Set([me.IPFS,me.ARWV,me.LTC,me.DOGE,me.Email,me.Url,me.Discord,me.Github,me.Reddit,me.Twitter,me.Telegram,me.Pic,me.SHDW,me.POINT,me.Backpack,me.TXT,me.CNAME,me.BTC]),It=new Set([me.ETH,me.Injective,me.SOL]),Bt=(e,r)=>{if(kt.has(r)){const t=e.toString("utf-8");return r===me.CNAME||r===me.TXT?P(t):t}if(r===me.SOL)return new t(e).toBase58();if(r===me.ETH||r===me.BSC)return"0x"+e.toString("hex");if(r===me.Injective)return R("inj",e,"bech32");if(r===me.A||r===me.AAAA)return x.fromByteArray([...e]).toString();throw new C(L.InvalidARecord)},Et=(e,r)=>{if(kt.has(r))return r!==me.CNAME&&r!==me.TXT||(e=N(e)),Buffer.from(e,"utf-8");if(r===me.SOL)return new t(e).toBuffer();if(r===me.ETH||r===me.BSC)return Te("0x"===e.slice(0,2),L.InvalidEvmAddress),Buffer.from(e.slice(2),"hex");if(r===me.Injective){const t=W(e);return Te("inj"===t.prefix,L.InvalidInjectiveAddress),Te(20===t.data.length,L.InvalidInjectiveAddress),Buffer.from(t.data)}if(r===me.A){const t=x.parse(e).toByteArray();return Te(4===t.length,L.InvalidARecord),Buffer.from(t)}if(r===me.AAAA){const t=x.parse(e).toByteArray();return Te(16===t.length,L.InvalidAAAARecord),Buffer.from(t)}throw new C(L.InvalidARecord)},Wt=(e,t)=>{const{pubkey:r}=Ee(e),n=Se("".concat(t));return ve(n,g,r)};async function Rt(e,t,r,i,a,s,o,c){const u=await Me(t),l=await Ue(u,o,c),d=s||await e.getMinimumBalanceForRentExemption(r);let f;if(c){const{registry:t}=await He(e,c);f=t.owner}return M($,n.programId,l,a,i,u,new H(d),new j(r),o,c,f)}async function Dt(e,t,r,n,i,a){const s=await Me(t),o=await Ue(s,i,a);let c;c=i||(await je.retrieve(e,o)).registry.owner;return U($,o,new j(r),n,c)}async function Tt(e,t,r,n,i,a){const s=await Me(t),o=await Ue(s,n,i);let c;c=n||(await je.retrieve(e,o)).registry.owner;return z($,o,r,c,n,i,a)}async function xt(e,t,r,n,i){const a=await Me(t),s=await Ue(a,n,i);let o;o=n||(await je.retrieve(e,s)).registry.owner;return F($,s,r,o)}const Nt=async(e,r,s,o,l,d=ue,f)=>{if(r.includes(".")||r.trim().toLowerCase()!==r)throw new C(L.InvalidDomain);const[p]=t.findProgramAddressSync([te.toBuffer()],te),w=Se(r),g=ve(w,void 0,ee),y=Se(g.toBase58()),m=ve(y,p),[h]=t.findProgramAddressSync([g.toBuffer()],te),b=le.findIndex((e=>null==f?void 0:f.equals(e)));let S;const v=[];if(-1!==b&&f){S=c(d,f,!0);const t=await e.getAccountInfo(S);if(!(null==t?void 0:t.data)){const e=u(o,S,f,d);v.push(e)}}const A=new B(e,E("mainnet-beta")),k=await A.getData(),I=de.get(d.toBase58());if(!I)throw new C(L.SymbolNotFound,`No symbol found for mint ${d.toBase58()}`);const W=k.productPrice.get("Crypto."+I+"/USD"),R=k.productFromSymbol.get("Crypto."+I+"/USD"),D=c(d,pe),T=new O({name:r,space:s,referrerIdxOpt:-1!=b?b:null}).getInstruction(te,$,ee,g,m,n.programId,p,o,l,fe,W.productAccountKey,new t(R.price_account),D,a,i,h,S);return v.push(T),[[],v]},Pt=async(e,r,a,s,o)=>{let[c]=await t.findProgramAddress([te.toBuffer()],te),u=await Me(e.toBase58()),l=await Ue(u,c,s);return[[],[new G({name:r}).getInstruction(te,$,ee,l,n.programId,c,a,i,s,o)]]},Lt=async(e,t,r,n=2e3)=>{const i=[],a=t.split(".")[0];if(!a)throw new C(L.InvalidSubdomain);const{parent:s,pubkey:o}=Ee(t),c=await e.getMinimumBalanceForRentExemption(n+je.HEADER_LEN),u=await Rt(e,"\0".concat(a),n,r,r,c,void 0,s);i.push(u);const l=De(t,!0),d=await e.getAccountInfo(l);if(!(null==d?void 0:d.data)){const[,e]=await Pt(o,"\0".concat(a),r,s,r);i.push(...e)}return[[],i]},Ct=async(e,t,r,i,a,s)=>{Te(r!==me.SOL,L.UnsupportedRecord);const{pubkey:o,hashed:c,parent:u}=Ee(`${r}.${t}`,be.V1),l=ht(i,r).length,d=await e.getMinimumBalanceForRentExemption(l+je.HEADER_LEN);return M($,n.programId,o,a,s,c,new H(d),new j(l),void 0,u,a)},jt=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return h(i,a,s,n,$,"".concat(t),Et(r,t),b)},Ht=async(e,t,r,n,i,a)=>{Te(r!==me.SOL,L.UnsupportedRecord);const{pubkey:s}=Ee(`${r}.${t}`,be.V1),o=await e.getAccountInfo(s);Te(!!(null==o?void 0:o.data),L.AccountDoesNotExist);const c=ht(n,r);if((null==o?void 0:o.data.slice(96).length)!==c.length)return[F($,s,a,i),await Ct(e,t,r,n,i,a)];return[U($,s,new j(0),c,i)]},Mt=(t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${r}.${t}`,be.V2);if(!o)throw new Error("Invalid parent");return S(a,s,o,i,$,"".concat(r),e.from(n),b)},Ut=(e,t,r,n)=>{const{pubkey:i,parent:a}=Ee(`${t}.${e}`,be.V2);if(!a)throw new Error("Invalid parent");return v(n,a,r,i,$,b)},zt=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${r}.${t}`,be.V2);if(!o)throw new Error("Invalid parent");return A(i,s,o,n,a,$,e,b)},Ft=(e,t,r,n,i)=>{const{pubkey:a,parent:s}=Ee(`${t}.${e}`,be.V2);if(!s)throw new Error("Invalid parent");return k(n,$,a,s,r,i,b)},Vt=(e,t,r,n,i,a)=>{const{pubkey:s,parent:o}=Ee(`${t}.${e}`,be.V2);if(!o)throw new Error("Invalid parent");return I(n,s,o,r,$,m.Ethereum,i,a,b)},Gt=async(e,t,r,i,a,s)=>{const{pubkey:o,hashed:c,parent:u}=Ee(`${me.SOL}.${t}`,be.V1),l=bt(r,o,i,a).length,d=await e.getMinimumBalanceForRentExemption(l+je.HEADER_LEN);return[M($,n.programId,o,i,s,c,new H(d),new j(l),void 0,u,i)]},Ot=async(e,t,r,n,i,a)=>{const{pubkey:s}=Ee(`${me.SOL}.${t}`,be.V1),o=await e.getAccountInfo(s);if(Te(!!(null==o?void 0:o.data),L.AccountDoesNotExist),96!==(null==o?void 0:o.data.length))return[F($,s,a,n),await Gt(e,t,r,n,i,a)];const c=bt(r,s,n,i);return[U($,s,new j(0),c,n)]},Xt=(e,r,i)=>{const{pubkey:a}=Ee(e),[s]=t.findProgramAddressSync([a.toBuffer()],te),[o]=t.findProgramAddressSync([a.toBuffer(),Uint8Array.from([1,1])],te);return(new K).getInstruction(te,$,n.programId,a,De(e),o,s,ie,r,i)},Kt=(e,r,s,o,c,u,l,d,f)=>{const[p]=t.findProgramAddressSync([s.toBuffer()],te);return new X({space:r,name:e}).getInstruction(te,$,ee,s,o,n.programId,ie,c,u,l,d,f,ge,a,i,p,ye)},qt=async(e,t,r,n)=>{const{pubkey:i,isSub:a,parent:s}=Ee(t);if(!s||!a)throw new C(L.InvalidSubdomain);const{registry:o}=await je.retrieve(e,i);let c,u;n&&(c=s,u=(await je.retrieve(e,s)).registry.owner);return z($,i,r,o.owner,void 0,c,u)};async function Zt(e,t,r,i,a){const s=await Me(t),o=await Ue(s,void 0,se),c=await e.getMinimumBalanceForRentExemption(i+je.HEADER_LEN);let u=[M($,n.programId,o,r,a,s,new H(c),new j(i),void 0,se,ae)];return u=u.concat(await ir(e,t,o,r,a)),u}async function Jt(e,t,r,n){const i=await Me(e),a=await Ue(i,void 0,se);return[U($,a,new j(r),n,t)]}async function Yt(e,t,r,n,i){const a=await Me(t),s=await Ue(a,void 0,se);let o=[z($,s,n,r,void 0)];const c=await Me(r.toString());return await Ue(c,ae,void 0),o.push(await xt(e,r.toString(),i,ae,se)),o=o.concat(await ir(e,t,s,n,i)),o}async function Qt(e,t){const r=await Me(e),n=await Ue(r,void 0,se),i=await Me(t.toString()),a=await Ue(i,ae,se);return[F($,n,t,t),F($,a,t,t)]}async function $t(e){const t=await Me(e);return await Ue(t,void 0,se)}async function _t(e,t){const r=await Me(t),n=await Ue(r,void 0,se),{registry:i}=await je.retrieve(e,n);return i}async function er(e,r){const n=await Me(r.toString()),i=await Ue(n,ae,se);let a=await nr.retrieve(e,i);return[a.twitterHandle,new t(a.twitterRegistryKey)]}async function tr(e,r){const n=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:ae.toBase58()}}],i=await e.getProgramAccounts($,{filters:n});for(const e of i)if(e.account.data.length>je.HEADER_LEN+32){let r=e.account.data.slice(je.HEADER_LEN),n=p(nr.schema,nr,r);return[n.twitterHandle,new t(n.twitterRegistryKey)]}throw new C(L.AccountDoesNotExist)}async function rr(r,n){const i=[{memcmp:{offset:0,bytes:se.toBase58()}},{memcmp:{offset:32,bytes:n.toBase58()}},{memcmp:{offset:64,bytes:new t(e.alloc(32,0)).toBase58()}}],a=await r.getProgramAccounts($,{filters:i});if(a.length>1)throw new C(L.MultipleRegistries);return a[0].account.data.slice(je.HEADER_LEN)}class nr{constructor(e){this.twitterRegistryKey=e.twitterRegistryKey,this.twitterHandle=e.twitterHandle}static async retrieve(e,t){let r=await e.getAccountInfo(t,"processed");if(!r)throw new C(L.InvalidReverseTwitter);return p(this.schema,nr,r.data.slice(je.HEADER_LEN))}}async function ir(t,r,i,a,s){const o=await Me(a.toString()),c=await Ue(o,ae,se);let u=d(nr.schema,new nr({twitterRegistryKey:i.toBytes(),twitterHandle:r}));return[M($,n.programId,c,a,s,o,new H(await t.getMinimumBalanceForRentExemption(u.length+je.HEADER_LEN)),new j(u.length),ae,se,ae),U($,c,new j(0),e.from(u),ae)]}nr.schema=new Map([[nr,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const ar=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class sr{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(e){return f(this.schema,sr,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new C(L.FavouriteDomainNotFound);return this.deserialize(r.data)}static async getKey(r,n){return await t.findProgramAddress([e.from("favourite_domain"),n.toBuffer()],r)}static getKeySync(r,n){return t.findProgramAddressSync([e.from("favourite_domain"),n.toBuffer()],r)}}sr.schema=new Map([[sr,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const or=async(e,r)=>{const[n]=sr.getKeySync(ar,new t(r)),i=await sr.retrieve(e,n),a=await Ae(e,i.nameAccount);return{domain:i.nameAccount,reverse:a}};var cr;!function(e){e.DegenPoet1="DegenPoet#1"}(cr||(cr={}));const ur=new t("ART5dr4bDic2sQVZoFheEmUxwQq5VGSx9he7JxHcXNQD"),lr=(e,t)=>{const r=Se(t),n=Se(e),i=ve(n,void 0,we);return{domainKey:i,bgKey:ve(r,void 0,i)}},dr=e=>{if(e===cr.DegenPoet1)return ur;throw new C(L.InvalidCustomBg)};export{ne as BONFIDA_FIDA_BNB,ce as BONFIDA_USDC_BNB,we as CUSTOM_BG_TLD,cr as CustomBg,L as ErrorType,sr as FavouriteDomain,St as GUARDIANS,_ as HASH_PREFIX,ye as METAPLEX_ID,ar as NAME_OFFERS_ID,$ as NAME_PROGRAM_ID,je as NameRegistryState,j as Numberu32,H as Numberu64,re as PYTH_FIDA_PRICE_ACC,fe as PYTH_MAPPING_ACC,he as RECORD_V1_SIZE,le as REFERRERS,te as REGISTER_PROGRAM_ID,ie as REVERSE_LOOKUP_CLASS,ee as ROOT_DOMAIN_ACCOUNT,me as Record,be as RecordVersion,nr as ReverseTwitterRegistryState,It as SELF_SIGNED,C as SNSError,oe as SOL_RECORD_SIG_LEN,de as TOKENS_SYM_MINT,se as TWITTER_ROOT_PARENT_REGISTRY_KEY,ae as TWITTER_VERIFICATION_AUTHORITY,ue as USDC_MINT,kt as UTF8_ENCODED,pe as VAULT_OWNER,ge as WOLVES_COLLECTION_METADATA,Xt as burnDomain,K as burnInstruction,Jt as changeTwitterRegistryData,Yt as changeVerifiedPubkey,Te as check,Xe as checkSolRecord,M as createInstruction,O as createInstructionV3,Rt as createNameRegistry,Ct as createRecordInstruction,jt as createRecordV2Instruction,G as createReverseInstruction,Pt as createReverseName,ir as createReverseTwitterRegistry,Gt as createSolRecordInstruction,Lt as createSubdomain,V as createV2Instruction,Zt as createVerifiedTwitterRegistry,X as createWithNftInstruction,F as deleteInstruction,xt as deleteNameRegistry,Ut as deleteRecordV2,Qt as deleteTwitterRegistry,mt as deserializeRecord,Bt as deserializeRecordV2Content,Vt as ethValidateRecordV2Content,Ie as findSubdomains,We as getAllDomains,Re as getAllRegisteredDomains,dr as getArtistPubkey,Qe as getArweaveRecord,yt as getBackgroundRecord,gt as getBackpackRecord,pt as getBscRecord,_e as getBtcRecord,lr as getCustomBgKeys,it as getDiscordRecord,tt as getDogeRecord,Ge as getDomainKey,Ee as getDomainKeySync,rt as getEmailRecord,$e as getEthRecord,or as getFavoriteDomain,at as getGithubRecord,er as getHandleAndRegistryKey,Me as getHashedName,Se as getHashedNameSync,wt as getInjectiveRecord,Ye as getIpfsRecord,et as getLtcRecord,Ue as getNameAccountKey,ve as getNameAccountKeySync,He as getNameOwner,ut as getPicRecord,ft as getPointRecord,Ze as getRecord,qe as getRecordKeySync,Wt as getRecordV2Key,Je as getRecords,st as getRedditRecord,Oe as getReverseKey,De as getReverseKeySync,lt as getShdwRecord,dt as getSolRecord,ct as getTelegramRecord,Ce as getTokenizedDomains,tr as getTwitterHandleandRegistryKeyViaFilters,ot as getTwitterRecord,_t as getTwitterRegistry,rr as getTwitterRegistryData,$t as getTwitterRegistryKey,nt as getUrlRecord,ze as performReverseLookup,Fe as performReverseLookupBatch,q as reallocInstruction,Nt as registerDomainName,Kt as registerWithNft,Ke as resolve,xe as retrieveNftOwner,Ne as retrieveNfts,Ae as reverseLookup,ke as reverseLookupBatch,ht as serializeRecord,Et as serializeRecordV2Content,bt as serializeSolRecord,z as transferInstruction,Tt as transferNameOwnership,qt as transferSubdomain,U as updateInstruction,Dt as updateNameRegistryData,Ht as updateRecordInstruction,Mt as updateRecordV2Instruction,Ot as updateSolRecordInstruction,zt as validateRecordV2Content,At as verifyRightOfAssociation,vt as verifyStaleness,Ft as writRoaRecordV2};
|
package/dist/record_v2.d.ts
CHANGED
|
@@ -1,27 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Schema } from "borsh";
|
|
3
2
|
import { Record } from "./types/record";
|
|
4
3
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Ethereum = 2,
|
|
9
|
-
Injective = 3
|
|
10
|
-
}
|
|
11
|
-
export declare enum UserSig {
|
|
12
|
-
None = 0,
|
|
13
|
-
Solana = 1
|
|
14
|
-
}
|
|
15
|
-
export interface Signature {
|
|
16
|
-
signatureType: GuardianSig | UserSig;
|
|
17
|
-
signature: Buffer;
|
|
18
|
-
}
|
|
19
|
-
export declare const NullUserSig: Signature;
|
|
20
|
-
export declare const NullGuardianSig: Signature;
|
|
21
|
-
/**
|
|
22
|
-
* Map of record and guardian Public key
|
|
23
|
-
*/
|
|
24
|
-
export declare const Guardians: Map<Record, Buffer>;
|
|
4
|
+
export declare const GUARDIANS: Map<Record, PublicKey>;
|
|
5
|
+
export declare const verifyStaleness: (connection: Connection, record: Record, domain: string) => Promise<boolean>;
|
|
6
|
+
export declare const verifyRightOfAssociation: (connection: Connection, record: Record, domain: string, verifier: Buffer) => Promise<boolean>;
|
|
25
7
|
/**
|
|
26
8
|
* Set of records that are UTF-8 encoded strings
|
|
27
9
|
*/
|
|
@@ -31,144 +13,6 @@ export declare const UTF8_ENCODED: Set<Record>;
|
|
|
31
13
|
* in the record itself.
|
|
32
14
|
*/
|
|
33
15
|
export declare const SELF_SIGNED: Set<Record>;
|
|
34
|
-
/**
|
|
35
|
-
* This function returns the byte length given a signature type
|
|
36
|
-
* @param signatureType The type of signature Guardian or User
|
|
37
|
-
* @returns The byte length
|
|
38
|
-
*/
|
|
39
|
-
export declare const getSignatureByteLength: (signatureType: GuardianSig | UserSig) => number;
|
|
40
|
-
/**
|
|
41
|
-
* This function returns the Guardian's public key for the record
|
|
42
|
-
* @param record The record type
|
|
43
|
-
* @param owner The owner of the domain
|
|
44
|
-
* @returns The guardian's public key
|
|
45
|
-
*/
|
|
46
|
-
export declare const getGuardianPublickey: (record: Record) => Buffer;
|
|
47
|
-
/**
|
|
48
|
-
* This function verifies a Solana message's signature
|
|
49
|
-
* @param message The message to verify as a Buffer
|
|
50
|
-
* @param signature The signature as a Buffer
|
|
51
|
-
* @param publicKey The expected signer public key as Buffer
|
|
52
|
-
* @returns True if the signature is value and false otherwise
|
|
53
|
-
*/
|
|
54
|
-
export declare const verifySolanaSignature: (message: Buffer, signature: Buffer, publicKey: Buffer) => boolean;
|
|
55
|
-
/**
|
|
56
|
-
* This function verifies an Ethereum message's signature
|
|
57
|
-
* @param message The message to verify as a Buffer
|
|
58
|
-
* @param signature The signature as a Buffer
|
|
59
|
-
* @param publicKey The expected signer public key as Buffer
|
|
60
|
-
* @returns True if the signature is value and false otherwise
|
|
61
|
-
*/
|
|
62
|
-
export declare const verifyEthereumSignature: (message: string, signature: string, publicKey: string) => boolean;
|
|
63
|
-
/**
|
|
64
|
-
* This function verifies an Injective message's signature
|
|
65
|
-
* @param message The message to verify as a Buffer
|
|
66
|
-
* @param signature The signature as a Buffer
|
|
67
|
-
* @param publicKey The expected signer public key as Buffer
|
|
68
|
-
* @returns True if the signature is value and false otherwise
|
|
69
|
-
*/
|
|
70
|
-
export declare const verifyInjectiveSignature: (message: string, signature: string, publicKey: string) => boolean;
|
|
71
|
-
/**
|
|
72
|
-
* This function verifies a Guardian's signature
|
|
73
|
-
* @param message The message to verify as a Buffer
|
|
74
|
-
* @param signature The signature as a Buffer
|
|
75
|
-
* @param signer The signer of the record
|
|
76
|
-
* @param publicKey
|
|
77
|
-
* @returns True if the signature is value and false otherwise
|
|
78
|
-
*/
|
|
79
|
-
export declare const verifyGuardianSignature: (message: Buffer, signature: Buffer, signer: Buffer, guardianSig: GuardianSig) => boolean;
|
|
80
|
-
export declare const verifyUserSignature: (message: Buffer, signature: Buffer, signer: Buffer, userSig: UserSig) => boolean;
|
|
81
|
-
export declare class RecordV2Header {
|
|
82
|
-
userSignature: UserSig;
|
|
83
|
-
guardianSignature: GuardianSig;
|
|
84
|
-
contentLength: number;
|
|
85
|
-
static LEN: number;
|
|
86
|
-
static schema: Schema;
|
|
87
|
-
constructor(obj: {
|
|
88
|
-
userSignature: number;
|
|
89
|
-
guardianSignature: number;
|
|
90
|
-
contentLength: number;
|
|
91
|
-
});
|
|
92
|
-
serialize(): Uint8Array;
|
|
93
|
-
/**
|
|
94
|
-
* This function deserializes a buffer into a `RecordV2Header`
|
|
95
|
-
* @param buffer The buffer to deserialize into a `RecordV2Header`
|
|
96
|
-
* @returns A RecordV2Header
|
|
97
|
-
*/
|
|
98
|
-
static deserialize(buffer: Buffer): RecordV2Header;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
*
|
|
102
|
-
*/
|
|
103
|
-
export interface RetrieveConfig {
|
|
104
|
-
skipUserSig?: boolean;
|
|
105
|
-
skipGuardianSig?: boolean;
|
|
106
|
-
}
|
|
107
|
-
export declare class RecordV2 {
|
|
108
|
-
header: RecordV2Header;
|
|
109
|
-
buffer: Buffer;
|
|
110
|
-
constructor(obj: {
|
|
111
|
-
header: RecordV2Header;
|
|
112
|
-
buffer: Buffer;
|
|
113
|
-
});
|
|
114
|
-
getLength(): number;
|
|
115
|
-
/**
|
|
116
|
-
* This function deserializes a buffer into a `RecordV2`
|
|
117
|
-
* @param buffer The buffer to deserialize into a `RecordV2`
|
|
118
|
-
* @returns A RecordV2
|
|
119
|
-
*/
|
|
120
|
-
static deserializeUnchecked(buffer: Buffer): RecordV2;
|
|
121
|
-
/**
|
|
122
|
-
* This function serializes a `RecordV2` into a Buffer
|
|
123
|
-
* @returns A Buffer
|
|
124
|
-
*/
|
|
125
|
-
serialize(): Buffer;
|
|
126
|
-
/**
|
|
127
|
-
* This function deserializes the content of a record using the SNS-IP 1 guideline
|
|
128
|
-
* @param record The record type
|
|
129
|
-
* @returns The deserialized content as a string
|
|
130
|
-
*/
|
|
131
|
-
deserializeContent(record: Record): string;
|
|
132
|
-
/**
|
|
133
|
-
* This function returns the content of the record as a Buffer
|
|
134
|
-
* @returns The content of the record
|
|
135
|
-
*/
|
|
136
|
-
getContent(): Buffer;
|
|
137
|
-
/**
|
|
138
|
-
* This function creates a `RecordV2` object
|
|
139
|
-
* @param content The content to store in the record as a string
|
|
140
|
-
* @param record The record type
|
|
141
|
-
* @param userSignature The optional user signature of the record
|
|
142
|
-
* @param guardianSignature The option guardian signature of the record
|
|
143
|
-
* @returns The `RecordV2` created
|
|
144
|
-
*/
|
|
145
|
-
static new(content: string, record: Record, userSignature?: Signature, guardianSignature?: Signature): RecordV2;
|
|
146
|
-
/**
|
|
147
|
-
* This function verifies the signature of a message by a guardian
|
|
148
|
-
* @param msg The message to verify
|
|
149
|
-
* @param signer The expected signer of the message
|
|
150
|
-
* @returns True if the signature is value and false otherwise
|
|
151
|
-
*/
|
|
152
|
-
checkGuardianSignature(msg: Buffer, signer: Buffer): boolean;
|
|
153
|
-
/**
|
|
154
|
-
* This function verifies the signature of a message by a user
|
|
155
|
-
* @param msg The message to verify
|
|
156
|
-
* @param signer The expected signer of the message
|
|
157
|
-
* @returns True if the signature is value and false otherwise
|
|
158
|
-
*/
|
|
159
|
-
checkUserSignature(msg: Buffer, signer: Buffer): boolean;
|
|
160
|
-
/**
|
|
161
|
-
* This function fetches the record of a domain. An optional
|
|
162
|
-
* config can be specified to verify or not the signatures of the record
|
|
163
|
-
* @param connection The Solana RPC connection object
|
|
164
|
-
* @param record The type of record to fetch
|
|
165
|
-
* @param domain The domain for which to fetch the record
|
|
166
|
-
* @param config Optional config
|
|
167
|
-
* @returns The `RecordV2` object stored in the record account
|
|
168
|
-
*/
|
|
169
|
-
static retrieve(connection: Connection, record: Record, domain: string, config?: RetrieveConfig): Promise<RecordV2>;
|
|
170
|
-
static retrieveBatch(connection: Connection, records: Record[], domain: string): Promise<(RecordV2 | undefined)[]>;
|
|
171
|
-
}
|
|
172
16
|
/**
|
|
173
17
|
* This function deserializes a buffer based on the type of record it corresponds to
|
|
174
18
|
* If the record is not properly serialized according to SNS-IP 1 this function will throw an error
|
|
@@ -185,14 +29,6 @@ export declare const deserializeRecordV2Content: (content: Buffer, record: Recor
|
|
|
185
29
|
* @returns The serialized content as a buffer
|
|
186
30
|
*/
|
|
187
31
|
export declare const serializeRecordV2Content: (content: string, record: Record) => Buffer;
|
|
188
|
-
/**
|
|
189
|
-
* This function returns the message to sign as Buffer for a domain
|
|
190
|
-
* @param content The content that will be stored in the record
|
|
191
|
-
* @param domain The domain which owns the reocrd
|
|
192
|
-
* @param record The record type
|
|
193
|
-
* @returns The Buffer to sign
|
|
194
|
-
*/
|
|
195
|
-
export declare const getMessageToSign: (content: string, domain: string, record: Record) => Buffer;
|
|
196
32
|
/**
|
|
197
33
|
* This function derives a record v2 key
|
|
198
34
|
* @param domain The .sol domain name
|
package/dist/utils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
3
3
|
import { Buffer } from "buffer";
|
|
4
4
|
import { ErrorType } from "./error";
|
|
5
|
-
import { RecordVersion } from "record";
|
|
5
|
+
import { RecordVersion } from "./types/record";
|
|
6
6
|
export declare const getHashedNameSync: (name: string) => Buffer;
|
|
7
7
|
export declare const getNameAccountKeySync: (hashed_name: Buffer, nameClass?: PublicKey, nameParent?: PublicKey) => PublicKey;
|
|
8
8
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bonfida/spl-name-service",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.16",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"typescript": "^5.0.4"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
+
"@bonfida/sns-records": "0.0.1-alpha.6",
|
|
62
63
|
"@ethersproject/address": "^5.7.0",
|
|
63
64
|
"@ethersproject/hash": "^5.7.0",
|
|
64
65
|
"@ethersproject/sha2": "^5.7.0",
|