Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d33227ab2b | ||
|
|
53786fc306 | ||
|
|
f85806c067 | ||
|
|
0155adcea4 | ||
|
|
74d76ff580 | ||
|
|
537e5e063d | ||
|
|
a86478bf24 | ||
|
|
09de55f13c | ||
|
|
23d0e55308 | ||
|
|
185093c185 | ||
|
|
77400fcf21 | ||
|
|
6a41fe9829 | ||
|
|
0092e2a317 | ||
|
|
87b9e6d42d | ||
|
|
336dfd3b37 | ||
|
|
957c75a36e | ||
|
|
357886e31b | ||
|
|
330c270f3c | ||
|
|
9096bdc0f1 | ||
|
|
62ef83c9e0 | ||
|
|
1e7a7a5f3c | ||
|
|
433d49e3ab | ||
|
|
5a3f7fa123 | ||
|
|
3857cba8ab | ||
|
|
6a3cacb622 | ||
|
|
bdf60e9890 | ||
|
|
1e50caeed1 | ||
|
|
1decd52a36 | ||
|
|
0b7010eccb | ||
|
|
041c01341b | ||
|
|
439a377aa7 | ||
|
|
4f52c29611 | ||
|
|
374671fd9a | ||
|
|
0a9fc269ff | ||
|
|
2e3cc7cdd4 | ||
|
|
3ba15366be | ||
|
|
771bd1e1b2 |
+2
-1
@@ -3,4 +3,5 @@
|
||||
|
||||
# used for unit tests that hit real IPFS gateway
|
||||
# get a secret key from https://thirdweb.com/create-api-key
|
||||
TW_SECRET_KEY=""
|
||||
# Learn more about API keys. https://portal.thirdweb.com/account/api-keys
|
||||
TW_SECRET_KEY=""
|
||||
|
||||
@@ -11,3 +11,9 @@ Short description of the bug fixed or feature added
|
||||
|
||||
- [ ] Automated tests: link to unit test file
|
||||
- [ ] Manual tests: step by step instructions on how to test
|
||||
|
||||
## Contributor NFT
|
||||
|
||||
Paste in your wallet address below and we will airdrop you a special NFT when your pull request is merged.
|
||||
|
||||
```Address: ```
|
||||
|
||||
@@ -1,5 +1,42 @@
|
||||
# @thirdweb-dev/auth
|
||||
|
||||
## 4.1.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.4.10
|
||||
|
||||
## 4.1.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2278](https://github.com/thirdweb-dev/js/pull/2278) [`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1) Thanks [@hsynlms](https://github.com/hsynlms)! - fix(auth): Next.js App Router handler return type
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.4.9
|
||||
|
||||
## 4.1.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.4.8
|
||||
|
||||
## 4.1.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.4.7
|
||||
|
||||
## 4.1.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a)]:
|
||||
- @thirdweb-dev/wallets@2.4.6
|
||||
|
||||
## 4.1.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/auth",
|
||||
"version": "4.1.27",
|
||||
"version": "4.1.32",
|
||||
"main": "dist/thirdweb-dev-auth.cjs.js",
|
||||
"module": "dist/thirdweb-dev-auth.esm.js",
|
||||
"browser": {
|
||||
|
||||
@@ -58,13 +58,8 @@ export function ThirdwebAuth<
|
||||
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
|
||||
};
|
||||
|
||||
async function ThirdwebAuthHandler(...args: [] | [NextRequest, ThirdwebNextContext]) {
|
||||
if (args.length === 0) {
|
||||
return async (req: NextRequest, ctx: ThirdwebNextContext): Promise<void | Response> =>
|
||||
await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
|
||||
}
|
||||
|
||||
return ThirdwebAuthRouter(args[0], args[1], authCtx as ThirdwebAuthContext);
|
||||
async function ThirdwebAuthHandler(req: NextRequest, ctx: ThirdwebNextContext) {
|
||||
return await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,5 +1,35 @@
|
||||
# @thirdweb-dev/chains
|
||||
|
||||
## 0.1.72
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2280](https://github.com/thirdweb-dev/js/pull/2280) [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.71
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2258](https://github.com/thirdweb-dev/js/pull/2258) [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.70
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2255](https://github.com/thirdweb-dev/js/pull/2255) [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.69
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2247](https://github.com/thirdweb-dev/js/pull/2247) [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.68
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2245](https://github.com/thirdweb-dev/js/pull/2245) [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.67
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -31,5 +31,5 @@ export default {
|
||||
"shortName": "Baobab",
|
||||
"slip44": 1,
|
||||
"slug": "klaytn-testnet-baobab",
|
||||
"testnet": true
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 103454,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Masa Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Masa Testnet Token",
|
||||
"symbol": "tMASA",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 103454,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://masa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://103454.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/masatestne/testnet/rpc"
|
||||
],
|
||||
"shortName": "Masa Testnet",
|
||||
"slug": "masa-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -42,11 +42,12 @@ export default {
|
||||
"https://humans-ai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1089.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://jsonrpc.humans.nodestake.top",
|
||||
"https://humans-mainnet-evm.itrocket.net:443",
|
||||
"https://humans-mainnet-evm.itrocket.net",
|
||||
"https://humans-evm-rpc.staketab.org:443",
|
||||
"https://evm.humans.stakepool.dev.br",
|
||||
"https://mainnet-humans-evm.konsortech.xyz",
|
||||
"https://evm-rpc.mainnet.humans.zone"
|
||||
"https://evm-rpc.mainnet.humans.zone",
|
||||
"https://json-rpc.humans.bh.rocks"
|
||||
],
|
||||
"shortName": "humans",
|
||||
"slug": "humans-ai",
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Dymension",
|
||||
"chainId": 1100,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "dym.fyi",
|
||||
"url": "https://dym.fyi",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreic4sjyqikz33xzpcctczvkiwfj44q5i3i7zslycnjiqmyx5ybc3fi",
|
||||
"width": 1200,
|
||||
"height": 1200,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://dymension.xyz",
|
||||
"name": "Dymension",
|
||||
"nativeCurrency": {
|
||||
"name": "DYM",
|
||||
"symbol": "DYM",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1100,
|
||||
"rpc": [
|
||||
"https://dymension.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://dymension-evm.blockpi.network/v1/rpc/public"
|
||||
],
|
||||
"shortName": "dymension",
|
||||
"slug": "dymension",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MetaDAP",
|
||||
"chainId": 119139,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "MetaDAP Enterprise Testnet explorer",
|
||||
"url": "https://explorer.testnet.chain.metadap.io",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
|
||||
"width": 800,
|
||||
"height": 800,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://metadap.io/",
|
||||
"name": "MetaDAP Enterprise Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "DAP",
|
||||
"symbol": "DAP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 119139,
|
||||
"rpc": [
|
||||
"https://metadap-enterprise-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://119139.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.testnet.chain.metadap.io",
|
||||
"wss://rpc-ws.testnet.chain.metadap.io"
|
||||
],
|
||||
"shortName": "MetaDAP-T",
|
||||
"slug": "metadap-enterprise-testnet",
|
||||
"testnet": true,
|
||||
"title": "MetaDAP Enterprise Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 12001,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Mikias's Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Mikias's Testnet Token",
|
||||
"symbol": "XVL",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 12001,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://mikias-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://12001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-test.io/c3c8cc74-5101-4380-937f-4f534cad0128"
|
||||
],
|
||||
"shortName": "Mikias's Testnet",
|
||||
"slug": "mikias-s-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "1220",
|
||||
"chainId": 1220,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "flagscan",
|
||||
"url": "https://testnet-scan.flagscan.io/",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
@@ -26,7 +20,11 @@ export default {
|
||||
},
|
||||
"networkId": 1220,
|
||||
"redFlags": [],
|
||||
"rpc": [],
|
||||
"rpc": [
|
||||
"https://flag-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1220.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet.flagscan.io"
|
||||
],
|
||||
"shortName": "Flag",
|
||||
"slug": "flag-testnet",
|
||||
"testnet": true
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "NEAR",
|
||||
"chainId": 1313161560,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "PowerGold explorer",
|
||||
"url": "https://explorer.powergold.aurora.dev",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreib2sabb6vgfoskobp2wdr6if7v6s34f2xwjecfceui6qhjudmu4u4",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.powergold.tech",
|
||||
"name": "PowerGold",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1313161560,
|
||||
"rpc": [
|
||||
"https://powergold.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1313161560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://powergold.aurora.dev"
|
||||
],
|
||||
"shortName": "powergold",
|
||||
"slug": "powergold",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 13838,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "XTraderlands Subnet Tesnet",
|
||||
"nativeCurrency": {
|
||||
"name": "XTraderlands Subnet Tesnet Token",
|
||||
"symbol": "XTDL",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 13838,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://xtraderlands-subnet-tesnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://13838.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/xtraderlan/testnet/rpc"
|
||||
],
|
||||
"shortName": "XTraderlands Subnet Tesnet",
|
||||
"slug": "xtraderlands-subnet-tesnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "XRPL",
|
||||
"chainId": 1440001,
|
||||
"chainId": 1440002,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "XRP Ledger Explorer",
|
||||
@@ -23,11 +23,11 @@ export default {
|
||||
"symbol": "XRP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1440001,
|
||||
"networkId": 1440002,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://xrp-ledger-evm-devnet-sidechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1440001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1440002.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc-evm-sidechain.xrpl.org"
|
||||
],
|
||||
"shortName": "XRPL-EVM-Devnet-Sidechain",
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 15056,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402052",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402052 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 15056,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402052.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://15056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402052",
|
||||
"slug": "qi-m-2402052",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 15104,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402054",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402054 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 15104,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402054.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://15104.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402054",
|
||||
"slug": "qi-m-2402054",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Puppynet Shibarium",
|
||||
"chainId": 157,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "puppyscan",
|
||||
"url": "https://puppyscan.shib.io",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://beta.shibariumtech.com/faucet"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmYNVkoZgRjDBQzJz6kog9mA2yPzQFW2oSKvhnkwuBhLQE",
|
||||
"width": 2000,
|
||||
"height": 2000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://shibariumecosystem.com",
|
||||
"name": "Puppynet Shibarium",
|
||||
"nativeCurrency": {
|
||||
"name": "BONE",
|
||||
"symbol": "BONE",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 157,
|
||||
"rpc": [
|
||||
"https://puppynet-shibarium.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://157.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://puppynet.shibrpc.com"
|
||||
],
|
||||
"shortName": "puppynet",
|
||||
"slug": "puppynet-shibarium",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -1,36 +0,0 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 167005,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://explorer.test.taiko.xyz",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
|
||||
"width": 288,
|
||||
"height": 258,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://taiko.xyz",
|
||||
"name": "Taiko Grimsvotn L2",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 167005,
|
||||
"rpc": [
|
||||
"https://taiko-grimsvotn-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://167005.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.test.taiko.xyz"
|
||||
],
|
||||
"shortName": "taiko-l2",
|
||||
"slug": "taiko-grimsvotn-l2",
|
||||
"status": "deprecated",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -1,36 +0,0 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 167006,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://explorer.l3test.taiko.xyz",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
|
||||
"width": 288,
|
||||
"height": 258,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://taiko.xyz",
|
||||
"name": "Taiko Eldfell L3",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 167006,
|
||||
"rpc": [
|
||||
"https://taiko-eldfell-l3.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://167006.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.l3test.taiko.xyz"
|
||||
],
|
||||
"shortName": "taiko-l3",
|
||||
"slug": "taiko-eldfell-l3",
|
||||
"status": "deprecated",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -1,36 +0,0 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 167007,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://explorer.jolnir.taiko.xyz",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
|
||||
"width": 288,
|
||||
"height": 258,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://taiko.xyz",
|
||||
"name": "Taiko Jolnir L2",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 167007,
|
||||
"rpc": [
|
||||
"https://taiko-jolnir-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://167007.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.jolnir.taiko.xyz"
|
||||
],
|
||||
"shortName": "tko-jolnir",
|
||||
"slug": "taiko-jolnir-l2",
|
||||
"status": "deprecated",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,50 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 1686,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://testnet-explorer.mintchain.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
|
||||
"width": 80,
|
||||
"height": 80,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.mintchain.io",
|
||||
"name": "Mint Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Sepolia Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1686,
|
||||
"parent": {
|
||||
"type": "L2",
|
||||
"chain": "eip155-1",
|
||||
"bridges": [
|
||||
{
|
||||
"url": "https://testnet-bridge.mintchain.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rpc": [
|
||||
"https://mint-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://1686.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.mintchain.io"
|
||||
],
|
||||
"shortName": "minttest",
|
||||
"slug": "mint-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 234560,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Project Orc",
|
||||
"nativeCurrency": {
|
||||
"name": "Project Orc Token",
|
||||
"symbol": "STX",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 234560,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://project-orc.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://234560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/projectorc/testnet/rpc"
|
||||
],
|
||||
"shortName": "Project Orc",
|
||||
"slug": "project-orc",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,41 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Elizabeth",
|
||||
"chainId": 2731,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Time Network Explorer",
|
||||
"url": "https://testnet-scanner.timenetwork.io",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://whitepaper.anttime.net/overview/anttime",
|
||||
"name": "Elizabeth Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "TIME",
|
||||
"symbol": "TIME",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2731,
|
||||
"rpc": [
|
||||
"https://elizabeth-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://2731.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.timenetwork.io"
|
||||
],
|
||||
"shortName": "TIME",
|
||||
"slug": "elizabeth-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "BPX",
|
||||
"chainId": 279,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreiatcu42wbjlo24mr35jou4awvsqpaqys6iv4kxgkjhno3haovsiaq",
|
||||
"width": 140,
|
||||
"height": 140,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://bpxchain.cc",
|
||||
"name": "BPX Blockchain",
|
||||
"nativeCurrency": {
|
||||
"name": "BPX",
|
||||
"symbol": "BPX",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 279,
|
||||
"rpc": [
|
||||
"https://bpx-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.mainnet.bpxchain.cc",
|
||||
"https://bpx-dataseed.infinex.cc"
|
||||
],
|
||||
"shortName": "bpx",
|
||||
"slug": "bpx-blockchain",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,39 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "XEN",
|
||||
"chainId": 2941,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Xenon testnet Explorer",
|
||||
"url": "https://testnet.xenonchain.com",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://xfaucet.xenonchain.com"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmNSoxDnj6MV8mPJWiuzzLbATcbk5op11NTwMTdzcr272F",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://xenonchain.com",
|
||||
"name": "Xenon Chain Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Xenon Testnet",
|
||||
"symbol": "tXEN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2941,
|
||||
"rpc": [
|
||||
"https://xenon-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://2941.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-chain.xenonchain.com/",
|
||||
"https://testnet-dev.xenonchain.com/"
|
||||
],
|
||||
"shortName": "xenon",
|
||||
"slip44": 1,
|
||||
"slug": "xenon-chain-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 29442,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402055",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402055 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 29442,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402055.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://29442.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402055",
|
||||
"slug": "qi-m-2402055",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 30266,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Tnet02-06",
|
||||
"nativeCurrency": {
|
||||
"name": "Tnet02-06 Token",
|
||||
"symbol": "LFC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 30266,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://tnet02-06.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://30266.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Tnet02-06",
|
||||
"slug": "tnet02-06",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Lovely",
|
||||
"chainId": 307,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Lovely Network Testnet",
|
||||
"url": "https://tscan.lovely.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.lovely.network"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
|
||||
"width": 897,
|
||||
"height": 824,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://lovely.network",
|
||||
"name": "Lovely Network Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Lovely",
|
||||
"symbol": "LOVELY",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 307,
|
||||
"rpc": [
|
||||
"https://lovely-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://307.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://trpc.lovely.network"
|
||||
],
|
||||
"shortName": "LOVELY-Testnet",
|
||||
"slug": "lovely-network-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 32277,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402058",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402058 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 32277,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402058.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://32277.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402058",
|
||||
"slug": "qi-m-2402058",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Bloom",
|
||||
"chainId": 323213,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Bloom Genesis Testnet",
|
||||
"url": "https://testnet.bloomgenesis.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.bloomgenesis.com"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
|
||||
"width": 2794,
|
||||
"height": 2711,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.bloomgenesis.com",
|
||||
"name": "Bloom Genesis Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Bloom",
|
||||
"symbol": "BGBC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 323213,
|
||||
"rpc": [
|
||||
"https://bloom-genesis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://323213.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.bloomgenesis.com"
|
||||
],
|
||||
"shortName": "BGBC-Testnet",
|
||||
"slug": "bloom-genesis-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Bloom",
|
||||
"chainId": 333313,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Bloom Genesis Mainnet",
|
||||
"url": "https://explorer.bloomgenesis.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
|
||||
"width": 2794,
|
||||
"height": 2711,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.bloomgenesis.com",
|
||||
"name": "Bloom Genesis Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Bloom",
|
||||
"symbol": "BGBC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 333313,
|
||||
"rpc": [
|
||||
"https://bloom-genesis.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://333313.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://mainnet-rpc.bloomgenesis.com"
|
||||
],
|
||||
"shortName": "BGBC",
|
||||
"slug": "bloom-genesis",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 37375,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402057",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402057 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 37375,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402057.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://37375.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402057",
|
||||
"slug": "qi-m-2402057",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 37767,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Tnet 01-15",
|
||||
"nativeCurrency": {
|
||||
"name": "Tnet 01-15 Token",
|
||||
"symbol": "LFC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 37767,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://tnet-01-15.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://37767.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Tnet 01-15",
|
||||
"slug": "tnet-01-15",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 41077,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "REALLY",
|
||||
"nativeCurrency": {
|
||||
"name": "REALLY Token",
|
||||
"symbol": "FAN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 41077,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://really.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://41077.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/really/testnet/rpc"
|
||||
],
|
||||
"shortName": "REALLY",
|
||||
"slug": "really",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 41425,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QR0205I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0205I1 Token",
|
||||
"symbol": "PVW",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 41425,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qr0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://41425.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0205i1/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0205I1",
|
||||
"slug": "qr0205i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 41604,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Testnet Token",
|
||||
"symbol": "LFC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 41604,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://41604.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Testnet",
|
||||
"slug": "testnet-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,42 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Merlin",
|
||||
"chainId": 4200,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://scan.merlinchain.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
|
||||
"width": 400,
|
||||
"height": 400,
|
||||
"format": "jpg"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
|
||||
"width": 400,
|
||||
"height": 400,
|
||||
"format": "jpg"
|
||||
},
|
||||
"infoURL": "https://merlinchain.io",
|
||||
"name": "Merlin Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "BTC",
|
||||
"symbol": "BTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 4200,
|
||||
"rpc": [
|
||||
"https://merlin.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://4200.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.merlinchain.io"
|
||||
],
|
||||
"shortName": "Merlin-Mainnet",
|
||||
"slug": "merlin",
|
||||
"testnet": false,
|
||||
"title": "Merlin Mainnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,40 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "SYNDRSEPOLIA",
|
||||
"chainId": 444444,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Syndr L3 Sepolia Testnet Explorer",
|
||||
"url": "https://sepolia-explorer.syndr.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"infoURL": "https://syndr.com",
|
||||
"name": "Syndr L3 Sepolia",
|
||||
"nativeCurrency": {
|
||||
"name": "Sepolia Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 444444,
|
||||
"parent": {
|
||||
"type": "L2",
|
||||
"chain": "eip155-421614",
|
||||
"bridges": [
|
||||
{
|
||||
"url": "https://sepolia-bridge.syndr.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rpc": [
|
||||
"https://syndr-l3-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://444444.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://sepolia.syndr.com/http",
|
||||
"wss://sepolia.syndr.com/ws"
|
||||
],
|
||||
"shortName": "syndr",
|
||||
"slug": "syndr-l3-sepolia",
|
||||
"testnet": true,
|
||||
"title": "Syndr L3 Sepolia Rollup Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 48702,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Testnet Token",
|
||||
"symbol": "LUG",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 48702,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://testnet-testnet-48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Testnet",
|
||||
"slug": "testnet-testnet-48702",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 5042,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "OMOCHI",
|
||||
"nativeCurrency": {
|
||||
"name": "OMOCHI Token",
|
||||
"symbol": "OMCH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 5042,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://omochi.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://5042.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/omochi/testnet/rpc"
|
||||
],
|
||||
"shortName": "OMOCHI",
|
||||
"slug": "omochi",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Syndicate",
|
||||
"chainId": 510,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
|
||||
"width": 16000,
|
||||
"height": 16000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://syndicate.io",
|
||||
"name": "Syndicate Chain",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 510,
|
||||
"rpc": [
|
||||
"https://syndicate-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://510.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc-mainnet.syndicate.io"
|
||||
],
|
||||
"shortName": "syndicate-chain-mainnet",
|
||||
"slug": "syndicate-chain",
|
||||
"status": "incubating",
|
||||
"testnet": false,
|
||||
"title": "Syndicate Chain"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Syndicate",
|
||||
"chainId": 5100,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
|
||||
"width": 16000,
|
||||
"height": 16000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://syndicate.io",
|
||||
"name": "Syndicate Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "S-Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 5100,
|
||||
"rpc": [
|
||||
"https://syndicate-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://5100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc-testnet.syndicate.io"
|
||||
],
|
||||
"shortName": "syndicate-chain-testnet",
|
||||
"slug": "syndicate-testnet",
|
||||
"status": "incubating",
|
||||
"testnet": true,
|
||||
"title": "Syndicate Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Syndicate Frame",
|
||||
"chainId": 5101,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
|
||||
"width": 16000,
|
||||
"height": 16000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://syndicate.io",
|
||||
"name": "Syndicate Frame Chain",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 5101,
|
||||
"rpc": [
|
||||
"https://syndicate-frame-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://5101.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc-frame.syndicate.io"
|
||||
],
|
||||
"shortName": "syndicate-chain-frame",
|
||||
"slug": "syndicate-frame-chain",
|
||||
"status": "incubating",
|
||||
"testnet": false,
|
||||
"title": "Syndicate Frame Chain"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 60834,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402059",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402059 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 60834,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402059.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://60834.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402059",
|
||||
"slug": "qi-m-2402059",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 63891,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Tnetv2",
|
||||
"nativeCurrency": {
|
||||
"name": "Tnetv2 Token",
|
||||
"symbol": "LFC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 63891,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://tnetv2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://63891.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Tnetv2",
|
||||
"slug": "tnetv2",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Xai Mainnet",
|
||||
"chainId": 660279,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://explorer.xai-chain.net/",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
@@ -29,7 +23,7 @@ export default {
|
||||
"rpc": [
|
||||
"https://xai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://660279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://xai-chain.net/rpc"
|
||||
"https://xai-chain.net/rpc/xai79df8614da076af58f199126a07db"
|
||||
],
|
||||
"shortName": "xai",
|
||||
"slug": "xai",
|
||||
|
||||
@@ -27,10 +27,11 @@ export default {
|
||||
"rpc": [
|
||||
"https://zetachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://7000.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://api.mainnet.zetachain.com/evm"
|
||||
"https://zetachain-evm.blockpi.network/v1/rpc/public",
|
||||
"https://zetachain-mainnet-archive.allthatnode.com:8545"
|
||||
],
|
||||
"shortName": "zetachain-mainnet",
|
||||
"slug": "zetachain",
|
||||
"status": "incubating",
|
||||
"status": "active",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,44 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Sei",
|
||||
"chainId": 713715,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Seistream",
|
||||
"url": "https://seistream.app",
|
||||
"standard": "none"
|
||||
},
|
||||
{
|
||||
"name": "Seitrace",
|
||||
"url": "https://seitrace.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://sei-faucet.nima.enterprises",
|
||||
"https://sei-evm.faucetme.pro"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreih3l3iisplmikofkbfyimqlox7nmixzlkzhjoewmpi4jbqitwryoa",
|
||||
"width": 600,
|
||||
"height": 600,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.sei.io",
|
||||
"name": "Sei Devnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Sei",
|
||||
"symbol": "SEI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 713715,
|
||||
"rpc": [
|
||||
"https://sei-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://713715.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://evm-rpc-arctic-1.sei-apis.com",
|
||||
"https://evm-rpc.arctic-1.seinetwork.io"
|
||||
],
|
||||
"shortName": "sei-devnet",
|
||||
"slug": "sei-devnet",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Lovely",
|
||||
"chainId": 730,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Lovely Network Mainnet",
|
||||
"url": "https://scan.lovely.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
|
||||
"width": 897,
|
||||
"height": 824,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://lovely.network",
|
||||
"name": "Lovely Network Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Lovely",
|
||||
"symbol": "LOVELY",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 730,
|
||||
"rpc": [
|
||||
"https://lovely-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://730.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.lovely.network"
|
||||
],
|
||||
"shortName": "LOVELY",
|
||||
"slug": "lovely-network",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 74738,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Testnet Token",
|
||||
"symbol": "CWA",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 74738,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://testnet-testnet-74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Testnet",
|
||||
"slug": "testnet-testnet-74738",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 7640,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0205I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0205I1 Token",
|
||||
"symbol": "KOA",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 7640,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://7640.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0205I1",
|
||||
"slug": "qi0205i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 7865,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "ST 02-07",
|
||||
"nativeCurrency": {
|
||||
"name": "ST 02-07 Token",
|
||||
"symbol": "TJO",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 7865,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://st-02-07.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://7865.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "ST 02-07",
|
||||
"slug": "st-02-07",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -8,10 +8,10 @@ export default {
|
||||
"url": "https://testnet-explorer.haven1.org",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
|
||||
"width": 32,
|
||||
"height": 33,
|
||||
"format": "svg"
|
||||
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
|
||||
"width": 128,
|
||||
"height": 128,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -27,10 +27,10 @@ export default {
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
|
||||
"width": 32,
|
||||
"height": 33,
|
||||
"format": "svg"
|
||||
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
|
||||
"width": 128,
|
||||
"height": 128,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.haven1.org",
|
||||
"name": "Haven1 Testnet",
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 87815,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402056",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402056 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 87815,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://87815.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402056",
|
||||
"slug": "qi-m-2402056",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MetaDAP",
|
||||
"chainId": 91120,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "MetaDAP Enterprise Mainnet explorer",
|
||||
"url": "https://explorer.chain.metadap.io",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
|
||||
"width": 800,
|
||||
"height": 800,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://metadap.io/",
|
||||
"name": "MetaDAP Enterprise Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "DAP",
|
||||
"symbol": "DAP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 91120,
|
||||
"rpc": [
|
||||
"https://metadap-enterprise.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://91120.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.chain.metadap.io",
|
||||
"wss://rpc-ws.chain.metadap.io"
|
||||
],
|
||||
"shortName": "MetaDAP",
|
||||
"slug": "metadap-enterprise",
|
||||
"testnet": false,
|
||||
"title": "MetaDAP Enterprise Mainnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 92780,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2402053",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2402053 Token",
|
||||
"symbol": "ACI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 92780,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2402053.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://92780.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
|
||||
],
|
||||
"shortName": "QI M 2402053",
|
||||
"slug": "qi-m-2402053",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 93694,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI M 2401291",
|
||||
"nativeCurrency": {
|
||||
"name": "QI M 2401291 Token",
|
||||
"symbol": "HZU",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 93694,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qi-m-2401291.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://93694.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avacloud-dev.io/f14d837e-de8f-446d-8222-0077f26e6694"
|
||||
],
|
||||
"shortName": "QI M 2401291",
|
||||
"slug": "qi-m-2401291",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 951083,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QR0205Y1S",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0205Y1S Token",
|
||||
"symbol": "MYO",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 951083,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qr0205y1s.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://951083.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0205y1s/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0205Y1S",
|
||||
"slug": "qr0205y1s",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -21,11 +21,11 @@ export default {
|
||||
"networkId": 95395,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-testnet-95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "Testnet",
|
||||
"slug": "testnet-testnet",
|
||||
"slug": "testnet-testnet-95395",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 98557,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QR0201I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0201I1 Token",
|
||||
"symbol": "OCZ",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 98557,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://qr0201i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://98557.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0201i1/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0201I1",
|
||||
"slug": "qr0201i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/chains",
|
||||
"version": "0.1.67",
|
||||
"version": "0.1.72",
|
||||
"main": "dist/thirdweb-dev-chains.cjs.js",
|
||||
"module": "dist/thirdweb-dev-chains.esm.js",
|
||||
"exports": {
|
||||
|
||||
+187
-19
File diff suppressed because one or more lines are too long
@@ -1,5 +1,56 @@
|
||||
# thirdweb
|
||||
|
||||
## 0.13.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
|
||||
- @thirdweb-dev/sdk@4.0.35
|
||||
- @thirdweb-dev/chains@0.1.72
|
||||
- @thirdweb-dev/wallets@2.4.10
|
||||
- @thirdweb-dev/auth@4.1.32
|
||||
|
||||
## 0.13.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
|
||||
- @thirdweb-dev/auth@4.1.31
|
||||
- @thirdweb-dev/chains@0.1.71
|
||||
- @thirdweb-dev/sdk@4.0.34
|
||||
- @thirdweb-dev/wallets@2.4.9
|
||||
|
||||
## 0.13.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
|
||||
- @thirdweb-dev/sdk@4.0.33
|
||||
- @thirdweb-dev/chains@0.1.70
|
||||
- @thirdweb-dev/wallets@2.4.8
|
||||
- @thirdweb-dev/auth@4.1.30
|
||||
|
||||
## 0.13.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
|
||||
- @thirdweb-dev/sdk@4.0.32
|
||||
- @thirdweb-dev/chains@0.1.69
|
||||
- @thirdweb-dev/wallets@2.4.7
|
||||
- @thirdweb-dev/auth@4.1.29
|
||||
|
||||
## 0.13.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
|
||||
- @thirdweb-dev/storage@2.0.9
|
||||
- @thirdweb-dev/wallets@2.4.6
|
||||
- @thirdweb-dev/sdk@4.0.31
|
||||
- @thirdweb-dev/chains@0.1.68
|
||||
- @thirdweb-dev/auth@4.1.28
|
||||
|
||||
## 0.13.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "thirdweb",
|
||||
"main": "dist/cli/index.js",
|
||||
"version": "0.13.35",
|
||||
"version": "0.13.40",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/cli",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,62 @@
|
||||
# @thirdweb-dev/react-core
|
||||
|
||||
## 4.4.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
|
||||
- @thirdweb-dev/sdk@4.0.35
|
||||
- @thirdweb-dev/chains@0.1.72
|
||||
- @thirdweb-dev/wallets@2.4.10
|
||||
- @thirdweb-dev/auth@4.1.32
|
||||
|
||||
## 4.4.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
|
||||
- @thirdweb-dev/auth@4.1.31
|
||||
- @thirdweb-dev/chains@0.1.71
|
||||
- @thirdweb-dev/sdk@4.0.34
|
||||
- @thirdweb-dev/wallets@2.4.9
|
||||
|
||||
## 4.4.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2270](https://github.com/thirdweb-dev/js/pull/2270) [`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb) Thanks [@MananTank](https://github.com/MananTank)! - Keep the wallet states like signer, chainId, address in sync by setting their states at once synchronously
|
||||
|
||||
## 4.4.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
|
||||
- @thirdweb-dev/sdk@4.0.33
|
||||
- @thirdweb-dev/chains@0.1.70
|
||||
- @thirdweb-dev/wallets@2.4.8
|
||||
- @thirdweb-dev/auth@4.1.30
|
||||
|
||||
## 4.4.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
|
||||
- @thirdweb-dev/sdk@4.0.32
|
||||
- @thirdweb-dev/chains@0.1.69
|
||||
- @thirdweb-dev/wallets@2.4.7
|
||||
- @thirdweb-dev/auth@4.1.29
|
||||
|
||||
## 4.4.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
|
||||
- @thirdweb-dev/storage@2.0.9
|
||||
- @thirdweb-dev/wallets@2.4.6
|
||||
- @thirdweb-dev/sdk@4.0.31
|
||||
- @thirdweb-dev/chains@0.1.68
|
||||
- @thirdweb-dev/auth@4.1.28
|
||||
|
||||
## 4.4.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-core",
|
||||
"version": "4.4.2",
|
||||
"version": "4.4.8",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-core",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -90,6 +90,8 @@ type WalletSetupData = {
|
||||
};
|
||||
|
||||
type ThirdwebWalletContextData = {
|
||||
address: string | undefined;
|
||||
chainId: number | undefined;
|
||||
wallets: WalletConfig[];
|
||||
signer?: Signer;
|
||||
activeWallet?: WalletInstance;
|
||||
@@ -127,7 +129,7 @@ type ThirdwebWalletContextData = {
|
||||
isAutoConnecting: boolean;
|
||||
};
|
||||
|
||||
const ThirdwebWalletContext = /* @__PURE__ */ createContext<
|
||||
export const ThirdwebWalletContext = /* @__PURE__ */ createContext<
|
||||
ThirdwebWalletContextData | undefined
|
||||
>(undefined);
|
||||
|
||||
@@ -221,17 +223,26 @@ function useWalletConnectionSetup(
|
||||
connectParams?: ConnectParams<Record<string, any>>,
|
||||
isAutoConnect = false,
|
||||
) => {
|
||||
setActiveWallet(wallet);
|
||||
const walletConfig = walletInstanceToConfig.get(wallet);
|
||||
if (!walletConfig) {
|
||||
throw new Error(
|
||||
"Wallet config not found for given wallet instance. Do not create a wallet instance manually - use the useCreateWalletInstance() hook instead",
|
||||
);
|
||||
}
|
||||
|
||||
const [_signer, _chainId, _address] = await Promise.all([
|
||||
wallet.getSigner(),
|
||||
wallet.getChainId(),
|
||||
wallet.getAddress(),
|
||||
]);
|
||||
|
||||
// set states for the connected wallet
|
||||
setActiveWallet(wallet);
|
||||
setChainId(_chainId);
|
||||
setWalletAddress(_address);
|
||||
setSigner(_signer);
|
||||
setActiveWalletConfig(walletConfig);
|
||||
setConnectionStatus("connected");
|
||||
const _signer = await wallet.getSigner();
|
||||
setSigner(_signer);
|
||||
|
||||
// if personal wallet exists, we need to replace the connectParams.personalWallet to a stringifiable version
|
||||
const personalWallet = wallet.getPersonalWallet() as AbstractClientWallet;
|
||||
@@ -341,16 +352,14 @@ function useWalletConnectionSetup(
|
||||
[createWalletInstance, setConnectedWallet, chainToConnect],
|
||||
);
|
||||
|
||||
const onWalletDisconnect = useCallback(async () => {
|
||||
await lastConnectedWalletStorage.removeItem(
|
||||
LAST_CONNECTED_WALLET_STORAGE_KEY,
|
||||
);
|
||||
const onWalletDisconnect = useCallback(() => {
|
||||
setConnectionStatus("disconnected");
|
||||
setSigner(undefined);
|
||||
setActiveWallet(undefined);
|
||||
setActiveWalletConfig(undefined);
|
||||
setChainId(undefined);
|
||||
setWalletAddress(undefined);
|
||||
lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);
|
||||
}, []);
|
||||
|
||||
const disconnectWallet = useCallback(async () => {
|
||||
@@ -360,14 +369,13 @@ function useWalletConnectionSetup(
|
||||
return;
|
||||
}
|
||||
|
||||
onWalletDisconnect();
|
||||
const personalWallet = activeWallet.getPersonalWallet();
|
||||
await activeWallet.disconnect();
|
||||
|
||||
if (personalWallet) {
|
||||
await (personalWallet as AbstractClientWallet)?.disconnect();
|
||||
}
|
||||
|
||||
onWalletDisconnect();
|
||||
}, [activeWallet, onWalletDisconnect]);
|
||||
|
||||
// handle wallet change event
|
||||
@@ -380,9 +388,15 @@ function useWalletConnectionSetup(
|
||||
}
|
||||
|
||||
const update = async () => {
|
||||
activeWallet.getSigner().then(setSigner);
|
||||
activeWallet.getChainId().then(setChainId);
|
||||
activeWallet.getAddress().then(setWalletAddress);
|
||||
Promise.all([
|
||||
activeWallet.getSigner(),
|
||||
activeWallet.getChainId(),
|
||||
activeWallet.getAddress(),
|
||||
]).then(([_signer, _chainId, _address]) => {
|
||||
setSigner(_signer);
|
||||
setChainId(_chainId);
|
||||
setWalletAddress(_address);
|
||||
});
|
||||
};
|
||||
|
||||
update();
|
||||
@@ -459,6 +473,8 @@ export function ThirdwebWalletProvider(
|
||||
switchChain,
|
||||
connectWallet,
|
||||
disconnectWallet,
|
||||
address,
|
||||
chainId,
|
||||
} = useWalletConnectionSetup(walletSetupData, {
|
||||
connectionStatus: "unknown",
|
||||
});
|
||||
@@ -713,6 +729,8 @@ export function ThirdwebWalletProvider(
|
||||
return (
|
||||
<ThirdwebWalletContext.Provider
|
||||
value={{
|
||||
address,
|
||||
chainId,
|
||||
disconnect: disconnectWallet,
|
||||
wallets: props.supportedWallets,
|
||||
connect: connectWallet,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useContext } from "react";
|
||||
import { ThirdwebConnectedWalletContext } from "../contexts/thirdweb-wallet";
|
||||
import type { Signer } from "ethers";
|
||||
import invariant from "tiny-invariant";
|
||||
import { ThirdwebWalletContext } from "../../core/providers/thirdweb-wallet-provider";
|
||||
|
||||
/**
|
||||
* Hook for getting the [ethers signer](https://docs.ethers.org/v5/api/signer/) of the connected wallet.
|
||||
@@ -24,9 +25,17 @@ import invariant from "tiny-invariant";
|
||||
*/
|
||||
export function useSigner(): Signer | undefined {
|
||||
const context = useContext(ThirdwebConnectedWalletContext);
|
||||
const walletCtx = useContext(ThirdwebWalletContext);
|
||||
|
||||
// if ThirdwebWalletContext is present, use the signer from there because signer from ThirdwebConnectedWalletContext also uses that signer but it lags behind
|
||||
// walletCtx is undefined if only ThirdwebSDKProvider is used
|
||||
if (walletCtx) {
|
||||
return walletCtx.signer;
|
||||
}
|
||||
|
||||
invariant(
|
||||
context,
|
||||
"useSigner() hook must be used within a <ThirdwebProvider/>",
|
||||
"useSigner() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
|
||||
);
|
||||
return context.signer;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,10 @@ import { UseQueryResult, useQuery } from "@tanstack/react-query";
|
||||
import { Chain, defaultChains } from "@thirdweb-dev/chains";
|
||||
import { useContext, useMemo } from "react";
|
||||
import { useSDK } from "./useSDK";
|
||||
import { useWalletContext } from "../../core/providers/thirdweb-wallet-provider";
|
||||
import {
|
||||
ThirdwebWalletContext,
|
||||
useWalletContext,
|
||||
} from "../../core/providers/thirdweb-wallet-provider";
|
||||
import { BigNumber } from "ethers";
|
||||
|
||||
/**
|
||||
@@ -151,6 +154,14 @@ export function useConnectedWallet() {
|
||||
*/
|
||||
export function useAddress(): string | undefined {
|
||||
const context = useContext(ThirdwebConnectedWalletContext);
|
||||
const walletCtx = useContext(ThirdwebWalletContext);
|
||||
|
||||
// if ThirdwebWalletContext is present, use the address from there because address from ThirdwebConnectedWalletContext also uses that address but it lags behind
|
||||
// walletCtx is undefined if only ThirdwebSDKProvider is used
|
||||
if (walletCtx) {
|
||||
return walletCtx.address;
|
||||
}
|
||||
|
||||
invariant(
|
||||
context,
|
||||
"useAddress() hook must be used within a <ThirdwebProvider/>",
|
||||
@@ -185,9 +196,17 @@ export function useAddress(): string | undefined {
|
||||
*/
|
||||
export function useChainId(): number | undefined {
|
||||
const context = useContext(ThirdwebConnectedWalletContext);
|
||||
const walletCtx = useContext(ThirdwebWalletContext);
|
||||
|
||||
// if ThirdwebWalletContext is present, use the chainId from there because chainId from ThirdwebConnectedWalletContext also uses that chainId but it lags behind
|
||||
// walletCtx is undefined if only ThirdwebSDKProvider is used
|
||||
if (walletCtx) {
|
||||
return walletCtx.chainId;
|
||||
}
|
||||
|
||||
invariant(
|
||||
context,
|
||||
"useChainId() hook must be used within a <ThirdwebProvider/>",
|
||||
"useChainId() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
|
||||
);
|
||||
return context.chainId;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,21 @@
|
||||
# @thirdweb-dev/react-native-compat
|
||||
|
||||
## 0.7.5
|
||||
|
||||
## 0.7.4
|
||||
|
||||
## 0.7.3
|
||||
|
||||
## 0.7.2
|
||||
|
||||
## 0.7.1
|
||||
|
||||
## 0.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#2225](https://github.com/thirdweb-dev/js/pull/2225) [`2e3cc7cd`](https://github.com/thirdweb-dev/js/commit/2e3cc7cdd4017df8a5b00ebdd6e37334432e0b82) Thanks [@iketw](https://github.com/iketw)! - Adds support for RN 0.73
|
||||
|
||||
## 0.6.5
|
||||
|
||||
## 0.6.4
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-native-compat",
|
||||
"description": "Shims for Thirdweb in React Native Projects",
|
||||
"version": "0.6.5",
|
||||
"version": "0.7.5",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native-compat",
|
||||
"license": "Apache-2.0",
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ethersproject/shims": "^5.7.0",
|
||||
"@walletconnect/react-native-compat": "^2.8.6",
|
||||
"@walletconnect/react-native-compat": "2.9.2",
|
||||
"base-64": "^1.0.0",
|
||||
"big-integer": "^1.6.51",
|
||||
"react-native-get-random-values": "^1.10.0",
|
||||
|
||||
@@ -1,5 +1,71 @@
|
||||
# @thirdweb-dev/react-native
|
||||
|
||||
## 0.7.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
|
||||
- @thirdweb-dev/sdk@4.0.35
|
||||
- @thirdweb-dev/chains@0.1.72
|
||||
- @thirdweb-dev/react-core@4.4.8
|
||||
- @thirdweb-dev/wallets@2.4.10
|
||||
|
||||
## 0.7.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
|
||||
- @thirdweb-dev/chains@0.1.71
|
||||
- @thirdweb-dev/react-core@4.4.7
|
||||
- @thirdweb-dev/sdk@4.0.34
|
||||
- @thirdweb-dev/wallets@2.4.9
|
||||
|
||||
## 0.7.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
|
||||
- @thirdweb-dev/react-core@4.4.6
|
||||
|
||||
## 0.7.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
|
||||
- @thirdweb-dev/sdk@4.0.33
|
||||
- @thirdweb-dev/chains@0.1.70
|
||||
- @thirdweb-dev/react-core@4.4.5
|
||||
- @thirdweb-dev/wallets@2.4.8
|
||||
|
||||
## 0.7.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
|
||||
- @thirdweb-dev/sdk@4.0.32
|
||||
- @thirdweb-dev/chains@0.1.69
|
||||
- @thirdweb-dev/react-core@4.4.4
|
||||
- @thirdweb-dev/wallets@2.4.7
|
||||
|
||||
## 0.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#2225](https://github.com/thirdweb-dev/js/pull/2225) [`2e3cc7cd`](https://github.com/thirdweb-dev/js/commit/2e3cc7cdd4017df8a5b00ebdd6e37334432e0b82) Thanks [@iketw](https://github.com/iketw)! - Adds support for RN 0.73
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds correct reporing headers
|
||||
|
||||
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds global sdk vars
|
||||
|
||||
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
|
||||
- @thirdweb-dev/storage@2.0.9
|
||||
- @thirdweb-dev/wallets@2.4.6
|
||||
- @thirdweb-dev/sdk@4.0.31
|
||||
- @thirdweb-dev/chains@0.1.68
|
||||
- @thirdweb-dev/react-core@4.4.3
|
||||
|
||||
## 0.6.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-native",
|
||||
"version": "0.6.5",
|
||||
"version": "0.7.5",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
@@ -27,9 +27,7 @@
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-lambda": "3.350.0",
|
||||
"@aws-sdk/credential-providers": "3.350.0",
|
||||
"@coinbase/wallet-mobile-sdk": "1.0.10",
|
||||
"@magic-sdk/provider": "17.2.0",
|
||||
"@magic-sdk/react-native-bare": "^18.5.0",
|
||||
"@coinbase/wallet-mobile-sdk": "1.0.13",
|
||||
"@paperxyz/embedded-wallet-service-sdk": "^1.2.4",
|
||||
"@shopify/restyle": "^2.4.2",
|
||||
"@tanstack/react-query": "^4.33.0",
|
||||
@@ -41,7 +39,7 @@
|
||||
"abitype": "^0.2.5",
|
||||
"aws-amplify": "^5.3.8",
|
||||
"expo-application": "^5.3.0",
|
||||
"expo-clipboard": "^4.1.2",
|
||||
"expo-clipboard": "^4.5.0",
|
||||
"expo-document-picker": "^11.2.2",
|
||||
"expo-file-system": "^15.2.2",
|
||||
"expo-secure-store": "^12.1.1",
|
||||
@@ -77,9 +75,6 @@
|
||||
"react": "^18.2.0",
|
||||
"react-native": "^0.71.11",
|
||||
"react-native-camera": "^4.2.1",
|
||||
"react-native-device-info": "10.6.0",
|
||||
"react-native-safe-area-context": "4.7.4",
|
||||
"react-native-webview": "12.1.0",
|
||||
"rimraf": "^3.0.2",
|
||||
"typedoc-gen": "workspace:*",
|
||||
"typescript": "^5.3.3"
|
||||
@@ -88,16 +83,13 @@
|
||||
"amazon-cognito-identity-js": "^6.3.3",
|
||||
"react-native-aes-gcm-crypto": "^0.2.2",
|
||||
"react-native-camera": "^4.2.1",
|
||||
"react-native-device-info": "10.6.0",
|
||||
"react-native-inappbrowser-reborn": "^3.7.0",
|
||||
"react-native-quick-base64": "^2.0.7",
|
||||
"react-native-quick-crypto": "^0.6.1",
|
||||
"react-native-safe-area-context": "4.7.4",
|
||||
"react-native-webview": "12.1.0"
|
||||
"react-native-quick-crypto": "^0.6.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ethers": ">=5.5.1 <6",
|
||||
"expo": ">=47 <50",
|
||||
"expo": ">=47",
|
||||
"react": ">=18.0.0",
|
||||
"react-native": ">=0.71.0",
|
||||
"react-native-mmkv": ">=2.11.0"
|
||||
|
||||
@@ -5,8 +5,7 @@ import {
|
||||
TW_UPLOAD_SERVER_URL,
|
||||
} from "@thirdweb-dev/storage";
|
||||
import { IpfsUploaderOptions, UploadDataValue } from "./types";
|
||||
import { appBundleId, packageVersion } from "../../evm/utils/version";
|
||||
import { BUNDLE_ID_HEADER } from "../../evm/constants/headers";
|
||||
import { getAnalyticsHeaders, setAnalyticsHeaders } from "./utils";
|
||||
|
||||
const METADATA_NAME = "Storage React Native SDK";
|
||||
|
||||
@@ -38,9 +37,6 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
|
||||
keyvalues: { ...options?.metadata },
|
||||
};
|
||||
|
||||
const { version, name: packageName } = packageVersion;
|
||||
const platform = "react-native";
|
||||
|
||||
if ("uri" in data[0] && "type" in data[0] && "name" in data[0]) {
|
||||
// then it's an array of files
|
||||
return new Promise(async (resolve, reject) => {
|
||||
@@ -140,14 +136,11 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
|
||||
});
|
||||
|
||||
xhr.open("POST", `${TW_UPLOAD_SERVER_URL}/ipfs/upload`);
|
||||
xhr.setRequestHeader(BUNDLE_ID_HEADER, appBundleId || ""); // only empty on web
|
||||
if (this.clientId) {
|
||||
xhr.setRequestHeader("x-client-id", this.clientId);
|
||||
}
|
||||
|
||||
xhr.setRequestHeader("x-sdk-version", version);
|
||||
xhr.setRequestHeader("x-sdk-name", packageName);
|
||||
xhr.setRequestHeader("x-sdk-platform", platform);
|
||||
setAnalyticsHeaders(xhr);
|
||||
|
||||
xhr.send(form);
|
||||
});
|
||||
@@ -165,12 +158,9 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
[BUNDLE_ID_HEADER]: appBundleId || "", // only empty on web
|
||||
...(this.clientId ? { "x-client-id": this.clientId } : {}),
|
||||
"Content-Type": "application/json",
|
||||
"x-sdk-version": version,
|
||||
"x-sdk-name": packageName,
|
||||
"x-sdk-platform": platform,
|
||||
...getAnalyticsHeaders(),
|
||||
},
|
||||
body: fetchBody,
|
||||
},
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { DEFAULT_GATEWAY_URLS, GatewayUrls } from "@thirdweb-dev/storage";
|
||||
import { Platform } from "react-native";
|
||||
import { appBundleId, packageVersion } from "../../evm/utils/version";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
@@ -32,3 +34,51 @@ export function prepareGatewayUrls(
|
||||
|
||||
return allGatewayUrls;
|
||||
}
|
||||
|
||||
export function setAnalyticsHeaders(xhr: XMLHttpRequest) {
|
||||
const globals = getAnalyticsGlobals();
|
||||
xhr.setRequestHeader("x-sdk-version", globals.x_sdk_version);
|
||||
xhr.setRequestHeader("x-sdk-os", globals.x_sdk_os);
|
||||
xhr.setRequestHeader("x-sdk-name", globals.x_sdk_name);
|
||||
xhr.setRequestHeader("x-sdk-platform", globals.x_sdk_platform);
|
||||
xhr.setRequestHeader("x-bundle-id", globals.app_bundle_id);
|
||||
}
|
||||
|
||||
export function getAnalyticsHeaders() {
|
||||
const globals = getAnalyticsGlobals();
|
||||
return {
|
||||
"x-sdk-version": globals.x_sdk_version,
|
||||
"x-sdk-os": globals.x_sdk_os,
|
||||
"x-sdk-name": globals.x_sdk_name,
|
||||
"x-sdk-platform": globals.x_sdk_platform,
|
||||
"x-bundle-id": globals.app_bundle_id,
|
||||
};
|
||||
}
|
||||
|
||||
export function getAnalyticsGlobals() {
|
||||
if (typeof globalThis === "undefined") {
|
||||
return {
|
||||
x_sdk_name: packageVersion.name,
|
||||
x_sdk_platform: "mobile",
|
||||
x_sdk_version: packageVersion.version,
|
||||
x_sdk_os: Platform.OS,
|
||||
app_bundle_id: appBundleId,
|
||||
};
|
||||
}
|
||||
|
||||
if ((globalThis as any).X_SDK_NAME === undefined) {
|
||||
(globalThis as any).X_SDK_NAME = packageVersion.name;
|
||||
(globalThis as any).X_SDK_PLATFORM = "mobile";
|
||||
(globalThis as any).X_SDK_VERSION = packageVersion.version;
|
||||
(globalThis as any).X_SDK_OS = Platform.OS;
|
||||
(globalThis as any).APP_BUNDLE_ID = appBundleId;
|
||||
}
|
||||
|
||||
return {
|
||||
x_sdk_name: (globalThis as any).X_SDK_NAME,
|
||||
x_sdk_platform: (globalThis as any).X_SDK_PLATFORM,
|
||||
x_sdk_version: (globalThis as any).X_SDK_VERSION,
|
||||
x_sdk_os: (globalThis as any).X_SDK_OS,
|
||||
app_bundle_id: (globalThis as any).APP_BUNDLE_ID,
|
||||
};
|
||||
}
|
||||
|
||||
+1
-4
@@ -49,15 +49,12 @@ export function ChooseWallet({
|
||||
|
||||
const guestWallet = wallets.find((w) => w.id === walletIds.localWallet);
|
||||
const emailWallet = wallets.find(
|
||||
(w) =>
|
||||
w.id === walletIds.magicLink ||
|
||||
(w.id === walletIds.embeddedWallet && w.selectUI),
|
||||
(w) => w.id === walletIds.embeddedWallet && w.selectUI,
|
||||
);
|
||||
|
||||
const walletsToDisplay = useMemo(() => {
|
||||
const filteredWallets = wallets.filter(
|
||||
(wallet) =>
|
||||
wallet.id !== walletIds.magicLink &&
|
||||
wallet.id !== walletIds.embeddedWallet &&
|
||||
wallet.id !== walletIds.localWallet,
|
||||
);
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
export const BUNDLE_ID_HEADER = "x-bundle-id";
|
||||
@@ -15,10 +15,6 @@ export { TrustWallet, trustWallet } from "./wallets/wallets/trust-wallet";
|
||||
export { smartWallet } from "./wallets/wallets/smart-wallet";
|
||||
export { localWallet } from "./wallets/wallets/local-wallet";
|
||||
export { LocalWallet } from "./wallets/wallets/LocalWallet";
|
||||
export { magicWallet } from "./wallets/wallets/magic-link";
|
||||
export { MagicWallet } from "./wallets/wallets/MagicLink";
|
||||
export { MagicLink } from "./wallets/wallets/MagicLink";
|
||||
export { magicLink } from "./wallets/wallets/magic-link";
|
||||
export { EmbeddedWallet } from "./wallets/wallets/embedded/EmbeddedWallet";
|
||||
export { embeddedWallet } from "./wallets/wallets/embedded/embedded-wallet";
|
||||
export * from "./wallets/wallets/wallet-connect/WalletConnectBase";
|
||||
|
||||
@@ -1,61 +1,27 @@
|
||||
import { SmartWallet, walletIds } from "@thirdweb-dev/wallets";
|
||||
import {
|
||||
createContext,
|
||||
useCallback,
|
||||
useContext,
|
||||
useEffect,
|
||||
useState,
|
||||
} from "react";
|
||||
import { SmartWallet } from "@thirdweb-dev/wallets";
|
||||
import { createContext, useContext, useState } from "react";
|
||||
import { useWalletConnectListener } from "../wallets/hooks/useWalletConnectListener";
|
||||
import { MagicLink } from "../wallets/wallets/MagicLink";
|
||||
import { useWalletContext } from "@thirdweb-dev/react-core";
|
||||
|
||||
type DappContextType = {
|
||||
smartWallet?: SmartWallet;
|
||||
setSmartWallet?: (value?: SmartWallet) => void;
|
||||
magicLink?: MagicLink;
|
||||
setMagicLink?: (value?: MagicLink) => void;
|
||||
};
|
||||
|
||||
const DappContext = createContext<DappContextType>({});
|
||||
|
||||
export const DappContextProvider = (props: React.PropsWithChildren) => {
|
||||
const [smartWallet, setSmartWallet] = useState<SmartWallet | undefined>();
|
||||
const [magicLink, setMagicLink] = useState<MagicLink | undefined>();
|
||||
const createdWalletInstance = useWalletContext().createdWalletInstance;
|
||||
|
||||
useEffect(() => {
|
||||
if (!createdWalletInstance) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (createdWalletInstance.walletId === walletIds.magicLink) {
|
||||
setMagicLink(createdWalletInstance as MagicLink);
|
||||
}
|
||||
}, [createdWalletInstance, setMagicLink]);
|
||||
|
||||
useWalletConnectListener();
|
||||
|
||||
const magicSDK = useCallback(() => {
|
||||
if (magicLink) {
|
||||
const magic = magicLink.getMagicSDK();
|
||||
return <magic.Relayer />;
|
||||
}
|
||||
|
||||
return null;
|
||||
}, [magicLink]);
|
||||
|
||||
return (
|
||||
<DappContext.Provider
|
||||
value={{
|
||||
smartWallet,
|
||||
setSmartWallet,
|
||||
magicLink: magicLink,
|
||||
setMagicLink: setMagicLink,
|
||||
}}
|
||||
>
|
||||
{props.children}
|
||||
{magicSDK()}
|
||||
</DappContext.Provider>
|
||||
);
|
||||
};
|
||||
@@ -69,12 +35,3 @@ export const useSmartWallet = () => {
|
||||
|
||||
return [context.smartWallet, context.setSmartWallet] as const;
|
||||
};
|
||||
|
||||
export const useMagicLink = () => {
|
||||
const context = useContext(DappContext);
|
||||
|
||||
return {
|
||||
magicLink: context.magicLink,
|
||||
setMagicLink: context.setMagicLink,
|
||||
} as const;
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
ThirdwebProviderCoreProps,
|
||||
WalletConfig,
|
||||
} from "@thirdweb-dev/react-core";
|
||||
import { PropsWithChildren, useMemo } from "react";
|
||||
import { PropsWithChildren } from "react";
|
||||
import type { Chain, defaultChains } from "@thirdweb-dev/chains";
|
||||
import { SecureStorage } from "../../core/SecureStorage";
|
||||
import { useCoinbaseWalletListener } from "../wallets/hooks/useCoinbaseWalletListener";
|
||||
@@ -13,10 +13,10 @@ import { DappContextProvider } from "./context-provider";
|
||||
import { UIContextProvider } from "./ui-context-provider";
|
||||
import { MainModal } from "../components/MainModal";
|
||||
import { ThemeProvider, ThemeType } from "../styles/ThemeProvider";
|
||||
import { SafeAreaProvider } from "react-native-safe-area-context";
|
||||
import { walletIds } from "@thirdweb-dev/wallets";
|
||||
import { ThirdwebStorage } from "../../core/storage/storage";
|
||||
import type { Locale } from "../i18n/types";
|
||||
import { getAnalyticsGlobals } from "../../core/storage/utils";
|
||||
|
||||
export interface ThirdwebProviderProps<TChains extends Chain[]>
|
||||
extends Omit<
|
||||
@@ -148,6 +148,8 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
|
||||
...restProps
|
||||
} = props;
|
||||
|
||||
getAnalyticsGlobals();
|
||||
|
||||
const coinbaseWalletObj = supportedWallets.find(
|
||||
(w) => w.id === walletIds.coinbase,
|
||||
);
|
||||
@@ -158,11 +160,6 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
|
||||
coinbaseWalletObj?.config?.callbackURL,
|
||||
);
|
||||
|
||||
const hasMagicConfig = useMemo(
|
||||
() => !!supportedWallets.find((wc) => wc.id === walletIds.magicLink),
|
||||
[supportedWallets],
|
||||
);
|
||||
|
||||
return (
|
||||
<ThirdwebProviderCore
|
||||
supportedWallets={supportedWallets}
|
||||
@@ -188,19 +185,10 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
|
||||
>
|
||||
<ThemeProvider theme={theme ? theme : "dark"}>
|
||||
<UIContextProvider locale={locale}>
|
||||
{hasMagicConfig ? (
|
||||
<SafeAreaProvider>
|
||||
<DappContextProvider>
|
||||
{children}
|
||||
<MainModal />
|
||||
</DappContextProvider>
|
||||
</SafeAreaProvider>
|
||||
) : (
|
||||
<DappContextProvider>
|
||||
{children}
|
||||
<MainModal />
|
||||
</DappContextProvider>
|
||||
)}
|
||||
<DappContextProvider>
|
||||
{children}
|
||||
<MainModal />
|
||||
</DappContextProvider>
|
||||
</UIContextProvider>
|
||||
</ThemeProvider>
|
||||
</ThirdwebProviderCore>
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
export function isGlobalThisPresent() {
|
||||
return typeof globalThis !== "undefined";
|
||||
}
|
||||
|
||||
export function isAppBundleIdPresentInGlobal() {
|
||||
return isGlobalThisPresent() && "APP_BUNDLE_ID" in globalThis;
|
||||
}
|
||||
@@ -41,12 +41,14 @@ import {
|
||||
} from "../types";
|
||||
import { InAppBrowser } from "react-native-inappbrowser-reborn";
|
||||
import { createErrorMessage } from "./helpers/errors";
|
||||
import {
|
||||
appBundleId,
|
||||
reactNativePackageVersion,
|
||||
} from "../../../../utils/version";
|
||||
import { BUNDLE_ID_HEADER } from "../../../../constants/headers";
|
||||
import { ANALYTICS } from "./helpers/analytics";
|
||||
import { getAnalyticsHeaders } from "../../../../../core/storage/utils";
|
||||
|
||||
const HEADERS = {
|
||||
[EWS_VERSION_HEADER]: (globalThis as any).X_SDK_VERSION,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...getAnalyticsHeaders(),
|
||||
};
|
||||
|
||||
export async function sendVerificationEmail(options: {
|
||||
email: string;
|
||||
@@ -196,9 +198,7 @@ export async function socialLogin(oauthOptions: OauthOption, clientId: string) {
|
||||
|
||||
const resp = await fetch(headlessLoginLinkWithParams, {
|
||||
headers: {
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...HEADERS,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -279,9 +279,7 @@ export async function customJwt(authOptions: AuthOptions, clientId: string) {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...HEADERS,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
jwt: jwt,
|
||||
@@ -329,9 +327,7 @@ export async function authEndpoint(
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...HEADERS,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
payload: payload,
|
||||
|
||||
+6
-13
@@ -20,20 +20,17 @@ import {
|
||||
VerifiedTokenResponse,
|
||||
} from "../../../types";
|
||||
import { createErrorMessage } from "../errors";
|
||||
import {
|
||||
appBundleId,
|
||||
reactNativePackageVersion,
|
||||
} from "../../../../../../utils/version";
|
||||
import { BUNDLE_ID_HEADER } from "../../../../../../constants/headers";
|
||||
import { ANALYTICS } from "../analytics";
|
||||
import { getAnalyticsHeaders } from "../../../../../../../core/storage/utils";
|
||||
|
||||
const EMBEDDED_WALLET_TOKEN_HEADER = "embedded-wallet-token";
|
||||
const PAPER_CLIENT_ID_HEADER = "x-thirdweb-client-id";
|
||||
|
||||
const HEADERS = {
|
||||
"Content-Type": "application/json",
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[EWS_VERSION_HEADER]: (globalThis as any).X_SDK_VERSION,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...getAnalyticsHeaders(),
|
||||
};
|
||||
|
||||
export const verifyClientId = async (clientId: string) => {
|
||||
@@ -68,19 +65,15 @@ export const authFetchEmbeddedWalletUser = async (
|
||||
Authorization: `Bearer ${EMBEDDED_WALLET_TOKEN_HEADER}:${
|
||||
authTokenClient || ""
|
||||
}`,
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[PAPER_CLIENT_ID_HEADER]: clientId,
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...HEADERS,
|
||||
}
|
||||
: {
|
||||
Authorization: `Bearer ${EMBEDDED_WALLET_TOKEN_HEADER}:${
|
||||
authTokenClient || ""
|
||||
}`,
|
||||
[BUNDLE_ID_HEADER]: appBundleId,
|
||||
[PAPER_CLIENT_ID_HEADER]: clientId,
|
||||
[EWS_VERSION_HEADER]: reactNativePackageVersion,
|
||||
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
|
||||
...HEADERS,
|
||||
};
|
||||
return fetch(url, params);
|
||||
};
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
import {
|
||||
Magic,
|
||||
MagicSDKAdditionalConfiguration,
|
||||
} from "@magic-sdk/react-native-bare";
|
||||
import { Chain, Connector, normalizeChainId } from "@thirdweb-dev/wallets";
|
||||
import { Signer, ethers, providers } from "ethers";
|
||||
import { defaultChains } from "@thirdweb-dev/chains";
|
||||
import { MagicConnectorOptions } from "./types";
|
||||
|
||||
export class MagicConnector extends Connector<MagicConnectorOptions> {
|
||||
magicSDK: Magic;
|
||||
magicOptions: MagicConnectorOptions;
|
||||
provider: any | undefined;
|
||||
chains: Chain[];
|
||||
magicSdkConfiguration: MagicSDKAdditionalConfiguration | undefined;
|
||||
connectedChainId: number | undefined;
|
||||
|
||||
constructor(options: MagicConnectorOptions) {
|
||||
super();
|
||||
|
||||
this.magicOptions = options;
|
||||
this.chains = options.chains ? options.chains : defaultChains;
|
||||
this.magicSdkConfiguration = options.magicSdkConfiguration;
|
||||
this.magicSDK = this.initializeMagicSDK({ chainId: options?.chainId || 0 });
|
||||
}
|
||||
|
||||
async connect(options: MagicConnectorOptions): Promise<string> {
|
||||
if (!this.magicOptions.apiKey) {
|
||||
throw new Error("Magic API Key is not provided.");
|
||||
}
|
||||
|
||||
// if (options.chainId) {
|
||||
// this.initializeMagicSDK({ chainId: options.chainId });
|
||||
// }
|
||||
await this.getProvider();
|
||||
this.setupListeners();
|
||||
this.emit("message", { type: "connecting" });
|
||||
|
||||
// Check if there is a user logged in
|
||||
const isAuthenticated = await this.isConnected();
|
||||
|
||||
// Check if we have a chainId, in case of error just assign 0 for legacy
|
||||
let chainId: number;
|
||||
try {
|
||||
chainId = await this.getChainId();
|
||||
} catch (e) {
|
||||
chainId = 0;
|
||||
}
|
||||
|
||||
this.connectedChainId = chainId;
|
||||
|
||||
// if there is a user logged in, return the user
|
||||
if (isAuthenticated) {
|
||||
return await this.getAddress();
|
||||
}
|
||||
|
||||
const magic = this.getMagicSDK();
|
||||
|
||||
// LOGIN WITH MAGIC LINK WITH EMAIL
|
||||
if (options.email) {
|
||||
await magic.auth.loginWithEmailOTP({
|
||||
email: options.email,
|
||||
});
|
||||
}
|
||||
|
||||
// LOGIN WITH MAGIC LINK WITH PHONE NUMBER
|
||||
if (options.phoneNumber) {
|
||||
await magic.auth.loginWithSMS({
|
||||
phoneNumber: options.phoneNumber,
|
||||
});
|
||||
}
|
||||
|
||||
const signer = await this.getSigner();
|
||||
let address = await signer.getAddress();
|
||||
if (!address.startsWith("0x")) {
|
||||
address = `0x${address}`;
|
||||
}
|
||||
|
||||
return address;
|
||||
}
|
||||
async disconnect(): Promise<void> {
|
||||
const magic = this.getMagicSDK();
|
||||
await magic.user.logout();
|
||||
}
|
||||
async getAddress(): Promise<string> {
|
||||
const signer = await this.getSigner();
|
||||
|
||||
const account = await signer.getAddress();
|
||||
if (account.startsWith("0x")) {
|
||||
return account;
|
||||
}
|
||||
return `0x${account}`;
|
||||
}
|
||||
async getSigner(): Promise<Signer> {
|
||||
const provider = new ethers.providers.Web3Provider(
|
||||
(await this.getProvider()) as any, // TODO: fix type mismatch
|
||||
);
|
||||
const signer = await provider.getSigner();
|
||||
return signer;
|
||||
}
|
||||
getProvider(): Promise<providers.Provider> {
|
||||
if (this.provider) {
|
||||
return this.provider;
|
||||
}
|
||||
const magic = this.getMagicSDK();
|
||||
this.provider = magic.rpcProvider;
|
||||
return this.provider;
|
||||
}
|
||||
switchChain(chainId: number): Promise<void> {
|
||||
const chain = this.chains.find((c) => c.chainId === chainId);
|
||||
|
||||
if (!chain) {
|
||||
throw new Error("Chain not found");
|
||||
}
|
||||
|
||||
if (this.connectedChainId !== chainId) {
|
||||
this.initializeMagicSDK({ chainId });
|
||||
}
|
||||
|
||||
return Promise.resolve();
|
||||
}
|
||||
isConnected(): Promise<boolean> {
|
||||
const magic = this.getMagicSDK();
|
||||
try {
|
||||
return magic.user.isLoggedIn();
|
||||
} catch (e) {
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
}
|
||||
async setupListeners(): Promise<void> {
|
||||
this.provider?.on("accountsChanged", () => {
|
||||
throw new Error("Accounts changed not implemented");
|
||||
});
|
||||
this.provider?.on("chainChanged", this.onChainChanged);
|
||||
this.provider?.on("disconnect", this.onDisconnect);
|
||||
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
updateChains(chains: Chain[]): void {
|
||||
this.chains = chains;
|
||||
}
|
||||
|
||||
// my methods
|
||||
|
||||
onDisconnect(): void {
|
||||
this.emit("disconnect");
|
||||
}
|
||||
|
||||
getMagicSDK() {
|
||||
if (!this.magicSDK) {
|
||||
return this.initializeMagicSDK();
|
||||
}
|
||||
return this.magicSDK;
|
||||
}
|
||||
|
||||
initializeMagicSDK({ chainId }: { chainId?: number } = {}) {
|
||||
if (chainId) {
|
||||
const chain = this.chains.find((c) => c.chainId === chainId);
|
||||
if (chain) {
|
||||
this.magicSdkConfiguration = this.magicSdkConfiguration || {};
|
||||
this.magicSdkConfiguration.network = {
|
||||
rpcUrl: chain.rpc[0],
|
||||
chainId: chain.chainId,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
this.magicSDK = new Magic(
|
||||
this.magicOptions.apiKey,
|
||||
this.magicSdkConfiguration,
|
||||
);
|
||||
this.provider = this.magicSDK.rpcProvider;
|
||||
|
||||
return this.magicSDK;
|
||||
}
|
||||
|
||||
async getChainId(): Promise<number> {
|
||||
const networkOptions = this.magicSdkConfiguration?.network;
|
||||
if (typeof networkOptions === "object") {
|
||||
const chainID = networkOptions.chainId;
|
||||
if (chainID) {
|
||||
return normalizeChainId(chainID);
|
||||
}
|
||||
}
|
||||
throw new Error("Chain ID is not defined");
|
||||
}
|
||||
|
||||
protected isChainUnsupported(chainId: number) {
|
||||
return !this.chains.some((x) => x.chainId === chainId);
|
||||
}
|
||||
|
||||
protected onChainChanged(chainId: string | number): void {
|
||||
const id = normalizeChainId(chainId);
|
||||
const unsupported = this.isChainUnsupported(id);
|
||||
this.emit("change", { chain: { id, unsupported } });
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
import { MagicSDKAdditionalConfiguration } from "@magic-sdk/react-native-bare";
|
||||
import { Chain } from "@thirdweb-dev/chains";
|
||||
import { WalletOptions } from "@thirdweb-dev/wallets";
|
||||
|
||||
export interface MagicConnectorOptions {
|
||||
apiKey: string;
|
||||
magicSdkConfiguration?: MagicSDKAdditionalConfiguration;
|
||||
chains?: Chain[];
|
||||
chainId?: number;
|
||||
email?: string;
|
||||
phoneNumber?: string;
|
||||
}
|
||||
|
||||
export type MagicLinkOptions = Omit<
|
||||
WalletOptions<MagicConnectorOptions>,
|
||||
"clientId"
|
||||
>;
|
||||
@@ -1,83 +0,0 @@
|
||||
import { AbstractClientWallet, walletIds } from "@thirdweb-dev/wallets";
|
||||
import {
|
||||
MagicConnectorOptions,
|
||||
MagicLinkOptions,
|
||||
} from "../connectors/magic/types";
|
||||
import type { MagicConnector as MagicConnectorType } from "../connectors/magic/magic-connector";
|
||||
import { MagicConnector } from "../connectors/magic/magic-connector";
|
||||
|
||||
/**
|
||||
* @deprecated We have deprecated magicLink in favor of our embeddedWallet which adds support for more sign in methods.
|
||||
* To learn more, please see:
|
||||
*
|
||||
* Checkout the [Release Notes](https://portal.thirdweb.com/wallets/embedded-wallet/overview) and [Documentation](https://portal.thirdweb.com/react-native/v0/wallets/embedded-wallet) for more information.
|
||||
*/
|
||||
export class MagicLink extends AbstractClientWallet<
|
||||
MagicLinkOptions,
|
||||
MagicConnectorOptions
|
||||
> {
|
||||
connector?: MagicConnectorType;
|
||||
options: MagicLinkOptions;
|
||||
|
||||
static meta = {
|
||||
iconURL:
|
||||
"ipfs://QmUMBFZGXxBpgDmZzZAHhbcCL5nYvZnVaYLTajsNjLcxMU/1-Icon_Magic_Color.svg",
|
||||
name: "Magic Link",
|
||||
};
|
||||
|
||||
static id = walletIds.magicLink;
|
||||
|
||||
constructor(options: MagicLinkOptions) {
|
||||
super(walletIds.magicLink, options);
|
||||
|
||||
this.options = options;
|
||||
|
||||
this.initializeConnector();
|
||||
}
|
||||
|
||||
async getConnector(): Promise<MagicConnectorType> {
|
||||
if (!this.connector) {
|
||||
return await this.initializeConnector();
|
||||
}
|
||||
return this.connector;
|
||||
}
|
||||
|
||||
// my methods
|
||||
|
||||
initializeConnector() {
|
||||
this.connector = new MagicConnector({
|
||||
...this.options,
|
||||
chainId: this.options.chainId,
|
||||
chains: this.chains,
|
||||
});
|
||||
|
||||
return this.connector;
|
||||
}
|
||||
|
||||
getMagicSDK() {
|
||||
return (this.connector as MagicConnector)?.getMagicSDK();
|
||||
}
|
||||
|
||||
async autoConnect(options?: MagicConnectorOptions) {
|
||||
this.connector?.initializeMagicSDK(options);
|
||||
const magic = this.getMagicSDK();
|
||||
if (await magic.user.isLoggedIn()) {
|
||||
return super.autoConnect(options);
|
||||
} else {
|
||||
throw new Error("Magic user is not logged in");
|
||||
}
|
||||
}
|
||||
|
||||
async disconnect() {
|
||||
const magic = this.getMagicSDK();
|
||||
await magic.user.logout();
|
||||
return super.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use `MagicLink` instead
|
||||
*
|
||||
* Renamed for consistency with our React package
|
||||
*/
|
||||
export class MagicWallet extends MagicLink {}
|
||||
@@ -1,192 +0,0 @@
|
||||
import { walletIds } from "@thirdweb-dev/wallets";
|
||||
import {
|
||||
ConnectUIProps,
|
||||
SelectUIProps,
|
||||
WalletConfig,
|
||||
WalletOptions,
|
||||
useCreateWalletInstance,
|
||||
useSetConnectedWallet,
|
||||
useSetConnectionStatus,
|
||||
useWalletContext,
|
||||
} from "@thirdweb-dev/react-core";
|
||||
import { MagicLinkOptions } from "../connectors/magic/types";
|
||||
import { MagicLink } from "./MagicLink";
|
||||
import { useEffect, useRef } from "react";
|
||||
import Box from "../../components/base/Box";
|
||||
import { TextInput } from "../../components/base/TextInput";
|
||||
import Text from "../../components/base/Text";
|
||||
import { useMagicLink } from "../../providers/context-provider";
|
||||
import BaseButton from "../../components/base/BaseButton";
|
||||
import React from "react";
|
||||
import { ConnectingWallet } from "../../components/ConnectWalletFlow/ConnectingWallet/ConnectingWallet";
|
||||
import { useGlobalTheme, useLocale } from "../../providers/ui-context-provider";
|
||||
|
||||
/**
|
||||
*
|
||||
* @param magicLinkOptions - Options available to create a magic link wallet
|
||||
* @returns A WalletConfig<MagicLink> object
|
||||
*
|
||||
* @deprecated We have deprecated magicLink in favor of our embeddedWallet which adds support for more sign in methods.
|
||||
* To learn more, please see:
|
||||
*
|
||||
* Check out [Release Note](https://portal.thirdweb.com/wallets/embedded-wallet/overview) and [Documentation](https://portal.thirdweb.com/react-native/v0/wallets/embedded-wallet) for more details.
|
||||
*/
|
||||
export const magicLink = (
|
||||
magicLinkOptions: MagicLinkOptions & { recommended?: boolean },
|
||||
): WalletConfig<MagicLink> => {
|
||||
return {
|
||||
id: walletIds.magicLink,
|
||||
meta: MagicLink.meta,
|
||||
create: (options: WalletOptions) => {
|
||||
return new MagicLink({
|
||||
...options,
|
||||
...magicLinkOptions,
|
||||
chainId: options.chain.chainId,
|
||||
});
|
||||
},
|
||||
/**
|
||||
* UI for connecting wallet
|
||||
*/
|
||||
connectUI(props) {
|
||||
return (
|
||||
<MagicConnectionUI {...props} magicLinkOptions={magicLinkOptions} />
|
||||
);
|
||||
},
|
||||
/**
|
||||
* UI for selecting wallet - this UI is rendered in the wallet selection screen
|
||||
*/
|
||||
selectUI: MagicSelectionUI,
|
||||
isInstalled: () => {
|
||||
return true;
|
||||
},
|
||||
recommended: magicLinkOptions?.recommended,
|
||||
};
|
||||
};
|
||||
|
||||
const MagicSelectionUI: React.FC<SelectUIProps<MagicLink>> = (props) => {
|
||||
const l = useLocale();
|
||||
const theme = useGlobalTheme();
|
||||
const [email, setEmail] = React.useState("");
|
||||
|
||||
const onContinuePress = () => {
|
||||
if (!email) {
|
||||
return;
|
||||
}
|
||||
props.onSelect(email);
|
||||
};
|
||||
|
||||
return (
|
||||
<Box paddingHorizontal="xl" mt="lg">
|
||||
<TextInput
|
||||
textInputProps={{
|
||||
placeholder: l.embedded_wallet.enter_your_email,
|
||||
placeholderTextColor: theme.colors.textSecondary,
|
||||
onChangeText: (text: string) => {
|
||||
setEmail(text);
|
||||
},
|
||||
style: {
|
||||
fontSize: 14,
|
||||
color: theme.colors.textPrimary,
|
||||
fontFamily: theme.textVariants.defaults.fontFamily,
|
||||
lineHeight: 16,
|
||||
padding: 0,
|
||||
},
|
||||
}}
|
||||
containerProps={{
|
||||
paddingHorizontal: "sm",
|
||||
paddingVertical: "sm",
|
||||
}}
|
||||
/>
|
||||
<BaseButton
|
||||
mt="md"
|
||||
paddingVertical="md"
|
||||
borderRadius="lg"
|
||||
borderWidth={1}
|
||||
borderColor="border"
|
||||
backgroundColor="accentButtonColor"
|
||||
onPress={onContinuePress}
|
||||
>
|
||||
<Text
|
||||
variant="bodySmall"
|
||||
color="accentButtonTextColor"
|
||||
fontWeight="700"
|
||||
>
|
||||
{l.common.continue}
|
||||
</Text>
|
||||
</BaseButton>
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
const MagicConnectionUI: React.FC<
|
||||
ConnectUIProps<MagicLink> & { magicLinkOptions: MagicLinkOptions }
|
||||
> = ({ selectionData, walletConfig, connected, goBack, magicLinkOptions }) => {
|
||||
const createWalletInstance = useCreateWalletInstance();
|
||||
const setConnectedWallet = useSetConnectedWallet();
|
||||
const chainToConnect = useWalletContext().chainToConnect;
|
||||
const setConnectionStatus = useSetConnectionStatus();
|
||||
const { magicLink: ctxMagicLink, setMagicLink } = useMagicLink();
|
||||
|
||||
useEffect(() => {
|
||||
const inst = createWalletInstance(walletConfig);
|
||||
setMagicLink?.(inst);
|
||||
}, [createWalletInstance, setMagicLink, walletConfig]);
|
||||
|
||||
const connectPrompted = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (connectPrompted.current || !ctxMagicLink) {
|
||||
return;
|
||||
}
|
||||
connectPrompted.current = true;
|
||||
const isEmail = (selectionData as string).includes("@");
|
||||
|
||||
(async () => {
|
||||
// close();
|
||||
try {
|
||||
setConnectionStatus("connecting");
|
||||
const connectParams = {
|
||||
chainId: chainToConnect?.chainId,
|
||||
...magicLinkOptions,
|
||||
...(isEmail
|
||||
? { email: selectionData }
|
||||
: { phoneNumber: selectionData }),
|
||||
};
|
||||
connected();
|
||||
await ctxMagicLink.connect(connectParams);
|
||||
await ctxMagicLink.getMagicSDK().user.getMetadata();
|
||||
|
||||
setConnectedWallet(ctxMagicLink, connectParams);
|
||||
setConnectionStatus("connected");
|
||||
} catch (e) {
|
||||
setConnectionStatus("disconnected");
|
||||
console.error("Error connecting to magic", e);
|
||||
}
|
||||
})();
|
||||
}, [
|
||||
selectionData,
|
||||
walletConfig,
|
||||
connected,
|
||||
ctxMagicLink,
|
||||
setConnectedWallet,
|
||||
setConnectionStatus,
|
||||
chainToConnect?.chainId,
|
||||
magicLinkOptions,
|
||||
]);
|
||||
|
||||
return (
|
||||
<ConnectingWallet
|
||||
subHeaderText=""
|
||||
wallet={walletConfig}
|
||||
onClose={connected}
|
||||
onBackPress={goBack}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated Use `magicLink()` instead
|
||||
*
|
||||
* Renamed for consistency with our React package
|
||||
*/
|
||||
export const magicWallet = magicLink;
|
||||
@@ -1,8 +1 @@
|
||||
import { isGlobalThisPresent } from "./evm/utils/global";
|
||||
import { appBundleId } from "./evm/utils/version";
|
||||
|
||||
export * from "./evm";
|
||||
|
||||
if (isGlobalThisPresent()) {
|
||||
(globalThis as any).APP_BUNDLE_ID = appBundleId;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,91 @@
|
||||
# @thirdweb-dev/react
|
||||
|
||||
## 4.4.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2289](https://github.com/thirdweb-dev/js/pull/2289) [`0155adce`](https://github.com/thirdweb-dev/js/commit/0155adcea4b5379be552962f219853c0a2b1c050) Thanks [@MananTank](https://github.com/MananTank)! - - Show EmbeddedWallet UI instead of the default welcomeScreen in the ConnectWallet wide modal. If a custom welcomeScreen is provided, it will be shown instead of the EmbeddedWallet UI. Same Is done for the deprecated PaperWallet as well
|
||||
|
||||
- Stop treating Magic Link as a Social Login and remove the custom Select UI for it
|
||||
- highlight the wallet for which the Connect UI is shown in the ConnectWallet wide modal
|
||||
-
|
||||
|
||||
- [#2290](https://github.com/thirdweb-dev/js/pull/2290) [`f85806c0`](https://github.com/thirdweb-dev/js/commit/f85806c0674921adc7007eec9f061070eefe1d84) Thanks [@MananTank](https://github.com/MananTank)! - Update EmbeddedWallet name in ConnectWallet UI
|
||||
|
||||
- [#2288](https://github.com/thirdweb-dev/js/pull/2288) [`74d76ff5`](https://github.com/thirdweb-dev/js/commit/74d76ff580d78a5b98a2d7180a58457231c1b95a) Thanks [@MananTank](https://github.com/MananTank)! - Add "Powered By Thirdweb" Branding at the bottom of `ConnectEmbed` and `ConnectWallet` Modal
|
||||
|
||||
A new prop `showThirdwebBranding` has been added to both `ConnectEmbed` and `ConnectWallet` components to hide this branding.
|
||||
|
||||
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
|
||||
- @thirdweb-dev/sdk@4.0.35
|
||||
- @thirdweb-dev/chains@0.1.72
|
||||
- @thirdweb-dev/react-core@4.4.8
|
||||
- @thirdweb-dev/wallets@2.4.10
|
||||
|
||||
## 4.4.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
|
||||
- @thirdweb-dev/chains@0.1.71
|
||||
- @thirdweb-dev/react-core@4.4.7
|
||||
- @thirdweb-dev/sdk@4.0.34
|
||||
- @thirdweb-dev/wallets@2.4.9
|
||||
|
||||
## 4.4.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2260](https://github.com/thirdweb-dev/js/pull/2260) [`6a3cacb6`](https://github.com/thirdweb-dev/js/commit/6a3cacb62257c1774b5bac739b89e17495f42655) Thanks [@MananTank](https://github.com/MananTank)! - Enforce compact modal size in ConnectWallet based on available space instead of just on mobile device
|
||||
|
||||
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
|
||||
- @thirdweb-dev/react-core@4.4.6
|
||||
|
||||
## 4.4.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
|
||||
- @thirdweb-dev/sdk@4.0.33
|
||||
- @thirdweb-dev/chains@0.1.70
|
||||
- @thirdweb-dev/react-core@4.4.5
|
||||
- @thirdweb-dev/wallets@2.4.8
|
||||
|
||||
## 4.4.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2252](https://github.com/thirdweb-dev/js/pull/2252) [`439a377a`](https://github.com/thirdweb-dev/js/commit/439a377aa77ce86631a78daa4a409e00e48f69be) Thanks [@MananTank](https://github.com/MananTank)! - Add `detailsModalFooter` prop on `<ConnectWallet />` component to allow rendering a custom UI at the bottom of the details modal.
|
||||
|
||||
```tsx
|
||||
<ConnectWallet
|
||||
detailsModalFooter={(props) => {
|
||||
const { close } = props;
|
||||
return <div> .... </div>;
|
||||
}}
|
||||
/>
|
||||
```
|
||||
|
||||
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
|
||||
- @thirdweb-dev/sdk@4.0.32
|
||||
- @thirdweb-dev/chains@0.1.69
|
||||
- @thirdweb-dev/react-core@4.4.4
|
||||
- @thirdweb-dev/wallets@2.4.7
|
||||
|
||||
## 4.4.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds correct reporing headers
|
||||
|
||||
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds global sdk vars
|
||||
|
||||
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
|
||||
- @thirdweb-dev/wallets@2.4.6
|
||||
- @thirdweb-dev/sdk@4.0.31
|
||||
- @thirdweb-dev/chains@0.1.68
|
||||
- @thirdweb-dev/react-core@4.4.3
|
||||
|
||||
## 4.4.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react",
|
||||
"version": "4.4.2",
|
||||
"version": "4.4.8",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -185,6 +185,11 @@ export interface Web3ButtonProps<TActionFn extends ActionFn> {
|
||||
* Either provide a component to replace the default screen entirely or an object with title, subtitle and imgSrc to change the content of the default screen
|
||||
*/
|
||||
welcomeScreen?: WelcomeScreen;
|
||||
|
||||
/**
|
||||
* By default the ConnectWallet Modal shows "Powered by Thirdweb" at the bottom. If you want to hide it, set it to `false`
|
||||
*/
|
||||
showThirdwebBranding?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,7 @@ import { en } from "../locales/en";
|
||||
import { ThirdwebLocaleContext } from "./locale-provider";
|
||||
import { walletIds } from "@thirdweb-dev/wallets";
|
||||
import { ThirdwebLocale } from "../locales/types";
|
||||
import { getAnalyticsGlobals } from "../utils/headers";
|
||||
|
||||
export interface ThirdwebProviderProps<TChains extends Chain[]>
|
||||
extends Omit<
|
||||
@@ -479,6 +480,8 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
|
||||
...restProps
|
||||
} = props;
|
||||
|
||||
getAnalyticsGlobals();
|
||||
|
||||
const wallets: WalletConfig[] = supportedWallets || defaultWallets;
|
||||
const theme = _theme || "dark";
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useState, createContext, useContext } from "react";
|
||||
import { isMobile } from "../utils/isMobile";
|
||||
import { Theme } from "../../design-system";
|
||||
import { WelcomeScreen } from "../../wallet/ConnectWallet/screens/types";
|
||||
import { useTWLocale } from "./locale-provider";
|
||||
import { canFitWideModal } from "../utils/canFitWIdeModal";
|
||||
|
||||
type BoolSetter = (value: boolean) => void;
|
||||
|
||||
@@ -22,6 +22,7 @@ export type ModalConfig = {
|
||||
};
|
||||
isEmbed?: boolean;
|
||||
onConnect?: () => void;
|
||||
showThirdwebBranding?: boolean;
|
||||
};
|
||||
|
||||
const WalletModalOpen = /* @__PURE__ */ createContext(false);
|
||||
@@ -56,17 +57,18 @@ export const WalletUIStatesProvider = (
|
||||
onLogout?: () => void;
|
||||
};
|
||||
onConnect?: () => void;
|
||||
showThirdwebBranding?: boolean;
|
||||
}>,
|
||||
) => {
|
||||
const [isWalletModalOpen, setIsWalletModalOpen] = useState(false);
|
||||
const _isMobile = isMobile();
|
||||
const enforceCompact = !canFitWideModal();
|
||||
const locale = useTWLocale();
|
||||
|
||||
const [modalConfig, setModalConfig] = useState<ModalConfig>({
|
||||
title: props.title || locale.connectWallet.defaultModalTitle,
|
||||
theme: props.theme || "dark",
|
||||
data: undefined,
|
||||
modalSize: (_isMobile ? "compact" : props.modalSize) || "wide",
|
||||
modalSize: (enforceCompact ? "compact" : props.modalSize) || "wide",
|
||||
termsOfServiceUrl: props.termsOfServiceUrl,
|
||||
privacyPolicyUrl: props.privacyPolicyUrl,
|
||||
welcomeScreen: props.welcomeScreen,
|
||||
@@ -74,6 +76,7 @@ export const WalletUIStatesProvider = (
|
||||
isEmbed: props.isEmbed,
|
||||
auth: props.auth,
|
||||
onConnect: props.onConnect,
|
||||
showThirdwebBranding: props.showThirdwebBranding,
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -233,6 +236,13 @@ export type ModalConfigOptions = {
|
||||
* Note that this does not include the sign in, If you want to call a callback after user connects AND signs in with their wallet, use `auth.onLogin` instead
|
||||
*/
|
||||
onConnect?: () => void;
|
||||
|
||||
/**
|
||||
* By default the ConnectWallet Modal shows "powered by thirdweb" branding at the bottom of the modal.
|
||||
*
|
||||
* If you want to hide the branding, set this to `false`
|
||||
*/
|
||||
showThirdwebBranding?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -405,7 +415,7 @@ export type ModalConfigOptions = {
|
||||
*/
|
||||
export const useSetWalletModalConfig = () => {
|
||||
const context = useContext(SetModalConfigCtx);
|
||||
const _isMobile = isMobile();
|
||||
const enforceCompact = !canFitWideModal();
|
||||
const locale = useTWLocale();
|
||||
|
||||
if (context === undefined) {
|
||||
@@ -419,7 +429,7 @@ export const useSetWalletModalConfig = () => {
|
||||
title: title || locale.connectWallet.defaultModalTitle,
|
||||
data: undefined,
|
||||
theme: theme || "dark",
|
||||
modalSize: (_isMobile ? "compact" : modalSize) || "wide",
|
||||
modalSize: (enforceCompact ? "compact" : modalSize) || "wide",
|
||||
...rest,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { wideModalScreenThreshold } from "../../wallet/ConnectWallet/constants";
|
||||
|
||||
/**
|
||||
* Return true if the current screen size can fit the the wide connect modal
|
||||
* @internal
|
||||
*/
|
||||
export function canFitWideModal(): boolean {
|
||||
if (typeof window !== "undefined") {
|
||||
return window.innerWidth >= wideModalScreenThreshold;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import packageJson from "../../../package.json";
|
||||
import { detectOS } from "./isMobile";
|
||||
|
||||
export function getAnalyticsGlobals() {
|
||||
if (typeof globalThis === "undefined") {
|
||||
return {
|
||||
x_sdk_name: packageJson.name,
|
||||
x_sdk_platform: "browser",
|
||||
x_sdk_version: packageJson.version,
|
||||
x_sdk_os: detectOS(),
|
||||
app_bundle_id: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
if ((globalThis as any).X_SDK_NAME === undefined) {
|
||||
(globalThis as any).X_SDK_NAME = packageJson.name;
|
||||
(globalThis as any).X_SDK_PLATFORM = "browser";
|
||||
(globalThis as any).X_SDK_VERSION = packageJson.version;
|
||||
(globalThis as any).X_SDK_OS = detectOS();
|
||||
(globalThis as any).APP_BUNDLE_ID = undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
x_sdk_name: (globalThis as any).X_SDK_NAME,
|
||||
x_sdk_platform: (globalThis as any).X_SDK_PLATFORM,
|
||||
x_sdk_version: (globalThis as any).X_SDK_VERSION,
|
||||
x_sdk_os: (globalThis as any).X_SDK_OS,
|
||||
app_bundle_id: (globalThis as any).APP_BUNDLE_ID,
|
||||
};
|
||||
}
|
||||
@@ -41,7 +41,7 @@ export function isIOS(): boolean {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
function detectOS() {
|
||||
export function detectOS() {
|
||||
const env = detectEnv();
|
||||
return env?.os ? env.os : undefined;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user