@bonfida/spl-name-service 0.2.4 → 0.2.6
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 +1 -0
- package/dist/deprecated/utils.d.ts +1 -0
- package/dist/favorite-domain.d.ts +40 -0
- package/dist/index.cjs +1 -0
- package/dist/index.mjs +1 -0
- package/dist/instructions.d.ts +1 -0
- package/dist/int.d.ts +1 -0
- package/dist/nft.d.ts +1 -0
- package/dist/record.d.ts +7 -0
- package/dist/state.d.ts +1 -0
- package/dist/twitter_bindings.d.ts +1 -0
- package/dist/types/record.d.ts +2 -1
- package/dist/utils.d.ts +1 -0
- package/package.json +41 -35
- package/dist/index.js +0 -1
- package/src/bindings.ts +0 -445
- package/src/constants.ts +0 -101
- package/src/deprecated/index.ts +0 -1
- package/src/deprecated/record.ts +0 -14
- package/src/deprecated/tokens.ts +0 -52
- package/src/deprecated/utils.ts +0 -186
- package/src/favorite-domain.ts +0 -25
- package/src/index.ts +0 -14
- package/src/instructions.ts +0 -585
- package/src/int.ts +0 -75
- package/src/nft.ts +0 -95
- package/src/record.ts +0 -256
- package/src/resolve.ts +0 -77
- package/src/state.ts +0 -163
- package/src/twitter_bindings.ts +0 -439
- package/src/types/record.ts +0 -24
- package/src/utils.ts +0 -246
package/dist/bindings.d.ts
CHANGED
|
@@ -1,4 +1,44 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Buffer } from "buffer";
|
|
3
|
+
import { Schema } from "borsh";
|
|
1
4
|
import { PublicKey, Connection } from "@solana/web3.js";
|
|
5
|
+
export declare const NAME_OFFERS_ID: PublicKey;
|
|
6
|
+
export declare class FavouriteDomain {
|
|
7
|
+
tag: number;
|
|
8
|
+
nameAccount: PublicKey;
|
|
9
|
+
static schema: Schema;
|
|
10
|
+
constructor(obj: {
|
|
11
|
+
tag: number;
|
|
12
|
+
nameAccount: Uint8Array;
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* This function can be used to deserialize a Buffer into a FavouriteDomain object
|
|
16
|
+
* @param data The buffer to deserialize
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
static deserialize(data: Buffer): FavouriteDomain;
|
|
20
|
+
/**
|
|
21
|
+
* This function can be used to retrieve and deserialize a favorite domain
|
|
22
|
+
* @param connection The Solana RPC connection object
|
|
23
|
+
* @param key The favorite account key
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
static retrieve(connection: Connection, key: PublicKey): Promise<FavouriteDomain>;
|
|
27
|
+
/**
|
|
28
|
+
* This function can be used to derive the key of a favorite domain
|
|
29
|
+
* @param programId The name offer program ID
|
|
30
|
+
* @param owner The owner to retrieve the favorite domain for
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
static getKey(programId: PublicKey, owner: PublicKey): Promise<[PublicKey, number]>;
|
|
34
|
+
/**
|
|
35
|
+
* This function can be used to derive the key of a favorite domain
|
|
36
|
+
* @param programId The name offer program ID
|
|
37
|
+
* @param owner The owner to retrieve the favorite domain for
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
static getKeySync(programId: PublicKey, owner: PublicKey): [PublicKey, number];
|
|
41
|
+
}
|
|
2
42
|
/**
|
|
3
43
|
* This function can be used to retrieve the favorite domain of a user
|
|
4
44
|
* @param connection The Solana RPC connection object
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("@solana/web3.js"),t=require("buffer"),r=require("@solana/spl-token"),i=require("bn.js"),a=require("borsh"),s=require("@ethersproject/sha2"),n=require("@pythnetwork/client");function o(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=o(require("tweetnacl"));class u extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(4===r.length)return r;if(r.length>4)throw new Error("Numberu32 too large");const i=t.Buffer.alloc(4);return r.copy(i),i}static fromBuffer(e){if(4!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class p extends i{toBuffer(){const e=super.toArray().reverse(),r=t.Buffer.from(e);if(8===r.length)return r;if(r.length>8)throw new Error("Numberu64 too large");const i=t.Buffer.alloc(8);return r.copy(i),i}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new i([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function l(r,i,a,s,n,o,c,p,l,f,d){const y=[t.Buffer.from(Int8Array.from([0])),new u(o.length).toBuffer(),o,c.toBuffer(),p.toBuffer()],w=t.Buffer.concat(y),g=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return l?g.push({pubkey:l,isSigner:!0,isWritable:!1}):g.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),f?g.push({pubkey:f,isSigner:!1,isWritable:!1}):g.push({pubkey:new e.PublicKey(t.Buffer.alloc(32)),isSigner:!1,isWritable:!1}),d&&g.push({pubkey:d,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:g,programId:r,data:w})}function f(r,i,a,s,n){const o=[t.Buffer.from(Int8Array.from([1])),a.toBuffer(),new u(s.length).toBuffer(),s],c=t.Buffer.concat(o),p=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:p,programId:r,data:c})}function d(r,i,a,s,n,o,c){const u=[t.Buffer.from(Int8Array.from([2])),a.toBuffer()],p=t.Buffer.concat(u),l=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c||s,isSigner:!0,isWritable:!1}];return n&&l.push({pubkey:n,isSigner:!0,isWritable:!1}),c&&o&&(n||l.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),l.push({pubkey:o,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:l,programId:r,data:p})}function y(r,i,a,s){const n=[t.Buffer.from(Int8Array.from([3]))],o=t.Buffer.concat(n),c=[{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:c,programId:r,data:o})}class w{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return a.serialize(w.schema,this)}getInstruction(i,a,s,n,o,c,u,p,l,f,d){const y=t.Buffer.from(this.serialize()),w=[{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:r.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}];return new e.TransactionInstruction({keys:w,programId:i,data:y})}}w.schema=new Map([[w,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class g{constructor(e){this.tag=5,this.name=e.name}serialize(){return a.serialize(g.schema,this)}getInstruction(r,i,a,s,n,o,c,u,p){const l=t.Buffer.from(this.serialize());let f=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0}];if(u){if(!p)throw new Error("Missing parent name owner");f.push({pubkey:u,isSigner:!1,isWritable:!0}),f.push({pubkey:p,isSigner:!0,isWritable:!1})}return new e.TransactionInstruction({keys:f,programId:r,data:l})}}g.schema=new Map([[g,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class m{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return a.serialize(m.schema,this)}getInstruction(r,i,a,s,n,o,c,u,p,l,f,d,y,w,g,m,b){const h=t.Buffer.from(this.serialize());let S=[];return S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:a,isSigner:!1,isWritable:!1}),S.push({pubkey:s,isSigner:!1,isWritable:!0}),S.push({pubkey:n,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:p,isSigner:!1,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!1}),S.push({pubkey:f,isSigner:!1,isWritable:!1}),S.push({pubkey:d,isSigner:!1,isWritable:!1}),S.push({pubkey:y,isSigner:!1,isWritable:!0}),S.push({pubkey:w,isSigner:!1,isWritable:!1}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),b&&S.push({pubkey:b,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:S,programId:r,data:h})}}m.schema=new Map([[m,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const b=new e.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),h=t.Buffer.from("tokenized_name"),S=async(t,i)=>{try{const[a]=await e.PublicKey.findProgramAddress([h,i.toBuffer()],b);if("0"===(await r.getMint(t,a)).supply.toString())return;const s=[{memcmp:{offset:0,bytes:a.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await t.getProgramAccounts(r.TOKEN_PROGRAM_ID,{filters:s});if(1!=n.length)return;return new e.PublicKey(n[0].account.data.slice(32,64))}catch{return}};class R{constructor(t){this.parentName=new e.PublicKey(t.parentName),this.owner=new e.PublicKey(t.owner),this.class=new e.PublicKey(t.class)}static async retrieve(e,t){var r;const i=await e.getAccountInfo(t);if(!i)throw new Error("Invalid name account provided");let s=a.deserializeUnchecked(this.schema,R,i.data);s.data=null===(r=i.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:s,nftOwner:await S(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),i=e=>{if(!e)return;const t=a.deserializeUnchecked(this.schema,R,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>i(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const i=[...t];for(;i.length>0;)r.push(...await this._retrieveBatch(e,i.splice(0,100)));return r}}R.HEADER_LEN=96,R.schema=new Map([[R,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class x{constructor(e){this.name=e.name,this.ticker=e.ticker,this.mint=e.mint,this.decimals=e.decimals,this.website=null==e?void 0:e.website,this.logoUri=null==e?void 0:e.logoUri}serialize(){return a.serialize(x.schema,this)}static deserialize(e){return a.deserializeUnchecked(x.schema,x,e)}}x.schema=new Map([[x,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class k{constructor(e){this.mint=e.mint}serialize(){return a.serialize(k.schema,this)}static deserialize(e){return a.deserializeUnchecked(k.schema,k,e)}}k.schema=new Map([[k,{kind:"struct",fields:[["mint",[32]]]}]]);const v=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),B="SPL Name Service",E=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),P=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),A=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),I=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),K=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),T=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),W=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),N=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),D=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),_=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs")],O=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),H=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),z=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi");async function F(e,t){if(!await e.getAccountInfo(t))throw new Error("Unable to find the given account.");return R.retrieve(e,t)}async function L(e){const r=B+e,i=s.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")}async function M(r,i,a){const s=[r];i?s.push(i.toBuffer()):s.push(t.Buffer.alloc(32)),a?s.push(a.toBuffer()):s.push(t.Buffer.alloc(32));const[n]=await e.PublicKey.findProgramAddress(s,v);return n}const C=async(e,t=E)=>{let r=await L(e);return{pubkey:await M(r,void 0,t),hashed:r}},U=async(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:a}=await C(i[1]);return{...await C(e,a),isSub:!0,parent:a}}if(3===i.length&&r){const{pubkey:e}=await C(i[2]),{pubkey:r}=await C("\0".concat(i[1]),e),a=t.Buffer.from([1]).toString();return{...await C(a.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new Error("Invalid derivation input");return{...await C(e,E),isSub:!1,parent:void 0}},G=e=>{const r=B+e,i=s.sha256(t.Buffer.from(r,"utf8")).slice(2);return t.Buffer.from(i,"hex")},Y=(r,i,a)=>{const s=[r];i?s.push(i.toBuffer()):s.push(t.Buffer.alloc(32)),a?s.push(a.toBuffer()):s.push(t.Buffer.alloc(32));const[n]=e.PublicKey.findProgramAddressSync(s,v);return n};async function j(e,t){const r=G(t.toBase58()),a=Y(r,K),{registry:s}=await R.retrieve(e,a);if(!s.data)throw new Error("Could not retrieve name data");const n=new i(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()}const V=(e,t=E)=>{let r=G(e);return{pubkey:Y(r,void 0,t),hashed:r}},q=(e,r=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const i=e.split(".");if(2===i.length){const e=t.Buffer.from([r?1:0]).toString().concat(i[0]),{pubkey:a}=V(i[1]);return{...V(e,a),isSub:!0,parent:a}}if(3===i.length&&r){const{pubkey:e}=V(i[2]),{pubkey:r}=V("\0".concat(i[1]),e),a=t.Buffer.from([1]).toString();return{...V(a.concat(i[0]),r),isSub:!0,parent:e,isSubRecord:!0}}if(i.length>=3)throw new Error("Invalid derivation input");return{...V(e,E),isSub:!1,parent:void 0}};async function X(t,r,i,a,s,n,o,c){const f=await L(r),d=await M(f,o,c),y=n||await t.getMinimumBalanceForRentExemption(i);let w;if(c){const{registry:e}=await F(t,c);w=e.owner}return l(v,e.SystemProgram.programId,d,s,a,f,new p(y),new u(i),o,c,w)}async function Z(e,t,r,i,a){const s=await L(t),n=await M(s,i,a);let o;o=i||(await R.retrieve(e,n)).registry.owner;return y(v,n,r,o)}const J=async(t,r,i,a,s)=>{let[n]=await e.PublicKey.findProgramAddress([P.toBuffer()],P),o=await L(t.toBase58()),c=await M(o,n,a);return[[],[new g({name:r}).getInstruction(P,e.SYSVAR_RENT_PUBKEY,v,E,c,n,i,a,s)]]};class Q{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 Error("Invalid reverse Twitter account provided");return a.deserializeUnchecked(this.schema,Q,r.data.slice(R.HEADER_LEN))}}async function $(r,i,s,n,o){const c=await L(n.toString()),d=await M(c,T,W);let y=a.serialize(Q.schema,new Q({twitterRegistryKey:s.toBytes(),twitterHandle:i}));return[l(v,e.SystemProgram.programId,d,n,o,c,new p(await r.getMinimumBalanceForRentExemption(y.length+R.HEADER_LEN)),new u(y.length),T,W,T),f(v,d,new u(0),t.Buffer.from(y),T)]}Q.schema=new Map([[Q,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const ee=new e.PublicKey("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),te=async(e,t)=>{const r=await M(await L(t.toBase58()),void 0,ee),{registry:i}=await R.retrieve(e,r);if(!i.data)throw new Error("Invalid account data");return x.deserialize(i.data)},re=new e.PublicKey("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class ie{constructor(t){this.tag=t.tag,this.nameAccount=new e.PublicKey(t.nameAccount)}static deserialize(e){return a.deserialize(this.schema,ie,e)}static async retrieve(e,t){const r=await e.getAccountInfo(t);if(!r||!r.data)throw new Error("Favourite domain not found");return this.deserialize(r.data)}static async getKey(r,i){return await e.PublicKey.findProgramAddress([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}static getKeySync(r,i){return e.PublicKey.findProgramAddressSync([t.Buffer.from("favourite_domain"),i.toBuffer()],r)}}ie.schema=new Map([[ie,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);var ae;exports.Record=void 0,(ae=exports.Record||(exports.Record={})).IPFS="IPFS",ae.ARWV="ARWV",ae.SOL="SOL",ae.ETH="ETH",ae.BTC="BTC",ae.LTC="LTC",ae.DOGE="DOGE",ae.Email="email",ae.Url="url",ae.Discord="discord",ae.Github="github",ae.Reddit="reddit",ae.Twitter="twitter",ae.Telegram="telegram",ae.Pic="pic",ae.SHDW="SHDW",ae.POINT="POINT",ae.BSC="BSC",ae.Injective="INJ",ae.Backpack="backpack";const se=(e,t)=>{const{pubkey:r}=q(t+"."+e,!0);return r},ne=async(e,t,r)=>{var i,a;const s=se(t,r);let{registry:n}=await R.retrieve(e,s);const o=r===exports.Record.SOL?96:null===(i=n.data)||void 0===i?void 0:i.indexOf(0);return n.data=null===(a=n.data)||void 0===a?void 0:a.slice(0,o),n},oe=async(e,t)=>await ne(e,t,exports.Record.SOL),ce=(e,t,r)=>c.sign.detached.verify(e,t,r.toBytes());exports.BONFIDA_FIDA_BNB=I,exports.BONFIDA_USDC_BNB=N,exports.FavouriteDomain=ie,exports.HASH_PREFIX=B,exports.MINT_PREFIX=h,exports.Mint=k,exports.NAME_OFFERS_ID=re,exports.NAME_PROGRAM_ID=v,exports.NAME_TOKENIZER_ID=b,exports.NameRegistryState=R,exports.Numberu32=u,exports.Numberu64=p,exports.PYTH_FIDA_PRICE_ACC=A,exports.PYTH_MAPPING_ACC=H,exports.REFERRERS=_,exports.REGISTER_PROGRAM_ID=P,exports.REVERSE_LOOKUP_CLASS=K,exports.ROOT_DOMAIN_ACCOUNT=E,exports.ReverseTwitterRegistryState=Q,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=O,exports.TOKEN_TLD=ee,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=W,exports.TWITTER_VERIFICATION_AUTHORITY=T,exports.TokenData=x,exports.USDC_MINT=D,exports.VAULT_OWNER=z,exports.changeTwitterRegistryData=async function(e,t,r,i){const a=await L(e),s=await M(a,void 0,W);return[f(v,s,new u(r),i,t)]},exports.changeVerifiedPubkey=async function(e,t,r,i,a){const s=await L(t),n=await M(s,void 0,W);let o=[d(v,n,i,r,void 0)];const c=await L(r.toString());return await M(c,T,void 0),o.push(await Z(e,r.toString(),a,T,W)),o=o.concat(await $(e,t,n,i,a)),o},exports.checkSolRecord=ce,exports.createInstruction=l,exports.createInstructionV3=m,exports.createNameRegistry=X,exports.createReverseInstruction=g,exports.createReverseName=J,exports.createReverseTwitterRegistry=$,exports.createSubdomain=async(e,t,r,i=2e3)=>{const a=[],s=t.split(".")[0];if(!s)throw new Error("Invalid subdomain input");const{parent:n,pubkey:o}=q(t),c=await e.getMinimumBalanceForRentExemption(i+R.HEADER_LEN),u=await X(e,"\0".concat(s),i,r,r,c,void 0,n);a.push(u);const[,p]=await J(o,"\0".concat(s),r,n,r);return a.push(...p),[[],a]},exports.createV2Instruction=w,exports.createVerifiedTwitterRegistry=async function(t,r,i,a,s){const n=await L(r),o=await M(n,void 0,W),c=await t.getMinimumBalanceForRentExemption(a+R.HEADER_LEN);let f=[l(v,e.SystemProgram.programId,o,i,s,n,new p(c),new u(a),void 0,W,T)];return f=f.concat(await $(t,r,o,i,s)),f},exports.deleteInstruction=y,exports.deleteNameRegistry=Z,exports.deleteTwitterRegistry=async function(e,t){const r=await L(e),i=await M(r,void 0,W),a=await L(t.toString()),s=await M(a,T,W);return[y(v,i,t,t),y(v,s,t,t)]},exports.findSubdomains=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:K.toBase58()}}],i=await e.getProgramAccounts(v,{filters:r}),a=await j(e,t),s=i.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),n=s.map((e=>q(e+"."+a).pubkey)),o=await e.getMultipleAccountsInfo(n);return s.filter(((e,t)=>!!o[t]))},exports.getAllDomains=async function(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:E.toBase58()}}];return(await e.getProgramAccounts(v,{filters:r})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const t=[{memcmp:{offset:0,bytes:E.toBase58()}}];return await e.getProgramAccounts(v,{dataSlice:{offset:32,length:32},filters:t})},exports.getArweaveRecord=async(e,t)=>await ne(e,t,exports.Record.ARWV),exports.getBackpackRecord=async(e,t)=>await ne(e,t,exports.Record.Backpack),exports.getBscRecord=async(e,t)=>await ne(e,t,exports.Record.BSC),exports.getBtcRecord=async(e,t)=>await ne(e,t,exports.Record.BTC),exports.getDiscordRecord=async(e,t)=>await ne(e,t,exports.Record.Discord),exports.getDogeRecord=async(e,t)=>await ne(e,t,exports.Record.DOGE),exports.getDomainKey=U,exports.getDomainKeySync=q,exports.getEmailRecord=async(e,t)=>await ne(e,t,exports.Record.Email),exports.getEthRecord=async(e,t)=>await ne(e,t,exports.Record.ETH),exports.getFavoriteDomain=async(t,r)=>{const[i]=ie.getKeySync(re,new e.PublicKey(r)),a=await ie.retrieve(t,i),s=await j(t,a.nameAccount);return{domain:a.nameAccount,reverse:s}},exports.getGithubRecord=async(e,t)=>await ne(e,t,exports.Record.Github),exports.getHandleAndRegistryKey=async function(t,r){const i=await L(r.toString()),a=await M(i,T,W);let s=await Q.retrieve(t,a);return[s.twitterHandle,new e.PublicKey(s.twitterRegistryKey)]},exports.getHashedName=L,exports.getHashedNameSync=G,exports.getInjectiveRecord=async(e,t)=>await ne(e,t,exports.Record.Injective),exports.getIpfsRecord=async(e,t)=>await ne(e,t,exports.Record.IPFS),exports.getLtcRecord=async(e,t)=>await ne(e,t,exports.Record.LTC),exports.getNameAccountKey=M,exports.getNameAccountKeySync=Y,exports.getNameOwner=F,exports.getPicRecord=async(e,t)=>await ne(e,t,exports.Record.Pic),exports.getPointRecord=async(e,t)=>await ne(e,t,exports.Record.POINT),exports.getRecord=ne,exports.getRecordKeySync=se,exports.getRedditRecord=async(e,t)=>await ne(e,t,exports.Record.Reddit),exports.getReverseKey=async(e,t)=>{const{pubkey:r,parent:i}=await U(e),a=await L(r.toBase58());return await M(a,K,t?i:void 0)},exports.getReverseKeySync=(e,t)=>{const{pubkey:r,parent:i}=q(e),a=G(r.toBase58());return Y(a,K,t?i:void 0)},exports.getShdwRecord=async(e,t)=>await ne(e,t,exports.Record.SHDW),exports.getSolRecord=oe,exports.getTelegramRecord=async(e,t)=>await ne(e,t,exports.Record.Telegram),exports.getTokenInfoFromMint=te,exports.getTokenInfoFromName=async(t,r)=>{const i=await M(await L(r),void 0,ee),{registry:a}=await R.retrieve(t,i);if(!a.data)throw new Error("Invalid account data");const s=new e.PublicKey(k.deserialize(a.data).mint);return await te(t,s)},exports.getTwitterHandleandRegistryKeyViaFilters=async function(t,r){const i=[{memcmp:{offset:0,bytes:W.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:T.toBase58()}}],s=await t.getProgramAccounts(v,{filters:i});for(const t of s)if(t.account.data.length>R.HEADER_LEN+32){let r=t.account.data.slice(R.HEADER_LEN),i=a.deserializeUnchecked(Q.schema,Q,r);return[i.twitterHandle,new e.PublicKey(i.twitterRegistryKey)]}throw new Error("Registry not found.")},exports.getTwitterRecord=async(e,t)=>await ne(e,t,exports.Record.Twitter),exports.getTwitterRegistry=async function(e,t){const r=await L(t),i=await M(r,void 0,W),{registry:a}=await R.retrieve(e,i);return a},exports.getTwitterRegistryData=async function(r,i){const a=[{memcmp:{offset:0,bytes:W.toBase58()}},{memcmp:{offset:32,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(t.Buffer.alloc(32,0)).toBase58()}}],s=await r.getProgramAccounts(v,{filters:a});if(s.length>1)throw new Error("Found more than one registry.");return s[0].account.data.slice(R.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const t=await L(e);return await M(t,void 0,W)},exports.getUrlRecord=async(e,t)=>await ne(e,t,exports.Record.Url),exports.performReverseLookup=async function(e,t){const r=await L(t.toBase58()),a=await M(r,K),{registry:s}=await R.retrieve(e,a);if(!s.data)throw new Error("Could not retrieve name data");const n=new i(s.data.slice(0,4),"le").toNumber();return s.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,t){let r=[];for(let e of t){const t=await L(e.toBase58()),i=await M(t,K);r.push(i)}return(await R.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.registerDomainName=async(t,i,a,s,o,c=D,u)=>{const[p]=e.PublicKey.findProgramAddressSync([P.toBuffer()],P),l=G(i),f=Y(l,void 0,E),d=G(f.toBase58()),y=Y(d,p),[w]=e.PublicKey.findProgramAddressSync([f.toBuffer()],P),g=_.findIndex((e=>null==u?void 0:u.equals(e)));let b;const h=[];if(-1!==g&&u){b=r.getAssociatedTokenAddressSync(c,u,!0);const e=await t.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=r.createAssociatedTokenAccountInstruction(s,b,u,c);h.push(e)}}const S=new n.PythHttpClient(t,n.getPythProgramKeyForCluster("mainnet-beta")),R=await S.getData(),x=O.get(c.toBase58());if(!x)throw new Error("Symbol not found");const k=R.productPrice.get("Crypto."+x+"/USD"),B=R.productFromSymbol.get("Crypto."+x+"/USD"),A=r.getAssociatedTokenAddressSync(c,z),I=new m({name:i,space:a,referrerIdxOpt:-1!=g?g:null}).getInstruction(P,v,E,f,y,e.SystemProgram.programId,p,s,o,H,k.productAccountKey,new e.PublicKey(B.price_account),A,r.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,w,b);return h.push(I),[[],h]},exports.resolve=async(r,i)=>{const{pubkey:a}=q(i),{registry:s,nftOwner:n}=await R.retrieve(r,a);if(n)return n;try{const a=q(exports.Record.SOL+"."+i,!0),n=await oe(r,i);if(!n.data)throw new Error("Invalid SOL record data");const o=new TextEncoder,c=t.Buffer.concat([n.data.slice(0,32),a.pubkey.toBuffer()]),u=o.encode(c.toString("hex"));if(!ce(u,n.data.slice(32),s.owner))throw new Error("Signature invalid");return new e.PublicKey(n.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e;console.log(e)}return s.owner},exports.retrieveNftOwner=S,exports.retrieveNfts=async t=>{const r=await t.getProgramAccounts(b,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e.PublicKey(t.account.data.slice(66,98))))},exports.reverseLookup=j,exports.reverseLookupBatch=async function(e,t){let r=[];for(let e of t){const t=G(e.toBase58()),i=Y(t,K);r.push(i)}return(await R.retrieveBatch(e,r)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new i(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.transferInstruction=d,exports.transferNameOwnership=async function(e,t,r,i,a,s){const n=await L(t),o=await M(n,i,a);let c;return c=i||(await R.retrieve(e,o)).registry.owner,d(v,o,r,c,i,a,s)},exports.updateInstruction=f,exports.updateNameRegistryData=async function(e,t,r,i,a,s){const n=await L(t),o=await M(n,a,s);let c;return c=a||(await R.retrieve(e,o)).registry.owner,f(v,o,new u(r),i,c)};
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{PublicKey as t,TransactionInstruction as e,SystemProgram as r,SYSVAR_RENT_PUBKEY as i}from"@solana/web3.js";import{Buffer as a}from"buffer";import{TOKEN_PROGRAM_ID as n,getMint as s,getAssociatedTokenAddressSync as o,createAssociatedTokenAccountInstruction as c}from"@solana/spl-token";import u from"bn.js";import{serialize as w,deserializeUnchecked as l,deserialize as f}from"borsh";import{sha256 as p}from"@ethersproject/sha2";import{PythHttpClient as d,getPythProgramKeyForCluster as y}from"@pythnetwork/client";import*as m from"tweetnacl";class g extends u{toBuffer(){const t=super.toArray().reverse(),e=a.from(t);if(4===e.length)return e;if(e.length>4)throw new Error("Numberu32 too large");const r=a.alloc(4);return e.copy(r),r}static fromBuffer(t){if(4!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new u([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}class b extends u{toBuffer(){const t=super.toArray().reverse(),e=a.from(t);if(8===e.length)return e;if(e.length>8)throw new Error("Numberu64 too large");const r=a.alloc(8);return e.copy(r),r}static fromBuffer(t){if(8!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new u([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(""),16)}}function h(r,i,n,s,o,c,u,w,l,f,p){const d=[a.from(Int8Array.from([0])),new g(c.length).toBuffer(),c,u.toBuffer(),w.toBuffer()],y=a.concat(d),m=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return l?m.push({pubkey:l,isSigner:!0,isWritable:!1}):m.push({pubkey:new t(a.alloc(32)),isSigner:!1,isWritable:!1}),f?m.push({pubkey:f,isSigner:!1,isWritable:!1}):m.push({pubkey:new t(a.alloc(32)),isSigner:!1,isWritable:!1}),p&&m.push({pubkey:p,isSigner:!0,isWritable:!1}),new e({keys:m,programId:r,data:y})}function S(t,r,i,n,s){const o=[a.from(Int8Array.from([1])),i.toBuffer(),new g(n.length).toBuffer(),n],c=a.concat(o);return new e({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}],programId:t,data:c})}function k(r,i,n,s,o,c,u){const w=[a.from(Int8Array.from([2])),n.toBuffer()],l=a.concat(w),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 e({keys:f,programId:r,data:l})}function v(t,r,i,n){const s=[a.from(Int8Array.from([3]))],o=a.concat(s);return new e({keys:[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}],programId:t,data:o})}class E{constructor(t){this.tag=9,this.name=t.name,this.space=t.space}serialize(){return w(E.schema,this)}getInstruction(t,i,s,o,c,u,w,l,f,p,d){const y=a.from(this.serialize()),m=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r.programId,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}];return new e({keys:m,programId:t,data:y})}}E.schema=new Map([[E,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class B{constructor(t){this.tag=5,this.name=t.name}serialize(){return w(B.schema,this)}getInstruction(r,i,n,s,o,c,u,w,l){const f=a.from(this.serialize());let p=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:t.default,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0}];if(w){if(!l)throw new Error("Missing parent name owner");p.push({pubkey:w,isSigner:!1,isWritable:!0}),p.push({pubkey:l,isSigner:!0,isWritable:!1})}return new e({keys:p,programId:r,data:f})}}B.schema=new Map([[B,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class W{constructor(t){this.tag=13,this.name=t.name,this.space=t.space,this.referrerIdxOpt=t.referrerIdxOpt}serialize(){return w(W.schema,this)}getInstruction(t,r,i,n,s,o,c,u,w,l,f,p,d,y,m,g,b){const h=a.from(this.serialize());let S=[];return S.push({pubkey:r,isSigner:!1,isWritable:!1}),S.push({pubkey:i,isSigner:!1,isWritable:!1}),S.push({pubkey:n,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:w,isSigner:!1,isWritable:!0}),S.push({pubkey:l,isSigner:!1,isWritable:!1}),S.push({pubkey:f,isSigner:!1,isWritable:!1}),S.push({pubkey:p,isSigner:!1,isWritable:!1}),S.push({pubkey:d,isSigner:!1,isWritable:!0}),S.push({pubkey:y,isSigner:!1,isWritable:!1}),S.push({pubkey:m,isSigner:!1,isWritable:!1}),S.push({pubkey:g,isSigner:!1,isWritable:!1}),b&&S.push({pubkey:b,isSigner:!1,isWritable:!0}),new e({keys:S,programId:t,data:h})}}W.schema=new Map([[W,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const A=new t("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),I=a.from("tokenized_name"),R=async(e,r)=>{try{const[i]=await t.findProgramAddress([I,r.toBuffer()],A);if("0"===(await s(e,i)).supply.toString())return;const a=[{memcmp:{offset:0,bytes:i.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],o=await e.getProgramAccounts(n,{filters:a});if(1!=o.length)return;return new t(o[0].account.data.slice(32,64))}catch{return}},D=async e=>{const r=await e.getProgramAccounts(A,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((e=>new t(e.account.data.slice(66,98))))};class H{constructor(e){this.parentName=new t(e.parentName),this.owner=new t(e.owner),this.class=new t(e.class)}static async retrieve(t,e){var r;const i=await t.getAccountInfo(e);if(!i)throw new Error("Invalid name account provided");let a=l(this.schema,H,i.data);a.data=null===(r=i.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:a,nftOwner:await R(t,e)}}static async _retrieveBatch(t,e){const r=await t.getMultipleAccountsInfo(e),i=t=>{if(!t)return;const e=l(this.schema,H,t);return e.data=null==t?void 0:t.slice(this.HEADER_LEN),e};return r.map((t=>i(null==t?void 0:t.data)))}static async retrieveBatch(t,e){let r=[];const i=[...e];for(;i.length>0;)r.push(...await this._retrieveBatch(t,i.splice(0,100)));return r}}H.HEADER_LEN=96,H.schema=new Map([[H,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class P{constructor(t){this.name=t.name,this.ticker=t.ticker,this.mint=t.mint,this.decimals=t.decimals,this.website=null==t?void 0:t.website,this.logoUri=null==t?void 0:t.logoUri}serialize(){return w(P.schema,this)}static deserialize(t){return l(P.schema,P,t)}}P.schema=new Map([[P,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class L{constructor(t){this.mint=t.mint}serialize(){return w(L.schema,this)}static deserialize(t){return l(L.schema,L,t)}}L.schema=new Map([[L,{kind:"struct",fields:[["mint",[32]]]}]]);const z=new t("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),T="SPL Name Service",N=new t("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),x=new t("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),C=new t("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),F=new t("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),M=new t("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),G=new t("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),K=new t("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),j=96,U=new t("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),X=new t("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Y=[new t("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new t("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs")],Z=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),q=new t("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),O=new t("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi");async function V(t,e){if(!await t.getAccountInfo(e))throw new Error("Unable to find the given account.");return H.retrieve(t,e)}async function J(t){const e=T+t,r=p(a.from(e,"utf8")).slice(2);return a.from(r,"hex")}async function _(e,r,i){const n=[e];r?n.push(r.toBuffer()):n.push(a.alloc(32)),i?n.push(i.toBuffer()):n.push(a.alloc(32));const[s]=await t.findProgramAddress(n,z);return s}async function Q(t,e){const r=await J(e.toBase58()),i=await _(r,M),{registry:a}=await H.retrieve(t,i);if(!a.data)throw new Error("Could not retrieve name data");const n=new u(a.data.slice(0,4),"le").toNumber();return a.data.slice(4,4+n).toString()}async function $(t,e){let r=[];for(let t of e){const e=await J(t.toBase58()),i=await _(e,M);r.push(i)}return(await H.retrieveBatch(t,r)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new u(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}const tt=async(t,e=N)=>{let r=await J(t);return{pubkey:await _(r,void 0,e),hashed:r}},et=async(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const r=t.split(".");if(2===r.length){const t=a.from([e?1:0]).toString().concat(r[0]),{pubkey:i}=await tt(r[1]);return{...await tt(t,i),isSub:!0,parent:i}}if(3===r.length&&e){const{pubkey:t}=await tt(r[2]),{pubkey:e}=await tt("\0".concat(r[1]),t),i=a.from([1]).toString();return{...await tt(i.concat(r[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(r.length>=3)throw new Error("Invalid derivation input");return{...await tt(t,N),isSub:!1,parent:void 0}},rt=async(t,e)=>{const{pubkey:r,parent:i}=await et(t),a=await J(r.toBase58());return await _(a,M,e?i:void 0)},it=t=>{const e=T+t,r=p(a.from(e,"utf8")).slice(2);return a.from(r,"hex")},at=(e,r,i)=>{const n=[e];r?n.push(r.toBuffer()):n.push(a.alloc(32)),i?n.push(i.toBuffer()):n.push(a.alloc(32));const[s]=t.findProgramAddressSync(n,z);return s};async function nt(t,e){const r=it(e.toBase58()),i=at(r,M),{registry:a}=await H.retrieve(t,i);if(!a.data)throw new Error("Could not retrieve name data");const n=new u(a.data.slice(0,4),"le").toNumber();return a.data.slice(4,4+n).toString()}async function st(t,e){let r=[];for(let t of e){const e=it(t.toBase58()),i=at(e,M);r.push(i)}return(await H.retrieveBatch(t,r)).map((t=>{if(void 0===t||void 0===t.data)return;let e=new u(t.data.slice(0,4),"le").toNumber();return t.data.slice(4,4+e).toString()}))}const ot=async(t,e)=>{const r=[{memcmp:{offset:0,bytes:e.toBase58()}},{memcmp:{offset:64,bytes:M.toBase58()}}],i=await t.getProgramAccounts(z,{filters:r}),a=await nt(t,e),n=i.map((t=>{var e;return null===(e=t.account.data.slice(97).toString("utf-8"))||void 0===e?void 0:e.split("\0").join("")})),s=n.map((t=>ut(t+"."+a).pubkey)),o=await t.getMultipleAccountsInfo(s);return n.filter(((t,e)=>!!o[e]))},ct=(t,e=N)=>{let r=it(t);return{pubkey:at(r,void 0,e),hashed:r}},ut=(t,e=!1)=>{t.endsWith(".sol")&&(t=t.slice(0,-4));const r=t.split(".");if(2===r.length){const t=a.from([e?1:0]).toString().concat(r[0]),{pubkey:i}=ct(r[1]);return{...ct(t,i),isSub:!0,parent:i}}if(3===r.length&&e){const{pubkey:t}=ct(r[2]),{pubkey:e}=ct("\0".concat(r[1]),t),i=a.from([1]).toString();return{...ct(i.concat(r[0]),e),isSub:!0,parent:t,isSubRecord:!0}}if(r.length>=3)throw new Error("Invalid derivation input");return{...ct(t,N),isSub:!1,parent:void 0}};async function wt(t,e){const r=[{memcmp:{offset:32,bytes:e.toBase58()}},{memcmp:{offset:0,bytes:N.toBase58()}}];return(await t.getProgramAccounts(z,{filters:r})).map((t=>t.pubkey))}const lt=async t=>{const e=[{memcmp:{offset:0,bytes:N.toBase58()}}];return await t.getProgramAccounts(z,{dataSlice:{offset:32,length:32},filters:e})},ft=(t,e)=>{const{pubkey:r,parent:i}=ut(t),a=it(r.toBase58());return at(a,M,e?i:void 0)};async function pt(t,e,i,a,n,s,o,c){const u=await J(e),w=await _(u,o,c),l=s||await t.getMinimumBalanceForRentExemption(i);let f;if(c){const{registry:e}=await V(t,c);f=e.owner}return h(z,r.programId,w,n,a,u,new b(l),new g(i),o,c,f)}async function dt(t,e,r,i,a,n){const s=await J(e),o=await _(s,a,n);let c;c=a||(await H.retrieve(t,o)).registry.owner;return S(z,o,new g(r),i,c)}async function yt(t,e,r,i,a,n){const s=await J(e),o=await _(s,i,a);let c;c=i||(await H.retrieve(t,o)).registry.owner;return k(z,o,r,c,i,a,n)}async function mt(t,e,r,i,a){const n=await J(e),s=await _(n,i,a);let o;o=i||(await H.retrieve(t,s)).registry.owner;return v(z,s,r,o)}const gt=async(e,a,s,u,w,l=X,f)=>{const[p]=t.findProgramAddressSync([x.toBuffer()],x),m=it(a),g=at(m,void 0,N),b=it(g.toBase58()),h=at(b,p),[S]=t.findProgramAddressSync([g.toBuffer()],x),k=Y.findIndex((t=>null==f?void 0:f.equals(t)));let v;const E=[];if(-1!==k&&f){v=o(l,f,!0);const t=await e.getAccountInfo(v);if(!(null==t?void 0:t.data)){const t=c(u,v,f,l);E.push(t)}}const B=new d(e,y("mainnet-beta")),A=await B.getData(),I=Z.get(l.toBase58());if(!I)throw new Error("Symbol not found");const R=A.productPrice.get("Crypto."+I+"/USD"),D=A.productFromSymbol.get("Crypto."+I+"/USD"),H=o(l,O),P=new W({name:a,space:s,referrerIdxOpt:-1!=k?k:null}).getInstruction(x,z,N,g,h,r.programId,p,u,w,q,R.productAccountKey,new t(D.price_account),H,n,i,S,v);return E.push(P),[[],E]},bt=async(e,r,a,n,s)=>{let[o]=await t.findProgramAddress([x.toBuffer()],x),c=await J(e.toBase58()),u=await _(c,o,n);return[[],[new B({name:r}).getInstruction(x,i,z,N,u,o,a,n,s)]]},ht=async(t,e,r,i=2e3)=>{const a=[],n=e.split(".")[0];if(!n)throw new Error("Invalid subdomain input");const{parent:s,pubkey:o}=ut(e),c=await t.getMinimumBalanceForRentExemption(i+H.HEADER_LEN),u=await pt(t,"\0".concat(n),i,r,r,c,void 0,s);a.push(u);const[,w]=await bt(o,"\0".concat(n),r,s,r);return a.push(...w),[[],a]};async function St(t,e,i,a,n){const s=await J(e),o=await _(s,void 0,K),c=await t.getMinimumBalanceForRentExemption(a+H.HEADER_LEN);let u=[h(z,r.programId,o,i,n,s,new b(c),new g(a),void 0,K,G)];return u=u.concat(await Ht(t,e,o,i,n)),u}async function kt(t,e,r,i){const a=await J(t),n=await _(a,void 0,K);return[S(z,n,new g(r),i,e)]}async function vt(t,e,r,i,a){const n=await J(e),s=await _(n,void 0,K);let o=[k(z,s,i,r,void 0)];const c=await J(r.toString());return await _(c,G,void 0),o.push(await mt(t,r.toString(),a,G,K)),o=o.concat(await Ht(t,e,s,i,a)),o}async function Et(t,e){const r=await J(t),i=await _(r,void 0,K),a=await J(e.toString()),n=await _(a,G,K);return[v(z,i,e,e),v(z,n,e,e)]}async function Bt(t){const e=await J(t);return await _(e,void 0,K)}async function Wt(t,e){const r=await J(e),i=await _(r,void 0,K),{registry:a}=await H.retrieve(t,i);return a}async function At(e,r){const i=await J(r.toString()),a=await _(i,G,K);let n=await Dt.retrieve(e,a);return[n.twitterHandle,new t(n.twitterRegistryKey)]}async function It(e,r){const i=[{memcmp:{offset:0,bytes:K.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:G.toBase58()}}],a=await e.getProgramAccounts(z,{filters:i});for(const e of a)if(e.account.data.length>H.HEADER_LEN+32){let r=e.account.data.slice(H.HEADER_LEN),i=l(Dt.schema,Dt,r);return[i.twitterHandle,new t(i.twitterRegistryKey)]}throw new Error("Registry not found.")}async function Rt(e,r){const i=[{memcmp:{offset:0,bytes:K.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:new t(a.alloc(32,0)).toBase58()}}],n=await e.getProgramAccounts(z,{filters:i});if(n.length>1)throw new Error("Found more than one registry.");return n[0].account.data.slice(H.HEADER_LEN)}class Dt{constructor(t){this.twitterRegistryKey=t.twitterRegistryKey,this.twitterHandle=t.twitterHandle}static async retrieve(t,e){let r=await t.getAccountInfo(e,"processed");if(!r)throw new Error("Invalid reverse Twitter account provided");return l(this.schema,Dt,r.data.slice(H.HEADER_LEN))}}async function Ht(t,e,i,n,s){const o=await J(n.toString()),c=await _(o,G,K);let u=w(Dt.schema,new Dt({twitterRegistryKey:i.toBytes(),twitterHandle:e}));return[h(z,r.programId,c,n,s,o,new b(await t.getMinimumBalanceForRentExemption(u.length+H.HEADER_LEN)),new g(u.length),G,K,G),S(z,c,new g(0),a.from(u),G)]}Dt.schema=new Map([[Dt,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const Pt=new t("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),Lt=async(t,e)=>{const r=await _(await J(e.toBase58()),void 0,Pt),{registry:i}=await H.retrieve(t,r);if(!i.data)throw new Error("Invalid account data");return P.deserialize(i.data)},zt=async(e,r)=>{const i=await _(await J(r),void 0,Pt),{registry:a}=await H.retrieve(e,i);if(!a.data)throw new Error("Invalid account data");const n=new t(L.deserialize(a.data).mint);return await Lt(e,n)},Tt=new t("85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29");class Nt{constructor(e){this.tag=e.tag,this.nameAccount=new t(e.nameAccount)}static deserialize(t){return f(this.schema,Nt,t)}static async retrieve(t,e){const r=await t.getAccountInfo(e);if(!r||!r.data)throw new Error("Favourite domain not found");return this.deserialize(r.data)}static async getKey(e,r){return await t.findProgramAddress([a.from("favourite_domain"),r.toBuffer()],e)}static getKeySync(e,r){return t.findProgramAddressSync([a.from("favourite_domain"),r.toBuffer()],e)}}Nt.schema=new Map([[Nt,{kind:"struct",fields:[["tag","u8"],["nameAccount",[32]]]}]]);const xt=async(e,r)=>{const[i]=Nt.getKeySync(Tt,new t(r)),a=await Nt.retrieve(e,i),n=await nt(e,a.nameAccount);return{domain:a.nameAccount,reverse:n}};var Ct;!function(t){t.IPFS="IPFS",t.ARWV="ARWV",t.SOL="SOL",t.ETH="ETH",t.BTC="BTC",t.LTC="LTC",t.DOGE="DOGE",t.Email="email",t.Url="url",t.Discord="discord",t.Github="github",t.Reddit="reddit",t.Twitter="twitter",t.Telegram="telegram",t.Pic="pic",t.SHDW="SHDW",t.POINT="POINT",t.BSC="BSC",t.Injective="INJ",t.Backpack="backpack"}(Ct||(Ct={}));const Ft=(t,e)=>{const{pubkey:r}=ut(e+"."+t,!0);return r},Mt=async(t,e,r)=>{var i,a;const n=Ft(e,r);let{registry:s}=await H.retrieve(t,n);const o=r===Ct.SOL?96:null===(i=s.data)||void 0===i?void 0:i.indexOf(0);return s.data=null===(a=s.data)||void 0===a?void 0:a.slice(0,o),s},Gt=async(t,e)=>await Mt(t,e,Ct.IPFS),Kt=async(t,e)=>await Mt(t,e,Ct.ARWV),jt=async(t,e)=>await Mt(t,e,Ct.ETH),Ut=async(t,e)=>await Mt(t,e,Ct.BTC),Xt=async(t,e)=>await Mt(t,e,Ct.LTC),Yt=async(t,e)=>await Mt(t,e,Ct.DOGE),Zt=async(t,e)=>await Mt(t,e,Ct.Email),qt=async(t,e)=>await Mt(t,e,Ct.Url),Ot=async(t,e)=>await Mt(t,e,Ct.Discord),Vt=async(t,e)=>await Mt(t,e,Ct.Github),Jt=async(t,e)=>await Mt(t,e,Ct.Reddit),_t=async(t,e)=>await Mt(t,e,Ct.Twitter),Qt=async(t,e)=>await Mt(t,e,Ct.Telegram),$t=async(t,e)=>await Mt(t,e,Ct.Pic),te=async(t,e)=>await Mt(t,e,Ct.SHDW),ee=async(t,e)=>await Mt(t,e,Ct.SOL),re=async(t,e)=>await Mt(t,e,Ct.POINT),ie=async(t,e)=>await Mt(t,e,Ct.BSC),ae=async(t,e)=>await Mt(t,e,Ct.Injective),ne=async(t,e)=>await Mt(t,e,Ct.Backpack),se=(t,e,r)=>m.sign.detached.verify(t,e,r.toBytes()),oe=async(e,r)=>{const{pubkey:i}=ut(r),{registry:n,nftOwner:s}=await H.retrieve(e,i);if(s)return s;try{const i=ut(Ct.SOL+"."+r,!0),s=await ee(e,r);if(!s.data)throw new Error("Invalid SOL record data");const o=new TextEncoder,c=a.concat([s.data.slice(0,32),i.pubkey.toBuffer()]),u=o.encode(c.toString("hex"));if(!se(u,s.data.slice(32),n.owner))throw new Error("Signature invalid");return new t(s.data.slice(0,32))}catch(t){if(t instanceof Error&&"FetchError"===t.name)throw t;console.log(t)}return n.owner};export{F as BONFIDA_FIDA_BNB,U as BONFIDA_USDC_BNB,Nt as FavouriteDomain,T as HASH_PREFIX,I as MINT_PREFIX,L as Mint,Tt as NAME_OFFERS_ID,z as NAME_PROGRAM_ID,A as NAME_TOKENIZER_ID,H as NameRegistryState,g as Numberu32,b as Numberu64,C as PYTH_FIDA_PRICE_ACC,q as PYTH_MAPPING_ACC,Y as REFERRERS,x as REGISTER_PROGRAM_ID,M as REVERSE_LOOKUP_CLASS,N as ROOT_DOMAIN_ACCOUNT,Ct as Record,Dt as ReverseTwitterRegistryState,j as SOL_RECORD_SIG_LEN,Z as TOKENS_SYM_MINT,Pt as TOKEN_TLD,K as TWITTER_ROOT_PARENT_REGISTRY_KEY,G as TWITTER_VERIFICATION_AUTHORITY,P as TokenData,X as USDC_MINT,O as VAULT_OWNER,kt as changeTwitterRegistryData,vt as changeVerifiedPubkey,se as checkSolRecord,h as createInstruction,W as createInstructionV3,pt as createNameRegistry,B as createReverseInstruction,bt as createReverseName,Ht as createReverseTwitterRegistry,ht as createSubdomain,E as createV2Instruction,St as createVerifiedTwitterRegistry,v as deleteInstruction,mt as deleteNameRegistry,Et as deleteTwitterRegistry,ot as findSubdomains,wt as getAllDomains,lt as getAllRegisteredDomains,Kt as getArweaveRecord,ne as getBackpackRecord,ie as getBscRecord,Ut as getBtcRecord,Ot as getDiscordRecord,Yt as getDogeRecord,et as getDomainKey,ut as getDomainKeySync,Zt as getEmailRecord,jt as getEthRecord,xt as getFavoriteDomain,Vt as getGithubRecord,At as getHandleAndRegistryKey,J as getHashedName,it as getHashedNameSync,ae as getInjectiveRecord,Gt as getIpfsRecord,Xt as getLtcRecord,_ as getNameAccountKey,at as getNameAccountKeySync,V as getNameOwner,$t as getPicRecord,re as getPointRecord,Mt as getRecord,Ft as getRecordKeySync,Jt as getRedditRecord,rt as getReverseKey,ft as getReverseKeySync,te as getShdwRecord,ee as getSolRecord,Qt as getTelegramRecord,Lt as getTokenInfoFromMint,zt as getTokenInfoFromName,It as getTwitterHandleandRegistryKeyViaFilters,_t as getTwitterRecord,Wt as getTwitterRegistry,Rt as getTwitterRegistryData,Bt as getTwitterRegistryKey,qt as getUrlRecord,Q as performReverseLookup,$ as performReverseLookupBatch,gt as registerDomainName,oe as resolve,R as retrieveNftOwner,D as retrieveNfts,nt as reverseLookup,st as reverseLookupBatch,k as transferInstruction,yt as transferNameOwnership,S as updateInstruction,dt as updateNameRegistryData};
|
package/dist/instructions.d.ts
CHANGED
package/dist/int.d.ts
CHANGED
package/dist/nft.d.ts
CHANGED
package/dist/record.d.ts
CHANGED
|
@@ -149,3 +149,10 @@ export declare const getBscRecord: (connection: Connection, domain: string) => P
|
|
|
149
149
|
* @returns
|
|
150
150
|
*/
|
|
151
151
|
export declare const getInjectiveRecord: (connection: Connection, domain: string) => Promise<NameRegistryState>;
|
|
152
|
+
/**
|
|
153
|
+
* This function can be used to retrieve the Backpack record of a domain name
|
|
154
|
+
* @param connection The Solana RPC connection object
|
|
155
|
+
* @param domain The .sol domain name
|
|
156
|
+
* @returns
|
|
157
|
+
*/
|
|
158
|
+
export declare const getBackpackRecord: (connection: Connection, domain: string) => Promise<NameRegistryState>;
|
package/dist/state.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
|
|
3
3
|
import { NameRegistryState } from "./state";
|
|
4
4
|
import { Schema } from "borsh";
|
|
5
|
+
import { Buffer } from "buffer";
|
|
5
6
|
export declare function createVerifiedTwitterRegistry(connection: Connection, twitterHandle: string, verifiedPubkey: PublicKey, space: number, // The space that the user will have to write data into the verified registry
|
|
6
7
|
payerKey: PublicKey): Promise<TransactionInstruction[]>;
|
|
7
8
|
export declare function changeTwitterRegistryData(twitterHandle: string, verifiedPubkey: PublicKey, offset: number, // The offset at which to write the input data into the NameRegistryData
|
package/dist/types/record.d.ts
CHANGED
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
3
4
|
export declare const getHashedNameSync: (name: string) => Buffer;
|
|
4
5
|
export declare const getNameAccountKeySync: (hashed_name: Buffer, nameClass?: PublicKey, nameParent?: PublicKey) => PublicKey;
|
|
5
6
|
/**
|
package/package.json
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bonfida/spl-name-service",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
|
-
"dist"
|
|
7
|
-
"src"
|
|
6
|
+
"dist"
|
|
8
7
|
],
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.mjs",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"require": "./dist/index.cjs",
|
|
16
|
+
"types": "./dist/index.d.ts"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
9
19
|
"repository": {
|
|
10
20
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/Bonfida/
|
|
21
|
+
"url": "https://github.com/Bonfida/sns-sdk"
|
|
12
22
|
},
|
|
13
|
-
"homepage": "https://
|
|
14
|
-
"main": "dist/index.js",
|
|
15
|
-
"types": "dist/index.d.ts",
|
|
23
|
+
"homepage": "https://sns.guide",
|
|
16
24
|
"scripts": {
|
|
17
25
|
"dev": "tsc && node --trace-warnings dist/test.js",
|
|
18
26
|
"build": "rm -rf dist && rollup -c",
|
|
@@ -25,43 +33,41 @@
|
|
|
25
33
|
"doc": "yarn typedoc src/index.ts"
|
|
26
34
|
},
|
|
27
35
|
"devDependencies": {
|
|
28
|
-
"@rollup/plugin-commonjs": "^24.
|
|
29
|
-
"@rollup/plugin-
|
|
30
|
-
"@
|
|
31
|
-
"@solana/
|
|
32
|
-
"@solana/web3.js": "^1.73.3",
|
|
36
|
+
"@rollup/plugin-commonjs": "^24.1.0",
|
|
37
|
+
"@rollup/plugin-json": "^6.0.0",
|
|
38
|
+
"@rollup/plugin-typescript": "^11.1.0",
|
|
39
|
+
"@solana/web3.js": "^1.75.0",
|
|
33
40
|
"@tsconfig/recommended": "^1.0.2",
|
|
34
41
|
"@types/bn.js": "^5.1.1",
|
|
35
42
|
"@types/bs58": "^4.0.1",
|
|
36
|
-
"@types/jest": "^
|
|
37
|
-
"@types/node": "^
|
|
43
|
+
"@types/jest": "^29.5.1",
|
|
44
|
+
"@types/node": "^20.1.0",
|
|
38
45
|
"babel-eslint": "^10.1.0",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"prettier": "^2.2.1",
|
|
46
|
-
"rollup": "^3.9.0",
|
|
46
|
+
"eslint": "^8.40.0",
|
|
47
|
+
"eslint-plugin-import": "^2.27.5",
|
|
48
|
+
"jest": "^29.5.0",
|
|
49
|
+
"nodemon": "^2.0.22",
|
|
50
|
+
"prettier": "^2.8.8",
|
|
51
|
+
"rollup": "^3.21.5",
|
|
47
52
|
"rollup-plugin-terser": "^7.0.2",
|
|
48
53
|
"save-dev": "0.0.1-security",
|
|
49
|
-
"ts-jest": "^
|
|
50
|
-
"ts-node": "^9.1
|
|
51
|
-
"tslib": "^2.
|
|
52
|
-
"typedoc": "^0.
|
|
53
|
-
"typescript": "^
|
|
54
|
+
"ts-jest": "^29.1.0",
|
|
55
|
+
"ts-node": "^10.9.1",
|
|
56
|
+
"tslib": "^2.5.0",
|
|
57
|
+
"typedoc": "^0.24.6",
|
|
58
|
+
"typescript": "^5.0.4"
|
|
54
59
|
},
|
|
55
60
|
"dependencies": {
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
61
|
+
"@ethersproject/sha2": "^5.7.0",
|
|
62
|
+
"@pythnetwork/client": "2.17.0",
|
|
63
|
+
"@solana/buffer-layout": "^4.0.1",
|
|
64
|
+
"@solana/spl-token": "0.3.7 ",
|
|
65
|
+
"bn.js": "^5.2.1",
|
|
66
|
+
"borsh": "^0.7.0",
|
|
67
|
+
"buffer": "^6.0.3",
|
|
68
|
+
"tweetnacl": "^1.0.3"
|
|
59
69
|
},
|
|
60
70
|
"peerDependencies": {
|
|
61
|
-
"@solana/
|
|
62
|
-
"@solana/spl-token": "^0.3.6",
|
|
63
|
-
"@solana/web3.js": "^1.67.0",
|
|
64
|
-
"bn.js": "^5.1.3",
|
|
65
|
-
"borsh": "^0.7.0"
|
|
71
|
+
"@solana/web3.js": "^1.75.0"
|
|
66
72
|
}
|
|
67
73
|
}
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("@solana/web3.js"),t=require("@solana/spl-token"),r=require("bn.js"),i=require("borsh"),s=require("@ethersproject/sha2"),a=require("@pythnetwork/client"),n=require("@bonfida/name-offers"),o=require("tweetnacl");class c extends r{toBuffer(){const e=super.toArray().reverse(),t=Buffer.from(e);if(4===t.length)return t;if(t.length>4)throw new Error("Numberu32 too large");const r=Buffer.alloc(4);return t.copy(r),r}static fromBuffer(e){if(4!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new r([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class u extends r{toBuffer(){const e=super.toArray().reverse(),t=Buffer.from(e);if(8===t.length)return t;if(t.length>8)throw new Error("Numberu64 too large");const r=Buffer.alloc(8);return t.copy(r),r}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new r([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function p(t,r,i,s,a,n,o,u,p,l,f){const d=[Buffer.from(Int8Array.from([0])),new c(n.length).toBuffer(),n,o.toBuffer(),u.toBuffer()],y=Buffer.concat(d),w=[{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1}];return p?w.push({pubkey:p,isSigner:!0,isWritable:!1}):w.push({pubkey:new e.PublicKey(Buffer.alloc(32)),isSigner:!1,isWritable:!1}),l?w.push({pubkey:l,isSigner:!1,isWritable:!1}):w.push({pubkey:new e.PublicKey(Buffer.alloc(32)),isSigner:!1,isWritable:!1}),f&&w.push({pubkey:f,isSigner:!0,isWritable:!1}),new e.TransactionInstruction({keys:w,programId:t,data:y})}function l(t,r,i,s,a){const n=[Buffer.from(Int8Array.from([1])),i.toBuffer(),new c(s.length).toBuffer(),s],o=Buffer.concat(n),u=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];return new e.TransactionInstruction({keys:u,programId:t,data:o})}function f(t,r,i,s,a,n,o){const c=[Buffer.from(Int8Array.from([2])),i.toBuffer()],u=Buffer.concat(c),p=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o||s,isSigner:!0,isWritable:!1}];return a&&p.push({pubkey:a,isSigner:!0,isWritable:!1}),o&&n&&(a||p.push({pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1}),p.push({pubkey:n,isSigner:!1,isWritable:!1})),new e.TransactionInstruction({keys:p,programId:t,data:u})}function d(t,r,i,s){const a=[Buffer.from(Int8Array.from([3]))],n=Buffer.concat(a),o=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return new e.TransactionInstruction({keys:o,programId:t,data:n})}class y{constructor(e){this.tag=9,this.name=e.name,this.space=e.space}serialize(){return i.serialize(y.schema,this)}getInstruction(r,i,s,a,n,o,c,u,p,l,f){const d=Buffer.from(this.serialize()),y=[{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:p,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 e.TransactionInstruction({keys:y,programId:r,data:d})}}y.schema=new Map([[y,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"]]}]]);class w{constructor(e){this.tag=5,this.name=e.name}serialize(){return i.serialize(w.schema,this)}getInstruction(t,r,i,s,a,n,o,c,u){const p=Buffer.from(this.serialize());let l=[{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.PublicKey.default,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0}];if(c){if(!u)throw new Error("Missing parent name owner");l.push({pubkey:c,isSigner:!1,isWritable:!0}),l.push({pubkey:u,isSigner:!0,isWritable:!1})}return new e.TransactionInstruction({keys:l,programId:t,data:p})}}w.schema=new Map([[w,{kind:"struct",fields:[["tag","u8"],["name","string"]]}]]);class g{constructor(e){this.tag=13,this.name=e.name,this.space=e.space,this.referrerIdxOpt=e.referrerIdxOpt}serialize(){return i.serialize(g.schema,this)}getInstruction(t,r,i,s,a,n,o,c,u,p,l,f,d,y,w,g,m){const b=Buffer.from(this.serialize());let h=[];return h.push({pubkey:r,isSigner:!1,isWritable:!1}),h.push({pubkey:i,isSigner:!1,isWritable:!1}),h.push({pubkey:s,isSigner:!1,isWritable:!0}),h.push({pubkey:a,isSigner:!1,isWritable:!0}),h.push({pubkey:n,isSigner:!1,isWritable:!1}),h.push({pubkey:o,isSigner:!1,isWritable:!1}),h.push({pubkey:c,isSigner:!0,isWritable:!0}),h.push({pubkey:u,isSigner:!1,isWritable:!0}),h.push({pubkey:p,isSigner:!1,isWritable:!1}),h.push({pubkey:l,isSigner:!1,isWritable:!1}),h.push({pubkey:f,isSigner:!1,isWritable:!1}),h.push({pubkey:d,isSigner:!1,isWritable:!0}),h.push({pubkey:y,isSigner:!1,isWritable:!1}),h.push({pubkey:w,isSigner:!1,isWritable:!1}),h.push({pubkey:g,isSigner:!1,isWritable:!1}),m&&h.push({pubkey:m,isSigner:!1,isWritable:!0}),new e.TransactionInstruction({keys:h,programId:t,data:b})}}g.schema=new Map([[g,{kind:"struct",fields:[["tag","u8"],["name","string"],["space","u32"],["referrerIdxOpt",{kind:"option",type:"u16"}]]}]]);const m=new e.PublicKey("nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk"),b=Buffer.from("tokenized_name"),h=async(r,i)=>{try{const[s]=await e.PublicKey.findProgramAddress([b,i.toBuffer()],m);if("0"===(await t.getMint(r,s)).supply.toString())return;const a=[{memcmp:{offset:0,bytes:s.toBase58()}},{memcmp:{offset:64,bytes:"2"}},{dataSize:165}],n=await r.getProgramAccounts(t.TOKEN_PROGRAM_ID,{filters:a});if(1!=n.length)return;return new e.PublicKey(n[0].account.data.slice(32,64))}catch{return}};class S{constructor(t){this.parentName=new e.PublicKey(t.parentName),this.owner=new e.PublicKey(t.owner),this.class=new e.PublicKey(t.class)}static async retrieve(e,t){var r;const s=await e.getAccountInfo(t);if(!s)throw new Error("Invalid name account provided");let a=i.deserializeUnchecked(this.schema,S,s.data);a.data=null===(r=s.data)||void 0===r?void 0:r.slice(this.HEADER_LEN);return{registry:a,nftOwner:await h(e,t)}}static async _retrieveBatch(e,t){const r=await e.getMultipleAccountsInfo(t),s=e=>{if(!e)return;const t=i.deserializeUnchecked(this.schema,S,e);return t.data=null==e?void 0:e.slice(this.HEADER_LEN),t};return r.map((e=>s(null==e?void 0:e.data)))}static async retrieveBatch(e,t){let r=[];const i=[...t];for(;i.length>0;)r.push(...await this._retrieveBatch(e,i.splice(0,100)));return r}}S.HEADER_LEN=96,S.schema=new Map([[S,{kind:"struct",fields:[["parentName",[32]],["owner",[32]],["class",[32]]]}]]);class R{constructor(e){this.name=e.name,this.ticker=e.ticker,this.mint=e.mint,this.decimals=e.decimals,this.website=null==e?void 0:e.website,this.logoUri=null==e?void 0:e.logoUri}serialize(){return i.serialize(R.schema,this)}static deserialize(e){return i.deserializeUnchecked(R.schema,R,e)}}R.schema=new Map([[R,{kind:"struct",fields:[["name","string"],["ticker","string"],["mint",[32]],["decimals","u8"],["website",{kind:"option",type:"string"}],["logoUri",{kind:"option",type:"string"}]]}]]);class x{constructor(e){this.mint=e.mint}serialize(){return i.serialize(x.schema,this)}static deserialize(e){return i.deserializeUnchecked(x.schema,x,e)}}x.schema=new Map([[x,{kind:"struct",fields:[["mint",[32]]]}]]);const k=new e.PublicKey("namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX"),v="SPL Name Service",E=new e.PublicKey("58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx"),B=new e.PublicKey("jCebN34bUfdeUYJT13J1yG16XWQpt5PDx6Mse9GUqhR"),P=new e.PublicKey("ETp9eKXVv1dWwHSpsXRUuXHmw24PwRkttCGVgpZEY9zF"),I=new e.PublicKey("AUoZ3YAhV3b2rZeEH93UMZHXUZcTramBvb4d9YEVySkc"),A=new e.PublicKey("33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z"),T=new e.PublicKey("FvPH7PrVrLGKPfqaf3xJodFTjZriqrAXXLTVWEorTFBi"),K=new e.PublicKey("4YcexoW3r78zz16J2aqmukBLRwGq6rAvWzJpkYAXqebv"),W=new e.PublicKey("DmSyHDSM9eSLyvoLsPvDr5fRRFZ7Bfr3h3ULvWpgQaq7"),N=new e.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),D=[new e.PublicKey("3ogYncmMM5CmytsGCqKHydmXmKUZ6sGWvizkzqwT7zb1"),new e.PublicKey("DM1jJCkZZEwY5tmWbgvKRxsDFzXCdbfrYCCH1CtwguEs")],_=new Map([["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","USDC"],["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","USDT"],["So11111111111111111111111111111111111111112","SOL"],["EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","FIDA"],["FeGn77dhg1KXRRFeSwwMiykZnZPw5JXW6naf2aQgZDQf","ETH"],["7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","GMT"],["AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB","GST"],["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","MSOL"],["DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","BONK"],["EPeUFDgHRxs9xxEPVaL6kfGQvCon7jmAWKVUHuux1Tpz","BAT"]]),H=new e.PublicKey("AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J"),O=new e.PublicKey("GcWEQ9K78FV7LEHteFVciYApERk5YvQuFDQPk1yYJVXi");async function C(e,t){if(!await e.getAccountInfo(t))throw new Error("Unable to find the given account.");return S.retrieve(e,t)}async function F(e){const t=v+e,r=s.sha256(Buffer.from(t,"utf8")).slice(2);return Buffer.from(r,"hex")}async function L(t,r,i){const s=[t];r?s.push(r.toBuffer()):s.push(Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(Buffer.alloc(32));const[a]=await e.PublicKey.findProgramAddress(s,k);return a}const M=async(e,t=E)=>{let r=await F(e);return{pubkey:await L(r,void 0,t),hashed:r}},z=async(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=Buffer.from([t?1:0]).toString().concat(r[0]),{pubkey:i}=await M(r[1]);return{...await M(e,i),isSub:!0,parent:i}}if(3===r.length&&t){const{pubkey:e}=await M(r[2]),{pubkey:t}=await M("\0".concat(r[1]),e),i=Buffer.from([1]).toString();return{...await M(i.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new Error("Invalid derivation input");return{...await M(e,E),isSub:!1,parent:void 0}},G=e=>{const t=v+e,r=s.sha256(Buffer.from(t,"utf8")).slice(2);return Buffer.from(r,"hex")},U=(t,r,i)=>{const s=[t];r?s.push(r.toBuffer()):s.push(Buffer.alloc(32)),i?s.push(i.toBuffer()):s.push(Buffer.alloc(32));const[a]=e.PublicKey.findProgramAddressSync(s,k);return a};async function Y(e,t){const i=G(t.toBase58()),s=U(i,A),{registry:a}=await S.retrieve(e,s);if(!a.data)throw new Error("Could not retrieve name data");const n=new r(a.data.slice(0,4),"le").toNumber();return a.data.slice(4,4+n).toString()}const V=(e,t=E)=>{let r=G(e);return{pubkey:U(r,void 0,t),hashed:r}},q=(e,t=!1)=>{e.endsWith(".sol")&&(e=e.slice(0,-4));const r=e.split(".");if(2===r.length){const e=Buffer.from([t?1:0]).toString().concat(r[0]),{pubkey:i}=V(r[1]);return{...V(e,i),isSub:!0,parent:i}}if(3===r.length&&t){const{pubkey:e}=V(r[2]),{pubkey:t}=V("\0".concat(r[1]),e),i=Buffer.from([1]).toString();return{...V(i.concat(r[0]),t),isSub:!0,parent:e,isSubRecord:!0}}if(r.length>=3)throw new Error("Invalid derivation input");return{...V(e,E),isSub:!1,parent:void 0}};async function j(t,r,i,s,a,n,o,l){const f=await F(r),d=await L(f,o,l),y=n||await t.getMinimumBalanceForRentExemption(i);let w;if(l){const{registry:e}=await C(t,l);w=e.owner}return p(k,e.SystemProgram.programId,d,a,s,f,new u(y),new c(i),o,l,w)}async function X(e,t,r,i,s){const a=await F(t),n=await L(a,i,s);let o;o=i||(await S.retrieve(e,n)).registry.owner;return d(k,n,r,o)}const Z=async(t,r,i,s,a)=>{let[n]=await e.PublicKey.findProgramAddress([B.toBuffer()],B),o=await F(t.toBase58()),c=await L(o,n,s);return[[],[new w({name:r}).getInstruction(B,e.SYSVAR_RENT_PUBKEY,k,E,c,n,i,s,a)]]};class J{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 Error("Invalid reverse Twitter account provided");return i.deserializeUnchecked(this.schema,J,r.data.slice(S.HEADER_LEN))}}async function Q(t,r,s,a,n){const o=await F(a.toString()),f=await L(o,T,K);let d=i.serialize(J.schema,new J({twitterRegistryKey:s.toBytes(),twitterHandle:r}));return[p(k,e.SystemProgram.programId,f,a,n,o,new u(await t.getMinimumBalanceForRentExemption(d.length+S.HEADER_LEN)),new c(d.length),T,K,T),l(k,f,new c(0),Buffer.from(d),T)]}J.schema=new Map([[J,{kind:"struct",fields:[["twitterRegistryKey",[32]],["twitterHandle","string"]]}]]);const $=new e.PublicKey("6NSu2tci4apRKQtt257bAVcvqYjB3zV2H1dWo56vgpa6"),ee=async(e,t)=>{const r=await L(await F(t.toBase58()),void 0,$),{registry:i}=await S.retrieve(e,r);if(!i.data)throw new Error("Invalid account data");return R.deserialize(i.data)};var te;exports.Record=void 0,(te=exports.Record||(exports.Record={})).IPFS="IPFS",te.ARWV="ARWV",te.SOL="SOL",te.ETH="ETH",te.BTC="BTC",te.LTC="LTC",te.DOGE="DOGE",te.Email="email",te.Url="url",te.Discord="discord",te.Github="github",te.Reddit="reddit",te.Twitter="twitter",te.Telegram="telegram",te.Pic="pic",te.SHDW="SHDW",te.POINT="POINT",te.BSC="BSC",te.Injective="INJECT";const re=(e,t)=>{const{pubkey:r}=q(t+"."+e,!0);return r},ie=async(e,t,r)=>{var i,s;const a=re(t,r);let{registry:n}=await S.retrieve(e,a);const o=r===exports.Record.SOL?96:null===(i=n.data)||void 0===i?void 0:i.indexOf(0);return n.data=null===(s=n.data)||void 0===s?void 0:s.slice(0,o),n},se=async(e,t)=>await ie(e,t,exports.Record.SOL),ae=(e,t,r)=>o.sign.detached.verify(e,t,r.toBytes());exports.BONFIDA_FIDA_BNB=I,exports.BONFIDA_USDC_BNB=W,exports.HASH_PREFIX=v,exports.MINT_PREFIX=b,exports.Mint=x,exports.NAME_PROGRAM_ID=k,exports.NAME_TOKENIZER_ID=m,exports.NameRegistryState=S,exports.Numberu32=c,exports.Numberu64=u,exports.PYTH_FIDA_PRICE_ACC=P,exports.PYTH_MAPPING_ACC=H,exports.REFERRERS=D,exports.REGISTER_PROGRAM_ID=B,exports.REVERSE_LOOKUP_CLASS=A,exports.ROOT_DOMAIN_ACCOUNT=E,exports.ReverseTwitterRegistryState=J,exports.SOL_RECORD_SIG_LEN=96,exports.TOKENS_SYM_MINT=_,exports.TOKEN_TLD=$,exports.TWITTER_ROOT_PARENT_REGISTRY_KEY=K,exports.TWITTER_VERIFICATION_AUTHORITY=T,exports.TokenData=R,exports.USDC_MINT=N,exports.VAULT_OWNER=O,exports.changeTwitterRegistryData=async function(e,t,r,i){const s=await F(e),a=await L(s,void 0,K);return[l(k,a,new c(r),i,t)]},exports.changeVerifiedPubkey=async function(e,t,r,i,s){const a=await F(t),n=await L(a,void 0,K);let o=[f(k,n,i,r,void 0)];const c=await F(r.toString());return await L(c,T,void 0),o.push(await X(e,r.toString(),s,T,K)),o=o.concat(await Q(e,t,n,i,s)),o},exports.checkSolRecord=ae,exports.createInstruction=p,exports.createInstructionV3=g,exports.createNameRegistry=j,exports.createReverseInstruction=w,exports.createReverseName=Z,exports.createReverseTwitterRegistry=Q,exports.createSubdomain=async(e,t,r,i=2e3)=>{const s=[],a=t.split(".")[0];if(!a)throw new Error("Invalid subdomain input");const{parent:n,pubkey:o}=q(t),c=await e.getMinimumBalanceForRentExemption(i+S.HEADER_LEN),u=await j(e,"\0".concat(a),i,r,r,c,void 0,n);s.push(u);const[,p]=await Z(o,"\0".concat(a),r,n,r);return s.push(...p),[[],s]},exports.createV2Instruction=y,exports.createVerifiedTwitterRegistry=async function(t,r,i,s,a){const n=await F(r),o=await L(n,void 0,K),l=await t.getMinimumBalanceForRentExemption(s+S.HEADER_LEN);let f=[p(k,e.SystemProgram.programId,o,i,a,n,new u(l),new c(s),void 0,K,T)];return f=f.concat(await Q(t,r,o,i,a)),f},exports.deleteInstruction=d,exports.deleteNameRegistry=X,exports.deleteTwitterRegistry=async function(e,t){const r=await F(e),i=await L(r,void 0,K),s=await F(t.toString()),a=await L(s,T,K);return[d(k,i,t,t),d(k,a,t,t)]},exports.findSubdomains=async(e,t)=>{const r=[{memcmp:{offset:0,bytes:t.toBase58()}},{memcmp:{offset:64,bytes:A.toBase58()}}],i=await e.getProgramAccounts(k,{filters:r}),s=await Y(e,t),a=i.map((e=>{var t;return null===(t=e.account.data.slice(97).toString("utf-8"))||void 0===t?void 0:t.split("\0").join("")})),n=a.map((e=>q(e+"."+s).pubkey)),o=await e.getMultipleAccountsInfo(n);return a.filter(((e,t)=>!!o[t]))},exports.getAllDomains=async function(e,t){const r=[{memcmp:{offset:32,bytes:t.toBase58()}},{memcmp:{offset:0,bytes:E.toBase58()}}];return(await e.getProgramAccounts(k,{filters:r})).map((e=>e.pubkey))},exports.getAllRegisteredDomains=async e=>{const t=[{memcmp:{offset:0,bytes:E.toBase58()}}];return await e.getProgramAccounts(k,{dataSlice:{offset:32,length:32},filters:t})},exports.getArweaveRecord=async(e,t)=>await ie(e,t,exports.Record.ARWV),exports.getBscRecord=async(e,t)=>await ie(e,t,exports.Record.BSC),exports.getBtcRecord=async(e,t)=>await ie(e,t,exports.Record.BTC),exports.getDiscordRecord=async(e,t)=>await ie(e,t,exports.Record.Discord),exports.getDogeRecord=async(e,t)=>await ie(e,t,exports.Record.DOGE),exports.getDomainKey=z,exports.getDomainKeySync=q,exports.getEmailRecord=async(e,t)=>await ie(e,t,exports.Record.Email),exports.getEthRecord=async(e,t)=>await ie(e,t,exports.Record.ETH),exports.getFavoriteDomain=async(t,r)=>{const[i]=await n.FavouriteDomain.getKey(n.NAME_OFFERS_ID,new e.PublicKey(r)),s=await n.FavouriteDomain.retrieve(t,i),a=await Y(t,s.nameAccount);return{domain:s.nameAccount,reverse:a}},exports.getGithubRecord=async(e,t)=>await ie(e,t,exports.Record.Github),exports.getHandleAndRegistryKey=async function(t,r){const i=await F(r.toString()),s=await L(i,T,K);let a=await J.retrieve(t,s);return[a.twitterHandle,new e.PublicKey(a.twitterRegistryKey)]},exports.getHashedName=F,exports.getHashedNameSync=G,exports.getInjectiveRecord=async(e,t)=>await ie(e,t,exports.Record.Injective),exports.getIpfsRecord=async(e,t)=>await ie(e,t,exports.Record.IPFS),exports.getLtcRecord=async(e,t)=>await ie(e,t,exports.Record.LTC),exports.getNameAccountKey=L,exports.getNameAccountKeySync=U,exports.getNameOwner=C,exports.getPicRecord=async(e,t)=>await ie(e,t,exports.Record.Pic),exports.getPointRecord=async(e,t)=>await ie(e,t,exports.Record.POINT),exports.getRecord=ie,exports.getRecordKeySync=re,exports.getRedditRecord=async(e,t)=>await ie(e,t,exports.Record.Reddit),exports.getReverseKey=async(e,t)=>{const{pubkey:r,parent:i}=await z(e),s=await F(r.toBase58());return await L(s,A,t?i:void 0)},exports.getReverseKeySync=(e,t)=>{const{pubkey:r,parent:i}=q(e),s=G(r.toBase58());return U(s,A,t?i:void 0)},exports.getShdwRecord=async(e,t)=>await ie(e,t,exports.Record.SHDW),exports.getSolRecord=se,exports.getTelegramRecord=async(e,t)=>await ie(e,t,exports.Record.Telegram),exports.getTokenInfoFromMint=ee,exports.getTokenInfoFromName=async(t,r)=>{const i=await L(await F(r),void 0,$),{registry:s}=await S.retrieve(t,i);if(!s.data)throw new Error("Invalid account data");const a=new e.PublicKey(x.deserialize(s.data).mint);return await ee(t,a)},exports.getTwitterHandleandRegistryKeyViaFilters=async function(t,r){const s=[{memcmp:{offset:0,bytes:K.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:T.toBase58()}}],a=await t.getProgramAccounts(k,{filters:s});for(const t of a)if(t.account.data.length>S.HEADER_LEN+32){let r=t.account.data.slice(S.HEADER_LEN),s=i.deserializeUnchecked(J.schema,J,r);return[s.twitterHandle,new e.PublicKey(s.twitterRegistryKey)]}throw new Error("Registry not found.")},exports.getTwitterRecord=async(e,t)=>await ie(e,t,exports.Record.Twitter),exports.getTwitterRegistry=async function(e,t){const r=await F(t),i=await L(r,void 0,K),{registry:s}=await S.retrieve(e,i);return s},exports.getTwitterRegistryData=async function(t,r){const i=[{memcmp:{offset:0,bytes:K.toBase58()}},{memcmp:{offset:32,bytes:r.toBase58()}},{memcmp:{offset:64,bytes:new e.PublicKey(Buffer.alloc(32,0)).toBase58()}}],s=await t.getProgramAccounts(k,{filters:i});if(s.length>1)throw new Error("Found more than one registry.");return s[0].account.data.slice(S.HEADER_LEN)},exports.getTwitterRegistryKey=async function(e){const t=await F(e);return await L(t,void 0,K)},exports.getUrlRecord=async(e,t)=>await ie(e,t,exports.Record.Url),exports.performReverseLookup=async function(e,t){const i=await F(t.toBase58()),s=await L(i,A),{registry:a}=await S.retrieve(e,s);if(!a.data)throw new Error("Could not retrieve name data");const n=new r(a.data.slice(0,4),"le").toNumber();return a.data.slice(4,4+n).toString()},exports.performReverseLookupBatch=async function(e,t){let i=[];for(let e of t){const t=await F(e.toBase58()),r=await L(t,A);i.push(r)}return(await S.retrieveBatch(e,i)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new r(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.registerDomainName=async(r,i,s,n,o,c=N,u)=>{const[p]=e.PublicKey.findProgramAddressSync([B.toBuffer()],B),l=G(i),f=U(l,void 0,E),d=G(f.toBase58()),y=U(d,p),[w]=e.PublicKey.findProgramAddressSync([f.toBuffer()],B),m=D.findIndex((e=>null==u?void 0:u.equals(e)));let b;const h=[];if(-1!==m&&u){b=t.getAssociatedTokenAddressSync(c,u,!0);const e=await r.getAccountInfo(b);if(!(null==e?void 0:e.data)){const e=t.createAssociatedTokenAccountInstruction(n,b,u,c);h.push(e)}}const S=new a.PythHttpClient(r,a.getPythProgramKeyForCluster("mainnet-beta")),R=await S.getData(),x=_.get(c.toBase58());if(!x)throw new Error("Symbol not found");const v=R.productPrice.get("Crypto."+x+"/USD"),P=R.productFromSymbol.get("Crypto."+x+"/USD"),I=t.getAssociatedTokenAddressSync(c,O),A=new g({name:i,space:s,referrerIdxOpt:-1!=m?m:null}).getInstruction(B,k,E,f,y,e.SystemProgram.programId,p,n,o,H,v.productAccountKey,new e.PublicKey(P.price_account),I,t.TOKEN_PROGRAM_ID,e.SYSVAR_RENT_PUBKEY,w,b);return h.push(A),[[],h]},exports.resolve=async(t,r)=>{const{pubkey:i}=q(r),{registry:s,nftOwner:a}=await S.retrieve(t,i);if(a)return a;try{const i=q(exports.Record.SOL+"."+r,!0),a=await se(t,r);if(!a.data)throw new Error("Invalid SOL record data");const n=new TextEncoder,o=Buffer.concat([a.data.slice(0,32),i.pubkey.toBuffer()]),c=n.encode(o.toString("hex"));if(!ae(c,a.data.slice(32),s.owner))throw new Error("Signature invalid");return new e.PublicKey(a.data.slice(0,32))}catch(e){if(e instanceof Error&&"FetchError"===e.name)throw e;console.log(e)}return s.owner},exports.retrieveNftOwner=h,exports.retrieveNfts=async t=>{const r=await t.getProgramAccounts(m,{filters:[{memcmp:{offset:0,bytes:"3"}}]});return r.map((t=>new e.PublicKey(t.account.data.slice(66,98))))},exports.reverseLookup=Y,exports.reverseLookupBatch=async function(e,t){let i=[];for(let e of t){const t=G(e.toBase58()),r=U(t,A);i.push(r)}return(await S.retrieveBatch(e,i)).map((e=>{if(void 0===e||void 0===e.data)return;let t=new r(e.data.slice(0,4),"le").toNumber();return e.data.slice(4,4+t).toString()}))},exports.transferInstruction=f,exports.transferNameOwnership=async function(e,t,r,i,s,a){const n=await F(t),o=await L(n,i,s);let c;return c=i||(await S.retrieve(e,o)).registry.owner,f(k,o,r,c,i,s,a)},exports.updateInstruction=l,exports.updateNameRegistryData=async function(e,t,r,i,s,a){const n=await F(t),o=await L(n,s,a);let u;return u=s||(await S.retrieve(e,o)).registry.owner,l(k,o,new c(r),i,u)};
|