Compare commits
43
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
449ae19f94 | ||
|
|
7304c5b0c7 | ||
|
|
49cfdb3fd9 | ||
|
|
2d7ebe2111 | ||
|
|
a9ce10f39a | ||
|
|
321cf26342 | ||
|
|
d2ad36d76d | ||
|
|
507d0e5bf4 | ||
|
|
79e6a047d6 | ||
|
|
4dce62de1c | ||
|
|
1c533efcd5 | ||
|
|
eca6217f77 | ||
|
|
df84f9c4ce | ||
|
|
17c0e6f282 | ||
|
|
d51c1883af | ||
|
|
9cf3a1d663 | ||
|
|
c94bcd574a | ||
|
|
41c6d04c2f | ||
|
|
3a78041de7 | ||
|
|
8b74602e3b | ||
|
|
f9081d58d4 | ||
|
|
b051d844d0 | ||
|
|
f8e0c5f84b | ||
|
|
476b6cc271 | ||
|
|
ffaff744f7 | ||
|
|
198f72c493 | ||
|
|
5cb580e99e | ||
|
|
eff710738c | ||
|
|
fb6a07d4b8 | ||
|
|
7768067bf4 | ||
|
|
5ece04cdc0 | ||
|
|
1b15e7b1f2 | ||
|
|
a4086c6a39 | ||
|
|
1aaa63eec7 | ||
|
|
502c53ac0b | ||
|
|
e7ba698f3e | ||
|
|
6746416db9 | ||
|
|
2fb81bd4b7 | ||
|
|
841c86aa12 | ||
|
|
132b3cb45a | ||
|
|
b248afc160 | ||
|
|
9f42e4d241 | ||
|
|
901427c33c |
@@ -106,7 +106,7 @@ jobs:
|
||||
|
||||
- name: Install Yarn (if needed)
|
||||
if: matrix.package_manager == 'yarn'
|
||||
run: npm install -g yarn
|
||||
run: npm install -g yarn@1.22.19
|
||||
|
||||
- name: Create test project
|
||||
run: |
|
||||
|
||||
@@ -4,6 +4,7 @@ import type { Metadata } from "next";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import { CodeExample } from "../../../components/code/code-example";
|
||||
import { CustomizedConnect } from "../../../components/sign-in/custom";
|
||||
import { HooksPreview } from "../../../components/sign-in/hooks";
|
||||
import { StyledConnectButton } from "../../../components/styled-connect-button";
|
||||
import { StyledConnectEmbed } from "../../../components/styled-connect-embed";
|
||||
@@ -70,6 +71,10 @@ export default function Page() {
|
||||
<EmbedComponent />
|
||||
</section>
|
||||
|
||||
<section className="container px-4 md:px-6 space-y-8">
|
||||
<CustomizedComponent />
|
||||
</section>
|
||||
|
||||
<section className="container px-4 md:px-6 space-y-8">
|
||||
<Hooks />
|
||||
</section>
|
||||
@@ -146,6 +151,65 @@ return (
|
||||
);
|
||||
}
|
||||
|
||||
function CustomizedComponent() {
|
||||
return (
|
||||
<>
|
||||
<div className="space-y-2">
|
||||
<h2 className="text-2xl sm:text-3xl font-semibold tracking-tight">
|
||||
Customized Component
|
||||
</h2>
|
||||
<p className="max-w-[600px]">
|
||||
Change the look and feel of the connect button without rewriting your
|
||||
own.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<CodeExample
|
||||
preview={<CustomizedConnect />}
|
||||
code={`import { createThirdwebClient } from "thirdweb";
|
||||
import { ConnectEmbed } from "thirdweb/react";
|
||||
|
||||
const THIRDWEB_CLIENT = createThirdwebClient({
|
||||
clientId: "<YOUR_CLIENT_ID>"
|
||||
});
|
||||
|
||||
function App(){
|
||||
return (
|
||||
<ConnectButton
|
||||
client={THIRDWEB_CLIENT}
|
||||
connectButton={{
|
||||
label: "Custom Connect Button",
|
||||
}}
|
||||
showAllWallets={false}
|
||||
connectModal={{
|
||||
title: "Custom Connect Modal",
|
||||
size: "compact",
|
||||
}}
|
||||
theme={darkTheme({
|
||||
colors: {
|
||||
modalBg: "#281866",
|
||||
accentButtonBg: "#281866",
|
||||
connectedButtonBgHover: "#281866",
|
||||
borderColor: "rgba(256, 256,256, 0.1)",
|
||||
accentText: "rgba(256, 256,256, 0.1)",
|
||||
connectedButtonBg: "#281866",
|
||||
tertiaryBg: "rgba(256, 256,256, 0.1)",
|
||||
primaryButtonBg: "#281866",
|
||||
secondaryButtonBg: "rgba(256, 256,256, 0.1)",
|
||||
primaryButtonText: "#E7E8E9",
|
||||
primaryText: "#E7E8E9",
|
||||
separatorLine: "rgba(256, 256,256, 0.1)",
|
||||
},
|
||||
})}
|
||||
/>
|
||||
);
|
||||
};`}
|
||||
lang="tsx"
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function Hooks() {
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { getContract } from "thirdweb";
|
||||
import { zkSyncSepolia } from "thirdweb/chains";
|
||||
import { baseSepolia } from "thirdweb/chains";
|
||||
import { THIRDWEB_CLIENT } from "../../lib/client";
|
||||
|
||||
export const chain = zkSyncSepolia;
|
||||
export const editionDropAddress = "0xd563ACBeD80e63B257B2524562BdD7Ec666eEE77";
|
||||
export const chain = baseSepolia;
|
||||
export const editionDropAddress = "0x638263e3eAa3917a53630e61B1fBa685308024fa";
|
||||
export const editionDropTokenId = 0n;
|
||||
|
||||
export const editionDropContract = getContract({
|
||||
|
||||
@@ -12,7 +12,6 @@ import {
|
||||
useReadContract,
|
||||
} from "thirdweb/react";
|
||||
import { THIRDWEB_CLIENT } from "../../lib/client";
|
||||
import { CodeExample } from "../code/code-example";
|
||||
import { editionDropContract, editionDropTokenId } from "./constants";
|
||||
|
||||
export function SponsoredTxPreview() {
|
||||
@@ -50,7 +49,7 @@ export function SponsoredTxPreview() {
|
||||
/>
|
||||
) : null}
|
||||
{smartAccount ? (
|
||||
<>
|
||||
<div className="flex flex-col justify-center p-8">
|
||||
<p className="font-semibold text-center mb-2">
|
||||
You own {ownedNfts?.[0]?.quantityOwned.toString() || "0"}{" "}
|
||||
Kittens
|
||||
@@ -73,7 +72,7 @@ export function SponsoredTxPreview() {
|
||||
>
|
||||
Mint
|
||||
</TransactionButton>
|
||||
</>
|
||||
</div>
|
||||
) : (
|
||||
<p
|
||||
style={{
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
"use client";
|
||||
import { ConnectButton } from "thirdweb/react";
|
||||
import { darkTheme, lightTheme } from "thirdweb/react";
|
||||
import { THIRDWEB_CLIENT } from "../../lib/client";
|
||||
|
||||
export const CustomizedConnect = () => {
|
||||
return (
|
||||
<ConnectButton
|
||||
client={THIRDWEB_CLIENT}
|
||||
connectButton={{
|
||||
label: "Custom Connect Button",
|
||||
}}
|
||||
showAllWallets={false}
|
||||
connectModal={{
|
||||
title: "Custom Connect Modal",
|
||||
size: "compact",
|
||||
}}
|
||||
theme={darkTheme({
|
||||
colors: {
|
||||
modalBg: "#281866",
|
||||
accentButtonBg: "#281866",
|
||||
connectedButtonBgHover: "#281866",
|
||||
borderColor: "rgba(256, 256,256, 0.1)",
|
||||
accentText: "rgba(256, 256,256, 0.1)",
|
||||
connectedButtonBg: "#281866",
|
||||
tertiaryBg: "rgba(256, 256,256, 0.1)",
|
||||
primaryButtonBg: "#281866",
|
||||
secondaryButtonBg: "rgba(256, 256,256, 0.1)",
|
||||
primaryButtonText: "#E7E8E9",
|
||||
primaryText: "#E7E8E9",
|
||||
separatorLine: "rgba(256, 256,256, 0.1)",
|
||||
},
|
||||
})}
|
||||
/>
|
||||
);
|
||||
};
|
||||
@@ -1,5 +1,40 @@
|
||||
# @thirdweb-dev/auth
|
||||
|
||||
## 4.1.96
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.38
|
||||
|
||||
## 4.1.95
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.37
|
||||
|
||||
## 4.1.94
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.36
|
||||
|
||||
## 4.1.93
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.35
|
||||
|
||||
## 4.1.92
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.34
|
||||
|
||||
## 4.1.91
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/auth",
|
||||
"version": "4.1.91",
|
||||
"version": "4.1.96",
|
||||
"main": "dist/thirdweb-dev-auth.cjs.js",
|
||||
"module": "dist/thirdweb-dev-auth.esm.js",
|
||||
"browser": {
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# @thirdweb-dev/chains
|
||||
|
||||
## 0.1.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3348](https://github.com/thirdweb-dev/js/pull/3348) [`321cf26`](https://github.com/thirdweb-dev/js/commit/321cf26342d0755204aa465bc2390e052d5ed071) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3311](https://github.com/thirdweb-dev/js/pull/3311) [`8b74602`](https://github.com/thirdweb-dev/js/commit/8b74602e3b7fbe011bf886b9d5ee0e2ea62f7447) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#3279](https://github.com/thirdweb-dev/js/pull/3279) [`9f42e4d`](https://github.com/thirdweb-dev/js/commit/9f42e4d2412df536d1b5f03a4e2a8b516911facb) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,12 +4,6 @@ export default {
|
||||
"chainId": 107107114116,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmNTZ9nEomAXK6bLxUbMfTS1TvrsN22HU1zTtxHUpMkUhz",
|
||||
"width": 1000,
|
||||
"height": 1000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://kakarot.org",
|
||||
"name": "Kakarot Sepolia Deprecated",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 111223,
|
||||
"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": "Chennai Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Chennai Testnet Token",
|
||||
"symbol": "ZOD",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 111223,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://111223.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/chennai/testnet/rpc"
|
||||
],
|
||||
"shortName": "Chennai Testnet",
|
||||
"slug": "chennai-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -36,7 +36,9 @@ export default {
|
||||
},
|
||||
"rpc": [
|
||||
"https://1123.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://b2-testnet.alt.technology"
|
||||
"https://b2-testnet.alt.technology",
|
||||
"https://rpc.ankr.com/b2_testnet",
|
||||
"https://testnet-rpc.bsquared.network"
|
||||
],
|
||||
"shortName": "B2-testnet",
|
||||
"slug": "b2-testnet",
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Artela",
|
||||
"chainId": 11822,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "ArtelaScan",
|
||||
"url": "https://betanet-scan.artela.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"infoURL": "https://artela.network/",
|
||||
"name": "Artela Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "ART",
|
||||
"symbol": "ART",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 11822,
|
||||
"rpc": [
|
||||
"https://11822.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://betanet-rpc1.artela.network"
|
||||
],
|
||||
"shortName": "Artela",
|
||||
"slug": "artela-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,36 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "CuckooAI",
|
||||
"chainId": 1200,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Cuckoo Chain Explorer",
|
||||
"url": "https://mainnet-scan.cuckoo.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmZjVDfk56DjqkCPymaweJJaj9ASGjjgcwJ95XsFDzj9us",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://cuckoo.network",
|
||||
"name": "Cuckoo Chain",
|
||||
"nativeCurrency": {
|
||||
"name": "CuckooAI",
|
||||
"symbol": "CAI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1200,
|
||||
"rpc": [
|
||||
"https://1200.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://mainnet-rpc.cuckoo.network",
|
||||
"wss://mainnet-rpc.cuckoo.network"
|
||||
],
|
||||
"shortName": "cai",
|
||||
"slug": "cuckoo-chain",
|
||||
"testnet": false,
|
||||
"title": "Cuckoo Chain"
|
||||
} as const satisfies Chain;
|
||||
@@ -17,7 +17,7 @@ export default {
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://buildonhybrid.com",
|
||||
"name": "Hybrid Testnet",
|
||||
"name": "Hybrid Testnet (Deprecated)",
|
||||
"nativeCurrency": {
|
||||
"name": "Hybrid",
|
||||
"symbol": "HYB",
|
||||
@@ -28,7 +28,8 @@ export default {
|
||||
"https://1224.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.buildonhybrid.com"
|
||||
],
|
||||
"shortName": "hyb",
|
||||
"slug": "hybrid-testnet",
|
||||
"shortName": "hyb_deprecated",
|
||||
"slug": "hybrid-testnet-deprecated",
|
||||
"status": "deprecated",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,36 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "HYB",
|
||||
"chainId": 1225,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Hybrid Testnet",
|
||||
"url": "https://explorer.buildonhybrid.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmdGfvH9qfvbMXYKosS1nHbw3q5UtFJky4hdMDmmKDTx8Y",
|
||||
"width": 250,
|
||||
"height": 250,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://buildonhybrid.com",
|
||||
"name": "Hybrid Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Hybrid",
|
||||
"symbol": "HYB",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1225,
|
||||
"rpc": [
|
||||
"https://1225.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://hybrid-testnet.rpc.caldera.xyz/http",
|
||||
"wss://hybrid-testnet.rpc.caldera.xyz/ws"
|
||||
],
|
||||
"shortName": "hyb",
|
||||
"slug": "hybrid-testnet",
|
||||
"status": "active",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -15,12 +15,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmRySLe3su59dE5x5JPm2b1GeZfz6DR9qUzcbp3rt4SD3A",
|
||||
"width": 300,
|
||||
"height": 300,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://astar.network",
|
||||
"name": "zKatana",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Sei",
|
||||
"chainId": 1328,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Seitrace",
|
||||
"url": "https://seitrace.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://atlantic-2.app.sei.io/faucet"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreih3l3iisplmikofkbfyimqlox7nmixzlkzhjoewmpi4jbqitwryoa",
|
||||
"width": 600,
|
||||
"height": 600,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.sei.io",
|
||||
"name": "Sei Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Sei",
|
||||
"symbol": "SEI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1328,
|
||||
"rpc": [
|
||||
"https://1328.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://evm-rpc-testnet.sei-apis.com",
|
||||
"wss://evm-ws-testnet.sei-apis.com"
|
||||
],
|
||||
"shortName": "sei-testnet",
|
||||
"slug": "sei-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -6,13 +6,7 @@ export default {
|
||||
{
|
||||
"name": "etherscan",
|
||||
"url": "http://testnet-api.magape.io:81",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmPsxWMvnxnZ9dZcRJJMaE24o34dQsnsAMCJh3kVDrE1aB",
|
||||
"width": 1000,
|
||||
"height": 1000,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
@@ -21,12 +15,6 @@ export default {
|
||||
"name": "EIP155"
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmPsxWMvnxnZ9dZcRJJMaE24o34dQsnsAMCJh3kVDrE1aB",
|
||||
"width": 1000,
|
||||
"height": 1000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://magape.io",
|
||||
"name": "MagApe Testnet",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 14299,
|
||||
"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": "Diego's",
|
||||
"nativeCurrency": {
|
||||
"name": "Diego's Token",
|
||||
"symbol": "VMF",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 14299,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://14299.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/diegos/testnet/rpc"
|
||||
],
|
||||
"shortName": "Diego's",
|
||||
"slug": "diego-s",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Satori",
|
||||
"chainId": 14801,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "satoriscan",
|
||||
"url": "https://satori.vanascan.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.vana.org"
|
||||
],
|
||||
"infoURL": "https://satori.vana.org",
|
||||
"name": "Vana Satori Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "DAT",
|
||||
"symbol": "DAT",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 14801,
|
||||
"rpc": [
|
||||
"https://14801.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"http://rpc.satori.vana.org"
|
||||
],
|
||||
"shortName": "satori",
|
||||
"slug": "vana-satori-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -15,12 +15,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmNTZ9nEomAXK6bLxUbMfTS1TvrsN22HU1zTtxHUpMkUhz",
|
||||
"width": 1000,
|
||||
"height": 1000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://kakarot.org",
|
||||
"name": "Kakarot Sepolia",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "TCC Network",
|
||||
"chainId": 181155,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Tcc Scan",
|
||||
"url": "https://scan.tccworld.org/",
|
||||
"standard": "181155",
|
||||
"icon": {
|
||||
"url": "ipfs://QmchZTtvuU7oRe3rSu1HNPELJQdnutV79NjcHxoybJ4SVo/tcc-coin.png",
|
||||
"width": 100,
|
||||
"height": 100,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmchZTtvuU7oRe3rSu1HNPELJQdnutV79NjcHxoybJ4SVo/tcc-coin.png",
|
||||
"width": 100,
|
||||
"height": 100,
|
||||
"format": "png"
|
||||
},
|
||||
"name": "TCC Network",
|
||||
"nativeCurrency": {
|
||||
"name": "The ChampCoin",
|
||||
"symbol": "TCC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 181155,
|
||||
"redFlags": [],
|
||||
"rpc": [],
|
||||
"shortName": "TCC",
|
||||
"slug": "tcc-network",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,41 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Gemuchain",
|
||||
"chainId": 1903648807,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Gemuchain Explorer",
|
||||
"url": "https://gemutest-explorer.gemuchain.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "https://explorer.gemuchain.io/assets/network_logo.svg",
|
||||
"width": 345,
|
||||
"height": 48,
|
||||
"format": "svg"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://raw.githubusercontent.com/UrfinDeuce/logos/05725373b48fb7e3de75737f621b21a4a6557c76/GemuChain%20logo.svg",
|
||||
"width": 345,
|
||||
"height": 48,
|
||||
"format": "svg"
|
||||
},
|
||||
"name": "Gemuchain Lab",
|
||||
"nativeCurrency": {
|
||||
"name": "GEMU",
|
||||
"symbol": "GEMU",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1903648807,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://1903648807.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://gemutest-rpc.gemuchain.io"
|
||||
],
|
||||
"shortName": "GEMU",
|
||||
"slug": "gemuchain-lab",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,34 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "KYOTO",
|
||||
"chainId": 1997,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Kyotoscan",
|
||||
"url": "https://kyotoscan.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP155"
|
||||
}
|
||||
],
|
||||
"infoURL": "https://kyotoprotocol.io",
|
||||
"name": "Kyoto",
|
||||
"nativeCurrency": {
|
||||
"name": "Kyoto",
|
||||
"symbol": "KYOTO",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1997,
|
||||
"rpc": [
|
||||
"https://1997.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.kyotochain.io"
|
||||
],
|
||||
"shortName": "kyoto",
|
||||
"slip44": 1,
|
||||
"slug": "kyoto",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,29 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Parodychain",
|
||||
"chainId": 2078,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmR2ovc7zeM7gdzpL6FdvWBEhLyE8dL1w8GWnooHEk9uEZ/parodychain-logo.png",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"name": "Parody Network",
|
||||
"nativeCurrency": {
|
||||
"name": "Parody",
|
||||
"symbol": "PDY",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2078,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://2078.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://fraa-flashbox-4392-rpc.a.stagenet.tanssi.network"
|
||||
],
|
||||
"shortName": "Parody",
|
||||
"slug": "parody-network",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -20,8 +20,8 @@ export default {
|
||||
"networkId": 2136,
|
||||
"rpc": [
|
||||
"https://2136.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://test-market.bigsb.io",
|
||||
"wss://test-market.bigsb.io"
|
||||
"https://test-market.bigsb.network",
|
||||
"wss://test-market.bigsb.network"
|
||||
],
|
||||
"shortName": "bigsb_testnet",
|
||||
"slug": "bigshortbets-testnet",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 2144,
|
||||
"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": "Test Subnet Resources",
|
||||
"nativeCurrency": {
|
||||
"name": "Test Subnet Resources Token",
|
||||
"symbol": "LNV",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2144,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://2144.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/testsubnet/testnet/rpc"
|
||||
],
|
||||
"shortName": "Test Subnet Resources",
|
||||
"slug": "test-subnet-resources",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -6,34 +6,16 @@ export default {
|
||||
{
|
||||
"name": "explorer",
|
||||
"url": "https://testnet.meldscan.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
},
|
||||
{
|
||||
"name": "explorer",
|
||||
"url": "https://subnets-test.avax.network/meld",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://meld.com",
|
||||
"name": "Kanazawa",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -44,7 +44,8 @@ export default {
|
||||
"https://mainnet.b2-rpc.com",
|
||||
"https://rpc.bsquared.network",
|
||||
"https://b2-mainnet.alt.technology",
|
||||
"https://b2-mainnet-public.s.chainbase.com"
|
||||
"https://b2-mainnet-public.s.chainbase.com",
|
||||
"https://rpc.ankr.com/b2"
|
||||
],
|
||||
"shortName": "B2-mainnet",
|
||||
"slug": "b2",
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "AILayer",
|
||||
"chainId": 2648,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://testnet-explorer.ailayer.xyz",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmYoqc8rm8PrBg9jqfpsrxd6zdPEqDozbyNVMkBo3QMAFP",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmYoqc8rm8PrBg9jqfpsrxd6zdPEqDozbyNVMkBo3QMAFP",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://ailayer.xyz/",
|
||||
"name": "AILayer Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "BTC",
|
||||
"symbol": "BTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2648,
|
||||
"rpc": [
|
||||
"https://2648.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.ailayer.xyz",
|
||||
"wss://testnet-rpc.ailayer.xyz"
|
||||
],
|
||||
"shortName": "ailayer-testnet",
|
||||
"slug": "ailayer-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,41 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "AILayer",
|
||||
"chainId": 2649,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://mainnet-explorer.ailayer.xyz",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmYoqc8rm8PrBg9jqfpsrxd6zdPEqDozbyNVMkBo3QMAFP",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmYoqc8rm8PrBg9jqfpsrxd6zdPEqDozbyNVMkBo3QMAFP",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://ailayer.xyz/",
|
||||
"name": "AILayer Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "BTC",
|
||||
"symbol": "BTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2649,
|
||||
"rpc": [
|
||||
"https://2649.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://mainnet-rpc.ailayer.xyz",
|
||||
"wss://mainnet-rpc.ailayer.xyz"
|
||||
],
|
||||
"shortName": "ailayer-mainnet",
|
||||
"slug": "ailayer",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -6,34 +6,16 @@ export default {
|
||||
{
|
||||
"name": "explorer",
|
||||
"url": "https://meldscan.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
},
|
||||
{
|
||||
"name": "explorer",
|
||||
"url": "https://subnets.avax.network/meld",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmRhB4AbjDrhvwfSAQi2JvKirFiDWxzJvKEvG8S8AdDdED",
|
||||
"width": 4000,
|
||||
"height": 4000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://meld.com",
|
||||
"name": "Meld",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "GTC",
|
||||
"chainId": 3490,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "GTCScan Explorer",
|
||||
"url": "https://gtcscan.io",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafybeiaaq7gogws6uqcvo6imxbxfgpdhewybh7bxgtfny2i2as5nidbdje",
|
||||
"width": 312,
|
||||
"height": 312,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafybeiaaq7gogws6uqcvo6imxbxfgpdhewybh7bxgtfny2i2as5nidbdje",
|
||||
"width": 312,
|
||||
"height": 312,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://gtcscan.io/",
|
||||
"name": "GTCSCAN",
|
||||
"nativeCurrency": {
|
||||
"name": "GTC",
|
||||
"symbol": "GTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 3490,
|
||||
"rpc": [
|
||||
"https://3490.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://gtc-dataseed.gtcscan.io/"
|
||||
],
|
||||
"shortName": "gtc",
|
||||
"slip44": 1,
|
||||
"slug": "gtcscan",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -10,6 +10,12 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcumhDxUyoLTHkcMKgPqkpGnnjwSTqE2KGFnDXXFY8mMo",
|
||||
"width": 40,
|
||||
"height": 38,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://islamicoin.finance",
|
||||
"name": "iChain Network",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "iChain Testnet",
|
||||
"chainId": 3645,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "iChainscan",
|
||||
"url": "https://test.ichainscan.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcumhDxUyoLTHkcMKgPqkpGnnjwSTqE2KGFnDXXFY8mMo",
|
||||
"width": 40,
|
||||
"height": 38,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://islamicoin.finance",
|
||||
"name": "iChain Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "ISLAMICOIN",
|
||||
"symbol": "ISLAMI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 3645,
|
||||
"rpc": [
|
||||
"https://3645.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://istanbul.ichainscan.com"
|
||||
],
|
||||
"shortName": "ISLAMIT",
|
||||
"slug": "ichain-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -7,20 +7,15 @@ export default {
|
||||
"name": "Blockscout",
|
||||
"url": "https://testnet-explorer-v2.xai-chain.net",
|
||||
"standard": "EIP3091"
|
||||
},
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://testnet-explorer-v2.xai-chain.net/",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmZKFekbHxDkB8gFmmmjWz89SLhwg38GkALmAKo3gn753N/2024-01-10%2012.50.15.jpg",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "jpg"
|
||||
"url": "ipfs://QmbWFbhjKw7zfsK5Rd9YxZgJgS43fpySPozjhYc98ibbEV/xai-icon.png",
|
||||
"width": 1024,
|
||||
"height": 1024,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://xai.games",
|
||||
"name": "Xai Sepolia",
|
||||
|
||||
@@ -16,12 +16,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmZt75xixnEtFzqHTrJa8kJkV4cTXmUZqeMeHM8BcvomQc",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://oho.ai",
|
||||
"name": "OHO Mainnet",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Bahamut",
|
||||
"chainId": 4058,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://ocean.ftnscan.com",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP155"
|
||||
},
|
||||
{
|
||||
"name": "EIP1559"
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmSemioP83RXnDWwTZbet8VpwJxcFRboX4B3pcdhLZGodP",
|
||||
"width": 200,
|
||||
"height": 200,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://bahamut.io",
|
||||
"name": "Bahamut ocean",
|
||||
"nativeCurrency": {
|
||||
"name": "FTN",
|
||||
"symbol": "FTN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 4058,
|
||||
"rpc": [
|
||||
"https://4058.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc1.ocean.bahamutchain.com"
|
||||
],
|
||||
"shortName": "ocean",
|
||||
"slug": "bahamut-ocean",
|
||||
"testnet": false,
|
||||
"title": "Bahamut ocean"
|
||||
} as const satisfies Chain;
|
||||
@@ -10,12 +10,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmXARMjJGkXEVEdjUyxkeG4ffsWvEo9vSJpVon3JwRxckS",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://tobechain.net",
|
||||
"name": "Tobe Chain",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -4,8 +4,8 @@ export default {
|
||||
"chainId": 44,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "subscan",
|
||||
"url": "https://crab.subscan.io",
|
||||
"name": "blockscout",
|
||||
"url": "https://crab-scan.darwinia.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -6,22 +6,10 @@ export default {
|
||||
{
|
||||
"name": "etmpscan",
|
||||
"url": "https://etmscan.network",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://etm.network",
|
||||
"name": "Ennothem Mainnet Proterozoic",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -10,12 +10,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmT7DTqT1V2y42pRpt3sj9ifijfmbtkHN7D2vTfAUAS622",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://etm.network",
|
||||
"name": "Ennothem Testnet Pioneer",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 51290,
|
||||
"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": "Test Using Resources",
|
||||
"nativeCurrency": {
|
||||
"name": "Test Using Resources Token",
|
||||
"symbol": "JMH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 51290,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://51290.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/testsize2/testnet/rpc"
|
||||
],
|
||||
"shortName": "Test Using Resources",
|
||||
"slug": "test-using-resources",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,38 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Pentagon",
|
||||
"chainId": 555555,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Pentagon Testnet Explorer",
|
||||
"url": "https://explorer-testnet.pentagon.games",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://bridge-testnet.pentagon.games"
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP155"
|
||||
},
|
||||
{
|
||||
"name": "EIP1559"
|
||||
}
|
||||
],
|
||||
"infoURL": "https://pentagon.games",
|
||||
"name": "Pentagon Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Pentagon",
|
||||
"symbol": "PEN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 555555,
|
||||
"rpc": [
|
||||
"https://555555.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc-testnet.pentagon.games"
|
||||
],
|
||||
"shortName": "pentagon-testnet",
|
||||
"slug": "pentagon-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -4,20 +4,20 @@ export default {
|
||||
"chainId": 57451,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "coinsec network",
|
||||
"name": "coinsecnetwork",
|
||||
"url": "https://explorer.coinsec.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmWm9biSavZ4ixNNSe8KhxiYgYaejY6Y4xRaqmz9fXimo5",
|
||||
"width": 1136,
|
||||
"height": 1112,
|
||||
"format": "png"
|
||||
"url": "ipfs://QmeUyBe58BPndt6SpH9Tn1a8AYpNtHbMVhVyZt8Ppc4HTB",
|
||||
"width": 200,
|
||||
"height": 200,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://explorer.coinsec.network/",
|
||||
"name": "COINSEC",
|
||||
"name": "COINSEC Network",
|
||||
"nativeCurrency": {
|
||||
"name": "COINSEC",
|
||||
"symbol": "SEC",
|
||||
@@ -29,7 +29,7 @@ export default {
|
||||
"https://mainnet-rpc.coinsec.network"
|
||||
],
|
||||
"shortName": "coinsecnetwork",
|
||||
"slug": "coinsec",
|
||||
"slug": "coinsec-network",
|
||||
"testnet": false,
|
||||
"title": "COINSEC Network"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 57923,
|
||||
"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": "QI0614I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0614I1 Token",
|
||||
"symbol": "GZD",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 57923,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://57923.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0614I1",
|
||||
"slug": "qi0614i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -16,12 +16,6 @@ export default {
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmRySLe3su59dE5x5JPm2b1GeZfz6DR9qUzcbp3rt4SD3A",
|
||||
"width": 300,
|
||||
"height": 300,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://astar.network",
|
||||
"name": "Astar zKyoto",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Open Campus Codex",
|
||||
"chainId": 656476,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Open Campus Codex",
|
||||
"url": "https://opencampus-codex.blockscout.com",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://QmXbz7VEYvf6NVHezuBy5HpJTCiagEThBxxdDdfVXNQ8Bt",
|
||||
"width": 30,
|
||||
"height": 30,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmXbz7VEYvf6NVHezuBy5HpJTCiagEThBxxdDdfVXNQ8Bt",
|
||||
"width": 30,
|
||||
"height": 30,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://raas.gelato.network/rollups/details/public/open-campus-codex",
|
||||
"name": "Open Campus Codex",
|
||||
"nativeCurrency": {
|
||||
"name": "EDU",
|
||||
"symbol": "EDU",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 656476,
|
||||
"rpc": [
|
||||
"https://656476.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.open-campus-codex.gelato.digital"
|
||||
],
|
||||
"shortName": "open-campus-codex",
|
||||
"slug": "open-campus-codex",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -12,10 +12,10 @@ export default {
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmZKFekbHxDkB8gFmmmjWz89SLhwg38GkALmAKo3gn753N/2024-01-10%2012.50.15.jpg",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "jpg"
|
||||
"url": "ipfs://QmbWFbhjKw7zfsK5Rd9YxZgJgS43fpySPozjhYc98ibbEV/xai-icon.png",
|
||||
"width": 1024,
|
||||
"height": 1024,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://xai.games/",
|
||||
"name": "Xai Mainnet",
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "OX",
|
||||
"chainId": 6699,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"infoURL": "https://ox.fun/chain",
|
||||
"name": "OX Chain",
|
||||
"nativeCurrency": {
|
||||
"name": "OX",
|
||||
"symbol": "OX",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 6699,
|
||||
"rpc": [
|
||||
"https://6699.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.oxscan.io"
|
||||
],
|
||||
"shortName": "ox-chain",
|
||||
"slug": "ox-chain",
|
||||
"status": "incubating",
|
||||
"testnet": false,
|
||||
"title": "OX Chain"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,29 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Darwinia Koi",
|
||||
"chainId": 701,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://koi-scan.darwinia.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"infoURL": "https://darwinia.network/",
|
||||
"name": "Darwinia Koi Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Koi Network Native Token",
|
||||
"symbol": "KRING",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 701,
|
||||
"rpc": [
|
||||
"https://701.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://koi-rpc.darwinia.network"
|
||||
],
|
||||
"shortName": "darwinia-koi",
|
||||
"slip44": 1,
|
||||
"slug": "darwinia-koi-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 74444,
|
||||
"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": "QR0612T1TS",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0612T1TS Token",
|
||||
"symbol": "FYJ",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 74444,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://74444.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0612t1ts/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0612T1TS",
|
||||
"slug": "qr0612t1ts",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -19,14 +19,15 @@ export default {
|
||||
"infoURL": "https://www.boraportal.com",
|
||||
"name": "BORAchain mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "BGAS",
|
||||
"symbol": "BGAS",
|
||||
"name": "BORA",
|
||||
"symbol": "BORA",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 77001,
|
||||
"rpc": [
|
||||
"https://77001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://public-node.api.boraportal.com/bora/mainnet"
|
||||
"https://public-node.api.boraportal.com/bora/mainnet",
|
||||
"https://public-node.api.boraportal.io/bora/mainnet"
|
||||
],
|
||||
"shortName": "BORAchain",
|
||||
"slip44": 8217,
|
||||
|
||||
@@ -16,12 +16,6 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmVhezQHkqSZ5Tvtsw18giA1yBjV1URSsBQ7HenUh6p6oC",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://octa.space",
|
||||
"name": "OctaSpace",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -10,6 +10,7 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://bartio.faucet.berachain.com",
|
||||
"https://bartio.faucet.berachain.com/"
|
||||
],
|
||||
"features": [],
|
||||
@@ -19,6 +20,7 @@ export default {
|
||||
"height": 360,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.berachain.com",
|
||||
"name": "Berachain bArtio",
|
||||
"nativeCurrency": {
|
||||
"name": "BERA",
|
||||
@@ -31,7 +33,8 @@ export default {
|
||||
"https://80084.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://quicknode-rpc.berachain.com",
|
||||
"https://bartio.rpc.berachain.com",
|
||||
"https://rpc.ankr.com/berachain_testnet"
|
||||
"https://rpc.ankr.com/berachain_testnet",
|
||||
"https://bera-testnet.nodeinfra.com"
|
||||
],
|
||||
"shortName": "Berachain",
|
||||
"slug": "berachain-bartio",
|
||||
|
||||
@@ -16,6 +16,7 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreibqgh23s7yt7rikybybiwfivwtoh32n24scjykvgbgewo3ecbrcye",
|
||||
"width": 512,
|
||||
@@ -30,8 +31,10 @@ export default {
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 8047,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://8047.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc0.come.boats/",
|
||||
"https://rpc0.come.boat/"
|
||||
],
|
||||
"shortName": "boat",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 82529,
|
||||
"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": "Test Using Resources",
|
||||
"nativeCurrency": {
|
||||
"name": "Test Using Resources Token",
|
||||
"symbol": "JMH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 82529,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://82529.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/testsize/testnet/rpc"
|
||||
],
|
||||
"shortName": "Test Using Resources",
|
||||
"slug": "test-using-resources-test using resources",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -12,12 +12,6 @@ export default {
|
||||
"faucets": [
|
||||
"https://faucet.blocktonscan.com/"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreig3hoedafisrgc6iffdo2jcblm6kov35h72gcblc3zkmt7t4ucwhy",
|
||||
"width": 800,
|
||||
"height": 800,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://blocktoncoin.com",
|
||||
"name": "Blockton Blockchain",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 85405,
|
||||
"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": "QR0614T1tS",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0614T1tS Token",
|
||||
"symbol": "FTW",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 85405,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://85405.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0614t1ts/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0614T1tS",
|
||||
"slug": "qr0614t1ts",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -6,24 +6,12 @@ export default {
|
||||
{
|
||||
"name": "mmtscan",
|
||||
"url": "https://mmtscan.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmaF5gi2CbDKsJ2UchNkjBqmWjv8JEDP3vePBmxeUHiaK4",
|
||||
"width": 250,
|
||||
"height": 250,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.mmtscan.io/"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmaF5gi2CbDKsJ2UchNkjBqmWjv8JEDP3vePBmxeUHiaK4",
|
||||
"width": 250,
|
||||
"height": 250,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://mmtchain.io/",
|
||||
"name": "Mammoth Mainnet",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -6,24 +6,12 @@ export default {
|
||||
{
|
||||
"name": "Shidoblock Testnet Explorer",
|
||||
"url": "https://testnet.shidoscan.com",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreiatrf5pp7ywvrwvsv4otrex73u6v6bvhorqkxiop2hy2i572zjrba",
|
||||
"width": 1080,
|
||||
"height": 1080,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://testnet.shidoscan.com/faucet"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreiatrf5pp7ywvrwvsv4otrex73u6v6bvhorqkxiop2hy2i572zjrba",
|
||||
"width": 1080,
|
||||
"height": 1080,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.nexablock.io",
|
||||
"name": "Shido Testnet Block",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -6,22 +6,10 @@ export default {
|
||||
{
|
||||
"name": "Shidoblock Mainnet Explorer",
|
||||
"url": "https://shidoscan.com",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreiatrf5pp7ywvrwvsv4otrex73u6v6bvhorqkxiop2hy2i572zjrba",
|
||||
"width": 1080,
|
||||
"height": 1080,
|
||||
"format": "png"
|
||||
}
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreiatrf5pp7ywvrwvsv4otrex73u6v6bvhorqkxiop2hy2i572zjrba",
|
||||
"width": 1080,
|
||||
"height": 1080,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://shido.io",
|
||||
"name": "Shido Mainnet Block",
|
||||
"nativeCurrency": {
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Supernet Testnet",
|
||||
"chainId": 998899,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "supernet-testnet-explorer",
|
||||
"url": "https://testnet-explorer.supernet.chaingames.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.chaingames.io"
|
||||
],
|
||||
"name": "Supernet Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "CHAIN",
|
||||
"symbol": "CHAIN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 998899,
|
||||
"rpc": [
|
||||
"https://998899.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet-rpc.supernet.chaingames.io/"
|
||||
],
|
||||
"shortName": "supernetchain",
|
||||
"slip44": 1,
|
||||
"slug": "supernet-testnet",
|
||||
"testnet": true,
|
||||
"title": "Supernet Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/chains",
|
||||
"version": "0.1.117",
|
||||
"version": "0.1.120",
|
||||
"main": "dist/thirdweb-dev-chains.cjs.js",
|
||||
"module": "dist/thirdweb-dev-chains.esm.js",
|
||||
"exports": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,53 @@
|
||||
# thirdweb
|
||||
|
||||
## 0.14.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`321cf26`](https://github.com/thirdweb-dev/js/commit/321cf26342d0755204aa465bc2390e052d5ed071)]:
|
||||
- @thirdweb-dev/chains@0.1.120
|
||||
- @thirdweb-dev/sdk@4.0.98
|
||||
- @thirdweb-dev/wallets@2.5.38
|
||||
- @thirdweb-dev/auth@4.1.96
|
||||
|
||||
## 0.14.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.97
|
||||
- @thirdweb-dev/wallets@2.5.37
|
||||
- @thirdweb-dev/auth@4.1.95
|
||||
|
||||
## 0.14.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`8b74602`](https://github.com/thirdweb-dev/js/commit/8b74602e3b7fbe011bf886b9d5ee0e2ea62f7447)]:
|
||||
- @thirdweb-dev/chains@0.1.119
|
||||
- @thirdweb-dev/sdk@4.0.96
|
||||
- @thirdweb-dev/wallets@2.5.36
|
||||
- @thirdweb-dev/auth@4.1.94
|
||||
|
||||
## 0.14.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`7768067`](https://github.com/thirdweb-dev/js/commit/7768067bf4f571a8c8ee6b646a58e2fc5f6bd052)]:
|
||||
- @thirdweb-dev/sdk@4.0.95
|
||||
- @thirdweb-dev/wallets@2.5.35
|
||||
- @thirdweb-dev/auth@4.1.93
|
||||
|
||||
## 0.14.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`9f42e4d`](https://github.com/thirdweb-dev/js/commit/9f42e4d2412df536d1b5f03a4e2a8b516911facb)]:
|
||||
- @thirdweb-dev/chains@0.1.118
|
||||
- @thirdweb-dev/sdk@4.0.94
|
||||
- @thirdweb-dev/wallets@2.5.34
|
||||
- @thirdweb-dev/auth@4.1.92
|
||||
|
||||
## 0.14.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/cli",
|
||||
"main": "dist/cli/index.js",
|
||||
"version": "0.14.6",
|
||||
"version": "0.14.11",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/cli",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"@typescript-eslint/parser": "7.9.0",
|
||||
"eslint-config-next": "14.2.1",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-config-turbo": "1.13.2",
|
||||
"eslint-config-turbo": "2.0.4",
|
||||
"eslint-plugin-react": "7.34.1"
|
||||
},
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,53 @@
|
||||
# @thirdweb-dev/react-core
|
||||
|
||||
## 4.9.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`321cf26`](https://github.com/thirdweb-dev/js/commit/321cf26342d0755204aa465bc2390e052d5ed071)]:
|
||||
- @thirdweb-dev/chains@0.1.120
|
||||
- @thirdweb-dev/sdk@4.0.98
|
||||
- @thirdweb-dev/wallets@2.5.38
|
||||
- @thirdweb-dev/auth@4.1.96
|
||||
|
||||
## 4.9.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.97
|
||||
- @thirdweb-dev/wallets@2.5.37
|
||||
- @thirdweb-dev/auth@4.1.95
|
||||
|
||||
## 4.9.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`8b74602`](https://github.com/thirdweb-dev/js/commit/8b74602e3b7fbe011bf886b9d5ee0e2ea62f7447)]:
|
||||
- @thirdweb-dev/chains@0.1.119
|
||||
- @thirdweb-dev/sdk@4.0.96
|
||||
- @thirdweb-dev/wallets@2.5.36
|
||||
- @thirdweb-dev/auth@4.1.94
|
||||
|
||||
## 4.9.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`7768067`](https://github.com/thirdweb-dev/js/commit/7768067bf4f571a8c8ee6b646a58e2fc5f6bd052)]:
|
||||
- @thirdweb-dev/sdk@4.0.95
|
||||
- @thirdweb-dev/wallets@2.5.35
|
||||
- @thirdweb-dev/auth@4.1.93
|
||||
|
||||
## 4.8.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`9f42e4d`](https://github.com/thirdweb-dev/js/commit/9f42e4d2412df536d1b5f03a4e2a8b516911facb)]:
|
||||
- @thirdweb-dev/chains@0.1.118
|
||||
- @thirdweb-dev/sdk@4.0.94
|
||||
- @thirdweb-dev/wallets@2.5.34
|
||||
- @thirdweb-dev/auth@4.1.92
|
||||
|
||||
## 4.7.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-core",
|
||||
"version": "4.7.0",
|
||||
"version": "4.9.3",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react-core",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,61 @@
|
||||
# @thirdweb-dev/react
|
||||
|
||||
## 4.9.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`321cf26`](https://github.com/thirdweb-dev/js/commit/321cf26342d0755204aa465bc2390e052d5ed071)]:
|
||||
- @thirdweb-dev/chains@0.1.120
|
||||
- @thirdweb-dev/sdk@4.0.98
|
||||
- @thirdweb-dev/react-core@4.9.3
|
||||
- @thirdweb-dev/wallets@2.5.38
|
||||
|
||||
## 4.9.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.97
|
||||
- @thirdweb-dev/react-core@4.9.2
|
||||
- @thirdweb-dev/wallets@2.5.37
|
||||
|
||||
## 4.9.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`8b74602`](https://github.com/thirdweb-dev/js/commit/8b74602e3b7fbe011bf886b9d5ee0e2ea62f7447)]:
|
||||
- @thirdweb-dev/chains@0.1.119
|
||||
- @thirdweb-dev/sdk@4.0.96
|
||||
- @thirdweb-dev/react-core@4.9.1
|
||||
- @thirdweb-dev/wallets@2.5.36
|
||||
|
||||
## 4.9.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#3315](https://github.com/thirdweb-dev/js/pull/3315) [`eff7107`](https://github.com/thirdweb-dev/js/commit/eff710738ce3d4341257e5912311c95b28a34b5d) Thanks [@MananTank](https://github.com/MananTank)! - Allow configuring WalletConnect `qrcode` and `qrModalOptions` from wallet configurator functions like `metamaskWallet`, `coreWallet`, `zerionWallet` etc
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`7768067`](https://github.com/thirdweb-dev/js/commit/7768067bf4f571a8c8ee6b646a58e2fc5f6bd052)]:
|
||||
- @thirdweb-dev/sdk@4.0.95
|
||||
- @thirdweb-dev/react-core@4.9.0
|
||||
- @thirdweb-dev/wallets@2.5.35
|
||||
|
||||
## 4.8.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#3296](https://github.com/thirdweb-dev/js/pull/3296) [`841c86a`](https://github.com/thirdweb-dev/js/commit/841c86aa125c5965f43472e5e6f54267eda65726) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Adds private key export
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`9f42e4d`](https://github.com/thirdweb-dev/js/commit/9f42e4d2412df536d1b5f03a4e2a8b516911facb)]:
|
||||
- @thirdweb-dev/chains@0.1.118
|
||||
- @thirdweb-dev/sdk@4.0.94
|
||||
- @thirdweb-dev/react-core@4.8.0
|
||||
- @thirdweb-dev/wallets@2.5.34
|
||||
|
||||
## 4.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react",
|
||||
"version": "4.7.0",
|
||||
"version": "4.9.3",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -79,6 +79,7 @@ import { useChainQuery } from "../hooks/useChainQuery";
|
||||
import { SwapScreen } from "./screens/Buy/swap/SwapScreen";
|
||||
import { SwapTransactionsScreen } from "./screens/SwapTransactionsScreen";
|
||||
import { swapTransactionsStore } from "./screens/Buy/swap/pendingSwapTx";
|
||||
import { ExportPrivateKey } from "../wallets/embeddedWallet/ExportPrivateKey";
|
||||
|
||||
const TW_CONNECTED_WALLET = "tw-connected-wallet";
|
||||
|
||||
@@ -89,7 +90,8 @@ type WalletDetailsModalScreen =
|
||||
| "buy"
|
||||
| "receive"
|
||||
| "network-switcher"
|
||||
| "pending-tx";
|
||||
| "pending-tx"
|
||||
| "private-key";
|
||||
|
||||
export const ConnectedWalletDetails: React.FC<{
|
||||
onDisconnect: () => void;
|
||||
@@ -573,6 +575,23 @@ export const ConnectedWalletDetails: React.FC<{
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Export Embedded Wallet */}
|
||||
{activeWallet?.walletId === walletIds.embeddedWallet && (
|
||||
<div>
|
||||
<MenuButton
|
||||
onClick={() => {
|
||||
setScreen("private-key");
|
||||
}}
|
||||
style={{
|
||||
fontSize: fontSize.sm,
|
||||
}}
|
||||
>
|
||||
<PinBottomIcon width={iconSize.md} height={iconSize.md} />
|
||||
<Text color="primaryText">{"Export Private Key"}</Text>
|
||||
</MenuButton>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{props.detailsModalFooter && (
|
||||
<props.detailsModalFooter close={() => setIsOpen(false)} />
|
||||
)}
|
||||
@@ -645,6 +664,16 @@ export const ConnectedWalletDetails: React.FC<{
|
||||
}}
|
||||
/>
|
||||
);
|
||||
} else if (screen === "private-key") {
|
||||
content = (
|
||||
<ExportPrivateKey
|
||||
theme={props.theme}
|
||||
walletInstance={activeWallet}
|
||||
onBack={() => {
|
||||
setScreen("main");
|
||||
}}
|
||||
/>
|
||||
);
|
||||
} else if (screen === "send" && walletChainId) {
|
||||
content = (
|
||||
<SendFunds
|
||||
|
||||
@@ -6,6 +6,7 @@ import type {
|
||||
import { Coin98Wallet, getInjectedCoin98Provider } from "@thirdweb-dev/wallets";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const coin98WalletUris = {
|
||||
ios: "coin98://",
|
||||
@@ -29,6 +30,22 @@ export type Coin98WalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -78,7 +95,11 @@ export const coin98Wallet = (
|
||||
const wallet = new Coin98Wallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return wallet;
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
import { handelWCSessionRequest } from "../handleWCSessionRequest";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const coreWalletUris = {
|
||||
ios: "core://",
|
||||
@@ -33,6 +34,22 @@ export type CoreWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -81,7 +98,11 @@ export const coreWallet = (
|
||||
const wallet = new CoreWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
handelWCSessionRequest(wallet, coreWalletUris);
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import { handelWCSessionRequest } from "../handleWCSessionRequest";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const cryptoDefiWalletUris = {
|
||||
ios: "dfw://",
|
||||
@@ -33,6 +34,22 @@ export type CryptoDefiWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -82,7 +99,11 @@ export const cryptoDefiWallet = (
|
||||
const wallet = new CryptoDefiWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
handelWCSessionRequest(wallet, cryptoDefiWalletUris);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import {
|
||||
Container,
|
||||
ModalHeader,
|
||||
} from "../../../components/basic";
|
||||
import {
|
||||
WalletInstance,
|
||||
} from "@thirdweb-dev/react-core";
|
||||
import { Theme } from "../../../design-system";
|
||||
|
||||
export const ExportPrivateKey: React.FC<{
|
||||
onBack?: () => void;
|
||||
walletInstance?: WalletInstance;
|
||||
walletAddress?: string;
|
||||
theme: "light" | "dark" | Theme;
|
||||
}> = (props) => {
|
||||
|
||||
return (
|
||||
<Container fullHeight animate="fadein">
|
||||
<Container p="lg">
|
||||
<ModalHeader
|
||||
onBack={props.onBack}
|
||||
title="Export Private Key"
|
||||
/>
|
||||
</Container>
|
||||
<Container p="md">
|
||||
<iframe
|
||||
title="Export In-App Wallet"
|
||||
style={{
|
||||
width: "100%",
|
||||
height: "250px",
|
||||
|
||||
}}
|
||||
|
||||
allow="clipboard-read; clipboard-write"
|
||||
src={`https://embedded-wallet.thirdweb.com//sdk/2022-08-12/embedded-wallet/export-private-key?clientId=${
|
||||
props.walletInstance?.getOptions()?.clientId
|
||||
}&theme=${
|
||||
typeof props.theme === "string" ? props.theme : props.theme.type
|
||||
}`}
|
||||
/>
|
||||
</Container>
|
||||
</Container>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -6,6 +6,7 @@ import type {
|
||||
import { ImTokenWallet, assertWindowEthereum } from "@thirdweb-dev/wallets";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const imTokenWalletUris = {
|
||||
ios: "imtokenv2://",
|
||||
@@ -15,6 +16,22 @@ const imTokenWalletUris = {
|
||||
export type ImTokenWalletConfigOptions = {
|
||||
projectId?: string;
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
export const imTokenWallet = (
|
||||
@@ -30,7 +47,11 @@ export const imTokenWallet = (
|
||||
const wallet = new ImTokenWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return wallet;
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
import { MetamaskConnectUI } from "./MetamaskConnectUI";
|
||||
import { metamaskUris } from "./metamaskUris";
|
||||
import { handelWCSessionRequest } from "../handleWCSessionRequest";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
/**
|
||||
* @wallet
|
||||
@@ -35,6 +36,22 @@ export type MetamaskWalletConfigOptions = {
|
||||
* Default is `"walletconnect"`
|
||||
*/
|
||||
connectionMethod?: "walletConnect" | "metamaskBrowser";
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -89,7 +106,11 @@ export const metamaskWallet = (
|
||||
const wallet = new MetaMaskWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
if (connectionMethod === "walletConnect") {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { WalletOptions, WalletConfig } from "@thirdweb-dev/react-core";
|
||||
import { OKXWallet, getInjectedOKXProvider } from "@thirdweb-dev/wallets";
|
||||
import { OKXConnectUI } from "./OKXConnectUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
/**
|
||||
* @wallet
|
||||
@@ -18,6 +19,22 @@ export type OKXWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -67,7 +84,11 @@ export const okxWallet = (
|
||||
const wallet = new OKXWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return wallet;
|
||||
|
||||
@@ -6,6 +6,7 @@ import type {
|
||||
import { OneKeyWallet, getInjectedOneKeyProvider } from "@thirdweb-dev/wallets";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
export const oneKeyWalletUris = {
|
||||
ios: "onekey-wallet://",
|
||||
@@ -29,6 +30,22 @@ export type OneKeyWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -78,7 +95,11 @@ export const oneKeyWallet = (
|
||||
const wallet = new OneKeyWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return wallet;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { WalletOptions, WalletConfig } from "@thirdweb-dev/react-core";
|
||||
import { RabbyWallet, getInjectedRabbyProvider } from "@thirdweb-dev/wallets";
|
||||
import { RabbyConnectUI } from "./RabbyConnectUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
/**
|
||||
* @wallet
|
||||
@@ -18,6 +19,22 @@ export type RabbyWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -64,7 +81,11 @@ export const rabbyWallet = (
|
||||
const wallet = new RabbyWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
return wallet;
|
||||
|
||||
@@ -7,6 +7,7 @@ import { TrustWallet, assertWindowEthereum } from "@thirdweb-dev/wallets";
|
||||
import { handelWCSessionRequest } from "../handleWCSessionRequest";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const trustWalletUris = {
|
||||
ios: "trust://",
|
||||
@@ -30,6 +31,22 @@ export type TrustWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -72,7 +89,11 @@ export const trustWallet = (
|
||||
const wallet = new TrustWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
handelWCSessionRequest(wallet, trustWalletUris);
|
||||
|
||||
@@ -7,6 +7,7 @@ import { ZerionWallet, assertWindowEthereum } from "@thirdweb-dev/wallets";
|
||||
import { handelWCSessionRequest } from "../handleWCSessionRequest";
|
||||
import { useTWLocale } from "../../../evm/providers/locale-provider";
|
||||
import { ExtensionOrWCConnectionUI } from "../_common/ExtensionORWCConnectionUI";
|
||||
import type { QRModalOptions } from "@thirdweb-dev/wallets/src/evm/connectors/wallet-connect/qrModalOptions";
|
||||
|
||||
const zerionWalletUris = {
|
||||
ios: "zerion://",
|
||||
@@ -30,6 +31,22 @@ export type ZerionkWalletConfigOptions = {
|
||||
* If true, the wallet will be tagged as "recommended" in ConnectWallet Modal
|
||||
*/
|
||||
recommended?: boolean;
|
||||
|
||||
/**
|
||||
* Specify whether to open the official Wallet Connect Modal when connecting the wallet if no injected MetaMask provider is found when connecting the wallet.
|
||||
*
|
||||
* This should not be set if you are using ConnectWallet component and only when manually connecting the wallet using a hook like `useConnect`.
|
||||
*
|
||||
* You can set it to `true` or a configuration object to enable the Wallet Connect Modal.
|
||||
*/
|
||||
wcModal?:
|
||||
| {
|
||||
/**
|
||||
* Configure the style of Wallet Connect Modal.
|
||||
*/
|
||||
qrModalOptions?: QRModalOptions;
|
||||
}
|
||||
| boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -72,7 +89,11 @@ export const zerionWallet = (
|
||||
const wallet = new ZerionWallet({
|
||||
...walletOptions,
|
||||
projectId: options?.projectId,
|
||||
qrcode: false,
|
||||
qrcode: options?.wcModal ? true : false,
|
||||
qrModalOptions:
|
||||
typeof options?.wcModal === "object"
|
||||
? options?.wcModal?.qrModalOptions
|
||||
: undefined,
|
||||
});
|
||||
|
||||
handelWCSessionRequest(wallet, zerionWalletUris);
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,45 @@
|
||||
# @thirdweb-dev/sdk
|
||||
|
||||
## 4.0.98
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`2d7ebe2`](https://github.com/thirdweb-dev/js/commit/2d7ebe2111d24448dd85ace25fc9fdbef987a57d), [`7304c5b`](https://github.com/thirdweb-dev/js/commit/7304c5b0c7060080f302160dc9b24b2becc17524), [`a9ce10f`](https://github.com/thirdweb-dev/js/commit/a9ce10f39ad47f386e8086e230679093aab08754), [`321cf26`](https://github.com/thirdweb-dev/js/commit/321cf26342d0755204aa465bc2390e052d5ed071)]:
|
||||
- thirdweb@5.29.5
|
||||
- @thirdweb-dev/chains@0.1.120
|
||||
|
||||
## 4.0.97
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`79e6a04`](https://github.com/thirdweb-dev/js/commit/79e6a047d6ae6cb341fdad22137bd83ad6e611d4)]:
|
||||
- thirdweb@5.29.4
|
||||
|
||||
## 4.0.96
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`c94bcd5`](https://github.com/thirdweb-dev/js/commit/c94bcd574aa4eaf2bd76ab8b6379302de4731ed4), [`1c533ef`](https://github.com/thirdweb-dev/js/commit/1c533efcd5fbc8a72fd03c98510fa601ee5f34b5), [`ffaff74`](https://github.com/thirdweb-dev/js/commit/ffaff744f72d2cb22896e7501677b48f76ea857a), [`8b74602`](https://github.com/thirdweb-dev/js/commit/8b74602e3b7fbe011bf886b9d5ee0e2ea62f7447), [`9cf3a1d`](https://github.com/thirdweb-dev/js/commit/9cf3a1d6636fcd56559e889ab2bfe3249d51162a)]:
|
||||
- thirdweb@5.29.3
|
||||
- @thirdweb-dev/chains@0.1.119
|
||||
|
||||
## 4.0.95
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2880](https://github.com/thirdweb-dev/js/pull/2880) [`7768067`](https://github.com/thirdweb-dev/js/commit/7768067bf4f571a8c8ee6b646a58e2fc5f6bd052) Thanks [@kumaryash90](https://github.com/kumaryash90)! - Modular contract publish and deploy setup
|
||||
|
||||
- Updated dependencies [[`7768067`](https://github.com/thirdweb-dev/js/commit/7768067bf4f571a8c8ee6b646a58e2fc5f6bd052), [`fb6a07d`](https://github.com/thirdweb-dev/js/commit/fb6a07d4b84ba8ea6389ca04c73625f670a0d9c4)]:
|
||||
- thirdweb@5.29.2
|
||||
|
||||
## 4.0.94
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`b248afc`](https://github.com/thirdweb-dev/js/commit/b248afc16062f8fe0967e42535ae119642897003), [`9f42e4d`](https://github.com/thirdweb-dev/js/commit/9f42e4d2412df536d1b5f03a4e2a8b516911facb), [`132b3cb`](https://github.com/thirdweb-dev/js/commit/132b3cb45ae1d56f8de240a361b31c76d5b9b4a7), [`e7ba698`](https://github.com/thirdweb-dev/js/commit/e7ba698f3e60e0749f8739ad1aec76a8ab2c2fb3)]:
|
||||
- thirdweb@5.29.1
|
||||
- @thirdweb-dev/chains@0.1.118
|
||||
|
||||
## 4.0.93
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/sdk",
|
||||
"version": "4.0.93",
|
||||
"version": "4.0.98",
|
||||
"description": "The main thirdweb SDK.",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/sdk",
|
||||
"license": "Apache-2.0",
|
||||
@@ -129,7 +129,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@eth-optimism/sdk": "3.3.0",
|
||||
"@eth-optimism/sdk": "3.3.2",
|
||||
"@thirdweb-dev/chains": "workspace:*",
|
||||
"@thirdweb-dev/contracts-js": "workspace:*",
|
||||
"@thirdweb-dev/crypto": "workspace:*",
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
import { providers, utils } from "ethers";
|
||||
import {
|
||||
coreContractAbi,
|
||||
extensionContractAbi,
|
||||
} from "../../constants/thirdweb-features";
|
||||
import { hasDuplicates } from "../utils";
|
||||
import { getChainByChainIdAsync, getChainRPC } from "@thirdweb-dev/chains";
|
||||
|
||||
type CallbackFunction = {
|
||||
selector: string;
|
||||
};
|
||||
|
||||
type FallbackFunction = {
|
||||
selector: string;
|
||||
permissionBits: string;
|
||||
};
|
||||
|
||||
type SupportedCallbackFunction = {
|
||||
selector: string;
|
||||
mode: number;
|
||||
};
|
||||
|
||||
export async function compatibleExtensions(
|
||||
coreBytecode: string,
|
||||
extensionBytecodes: string[],
|
||||
chainId: number,
|
||||
): Promise<boolean> {
|
||||
const chain = await getChainByChainIdAsync(chainId);
|
||||
const rpcUrl = getChainRPC(chain);
|
||||
const jsonRpcProvider = new providers.JsonRpcProvider(rpcUrl);
|
||||
const addr = "0x0000000000000000000000000000000000000124"; // arbitrary address
|
||||
|
||||
/**
|
||||
* Here we use state override with eth_call.
|
||||
*
|
||||
* This lets us call functions on a non-deployed contract, by using its deployed bytecode
|
||||
* to override code of an arbitrary address in eth_call.
|
||||
*
|
||||
* Encode function calldata, and perform eth_call with bytecode override.
|
||||
*/
|
||||
|
||||
const coreIface = new utils.Interface(coreContractAbi);
|
||||
const coreCalldata = coreIface.encodeFunctionData(
|
||||
"getSupportedCallbackFunctions",
|
||||
[],
|
||||
);
|
||||
if (!coreBytecode.startsWith("0x6080604052")) {
|
||||
const index = coreBytecode.indexOf("6080604052");
|
||||
coreBytecode = `0x${coreBytecode.substring(index)}`;
|
||||
} else if (coreBytecode.lastIndexOf("6080604052") > 0) {
|
||||
const index = coreBytecode.lastIndexOf("6080604052");
|
||||
coreBytecode = `0x${coreBytecode.substring(index)}`;
|
||||
}
|
||||
const core = await jsonRpcProvider.send("eth_call", [
|
||||
{ to: addr, data: coreCalldata },
|
||||
"latest",
|
||||
{ [addr]: { code: coreBytecode } }, // eth_call with bytecode override
|
||||
]);
|
||||
|
||||
const extensionIface = new utils.Interface(extensionContractAbi);
|
||||
const extensionCalldata = extensionIface.encodeFunctionData(
|
||||
"getExtensionConfig",
|
||||
[],
|
||||
);
|
||||
const extensions = await Promise.all(
|
||||
extensionBytecodes.map((b: string) => {
|
||||
// TODO: Upload deployed bytecode on publish metadata
|
||||
|
||||
if (!b.startsWith("0x6080604052")) {
|
||||
const index = b.indexOf("6080604052");
|
||||
b = `0x${b.substring(index)}`;
|
||||
} else if (b.lastIndexOf("6080604052") > 0) {
|
||||
const index = b.lastIndexOf("6080604052");
|
||||
b = `0x${b.substring(index)}`;
|
||||
}
|
||||
|
||||
return jsonRpcProvider.send("eth_call", [
|
||||
{ to: addr, data: extensionCalldata },
|
||||
"latest",
|
||||
{ [addr]: { code: b } }, // eth_call with bytecode override
|
||||
]);
|
||||
}),
|
||||
);
|
||||
|
||||
const decodedCore = coreIface.decodeFunctionResult(
|
||||
"getSupportedCallbackFunctions",
|
||||
core,
|
||||
);
|
||||
const coreCallbackSelectors = decodedCore.flat().map(
|
||||
(c: SupportedCallbackFunction) => c.selector,
|
||||
);
|
||||
|
||||
// extract callback/fallback selectors and required interfaces from extension config
|
||||
const requiredInterfaces: string[] = [];
|
||||
const extensionFallbackSelectors: string[] = [];
|
||||
const extensionCallbackSelectors: string[] = [];
|
||||
const selectors: string[] = [];
|
||||
|
||||
extensions.forEach((e: string) => {
|
||||
const decodedExtensionConfig = extensionIface.decodeFunctionResult(
|
||||
"getExtensionConfig",
|
||||
e,
|
||||
);
|
||||
|
||||
requiredInterfaces.push(...decodedExtensionConfig[0].requiredInterfaces);
|
||||
const fallbackSelectors =
|
||||
decodedExtensionConfig[0].fallbackFunctions.map(
|
||||
(a: FallbackFunction) => a.selector,
|
||||
);
|
||||
const callbackSelectors =
|
||||
decodedExtensionConfig[0].callbackFunctions.map(
|
||||
(a: CallbackFunction) => a.selector,
|
||||
);
|
||||
|
||||
extensionFallbackSelectors.push(...fallbackSelectors);
|
||||
extensionCallbackSelectors.push(...callbackSelectors);
|
||||
});
|
||||
|
||||
// check if callback selectors are supported
|
||||
for(const callback of extensionCallbackSelectors) {
|
||||
if(!coreCallbackSelectors.includes(callback)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// check if the core contract supports required interfaces by extensions above
|
||||
if(requiredInterfaces.length > 0) {
|
||||
const supportsInterfaceResult = await Promise.all(
|
||||
requiredInterfaces.map((r) => {
|
||||
const supportsInterfaceCalldata = coreIface.encodeFunctionData(
|
||||
"supportsInterface",
|
||||
[r],
|
||||
);
|
||||
return jsonRpcProvider.send("eth_call", [
|
||||
{ to: addr, data: supportsInterfaceCalldata },
|
||||
"latest",
|
||||
{ [addr]: { code: coreBytecode } },
|
||||
]);
|
||||
}),
|
||||
);
|
||||
const supportsInterfaceDecoded = supportsInterfaceResult.map(r => {
|
||||
return coreIface.decodeFunctionResult(
|
||||
"supportsInterface",
|
||||
r,
|
||||
);
|
||||
})
|
||||
if (supportsInterfaceDecoded.flat().some((element) => element === false)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// check duplicate callback/fallback signatures
|
||||
selectors.push(...extensionFallbackSelectors, ...extensionCallbackSelectors);
|
||||
return !hasDuplicates(
|
||||
selectors.flat(),
|
||||
(a: string, b: string): boolean => a === b,
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
coreContractAbi,
|
||||
getAllExtensionsAbi,
|
||||
getAllPluginsAbi,
|
||||
} from "../../constants/thirdweb-features";
|
||||
@@ -38,6 +39,7 @@ export async function getCompositeABI(
|
||||
"DynamicContract",
|
||||
features,
|
||||
);
|
||||
const isModular: boolean = isExtensionEnabled(abi, "ModularCore", features);
|
||||
// check if the contract has fallback function - we'll further check for diamond pattern if needed
|
||||
const isFallback: boolean = isExtensionEnabled(abi, "Fallback", features);
|
||||
|
||||
@@ -59,6 +61,24 @@ export async function getCompositeABI(
|
||||
|
||||
// get ABIs of extension contracts --
|
||||
pluginABIs = await getPluginABI(pluginAddresses, provider, storage);
|
||||
} else if (isModular) {
|
||||
const contract = new ContractWrapper(
|
||||
provider,
|
||||
address,
|
||||
coreContractAbi,
|
||||
options,
|
||||
storage,
|
||||
);
|
||||
|
||||
const extensions = await contract.call("getInstalledExtensions");
|
||||
|
||||
// get extension addresses
|
||||
const extensionAddresses = extensions.map(
|
||||
(item: any) => item.implementation,
|
||||
);
|
||||
|
||||
// get ABIs of extension contracts --
|
||||
pluginABIs = await getPluginABI(extensionAddresses, provider, storage);
|
||||
} else if (isPluginRouter) {
|
||||
const contract = new ContractWrapper(
|
||||
provider,
|
||||
|
||||
@@ -30,6 +30,27 @@ export function unique<T>(a: T[], fn: (a: T, b: T) => boolean): T[] {
|
||||
return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export function hasDuplicates<T>(arr: T[], fn: (a: T, b: T) => boolean): boolean {
|
||||
if (arr.length === 0 || arr.length === 1) {
|
||||
return false;
|
||||
}
|
||||
if (!fn) {
|
||||
throw new Error("Comparison function required");
|
||||
}
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
for (let j = i + 1; j < arr.length; j++) {
|
||||
if (fn(arr[i], arr[j])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
|
||||
@@ -63,6 +63,8 @@ import {
|
||||
FEATURE_GASLESS,
|
||||
FEATURE_PACK_VRF,
|
||||
FEATURE_PLUGIN_ROUTER,
|
||||
FEATURE_MODULAR_CORE,
|
||||
FEATURE_MODULAR_EXTENSION,
|
||||
FEATURE_DIRECT_LISTINGS,
|
||||
FEATURE_ENGLISH_AUCTIONS,
|
||||
FEATURE_OFFERS,
|
||||
@@ -139,6 +141,8 @@ export type Feature =
|
||||
| typeof FEATURE_GASLESS
|
||||
| typeof FEATURE_PACK_VRF
|
||||
| typeof FEATURE_PLUGIN_ROUTER
|
||||
| typeof FEATURE_MODULAR_CORE
|
||||
| typeof FEATURE_MODULAR_EXTENSION
|
||||
| typeof FEATURE_DYNAMIC_CONTRACT
|
||||
| typeof FEATURE_DIRECT_LISTINGS
|
||||
| typeof FEATURE_ENGLISH_AUCTIONS
|
||||
@@ -189,6 +193,8 @@ export const SUPPORTED_FEATURES: Record<string, Feature> = /* @__PURE__ */ {
|
||||
[FEATURE_PACK_VRF.name]: FEATURE_PACK_VRF,
|
||||
[FEATURE_PLUGIN_ROUTER.name]: FEATURE_PLUGIN_ROUTER,
|
||||
[FEATURE_DYNAMIC_CONTRACT.name]: FEATURE_DYNAMIC_CONTRACT,
|
||||
[FEATURE_MODULAR_CORE.name]: FEATURE_MODULAR_CORE,
|
||||
[FEATURE_MODULAR_EXTENSION.name]: FEATURE_MODULAR_EXTENSION,
|
||||
[FEATURE_DIRECT_LISTINGS.name]: FEATURE_DIRECT_LISTINGS,
|
||||
[FEATURE_ENGLISH_AUCTIONS.name]: FEATURE_ENGLISH_AUCTIONS,
|
||||
[FEATURE_OFFERS.name]: FEATURE_OFFERS,
|
||||
|
||||
@@ -116,6 +116,450 @@ export const getAllExtensionsAbi = [
|
||||
},
|
||||
];
|
||||
|
||||
export const coreContractAbi = [
|
||||
{ type: "fallback", stateMutability: "payable" },
|
||||
{
|
||||
type: "function",
|
||||
name: "cancelOwnershipHandover",
|
||||
inputs: [],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "completeOwnershipHandover",
|
||||
inputs: [
|
||||
{ name: "pendingOwner", type: "address", internalType: "address" },
|
||||
],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "getInstalledExtensions",
|
||||
inputs: [],
|
||||
outputs: [
|
||||
{
|
||||
name: "_installedExtensions",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IModularCore.InstalledExtension[]",
|
||||
components: [
|
||||
{
|
||||
name: "implementation",
|
||||
type: "address",
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "config",
|
||||
type: "tuple",
|
||||
internalType: "struct IExtensionConfig.ExtensionConfig",
|
||||
components: [
|
||||
{
|
||||
name: "registerInstallationCallback",
|
||||
type: "bool",
|
||||
internalType: "bool",
|
||||
},
|
||||
{
|
||||
name: "requiredInterfaces",
|
||||
type: "bytes4[]",
|
||||
internalType: "bytes4[]",
|
||||
},
|
||||
{
|
||||
name: "supportedInterfaces",
|
||||
type: "bytes4[]",
|
||||
internalType: "bytes4[]",
|
||||
},
|
||||
{
|
||||
name: "callbackFunctions",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IExtensionConfig.CallbackFunction[]",
|
||||
components: [
|
||||
{
|
||||
name: "selector",
|
||||
type: "bytes4",
|
||||
internalType: "bytes4",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "fallbackFunctions",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IExtensionConfig.FallbackFunction[]",
|
||||
components: [
|
||||
{
|
||||
name: "selector",
|
||||
type: "bytes4",
|
||||
internalType: "bytes4",
|
||||
},
|
||||
{
|
||||
name: "permissionBits",
|
||||
type: "uint256",
|
||||
internalType: "uint256",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "getSupportedCallbackFunctions",
|
||||
inputs: [],
|
||||
outputs: [
|
||||
{
|
||||
name: "",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IModularCore.SupportedCallbackFunction[]",
|
||||
components: [
|
||||
{ name: "selector", type: "bytes4", internalType: "bytes4" },
|
||||
{
|
||||
name: "mode",
|
||||
type: "uint8",
|
||||
internalType: "enum IModularCore.CallbackMode",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
stateMutability: "pure",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "grantRoles",
|
||||
inputs: [
|
||||
{ name: "user", type: "address", internalType: "address" },
|
||||
{ name: "roles", type: "uint256", internalType: "uint256" },
|
||||
],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "hasAllRoles",
|
||||
inputs: [
|
||||
{ name: "user", type: "address", internalType: "address" },
|
||||
{ name: "roles", type: "uint256", internalType: "uint256" },
|
||||
],
|
||||
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "hasAnyRole",
|
||||
inputs: [
|
||||
{ name: "user", type: "address", internalType: "address" },
|
||||
{ name: "roles", type: "uint256", internalType: "uint256" },
|
||||
],
|
||||
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "installExtension",
|
||||
inputs: [
|
||||
{ name: "_extension", type: "address", internalType: "address" },
|
||||
{ name: "_data", type: "bytes", internalType: "bytes" },
|
||||
],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "owner",
|
||||
inputs: [],
|
||||
outputs: [{ name: "result", type: "address", internalType: "address" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "ownershipHandoverExpiresAt",
|
||||
inputs: [
|
||||
{ name: "pendingOwner", type: "address", internalType: "address" },
|
||||
],
|
||||
outputs: [{ name: "result", type: "uint256", internalType: "uint256" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "renounceOwnership",
|
||||
inputs: [],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "renounceRoles",
|
||||
inputs: [{ name: "roles", type: "uint256", internalType: "uint256" }],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "requestOwnershipHandover",
|
||||
inputs: [],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "revokeRoles",
|
||||
inputs: [
|
||||
{ name: "user", type: "address", internalType: "address" },
|
||||
{ name: "roles", type: "uint256", internalType: "uint256" },
|
||||
],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "rolesOf",
|
||||
inputs: [{ name: "user", type: "address", internalType: "address" }],
|
||||
outputs: [{ name: "roles", type: "uint256", internalType: "uint256" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "supportsInterface",
|
||||
inputs: [{ name: "interfaceId", type: "bytes4", internalType: "bytes4" }],
|
||||
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
||||
stateMutability: "view",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "transferOwnership",
|
||||
inputs: [{ name: "newOwner", type: "address", internalType: "address" }],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "function",
|
||||
name: "uninstallExtension",
|
||||
inputs: [
|
||||
{ name: "_extension", type: "address", internalType: "address" },
|
||||
{ name: "_data", type: "bytes", internalType: "bytes" },
|
||||
],
|
||||
outputs: [],
|
||||
stateMutability: "payable",
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "ExtensionInstalled",
|
||||
inputs: [
|
||||
{
|
||||
name: "caller",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "implementation",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "installedExtension",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "ExtensionUninstalled",
|
||||
inputs: [
|
||||
{
|
||||
name: "caller",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "implementation",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "installedExtension",
|
||||
type: "address",
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "OwnershipHandoverCanceled",
|
||||
inputs: [
|
||||
{
|
||||
name: "pendingOwner",
|
||||
type: "address",
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "OwnershipHandoverRequested",
|
||||
inputs: [
|
||||
{
|
||||
name: "pendingOwner",
|
||||
type: "address",
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "OwnershipTransferred",
|
||||
inputs: [
|
||||
{
|
||||
name: "oldOwner",
|
||||
type: "address",
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "newOwner",
|
||||
type: "address",
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{
|
||||
type: "event",
|
||||
name: "RolesUpdated",
|
||||
inputs: [
|
||||
{
|
||||
name: "user",
|
||||
type: "address",
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
},
|
||||
{
|
||||
name: "roles",
|
||||
type: "uint256",
|
||||
indexed: true,
|
||||
internalType: "uint256",
|
||||
},
|
||||
],
|
||||
anonymous: false,
|
||||
},
|
||||
{ type: "error", name: "AlreadyInitialized", inputs: [] },
|
||||
{ type: "error", name: "CallbackExecutionReverted", inputs: [] },
|
||||
{
|
||||
type: "error",
|
||||
name: "CallbackFunctionAlreadyInstalled",
|
||||
inputs: [],
|
||||
},
|
||||
{ type: "error", name: "CallbackFunctionNotSupported", inputs: [] },
|
||||
{ type: "error", name: "CallbackFunctionRequired", inputs: [] },
|
||||
{
|
||||
type: "error",
|
||||
name: "CallbackFunctionUnauthorizedCall",
|
||||
inputs: [],
|
||||
},
|
||||
{ type: "error", name: "ExtensionAlreadyInstalled", inputs: [] },
|
||||
{
|
||||
type: "error",
|
||||
name: "ExtensionInterfaceNotCompatible",
|
||||
inputs: [
|
||||
{
|
||||
name: "requiredInterfaceId",
|
||||
type: "bytes4",
|
||||
internalType: "bytes4",
|
||||
},
|
||||
],
|
||||
},
|
||||
{ type: "error", name: "ExtensionNotInstalled", inputs: [] },
|
||||
{ type: "error", name: "ExtensionOutOfSync", inputs: [] },
|
||||
{
|
||||
type: "error",
|
||||
name: "FallbackFunctionAlreadyInstalled",
|
||||
inputs: [],
|
||||
},
|
||||
{ type: "error", name: "FallbackFunctionNotInstalled", inputs: [] },
|
||||
{ type: "error", name: "IndexOutOfBounds", inputs: [] },
|
||||
{ type: "error", name: "NewOwnerIsZeroAddress", inputs: [] },
|
||||
{ type: "error", name: "NoHandoverRequest", inputs: [] },
|
||||
{ type: "error", name: "Unauthorized", inputs: [] },
|
||||
];
|
||||
|
||||
export const extensionContractAbi = [
|
||||
{
|
||||
type: "function",
|
||||
name: "getExtensionConfig",
|
||||
inputs: [],
|
||||
outputs: [
|
||||
{
|
||||
name: "",
|
||||
type: "tuple",
|
||||
internalType: "struct IExtensionConfig.ExtensionConfig",
|
||||
components: [
|
||||
{
|
||||
name: "registerInstallationCallback",
|
||||
type: "bool",
|
||||
internalType: "bool",
|
||||
},
|
||||
{
|
||||
name: "requiredInterfaces",
|
||||
type: "bytes4[]",
|
||||
internalType: "bytes4[]",
|
||||
},
|
||||
{
|
||||
name: "supportedInterfaces",
|
||||
type: "bytes4[]",
|
||||
internalType: "bytes4[]",
|
||||
},
|
||||
{
|
||||
name: "callbackFunctions",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IExtensionConfig.CallbackFunction[]",
|
||||
components: [
|
||||
{
|
||||
name: "selector",
|
||||
type: "bytes4",
|
||||
internalType: "bytes4",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "fallbackFunctions",
|
||||
type: "tuple[]",
|
||||
internalType: "struct IExtensionConfig.FallbackFunction[]",
|
||||
components: [
|
||||
{
|
||||
name: "selector",
|
||||
type: "bytes4",
|
||||
internalType: "bytes4",
|
||||
},
|
||||
{
|
||||
name: "permissionBits",
|
||||
type: "uint256",
|
||||
internalType: "uint256",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
stateMutability: "pure",
|
||||
},
|
||||
];
|
||||
|
||||
export const FEATURE_ROYALTY = {
|
||||
name: "Royalty",
|
||||
namespace: "royalty",
|
||||
@@ -255,6 +699,30 @@ export const FEATURE_DYNAMIC_CONTRACT = {
|
||||
features: {},
|
||||
} as const;
|
||||
|
||||
export const FEATURE_MODULAR_CORE = {
|
||||
name: "ModularCore",
|
||||
namespace: "modular.core",
|
||||
docLinks: {
|
||||
sdk: "",
|
||||
//TODO
|
||||
contracts: "",
|
||||
},
|
||||
abis: [coreContractAbi],
|
||||
features: {},
|
||||
} as const;
|
||||
|
||||
export const FEATURE_MODULAR_EXTENSION = {
|
||||
name: "ModularExtension",
|
||||
namespace: "modular.extension",
|
||||
docLinks: {
|
||||
sdk: "",
|
||||
//TODO
|
||||
contracts: "",
|
||||
},
|
||||
abis: [extensionContractAbi],
|
||||
features: {},
|
||||
} as const;
|
||||
|
||||
export const FEATURE_DIRECT_LISTINGS = {
|
||||
name: "DirectListings",
|
||||
namespace: "direct.listings",
|
||||
|
||||
@@ -406,11 +406,18 @@ export class ContractPublisher extends RPCConnectionHandler {
|
||||
"DynamicContract",
|
||||
features,
|
||||
);
|
||||
const isModular = isFeatureEnabled(
|
||||
compilerMetadata.abi,
|
||||
"ModularCore",
|
||||
features,
|
||||
);
|
||||
extraMetadataCleaned.routerType = isPlugin
|
||||
? "plugin"
|
||||
: isDynamic
|
||||
? "dynamic"
|
||||
: "none";
|
||||
: isModular
|
||||
? "modular"
|
||||
: "none";
|
||||
|
||||
// For a dynamic contract Router, try to fetch plugin/extension metadata
|
||||
if (isDynamic || isPlugin) {
|
||||
|
||||
@@ -78,7 +78,7 @@ export class ContractRoles<TContract extends IPermissions, TRole extends Role>
|
||||
/**
|
||||
* Get all members of a specific role
|
||||
* @remarks See {@link ContractRoles.getAll} to get get a list of addresses for all supported roles on the contract.
|
||||
* @param role - The Role to to get a memberlist for.
|
||||
* @param role - The Role to get a memberlist for.
|
||||
* @returns The list of addresses that are members of the specific role.
|
||||
* @throws If you are requesting a role that does not exist on the contract this will throw an error.
|
||||
*
|
||||
|
||||
@@ -9,7 +9,7 @@ import type {
|
||||
} from "ethers";
|
||||
import { ChainInfo } from "../schema/shared/ChainInfo";
|
||||
|
||||
// --- utility types extracted from from ts-toolbelt --- //
|
||||
// --- utility types extracted from ts-toolbelt --- //
|
||||
|
||||
// if
|
||||
type TBoolean = 0 | 1;
|
||||
|
||||
@@ -102,6 +102,7 @@ export * from "./common/feature-detection/detectContractFeature";
|
||||
export * from "./common/feature-detection/hasFunction";
|
||||
export * from "./common/plugin/joinABIs";
|
||||
export * from "./common/plugin/getCompositePluginABI";
|
||||
export * from "./common/modular/compatibleExtensions";
|
||||
export * from "./common/version-checker";
|
||||
export * from "./common/fetchSourceFilesFromMetadata";
|
||||
export { isNativeToken } from "./common/currency/isNativeToken";
|
||||
|
||||
@@ -166,6 +166,14 @@ export const CustomFactoryInput = /* @__PURE__ */ (() =>
|
||||
customFactoryAddresses: ChainIdToAddressSchema,
|
||||
}))();
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export const ModularFactoryInput = /* @__PURE__ */ (() =>
|
||||
z.object({
|
||||
hooksParamName: z.string(),
|
||||
}))();
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
@@ -174,6 +182,7 @@ export const FactoryDeploymentSchema = /* @__PURE__ */ (() =>
|
||||
implementationAddresses: ChainIdToAddressSchema,
|
||||
implementationInitializerFunction: z.string().default("initialize"),
|
||||
customFactoryInput: CustomFactoryInput.optional(),
|
||||
modularFactoryInput: ModularFactoryInput.optional(),
|
||||
factoryAddresses: ChainIdToAddressSchema.optional(),
|
||||
}))();
|
||||
|
||||
@@ -191,7 +200,12 @@ export const DeployTypeInput = /* @__PURE__ */ (() =>
|
||||
* @internal
|
||||
*/
|
||||
export const RouterTypeInput = /* @__PURE__ */ (() =>
|
||||
z.union([z.literal("none"), z.literal("plugin"), z.literal("dynamic")]))();
|
||||
z.union([
|
||||
z.literal("none"),
|
||||
z.literal("plugin"),
|
||||
z.literal("dynamic"),
|
||||
z.literal("modular"),
|
||||
]))();
|
||||
|
||||
/**
|
||||
* @internal
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user