diff --git a/packages/extension/package.json b/packages/extension/package.json index a2a952328..b883b71b7 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -24,6 +24,7 @@ }, "dependencies": { "@amplitude/analytics-browser": "^2.14.0", + "@bonfida/spl-name-service": "^3.0.10", "@enkryptcom/extension-bridge": "workspace:^", "@enkryptcom/hw-wallets": "workspace:^", "@enkryptcom/keyring": "workspace:^", diff --git a/packages/extension/src/libs/name-resolver/index.ts b/packages/extension/src/libs/name-resolver/index.ts index b19d9684a..fd3656efd 100644 --- a/packages/extension/src/libs/name-resolver/index.ts +++ b/packages/extension/src/libs/name-resolver/index.ts @@ -14,11 +14,11 @@ class GenericNameResolver { }); } - async resolveName(name: string, coins: CoinType[]): Promise { + async resolveName(name: string, coins: CoinType[], providerChain?: string): Promise { let response: string | null = null; for (const coin of coins) { response = await this.nameResolver - .resolveAddress(name, coin) + .resolveAddress(name, coin, providerChain) .catch(() => null); if (response) return response; } diff --git a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue index 1509894d8..b89963f5d 100644 --- a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue @@ -668,7 +668,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = async (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/providers/solana/ui/send-transaction/index.vue b/packages/extension/src/providers/solana/ui/send-transaction/index.vue index a947cbc51..665ec427f 100644 --- a/packages/extension/src/providers/solana/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/solana/ui/send-transaction/index.vue @@ -694,7 +694,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = async (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/ui/action/views/swap/index.vue b/packages/extension/src/ui/action/views/swap/index.vue index ad00e35f3..eb1e37516 100644 --- a/packages/extension/src/ui/action/views/swap/index.vue +++ b/packages/extension/src/ui/action/views/swap/index.vue @@ -404,7 +404,11 @@ const setMax = () => { const inputAddress = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { inputAddress(resolved); diff --git a/packages/name-resolution/package.json b/packages/name-resolution/package.json index c60e7df5a..be0be4726 100644 --- a/packages/name-resolution/package.json +++ b/packages/name-resolution/package.json @@ -49,7 +49,9 @@ "dependencies": { "@ensdomains/address-encoder": "^1.1.2", "@siddomains/sidjs": "0.1.29", + "@solana/web3.js": "^1.98.0", "@unstoppabledomains/resolution": "^9.3.3", + "@web3-name-sdk/core": "^0.4.1", "ethers": "^5.8.0" } } diff --git a/packages/name-resolution/src/index.ts b/packages/name-resolution/src/index.ts index 7c641bec3..dfb1de661 100644 --- a/packages/name-resolution/src/index.ts +++ b/packages/name-resolution/src/index.ts @@ -47,10 +47,11 @@ class NameResolver { public async resolveAddress( name: string, - coin: CoinType = "ETH" + coin: CoinType = "ETH", + paymentIdChain?: string ): Promise { return this.initDone.then(() => { - if (this.sid.isSupportedName(name)) return this.sid.resolveAddress(name); + if (this.sid.isSupportedName(name)) return this.sid.resolveAddress(name, coin, paymentIdChain); if (this.rns.isSupportedName(name)) return this.rns.resolveAddress(name, coin); if (this.ud.isSupportedName(name)) diff --git a/packages/name-resolution/src/sid/index.ts b/packages/name-resolution/src/sid/index.ts index ca465372e..8c4fd5fba 100644 --- a/packages/name-resolution/src/sid/index.ts +++ b/packages/name-resolution/src/sid/index.ts @@ -1,72 +1,114 @@ -import { ethers } from "ethers"; -import SID, { getSidAddress } from "@siddomains/sidjs"; -import { BaseResolver } from "../types"; +import { createWeb3Name } from "@web3-name-sdk/core"; +import { BaseResolver, CoinType } from "../types"; +import { PAYMENT_ID_CHAINS_MAP, PaymentIdChain, SIDOptions, TIMEOUT_PRESETS } from "./types"; +import { createSolName } from "@web3-name-sdk/core/solName"; +import { createPaymentIdName } from "@web3-name-sdk/core/paymentIdName"; +import { isValidPaymentId } from "./utils"; import { getTLD } from "../utils"; -import { SIDOptions } from "./types"; +// demo: https://sdk-demo-git-main-space-id.vercel.app/ +const evm_tlds = [ + "bnb", + "arb", + "wod", + "mph", + "g", + "eth", + "btc", + "burger", + "alien", + "zkf", + "merlin", + "taiko", + "tomo", + "gno", + "floki", + "ll", + "ip", + "mode", + "mint", + "manta", + "cake", + "zeta", + "ail", + "duck", +]; class SIDResolver implements BaseResolver { name: string; - - supportedTLDs = ["bnb", "arb"]; - + timeout: number; + // The supported tlds for sid in evm and solana + supportedTLDs = ["sol", ...evm_tlds]; rpc: SIDOptions; + solanaNameResolver: ReturnType; + paymentIdNameResolver: ReturnType; + web3NameResolver: ReturnType; constructor(options: SIDOptions) { this.rpc = options; + this.timeout = options.timeout || TIMEOUT_PRESETS.normal; this.name = "spaceid"; + this.solanaNameResolver = createSolName({ timeout: this.timeout }); + this.paymentIdNameResolver = createPaymentIdName(); + this.web3NameResolver = createWeb3Name(); } - // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function public async init(): Promise {} - public async resolveReverseName(address: string): Promise { - const bnbProvider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node.bnb, - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sidBNB = new SID({ - provider: bnbProvider, - sidAddress: getSidAddress("56"), + // The PaymentId only supports getAddress resolution. + public async handlePaymentIdGetAddress( + name: string, + paymentIdChain?: string + ): Promise { + return await this.paymentIdNameResolver.getAddress({ + name, + chainId: PAYMENT_ID_CHAINS_MAP[paymentIdChain?.toLowerCase()] || PaymentIdChain.Ethereum, }); - const nameBnb = await sidBNB.getName(address); - if (nameBnb) return nameBnb.name; - const arbProvider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node.arb, - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sidArb = new SID({ - provider: arbProvider, - sidAddress: getSidAddress("42161"), - }); - const nameArb = await sidArb.getName(address); - if (nameArb) return nameArb.name; - return null; } - public async resolveAddress(name: string): Promise { - const provider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node[getTLD(name)], - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sid = new SID({ - provider, - sidAddress: getSidAddress(getTLD(name) === "bnb" ? "56" : "42161"), - }); - const address = await sid.name(name).getAddress(); - if (parseInt(address, 16) === 0) { + public async resolveReverseName(address: string): Promise { + try { + let name = await this.web3NameResolver.getDomainName({ + timeout: this.timeout, + address, + }); + if (!name) { + name = await this.solanaNameResolver.getDomainName({ + address, + }); + } + return name; + } catch (error) { return null; } - return address; } + public async resolveAddress( + name: string, + coint: CoinType, + paymentIdChain?: string, + ): Promise { + if (isValidPaymentId(name)) { + console.log("PaymentId name", name, coint); + return this.handlePaymentIdGetAddress(name, paymentIdChain); + } + + const tld = getTLD(name); + switch (tld) { + case "sol": + const solAddress = await this.solanaNameResolver.getAddress({ + name, + }); + return solAddress; + default: + const address = await this.web3NameResolver.getAddress(name, { + timeout: this.timeout, + }); + return parseInt(address, 16) === 0 ? null : address; + } + } public isSupportedName(name: string): boolean { - return this.supportedTLDs.includes(getTLD(name)); + // Compatible with TLD and paymentId + return this.supportedTLDs.includes(getTLD(name)) || isValidPaymentId(name); } } diff --git a/packages/name-resolution/src/sid/types.ts b/packages/name-resolution/src/sid/types.ts index f0c52fef0..e2771c058 100644 --- a/packages/name-resolution/src/sid/types.ts +++ b/packages/name-resolution/src/sid/types.ts @@ -3,4 +3,36 @@ export interface SIDOptions { bnb: string; arb: string; }; + timeout?: number } + +export type Protocol = "EVM" | "Solana" | "PaymentID"; +export enum PaymentIdChain { + Bitcoin = 0, + Ethereum = 1, + Solana = 2, + Tron = 3, + Aptos = 4, + Sui = 5, +} +export const PAYMENT_ID_CHAINS_MAP = { + "bitcoin": 0, + "ethereum": 1, + "solana": 2, + "tron": 3, + "aptos": 4, + "sui": 5, +}; +export type Method = + | "getAddress" + | "getDomainName" + | "batchGetDomainNameByChainId" + | "getMetadata" + | "getContentHash"; + + +export const TIMEOUT_PRESETS = { + veryShort: 100, // Intentionally short to test timeout + normal: 5000, // Normal timeout (5s) + long: 15000, // Long timeout (15s) +}; \ No newline at end of file diff --git a/packages/name-resolution/src/sid/utils.ts b/packages/name-resolution/src/sid/utils.ts new file mode 100644 index 000000000..db6a9e3dd --- /dev/null +++ b/packages/name-resolution/src/sid/utils.ts @@ -0,0 +1,3 @@ +const paymentIdRegex = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+$/ +export const isValidPaymentId = (id: string) => paymentIdRegex.test(id) + diff --git a/packages/name-resolution/src/types.ts b/packages/name-resolution/src/types.ts index 242f5320d..3ecb1c2ed 100644 --- a/packages/name-resolution/src/types.ts +++ b/packages/name-resolution/src/types.ts @@ -1,5 +1,5 @@ import { ENSOptions } from "./ens/types"; -import { SIDOptions } from "./sid/types"; +import { SIDOptions } from "./sid/types"; export type CoinType = | "BTC" @@ -146,7 +146,8 @@ export abstract class BaseResolver { public abstract resolveAddress( name: string, - coint: CoinType + coint: CoinType, + paymentIdChain?: string ): Promise; public abstract resolveReverseName(address: string): Promise; diff --git a/packages/name-resolution/tsconfig.json b/packages/name-resolution/tsconfig.json index 6da8e1f23..f32c11b10 100644 --- a/packages/name-resolution/tsconfig.json +++ b/packages/name-resolution/tsconfig.json @@ -12,7 +12,10 @@ "outDir": "dist", "resolveJsonModule": true, "esModuleInterop": true, - "declaration": true + "declaration": true, + "paths": { + "@web3-name-sdk/core/*": ["node_modules/@web3-name-sdk/core/dist/*"] + }, }, "include": ["src/**/*.ts", "tests/**/*.ts"], "exclude": [ diff --git a/yarn.lock b/yarn.lock index aec5ea9de..9d88158d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:^1.10.0": + version: 1.11.0 + resolution: "@adraffy/ens-normalize@npm:1.11.0" + checksum: 10/abef75f21470ea43dd6071168e092d2d13e38067e349e76186c78838ae174a46c3e18ca50921d05bea6ec3203074147c9e271f8cb6531d1c2c0e146f3199ddcb + languageName: node + linkType: hard + "@amplitude/analytics-browser@npm:^2.14.0": version: 2.14.0 resolution: "@amplitude/analytics-browser@npm:2.14.0" @@ -495,6 +502,38 @@ __metadata: languageName: node linkType: hard +"@bonfida/sns-records@npm:0.0.1": + version: 0.0.1 + resolution: "@bonfida/sns-records@npm:0.0.1" + dependencies: + borsh: "npm:1.0.0" + bs58: "npm:5.0.0" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.87.3 + checksum: 10/e47294cdd73961288eb9ad41f5f80eb67953fcac5e0e9f29c39990795411f30606e3eba359fbd8e3e8b23ff64f797ce2ad33c8298fe6a2c9634902397b3a3098 + languageName: node + linkType: hard + +"@bonfida/spl-name-service@npm:^3.0.10": + version: 3.0.10 + resolution: "@bonfida/spl-name-service@npm:3.0.10" + dependencies: + "@bonfida/sns-records": "npm:0.0.1" + "@noble/curves": "npm:^1.4.0" + "@scure/base": "npm:^1.1.6" + "@solana/spl-token": "npm:0.4.6" + borsh: "npm:2.0.0" + buffer: "npm:^6.0.3" + graphemesplit: "npm:^2.4.4" + ipaddr.js: "npm:^2.2.0" + punycode: "npm:^2.3.1" + peerDependencies: + "@solana/web3.js": ^1.87.3 + checksum: 10/46b246cb5ac3154ddee69ed739bfb8893045d56759319c75beca61022575ffc048720334cb49abc2903eeee3ccdf815292186f8c0599e65ff2d11cb8db66739f + languageName: node + linkType: hard + "@bundled-es-modules/cookie@npm:^2.0.0": version: 2.0.0 resolution: "@bundled-es-modules/cookie@npm:2.0.0" @@ -1530,6 +1569,7 @@ __metadata: resolution: "@enkryptcom/extension@workspace:packages/extension" dependencies: "@amplitude/analytics-browser": "npm:^2.14.0" + "@bonfida/spl-name-service": "npm:^3.0.10" "@crxjs/vite-plugin": "npm:^2.0.0-beta.32" "@enkryptcom/extension-bridge": "workspace:^" "@enkryptcom/hw-wallets": "workspace:^" @@ -1729,10 +1769,12 @@ __metadata: dependencies: "@ensdomains/address-encoder": "npm:^1.1.2" "@siddomains/sidjs": "npm:0.1.29" + "@solana/web3.js": "npm:^1.98.0" "@types/node": "npm:^22.14.1" "@typescript-eslint/eslint-plugin": "npm:^8.30.1" "@typescript-eslint/parser": "npm:^8.30.1" "@unstoppabledomains/resolution": "npm:^9.3.3" + "@web3-name-sdk/core": "npm:^0.4.1" eslint: "npm:^9.24.0" eslint-config-airbnb-base: "npm:^15.0.0" eslint-config-prettier: "npm:^10.1.2" @@ -8374,6 +8416,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.6": + version: 1.2.5 + resolution: "@scure/base@npm:1.2.5" + checksum: 10/9a963a27424a373b62760c9ae7099ae496be67eb5b31205639f529f0dbcb2228a827222a36d22842cc2acda78e300a3430d46d84de5d8d4b791208955360853e + languageName: node + linkType: hard + "@scure/base@npm:~1.2.2, @scure/base@npm:~1.2.4": version: 1.2.4 resolution: "@scure/base@npm:1.2.4" @@ -8699,6 +8748,15 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-core@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-core@npm:2.0.0-preview.2" + dependencies: + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/28baf598f689deb8b3d2840035789960b73715425dc5684964e8cffec99baedc456aa468887b1ca681cb57d54312b70b3d65f6a5ea1475ddfcd76bb1ffe6710e + languageName: node + linkType: hard + "@solana/codecs-core@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-core@npm:2.0.0-rc.1" @@ -8721,6 +8779,17 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-data-structures@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-data-structures@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/2d5fb280b7df155e11cab25639884cf9336641291854dbe2768420a27cca87f86e1ee0289b4339debe92183c27c0c70f95a1f2043601a9cea88f33995b7b3664 + languageName: node + linkType: hard + "@solana/codecs-data-structures@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-data-structures@npm:2.0.0-rc.1" @@ -8747,6 +8816,16 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-numbers@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-numbers@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/e6caed4c2d43bc52191f5af15284787bbea2e3b3153f84be0443196f7e7d4c5c02b2a56d60c8f64335c9033d890877a122bdc8de40c0a856ed52c84f39263722 + languageName: node + linkType: hard + "@solana/codecs-numbers@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-numbers@npm:2.0.0-rc.1" @@ -8771,6 +8850,19 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-strings@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-strings@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + checksum: 10/c9e1c54b2d987fe504c879bfa083effe9539a83cd5927bcbc7446cd34065c6c707d4a6ae67b99ed0d475c6dd87b5879d3df205565febb17c94d3862c586b1783 + languageName: node + linkType: hard + "@solana/codecs-strings@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-strings@npm:2.0.0-rc.1" @@ -8799,6 +8891,19 @@ __metadata: languageName: node linkType: hard +"@solana/codecs@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-data-structures": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/codecs-strings": "npm:2.0.0-preview.2" + "@solana/options": "npm:2.0.0-preview.2" + checksum: 10/8ee2a6349c602b62f3505d8ecde3dac00a472792fa13485f9aafffc44522d5e212038e90b561ac543a83f0cd78e76c7fe958cc6e2abc1c6e1b56d4e2ce1311f4 + languageName: node + linkType: hard + "@solana/codecs@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs@npm:2.0.0-rc.1" @@ -8829,6 +8934,18 @@ __metadata: languageName: node linkType: hard +"@solana/errors@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/errors@npm:2.0.0-preview.2" + dependencies: + chalk: "npm:^5.3.0" + commander: "npm:^12.0.0" + bin: + errors: bin/cli.js + checksum: 10/37d11270311397d7f652ee320d52e6987265e94c7fe3daa7f47e569e5411ad36cba60acd63e11b672416d3f119f1d7eeb6ffeb9f8a43caa889aaf0199113da55 + languageName: node + linkType: hard + "@solana/errors@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/errors@npm:2.0.0-rc.1" @@ -8929,6 +9046,16 @@ __metadata: languageName: node linkType: hard +"@solana/options@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/options@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + checksum: 10/63572dc6a29a1a2fcb68d19a6afe3b49baa1c60af250088c4413f890d91024dbf7bd752b4bf2c75456d89deb70823c25cd41013470a9cb5da1999b1459644b53 + languageName: node + linkType: hard + "@solana/options@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/options@npm:2.0.0-rc.1" @@ -9177,6 +9304,18 @@ __metadata: languageName: node linkType: hard +"@solana/spl-token-group@npm:^0.0.4": + version: 0.0.4 + resolution: "@solana/spl-token-group@npm:0.0.4" + dependencies: + "@solana/codecs": "npm:2.0.0-preview.2" + "@solana/spl-type-length-value": "npm:0.1.0" + peerDependencies: + "@solana/web3.js": ^1.91.6 + checksum: 10/72621ce6dc9c6eedae636058623e7cc77ef1c228ca4c128c382d3f0f9e09e56f4d4f7b873b1d43d659a3b70745aec93ce7d9e2f09c12154f0d7bc55c0e7b279f + languageName: node + linkType: hard + "@solana/spl-token-group@npm:^0.0.7": version: 0.0.7 resolution: "@solana/spl-token-group@npm:0.0.7" @@ -9199,6 +9338,21 @@ __metadata: languageName: node linkType: hard +"@solana/spl-token@npm:0.4.6": + version: 0.4.6 + resolution: "@solana/spl-token@npm:0.4.6" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/buffer-layout-utils": "npm:^0.2.0" + "@solana/spl-token-group": "npm:^0.0.4" + "@solana/spl-token-metadata": "npm:^0.1.4" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.91.6 + checksum: 10/944f5a5b4401fd21e17358f33278bd03e978f229682810f40fcd783a3f71cb05841c051b91352ffec1da3e7d3070c0307639c6b2b42312f50fc8ecbe78a3460d + languageName: node + linkType: hard + "@solana/spl-token@npm:0.4.9, @solana/spl-token@npm:^0.4.8": version: 0.4.9 resolution: "@solana/spl-token@npm:0.4.9" @@ -9229,6 +9383,15 @@ __metadata: languageName: node linkType: hard +"@solana/spl-type-length-value@npm:0.1.0": + version: 0.1.0 + resolution: "@solana/spl-type-length-value@npm:0.1.0" + dependencies: + buffer: "npm:^6.0.3" + checksum: 10/00ca61fb03a7eafb90ba43803b8a1e3c3a8ff8558c452ce2e0d571468f0d205ceeb64640160f5474e15c63e31aa75d664f49324f777ad18b019292d50c8b083b + languageName: node + linkType: hard + "@solana/subscribable@npm:2.1.0": version: 2.1.0 resolution: "@solana/subscribable@npm:2.1.0" @@ -12613,6 +12776,23 @@ __metadata: languageName: node linkType: hard +"@web3-name-sdk/core@npm:^0.4.1": + version: 0.4.1 + resolution: "@web3-name-sdk/core@npm:0.4.1" + dependencies: + "@adraffy/ens-normalize": "npm:^1.10.0" + "@ensdomains/ens-validation": "npm:^0.1.0" + peerDependencies: + "@bonfida/spl-name-service": ^3.0.10 + "@sei-js/core": ^3.1.0 + "@siddomains/injective-sidjs": 0.0.2-beta + "@siddomains/sei-sidjs": ^0.0.4 + "@solana/web3.js": ^1.75.0 + viem: ^2.23.12 + checksum: 10/8f047f00fd007f9c4e980da6979c26f75c8927fc865d8381ba37435388289ebdf9612b71e8f1d562ae3e466305433b2fa01277cde9bf4f6894cce79141091f2f + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -14291,6 +14471,13 @@ __metadata: languageName: node linkType: hard +"borsh@npm:2.0.0": + version: 2.0.0 + resolution: "borsh@npm:2.0.0" + checksum: 10/b8e80de36b33899d05c5155715ccf9beabb82087a8dfc18ccd7250971a63dfa03e51635ad255e65cf60baff9e6ed88dee2141ef69982bcf442d9e850b2da16a2 + languageName: node + linkType: hard + "borsh@npm:^0.7.0": version: 0.7.0 resolution: "borsh@npm:0.7.0" @@ -14527,6 +14714,15 @@ __metadata: languageName: node linkType: hard +"bs58@npm:5.0.0, bs58@npm:^5.0.0": + version: 5.0.0 + resolution: "bs58@npm:5.0.0" + dependencies: + base-x: "npm:^4.0.0" + checksum: 10/2475cb0684e07077521aac718e604a13e0f891d58cff923d437a2f7e9e28703ab39fce9f84c7c703ab369815a675f11e3bd394d38643bfe8969fbe42e6833d45 + languageName: node + linkType: hard + "bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" @@ -14536,15 +14732,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^5.0.0": - version: 5.0.0 - resolution: "bs58@npm:5.0.0" - dependencies: - base-x: "npm:^4.0.0" - checksum: 10/2475cb0684e07077521aac718e604a13e0f891d58cff923d437a2f7e9e28703ab39fce9f84c7c703ab369815a675f11e3bd394d38643bfe8969fbe42e6833d45 - languageName: node - linkType: hard - "bs58check@npm:2.1.2, bs58check@npm:<3.0.0, bs58check@npm:^2.0.0, bs58check@npm:^2.1.1, bs58check@npm:^2.1.2": version: 2.1.2 resolution: "bs58check@npm:2.1.2" @@ -15519,7 +15706,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^12.1.0": +"commander@npm:^12.0.0, commander@npm:^12.1.0": version: 12.1.0 resolution: "commander@npm:12.1.0" checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93 @@ -19770,6 +19957,16 @@ __metadata: languageName: node linkType: hard +"graphemesplit@npm:^2.4.4": + version: 2.6.0 + resolution: "graphemesplit@npm:2.6.0" + dependencies: + js-base64: "npm:^3.6.0" + unicode-trie: "npm:^2.0.0" + checksum: 10/0ccc12a921a99afb673112d7e21486015296e058b9cf92261a0b72e8bfaf6fcb0220760e62acb9f3f44ba1e0ff6181c0c3ef0c6749035b20334e941aa2d9c578 + languageName: node + linkType: hard + "graphql-tag@npm:^2.12.6": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" @@ -20657,7 +20854,7 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.2.0": version: 2.2.0 resolution: "ipaddr.js@npm:2.2.0" checksum: 10/9e1cdd9110b3bca5d910ab70d7fb1933e9c485d9b92cb14ef39f30c412ba3fe02a553921bf696efc7149cc653453c48ccf173adb996ec27d925f1f340f872986 @@ -21470,7 +21667,7 @@ __metadata: languageName: node linkType: hard -"js-base64@npm:^3.7.2, js-base64@npm:^3.7.4, js-base64@npm:^3.7.7": +"js-base64@npm:^3.6.0, js-base64@npm:^3.7.2, js-base64@npm:^3.7.4, js-base64@npm:^3.7.7": version: 3.7.7 resolution: "js-base64@npm:3.7.7" checksum: 10/185e34c536a6b1c4e1ad8bd96d25b49a9ea4e6803e259eaaaca95f1b392a0d590b2933c5ca8580c776f7279507944b81ff1faf889d84baa5e31f026e96d676a5 @@ -24568,6 +24765,13 @@ __metadata: languageName: node linkType: hard +"pako@npm:^0.2.5": + version: 0.2.9 + resolution: "pako@npm:0.2.9" + checksum: 10/627c6842e90af0b3a9ee47345bd66485a589aff9514266f4fa9318557ad819c46fedf97510f2cef9b6224c57913777966a05cb46caf6a9b31177a5401a06fe15 + languageName: node + linkType: hard + "pako@npm:^2.0.3, pako@npm:^2.0.4": version: 2.1.0 resolution: "pako@npm:2.1.0" @@ -28822,6 +29026,13 @@ __metadata: languageName: node linkType: hard +"tiny-inflate@npm:^1.0.0": + version: 1.0.3 + resolution: "tiny-inflate@npm:1.0.3" + checksum: 10/f620114fb51ea4a16ea7b4c62d6dd753f8faf41808a133c53d431ed4bf2ca377b21443653a0096894f2be22ca11bb327f148e7e5431f9246068917724ec01ffc + languageName: node + linkType: hard + "tiny-secp256k1@npm:1.1.6": version: 1.1.6 resolution: "tiny-secp256k1@npm:1.1.6" @@ -29848,6 +30059,16 @@ __metadata: languageName: node linkType: hard +"unicode-trie@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-trie@npm:2.0.0" + dependencies: + pako: "npm:^0.2.5" + tiny-inflate: "npm:^1.0.0" + checksum: 10/60404411dbd363bdcca9e81c9327fa80469f2e685737bac88ec693225ff20b9b545ac37ca2da13ec02f1552167dd010dfefd7c58b72a73d44a89fab1ca9c2479 + languageName: node + linkType: hard + "unicorn-magic@npm:^0.1.0": version: 0.1.0 resolution: "unicorn-magic@npm:0.1.0"