knip it in the... (#4751)
1. make `knip` a part of `packages/thirdweb`
2. clean up all the things
3. ???
4. profit
<!-- start pr-codex -->
---
## PR-Codex overview
This PR focuses on removing unused files, updating types, and deprecating constants.
### Detailed summary
- Removed unused files related to benchmarks, wallets, and UI components
- Updated type definitions in various files
- Deprecated and replaced constant `ADDRESS_ZERO` with `ZERO_ADDRESS`
> The following files were skipped due to too many changes: `packages/thirdweb/src/react/web/ui/ConnectWallet/Details.tsx`, `packages/thirdweb/src/pay/utils/definitions.ts`, `packages/thirdweb/src/utils/hashing/sha256.ts`, `packages/thirdweb/src/wallets/eip5792/show-calls-status.ts`, `packages/thirdweb/src/extensions/modules/ClaimableERC20/mint.ts`, `packages/thirdweb/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx`, `apps/portal/package.json`, `packages/thirdweb/src/extensions/modules/ClaimableERC721/mint.ts`, `packages/thirdweb/src/utils/hashing/hashMessage.ts`, `packages/thirdweb/src/react/native/ui/components/text.tsx`, `packages/thirdweb/src/utils/promise/resolve-promised-value.ts`, `packages/thirdweb/src/auth/core/verify-jwt.ts`, `packages/thirdweb/src/utils/hashing/keccak256.ts`, `packages/thirdweb/src/utils/uint8-array.ts`, `packages/thirdweb/src/react/core/design-system/CustomThemeProvider.tsx`, `packages/thirdweb/src/react/native/ui/connect/SendScreen.tsx`, `packages/thirdweb/src/react/web/ui/MediaRenderer/MediaRenderer.tsx`, `packages/thirdweb/src/gas/estimate-l1-fee.ts`, `packages/thirdweb/src/react/web/ui/ConnectWallet/WalletSelector.tsx`, `packages/thirdweb/src/extensions/modules/MintableERC721/mintWithSignature.ts`, `packages/thirdweb/src/react/native/ui/connect/ExternalWalletsList.tsx`, `packages/thirdweb/src/exports/extensions/erc1155.ts`, `packages/thirdweb/src/extensions/modules/ClaimableERC1155/mint.ts`, `packages/thirdweb/src/extensions/modules/MintableERC1155/mintWithSignature.ts`, `packages/thirdweb/src/utils/encoding/helpers/trim.ts`, `packages/thirdweb/src/wallets/utils/getTokenBalance.ts`, `apps/dashboard/knip.json`, `packages/thirdweb/src/react/native/ui/connect/TokenListScreen.tsx`, `packages/thirdweb/src/extensions/vote/write/executeProposal.ts`, `packages/thirdweb/src/react/native/ui/components/spinner.tsx`, `packages/thirdweb/src/react/web/ui/MediaRenderer/ModelViewer.tsx`, `packages/thirdweb/src/transaction/extract-error.ts`, `packages/thirdweb/src/react/native/ui/components/button.tsx`, `packages/thirdweb/src/extensions/erc1155/write/updateTokenURI.ts`, `packages/thirdweb/src/wallets/interfaces/wallet.ts`, `packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.ts`, `packages/thirdweb/src/utils/storage/walletStorage.ts`, `packages/thirdweb/src/wallets/in-app/native/native-connector.ts`, `packages/thirdweb/src/extensions/erc20/write/sigMint.ts`, `packages/thirdweb/src/extensions/erc721/write/updateTokenURI.ts`, `packages/thirdweb/src/react/web/wallets/ecosystem/EcosystemWalletFormUI.tsx`, `packages/thirdweb/src/wallets/eip5792/wait-for-bundle.ts`, `packages/thirdweb/src/utils/jwt/jwt-header.ts`, `packages/thirdweb/src/extensions/modules/MintableERC20/mintWithSignature.ts`, `packages/thirdweb/src/exports/modules.ts`, `packages/thirdweb/src/react/web/wallets/in-app/InAppWalletFormUI.tsx`, `packages/thirdweb/src/transaction/actions/wait-for-tx-receipt.ts`, `packages/thirdweb/src/auth/core/generate-jwt.ts`, `packages/thirdweb/src/react/core/hooks/transaction/useSendTransaction.ts`, `packages/thirdweb/src/exports/extensions/erc1271.ts`, `packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts`, `packages/thirdweb/src/contract/deployment/publisher.ts`, `packages/thirdweb/src/extensions/erc721/drops/write/updateMetadata.ts`, `packages/thirdweb/src/extensions/erc1155/drops/write/updateMetadata.ts`, `packages/thirdweb/src/extensions/prebuilts/deploy-marketplace.ts`, `packages/thirdweb/src/wallets/in-app/native/auth/index.ts`, `packages/thirdweb/src/wallets/in-app/native/helpers/auth/middleware.ts`, `packages/thirdweb/src/utils/platform.ts`, `.github/CODEOWNERS`, `packages/thirdweb/src/wallets/in-app/web/lib/auth/index.ts`, `packages/thirdweb/src/react/core/utils/structuralSharing.ts`, `packages/thirdweb/src/react/core/hooks/transaction/useSendAndConfirmTransaction.ts`, `packages/thirdweb/src/extensions/prebuilts/get-required-transactions.ts`, `packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.tsx`, `packages/thirdweb/src/extensions/ens/resolve-l2-name.ts`, `packages/thirdweb/src/utils/any-evm/deploy-metadata.ts`, `packages/thirdweb/src/cli/commands/generate/utils.ts`, `packages/thirdweb/src/extensions/farcaster/eip712Signatures/keyRequestSignature.ts`, `packages/thirdweb/src/extensions/airdrop/write/airdropERC20WithSignature.ts`, `packages/thirdweb/src/extensions/airdrop/write/airdropERC721WithSignature.ts`, `packages/thirdweb/src/transaction/actions/zksync/send-eip712-transaction.ts`, `packages/thirdweb/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts`, `packages/thirdweb/src/utils/any-evm/zksync/constants.ts`, `packages/thirdweb/src/extensions/marketplace/direct-listings/utils.ts`, `packages/thirdweb/src/transaction/actions/gasless/send-gasless-transaction.ts`, `packages/thirdweb/src/extensions/prebuilts/deploy-vote.ts`, `packages/thirdweb/src/react/web/ui/components/Drawer.tsx`, `packages/thirdweb/src/extensions/airdrop/write/airdropERC1155WithSignature.ts`, `packages/thirdweb/src/react/core/hooks/others/useWalletBalance.ts`, `packages/thirdweb/src/extensions/permissions/utils.ts`, `packages/thirdweb/src/wallets/in-app/native/helpers/auth/logout.ts`, `packages/thirdweb/src/wallets/smart/lib/utils.ts`, `packages/thirdweb/src/react/web/ui/components/buttons.tsx`, `packages/thirdweb/src/react/web/ui/prebuilt/thirdweb/ClaimButton/index.tsx`, `packages/thirdweb/src/wallets/wallet-connect/receiver/index.ts`, `packages/thirdweb/src/transaction/actions/gasless/providers/engine.ts`, `packages/thirdweb/src/transaction/actions/gasless/providers/openzeppelin.ts`, `packages/thirdweb/src/wallets/in-app/web/types.ts`, `packages/thirdweb/src/extensions/airdrop/write/claimERC20.ts`, `packages/thirdweb/test/globalSetup.ts`, `packages/thirdweb/src/extensions/erc721/read/getAllOwners.ts`, `packages/thirdweb/src/wallets/smart/lib/userop.ts`, `packages/thirdweb/src/wallets/in-app/native/helpers/wallet/retrieval.ts`, `packages/thirdweb/src/wallets/in-app/web/lib/iframe-wallet.ts`, `packages/thirdweb/src/react/web/ui/TransactionButton/TransactionModal.tsx`, `packages/thirdweb/src/react/native/ui/connect/ConnectedModal.tsx`, `packages/thirdweb/src/extensions/erc4337/account/common.ts`, `packages/thirdweb/test/vitest.config.ts`, `packages/thirdweb/src/exports/extensions/farcaster.ts`, `packages/thirdweb/src/exports/chains.ts`, `packages/thirdweb/src/extensions/erc4337/account/permissions.test.ts`, `packages/thirdweb/src/wallets/in-app/core/constants/settings.ts`, `packages/thirdweb/scripts/typedoc.mjs`, `packages/thirdweb/src/extensions/airdrop/write/merkleInfoERC20.ts`, `packages/thirdweb/src/utils/extensions/drops/hash-entry.ts`, `packages/thirdweb/src/extensions/farcaster/eip712Signatures/registerSignature.ts`, `packages/thirdweb/src/react/native/ui/icons/svgs.ts`, `packages/thirdweb/src/transaction/actions/gasless/providers/biconomy.ts`, `packages/thirdweb/src/extensions/farcaster/eip712Signatures/addSignature.ts`, `packages/thirdweb/src/react/web/ui/AutoConnect/AutoConnect.tsx`, `packages/thirdweb/src/react/native/ui/AutoConnect/AutoConnect.tsx`, `packages/service-utils/package.json`, `packages/thirdweb/src/stories/utils.tsx`, `packages/thirdweb/src/react/core/utils/defaultTokens.ts`, `package.json`, `packages/thirdweb/knip.json`, `packages/thirdweb/src/pay/buyWithCrypto/getStatus.ts`, `packages/thirdweb/src/exports/extensions/marketplace.ts`, `packages/thirdweb/src/utils/semver.ts`, `packages/thirdweb/src/extensions/uniswap/read/getUniswapV3Pools.ts`, `apps/dashboard/package.json`, `packages/thirdweb/src/utils/royalty-engine.ts`, `packages/react-native-adapter/package.json`, `packages/thirdweb/src/wallets/in-app/core/authentication/types.ts`, `packages/thirdweb/src/contract/deployment/deploy-deterministic.ts`, `packages/thirdweb/src/contract/deployment/utils/infra.ts`, `packages/thirdweb/src/wallets/injected/index.ts`, `packages/thirdweb/src/wallets/smart/lib/packUserOp.ts`, `packages/thirdweb/src/wallets/in-app/native/helpers/storage/local.ts`, `packages/thirdweb/src/react/web/ui/components/ChainIcon.tsx`, `packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.tsx`, `packages/thirdweb/src/wallets/in-app/native/helpers/constants.ts`, `packages/thirdweb/src/wallets/in-app/native/helpers/api/fetchers.ts`, `packages/thirdweb/package.json`, `packages/thirdweb/src/react/core/utils/walletIcon.ts`, `pnpm-lock.yaml`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
This commit is contained in:
@@ -11,7 +11,6 @@ packages/thirdweb/src/react/ @joaquim-verges @gregfromstl @MananTank @jnsdls @ed
|
|||||||
packages/thirdweb/src/reactive/ @joaquim-verges @gregfromstl @MananTank @jnsdls
|
packages/thirdweb/src/reactive/ @joaquim-verges @gregfromstl @MananTank @jnsdls
|
||||||
packages/thirdweb/src/gas/ @joaquim-verges @jnsdls
|
packages/thirdweb/src/gas/ @joaquim-verges @jnsdls
|
||||||
packages/thirdweb/src/pay/ @joaquim-verges @gregfromstl @MananTank @jnsdls @edwardysun
|
packages/thirdweb/src/pay/ @joaquim-verges @gregfromstl @MananTank @jnsdls @edwardysun
|
||||||
packages/typedoc-gen/ @MananTank @jnsdls @joaquim-verges
|
|
||||||
packages/service-utils/ @arcoraven @jnsdls @joaquim-verges
|
packages/service-utils/ @arcoraven @jnsdls @joaquim-verges
|
||||||
packages/eslint-config-thirdweb/ @jnsdls @joaquim-verges
|
packages/eslint-config-thirdweb/ @jnsdls @joaquim-verges
|
||||||
packages/tw-tsconfig/ @jnsdls @joaquim-verges
|
packages/tw-tsconfig/ @jnsdls @joaquim-verges
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
"next": true,
|
"next": true,
|
||||||
"ignore": ["src/@/components/ui/**"],
|
"ignore": ["src/@/components/ui/**"],
|
||||||
"project": ["src/**"],
|
"project": ["src/**"],
|
||||||
"ignoreBinaries": ["only-allow", "knip", "biome"],
|
"ignoreBinaries": ["only-allow", "biome"],
|
||||||
"ignoreDependencies": ["@storybook/blocks", "@thirdweb-dev/service-utils"]
|
"ignoreDependencies": ["@storybook/blocks", "@thirdweb-dev/service-utils"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,21 +111,21 @@
|
|||||||
"@next/bundle-analyzer": "14.2.12",
|
"@next/bundle-analyzer": "14.2.12",
|
||||||
"@next/eslint-plugin-next": "14.2.12",
|
"@next/eslint-plugin-next": "14.2.12",
|
||||||
"@playwright/test": "1.47.1",
|
"@playwright/test": "1.47.1",
|
||||||
"@storybook/addon-essentials": "8.3.1",
|
"@storybook/addon-essentials": "8.3.2",
|
||||||
"@storybook/addon-interactions": "8.3.1",
|
"@storybook/addon-interactions": "8.3.2",
|
||||||
"@storybook/addon-links": "8.3.1",
|
"@storybook/addon-links": "8.3.2",
|
||||||
"@storybook/addon-onboarding": "8.3.1",
|
"@storybook/addon-onboarding": "8.3.2",
|
||||||
"@storybook/addon-viewport": "8.3.1",
|
"@storybook/addon-viewport": "8.3.1",
|
||||||
"@storybook/blocks": "8.3.1",
|
"@storybook/blocks": "8.3.1",
|
||||||
"@storybook/nextjs": "8.3.1",
|
"@storybook/nextjs": "8.3.1",
|
||||||
"@storybook/react": "8.3.1",
|
"@storybook/react": "8.3.2",
|
||||||
"@storybook/test": "8.3.1",
|
"@storybook/test": "8.3.2",
|
||||||
"@types/color": "^3.0.6",
|
"@types/color": "^3.0.6",
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"@types/papaparse": "^5.3.14",
|
"@types/papaparse": "^5.3.14",
|
||||||
"@types/pluralize": "^0.0.33",
|
"@types/pluralize": "^0.0.33",
|
||||||
"@types/qrcode": "^1.5.5",
|
"@types/qrcode": "^1.5.5",
|
||||||
"@types/react": "^18.3.7",
|
"@types/react": "^18.3.8",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"@types/react-table": "^7.7.20",
|
"@types/react-table": "^7.7.20",
|
||||||
"@types/spdx-correct": "^3.1.3",
|
"@types/spdx-correct": "^3.1.3",
|
||||||
@@ -138,9 +138,10 @@
|
|||||||
"eslint-config-biome": "1.8.3",
|
"eslint-config-biome": "1.8.3",
|
||||||
"eslint-plugin-react-compiler": "0.0.0-experimental-ca16900-20240916",
|
"eslint-plugin-react-compiler": "0.0.0-experimental-ca16900-20240916",
|
||||||
"eslint-plugin-storybook": "^0.8.0",
|
"eslint-plugin-storybook": "^0.8.0",
|
||||||
|
"knip": "^5.30.4",
|
||||||
"next-sitemap": "^4.2.3",
|
"next-sitemap": "^4.2.3",
|
||||||
"postcss": "8.4.47",
|
"postcss": "8.4.47",
|
||||||
"storybook": "8.3.1",
|
"storybook": "8.3.2",
|
||||||
"tailwindcss": "3.4.12",
|
"tailwindcss": "3.4.12",
|
||||||
"typescript": "5.6.2"
|
"typescript": "5.6.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"@types/react": "^18.3.7",
|
"@types/react": "^18.3.8",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"eslint": "8.57.0",
|
"eslint": "8.57.0",
|
||||||
"eslint-config-next": "14.2.12",
|
"eslint-config-next": "14.2.12",
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
"@types/flexsearch": "^0.7.6",
|
"@types/flexsearch": "^0.7.6",
|
||||||
"@types/mdx": "^2.0.13",
|
"@types/mdx": "^2.0.13",
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"@types/react": "^18.3.7",
|
"@types/react": "^18.3.8",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"@types/react-html-parser": "^2.0.6",
|
"@types/react-html-parser": "^2.0.6",
|
||||||
"@types/tryghost__content-api": "^1.3.16",
|
"@types/tryghost__content-api": "^1.3.16",
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"@types/react": "^18.3.7",
|
"@types/react": "^18.3.8",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"eslint": "8.57.0",
|
"eslint": "8.57.0",
|
||||||
"eslint-config-next": "14.2.12",
|
"eslint-config-next": "14.2.12",
|
||||||
|
|||||||
+3
-19
@@ -41,30 +41,14 @@
|
|||||||
"hotlink-revert": "node ./scripts/hotlink/hotlink-revert.mjs"
|
"hotlink-revert": "node ./scripts/hotlink/hotlink-revert.mjs"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "1.9.1",
|
"@biomejs/biome": "1.9.2",
|
||||||
"@changesets/changelog-github": "0.5.0",
|
"@changesets/changelog-github": "0.5.0",
|
||||||
"@changesets/cli": "2.27.8",
|
"@changesets/cli": "2.27.8",
|
||||||
"@manypkg/cli": "0.21.4",
|
"@manypkg/cli": "0.21.4",
|
||||||
"@manypkg/get-packages": "2.2.2",
|
"@manypkg/get-packages": "2.2.2",
|
||||||
"@playwright/test": "1.47.1",
|
|
||||||
"@size-limit/preset-big-lib": "11.1.5",
|
|
||||||
"@types/bun": "1.1.9",
|
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"@types/react": "^18.3.7",
|
|
||||||
"@viem/anvil": "0.0.10",
|
|
||||||
"@vitest/coverage-v8": "2.1.1",
|
|
||||||
"dotenv-mono": "^1.3.14",
|
|
||||||
"knip": "^5.30.2",
|
|
||||||
"mitata": "0.1.14",
|
|
||||||
"react": "18.3.1",
|
|
||||||
"rimraf": "6.0.1",
|
|
||||||
"sharp": "^0.33.5",
|
|
||||||
"size-limit": "11.1.5",
|
|
||||||
"turbo": "2.1.2",
|
"turbo": "2.1.2",
|
||||||
"typedoc-gen": "workspace:*",
|
"typescript": "5.6.2"
|
||||||
"typescript": "5.6.2",
|
|
||||||
"vitest": "2.1.1",
|
|
||||||
"yalc": "1.0.0-pre.53"
|
|
||||||
},
|
},
|
||||||
"manypkg": {
|
"manypkg": {
|
||||||
"defaultBranch": "main"
|
"defaultBranch": "main"
|
||||||
@@ -95,5 +79,5 @@
|
|||||||
"@typescript-eslint/typescript-estree": "^7.14.1"
|
"@typescript-eslint/typescript-estree": "^7.14.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"packageManager": "[email protected]0.0"
|
"packageManager": "[email protected]1.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,22 +23,20 @@
|
|||||||
},
|
},
|
||||||
"./package.json": "./package.json"
|
"./package.json": "./package.json"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": ["dist/*", "src/*"],
|
||||||
"dist/*",
|
|
||||||
"src/*"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-lambda": "3.651.1",
|
"@aws-sdk/client-lambda": "3.656.0",
|
||||||
"@aws-sdk/credential-providers": "3.651.1",
|
"@aws-sdk/credential-providers": "3.654.0",
|
||||||
"@mobile-wallet-protocol/client": "0.0.3",
|
"@mobile-wallet-protocol/client": "0.0.3",
|
||||||
"@walletconnect/react-native-compat": "2.13.2",
|
"@walletconnect/react-native-compat": "2.13.2"
|
||||||
"aws-amplify": "5.3.19"
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"rimraf": "6.0.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@coinbase/wallet-mobile-sdk": "^1",
|
"@coinbase/wallet-mobile-sdk": "^1",
|
||||||
"@react-native-async-storage/async-storage": "^1 || ^2",
|
"@react-native-async-storage/async-storage": "^1 || ^2",
|
||||||
"@react-native-community/netinfo": "^11",
|
"@react-native-community/netinfo": "^11",
|
||||||
"amazon-cognito-identity-js": "^6",
|
|
||||||
"expo-application": "^5",
|
"expo-application": "^5",
|
||||||
"expo-linking": "^6",
|
"expo-linking": "^6",
|
||||||
"expo-web-browser": "^13",
|
"expo-web-browser": "^13",
|
||||||
@@ -62,8 +60,7 @@
|
|||||||
"build:cjs": "tsc --project ./tsconfig.build.json --module commonjs --outDir ./dist/cjs --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
"build:cjs": "tsc --project ./tsconfig.build.json --module commonjs --outDir ./dist/cjs --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
||||||
"build:esm": "tsc --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
"build:esm": "tsc --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
||||||
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist"
|
||||||
"push": "yalc push"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
|
|||||||
@@ -44,7 +44,8 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@cloudflare/workers-types": "4.20240909.0",
|
"@cloudflare/workers-types": "4.20240909.0",
|
||||||
"@types/node": "20.14.9",
|
"@types/node": "20.14.9",
|
||||||
"typescript": "5.6.2"
|
"typescript": "5.6.2",
|
||||||
|
"vitest": "2.1.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "biome format ./src --write",
|
"format": "biome format ./src --write",
|
||||||
@@ -55,7 +56,6 @@
|
|||||||
"build:cjs": "tsc --noCheck --project ./tsconfig.build.json --module commonjs --outDir ./dist/cjs --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
"build:cjs": "tsc --noCheck --project ./tsconfig.build.json --module commonjs --outDir ./dist/cjs --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
||||||
"build:esm": "tsc --noCheck --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
"build:esm": "tsc --noCheck --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
||||||
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
||||||
"push": "yalc push",
|
|
||||||
"test": "vitest run"
|
"test": "vitest run"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
# Comparitive Benchmarks
|
|
||||||
|
|
||||||
We aim to compare real-world use-cases of the thirdweb library with other popular libraries in the Ethereum ecosystem.
|
|
||||||
|
|
||||||
## Bundle size
|
|
||||||
|
|
||||||
Imported bundle size to make a basic RPC call:
|
|
||||||
|
|
||||||
- thirdweb: 4.63 KB gzipped
|
|
||||||
- `import { createThirdwebClient, getRpcClient, defineChain }`
|
|
||||||
- viem: 3.78 KB gzipped
|
|
||||||
- `import { createClient, http }`
|
|
||||||
- ethers: 88 KB gzipped
|
|
||||||
- `import { getJsonRPCProvider }`
|
|
||||||
|
|
||||||
## Benchmarks
|
|
||||||
|
|
||||||
_Latest results are from the `beta` branch on March 20th, 2024._
|
|
||||||
|
|
||||||
- [Encode TX Benchmark Results](./encode-tx.md)
|
|
||||||
- [RPC Benchmark Results](./rpc.md)
|
|
||||||
- [Read Contract Benchmark Results](./read-contract.md)
|
|
||||||
- [Send Transaction Benchmark Results](./send-transaction.md)
|
|
||||||
|
|
||||||
## Running benchmarks
|
|
||||||
|
|
||||||
You can run these benchmarks yourself by cloning the repository and running the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# install dependencies
|
|
||||||
pnpm i
|
|
||||||
# cd into the thirdweb package
|
|
||||||
cd packages/thirdweb
|
|
||||||
# run the benchmark
|
|
||||||
pnpm run bench:compare
|
|
||||||
```
|
|
||||||
|
|
||||||
Please note that you need to have the following prerequisites installed in order to run the benchmarks:
|
|
||||||
|
|
||||||
- `bun` (https://bun.sh)
|
|
||||||
- `anvil` (https://book.getfoundry.sh/getting-started/installation)
|
|
||||||
|
|
||||||
## Reporting issues / inconsistencies
|
|
||||||
|
|
||||||
Please report any issues or inconsistencies you encounter while running the benchmarks in the [issues](https://github.com/thirdweb-dev/js/issues/new).
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
## Encode TX Benchmark Results ([benchmark code](./encode-tx.ts))
|
|
||||||
|
|
||||||
The RPC benchmark measures encoding an ERC20 `transfer` call.
|
|
||||||
|
|
||||||
**CPU:** Apple M1 Pro
|
|
||||||
**Runtime:** bun 1.0.30 (arm64-darwin)
|
|
||||||
|
|
||||||
### encode transfer (warm cache)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | -------------- | -------------------- | --------- | --------- | -------- |
|
|
||||||
| thirdweb | 1'494 ns/iter | 1'337 ns … 2'585 ns | 1'526 ns | 2'065 ns | 2'585 ns |
|
|
||||||
| ethers | 32'450 ns/iter | 27'083 ns … 1'102 µs | 32'125 ns | 53'709 ns | 542 µs |
|
|
||||||
| viem | 1'170 ns/iter | 1'057 ns … 1'731 ns | 1'162 ns | 1'559 ns | 1'731 ns |
|
|
||||||
|
|
||||||
**Summary for encode transfer (warm cache):**
|
|
||||||
|
|
||||||
- **thirdweb** is 21.72x faster than ethers.
|
|
||||||
- **viem** is 1.28x faster than thirdweb and 27.75x faster than ethers.
|
|
||||||
|
|
||||||
### encode transfer (cold cache)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | -------------- | -------------------- | --------- | --------- | -------- |
|
|
||||||
| thirdweb | 1'691 ns/iter | 1'532 ns … 2'226 ns | 1'709 ns | 2'131 ns | 2'226 ns |
|
|
||||||
| ethers | 41'674 ns/iter | 34'833 ns … 1'267 µs | 41'416 ns | 63'500 ns | 882 µs |
|
|
||||||
| viem | 1'205 ns/iter | 1'073 ns … 1'803 ns | 1'214 ns | 1'661 ns | 1'803 ns |
|
|
||||||
|
|
||||||
**Summary for encode transfer (cold cache):**
|
|
||||||
|
|
||||||
- **thirdweb** is 24.64x faster than ethers.
|
|
||||||
- **viem** is 1.4x faster than thirdweb and 34.58x faster than ethers.
|
|
||||||
|
|
||||||
### Running benchmarks
|
|
||||||
|
|
||||||
To run the benchmarks, clone the repository and run the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# install dependencies
|
|
||||||
pnpm i
|
|
||||||
# cd into the thirdweb package
|
|
||||||
cd packages/thirdweb
|
|
||||||
# run the benchmark
|
|
||||||
pnpm run bench:compare
|
|
||||||
```
|
|
||||||
|
|
||||||
**Prerequisites:**
|
|
||||||
|
|
||||||
- `bun` installed (https://bun.sh)
|
|
||||||
- `anvil` installed (https://book.getfoundry.sh/getting-started/installation)
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
import { run, bench, group } from "mitata";
|
|
||||||
import { createThirdwebClient } from "../src/client/client";
|
|
||||||
import { defineChain } from "../src/chains/utils";
|
|
||||||
import { getContract } from "../src/contract/contract";
|
|
||||||
import { encode } from "../src/transaction/actions/encode";
|
|
||||||
import { transfer } from "../src/extensions/erc20/__generated__/IERC20/write/transfer";
|
|
||||||
// ethers
|
|
||||||
import { ethers } from "ethers6";
|
|
||||||
import * as viem from "viem";
|
|
||||||
|
|
||||||
const LOCAL_RPC = "http://localhost:8545";
|
|
||||||
const USDC_CONTRACT_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
|
||||||
const VITALIK_WALLET = "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B";
|
|
||||||
|
|
||||||
const client = createThirdwebClient({
|
|
||||||
clientId: "BENCH",
|
|
||||||
});
|
|
||||||
|
|
||||||
const USDC_CONTRACT = getContract({
|
|
||||||
chain: defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
}),
|
|
||||||
client,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
});
|
|
||||||
|
|
||||||
const ABI = [
|
|
||||||
{
|
|
||||||
inputs: [
|
|
||||||
{
|
|
||||||
internalType: "address",
|
|
||||||
name: "to",
|
|
||||||
type: "address",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
internalType: "uint256",
|
|
||||||
name: "value",
|
|
||||||
type: "uint256",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
name: "transfer",
|
|
||||||
outputs: [
|
|
||||||
{
|
|
||||||
internalType: "uint256",
|
|
||||||
name: "",
|
|
||||||
type: "uint256",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
stateMutability: "view",
|
|
||||||
type: "function",
|
|
||||||
},
|
|
||||||
] as const;
|
|
||||||
|
|
||||||
const ethers6Contract = new ethers.Contract(
|
|
||||||
USDC_CONTRACT_ADDRESS,
|
|
||||||
ABI,
|
|
||||||
ethers.getDefaultProvider(LOCAL_RPC),
|
|
||||||
);
|
|
||||||
|
|
||||||
const transfer_viem = viem.prepareEncodeFunctionData({
|
|
||||||
abi: ABI,
|
|
||||||
functionName: "transfer",
|
|
||||||
});
|
|
||||||
|
|
||||||
function randomBigint() {
|
|
||||||
return BigInt(Math.floor(Math.random() * 1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
group("encode transfer (warm cache)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
const tx = transfer({
|
|
||||||
contract: USDC_CONTRACT,
|
|
||||||
to: VITALIK_WALLET,
|
|
||||||
value: randomBigint(),
|
|
||||||
});
|
|
||||||
|
|
||||||
await encode(tx);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
ethers6Contract.interface.encodeFunctionData("transfer", [
|
|
||||||
VITALIK_WALLET,
|
|
||||||
randomBigint(),
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
viem.encodeFunctionData({
|
|
||||||
...transfer_viem,
|
|
||||||
args: [VITALIK_WALLET, randomBigint()],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
group("encode transfer (cold cache)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
// define chain
|
|
||||||
const chain = defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
});
|
|
||||||
// get contract
|
|
||||||
const contract = getContract({
|
|
||||||
chain,
|
|
||||||
client,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
});
|
|
||||||
|
|
||||||
const tx = transfer({
|
|
||||||
contract: contract,
|
|
||||||
to: VITALIK_WALLET,
|
|
||||||
value: randomBigint(),
|
|
||||||
});
|
|
||||||
await encode(tx);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
new ethers.Contract(
|
|
||||||
USDC_CONTRACT_ADDRESS,
|
|
||||||
ABI,
|
|
||||||
ethers.getDefaultProvider(LOCAL_RPC),
|
|
||||||
).interface.encodeFunctionData("transfer", [
|
|
||||||
VITALIK_WALLET,
|
|
||||||
randomBigint(),
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
viem.encodeFunctionData({
|
|
||||||
...transfer_viem,
|
|
||||||
args: [VITALIK_WALLET, randomBigint()],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await run();
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
## Read Contract Benchmark Results ([benchmark code](./read-contract.ts))
|
|
||||||
|
|
||||||
The read contract benchmark measures reading the `balanceOf` method of an ERC20 contract (USDC).
|
|
||||||
|
|
||||||
**CPU:** Apple M1 Pro
|
|
||||||
**Runtime:** bun 1.0.30 (arm64-darwin)
|
|
||||||
|
|
||||||
### read contract (warm cache)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | ------------- | ------------------- | -------- | -------- | -------- |
|
|
||||||
| thirdweb | 203 µs/iter | 149 µs … 1'436 µs | 199 µs | 711 µs | 1'370 µs |
|
|
||||||
| viem | 208 µs/iter | 163 µs … 1'341 µs | 206 µs | 742 µs | 1'283 µs |
|
|
||||||
| ethers | 2'118 µs/iter | 1'577 µs … 4'454 µs | 2'058 µs | 4'338 µs | 4'454 µs |
|
|
||||||
|
|
||||||
**Summary for read contract (warm cache):**
|
|
||||||
|
|
||||||
- **thirdweb** is 1.02x faster than viem and 10.43x faster than ethers.
|
|
||||||
|
|
||||||
### read contract (cold cache)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | ------------- | ------------------- | -------- | -------- | -------- |
|
|
||||||
| thirdweb | 191 µs/iter | 149 µs … 1'195 µs | 189 µs | 747 µs | 1'130 µs |
|
|
||||||
| viem | 211 µs/iter | 162 µs … 1'290 µs | 209 µs | 825 µs | 1'038 µs |
|
|
||||||
| ethers | 1'764 µs/iter | 1'441 µs … 3'829 µs | 1'731 µs | 3'420 µs | 3'829 µs |
|
|
||||||
|
|
||||||
**Summary for read contract (cold cache):**
|
|
||||||
|
|
||||||
- **thirdweb** is 1.1x faster than viem and 9.22x faster than ethers.
|
|
||||||
|
|
||||||
### Running benchmarks
|
|
||||||
|
|
||||||
To run the benchmarks, clone the repository and run the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# install dependencies
|
|
||||||
pnpm i
|
|
||||||
# cd into the thirdweb package
|
|
||||||
cd packages/thirdweb
|
|
||||||
# run the benchmark
|
|
||||||
pnpm run bench:compare
|
|
||||||
```
|
|
||||||
|
|
||||||
**Prerequisites:**
|
|
||||||
|
|
||||||
- `bun` installed (https://bun.sh)
|
|
||||||
- `anvil` installed (https://book.getfoundry.sh/getting-started/installation)
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
import { run, bench, group } from "mitata";
|
|
||||||
|
|
||||||
import { createThirdwebClient } from "../src/client/client";
|
|
||||||
import { getContract } from "../src/contract/contract";
|
|
||||||
import { defineChain } from "../src/chains/utils";
|
|
||||||
import { balanceOf } from "../src/extensions/erc20/__generated__/IERC20/read/balanceOf";
|
|
||||||
|
|
||||||
import { ethers } from "ethers6";
|
|
||||||
import * as viem from "viem";
|
|
||||||
import assert from "node:assert";
|
|
||||||
|
|
||||||
const LOCAL_RPC = "http://127.0.0.1:8545";
|
|
||||||
const USDC_CONTRACT_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
|
||||||
const VITALIK_WALLET = "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B";
|
|
||||||
|
|
||||||
const client = createThirdwebClient({
|
|
||||||
clientId: "BENCH",
|
|
||||||
config: { rpc: { maxBatchSize: 1 } },
|
|
||||||
});
|
|
||||||
|
|
||||||
const USDC_CONTRACT = getContract({
|
|
||||||
chain: defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
}),
|
|
||||||
client,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
});
|
|
||||||
|
|
||||||
const ABI = [
|
|
||||||
{
|
|
||||||
inputs: [
|
|
||||||
{
|
|
||||||
internalType: "address",
|
|
||||||
name: "account",
|
|
||||||
type: "address",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
name: "balanceOf",
|
|
||||||
outputs: [
|
|
||||||
{
|
|
||||||
internalType: "uint256",
|
|
||||||
name: "",
|
|
||||||
type: "uint256",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
stateMutability: "view",
|
|
||||||
type: "function",
|
|
||||||
},
|
|
||||||
] as const;
|
|
||||||
|
|
||||||
const staticEthersProvider = new ethers.JsonRpcProvider(LOCAL_RPC, 1, {
|
|
||||||
staticNetwork: true,
|
|
||||||
batchMaxCount: 1,
|
|
||||||
cacheTimeout: 0,
|
|
||||||
});
|
|
||||||
|
|
||||||
const ethersContract = new ethers.Contract(
|
|
||||||
USDC_CONTRACT_ADDRESS,
|
|
||||||
ABI,
|
|
||||||
staticEthersProvider,
|
|
||||||
);
|
|
||||||
|
|
||||||
const viemClient = viem.createPublicClient({ transport: viem.http(LOCAL_RPC) });
|
|
||||||
|
|
||||||
const viemContract = viem.getContract({
|
|
||||||
abi: ABI,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
client: viemClient,
|
|
||||||
});
|
|
||||||
|
|
||||||
group("read contract (warm cache)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
const bOf = await balanceOf({
|
|
||||||
contract: USDC_CONTRACT,
|
|
||||||
address: VITALIK_WALLET,
|
|
||||||
});
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
const bOf = await viemContract.read.balanceOf([VITALIK_WALLET]);
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
const bOf = await ethersContract.balanceOf(VITALIK_WALLET);
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
group("read contract (cold cache)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
// define chain
|
|
||||||
const chain = defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
});
|
|
||||||
// get contract
|
|
||||||
const contract = getContract({
|
|
||||||
chain,
|
|
||||||
client,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
});
|
|
||||||
// actually read from the contract
|
|
||||||
const bOf = await balanceOf({
|
|
||||||
contract: contract,
|
|
||||||
address: VITALIK_WALLET,
|
|
||||||
});
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
const bOf = await viem
|
|
||||||
.getContract({
|
|
||||||
abi: ABI,
|
|
||||||
address: USDC_CONTRACT_ADDRESS,
|
|
||||||
client: viem.createPublicClient({ transport: viem.http(LOCAL_RPC) }),
|
|
||||||
})
|
|
||||||
.read.balanceOf([VITALIK_WALLET]);
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
const bOf = await new ethers.Contract(
|
|
||||||
USDC_CONTRACT_ADDRESS,
|
|
||||||
ABI,
|
|
||||||
new ethers.JsonRpcProvider(LOCAL_RPC, 1, {
|
|
||||||
staticNetwork: true,
|
|
||||||
batchMaxCount: 1,
|
|
||||||
cacheTimeout: 0,
|
|
||||||
}),
|
|
||||||
).balanceOf(VITALIK_WALLET);
|
|
||||||
assert(bOf === 81831338n, "balanceOf should be 81831338");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await run();
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
## RPC Benchmark Results ([benchmark code](./rpc.ts))
|
|
||||||
|
|
||||||
The RPC benchmark measures un-cached calls to a local anvil node using the `eth_getBlockNumber` method.
|
|
||||||
|
|
||||||
**CPU:** Apple M1 Pro
|
|
||||||
**Runtime:** bun 1.0.30 (arm64-darwin)
|
|
||||||
|
|
||||||
### rpc (batching disabled)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | -------------- | -------------------- | --------- | -------- | -------- |
|
|
||||||
| thirdweb | 72'167 ns/iter | 47'625 ns … 1'197 µs | 76'292 ns | 146 µs | 850 µs |
|
|
||||||
| viem | 80'414 ns/iter | 52'541 ns … 937 µs | 85'333 ns | 169 µs | 705 µs |
|
|
||||||
| ethers | 1'655 µs/iter | 1'254 µs … 6'840 µs | 1'616 µs | 4'851 µs | 6'840 µs |
|
|
||||||
|
|
||||||
**Summary for rpc (batching disabled):**
|
|
||||||
|
|
||||||
- **thirdweb** is 1.11x faster than viem and 22.93x faster than ethers.
|
|
||||||
|
|
||||||
### rpc (batching enabled)
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | ------------- | ------------------- | -------- | -------- | -------- |
|
|
||||||
| thirdweb | 1'579 µs/iter | 1'214 µs … 5'993 µs | 1'471 µs | 5'058 µs | 5'993 µs |
|
|
||||||
| viem | 1'641 µs/iter | 1'259 µs … 6'309 µs | 1'503 µs | 5'852 µs | 6'309 µs |
|
|
||||||
| ethers | 1'864 µs/iter | 1'255 µs … 6'225 µs | 1'746 µs | 5'923 µs | 6'225 µs |
|
|
||||||
|
|
||||||
**Summary for rpc (batching enabled):**
|
|
||||||
|
|
||||||
- **thirdweb** is 1.04x faster than viem and 1.18x faster than ethers.
|
|
||||||
|
|
||||||
### Running benchmarks
|
|
||||||
|
|
||||||
To run the benchmarks, clone the repository and run the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# install dependencies
|
|
||||||
pnpm i
|
|
||||||
# cd into the thirdweb package
|
|
||||||
cd packages/thirdweb
|
|
||||||
# run the benchmark
|
|
||||||
pnpm run bench:compare
|
|
||||||
```
|
|
||||||
|
|
||||||
**Prerequisites:**
|
|
||||||
|
|
||||||
- `bun` installed (https://bun.sh)
|
|
||||||
- `anvil` installed (https://book.getfoundry.sh/getting-started/installation)
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
import { run, bench, group } from "mitata";
|
|
||||||
|
|
||||||
import { getRpcClient } from "../src/rpc/rpc.js";
|
|
||||||
import { createThirdwebClient } from "../src/client/client.js";
|
|
||||||
import { eth_blockNumber } from "../src/rpc/actions/eth_blockNumber.js";
|
|
||||||
import { defineChain } from "../src/chains/utils.js";
|
|
||||||
|
|
||||||
import * as viem from "viem";
|
|
||||||
import * as ethers from "ethers6";
|
|
||||||
import assert from "node:assert";
|
|
||||||
|
|
||||||
const LOCAL_RPC = "http://127.0.0.1:8545";
|
|
||||||
|
|
||||||
const clientNoBatching = createThirdwebClient({
|
|
||||||
clientId: "BENCH",
|
|
||||||
config: { rpc: { maxBatchSize: 1 } },
|
|
||||||
});
|
|
||||||
|
|
||||||
const clientWithBatching = createThirdwebClient({ clientId: "BENCH" });
|
|
||||||
|
|
||||||
const rpcRequestNoBatching = getRpcClient({
|
|
||||||
client: clientNoBatching,
|
|
||||||
chain: defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const rpcRequestBatching = getRpcClient({
|
|
||||||
client: clientWithBatching,
|
|
||||||
chain: defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
// // viem setup
|
|
||||||
|
|
||||||
const publicClientNoBatching = viem.createPublicClient({
|
|
||||||
transport: viem.http(LOCAL_RPC),
|
|
||||||
});
|
|
||||||
|
|
||||||
const publicClientBatching = viem.createPublicClient({
|
|
||||||
transport: viem.http(LOCAL_RPC, {
|
|
||||||
batch: { batchSize: 100, wait: 0 },
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
// ethers setup
|
|
||||||
const ethersProviderNoBatching = new ethers.JsonRpcProvider(LOCAL_RPC, 1, {
|
|
||||||
staticNetwork: true,
|
|
||||||
batchMaxCount: 1,
|
|
||||||
cacheTimeout: 0,
|
|
||||||
});
|
|
||||||
|
|
||||||
const ethersProviderBatching = new ethers.JsonRpcProvider(LOCAL_RPC, 1, {
|
|
||||||
staticNetwork: true,
|
|
||||||
batchMaxCount: 100,
|
|
||||||
batchStallTime: 0,
|
|
||||||
cacheTimeout: 0,
|
|
||||||
});
|
|
||||||
|
|
||||||
group("rpc (batching disabled)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
const bn = await eth_blockNumber(rpcRequestNoBatching);
|
|
||||||
assert(bn === 19139495n, "unexpected block number");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
// disabling the cache to be more representative
|
|
||||||
const bn = await publicClientNoBatching.getBlockNumber({ cacheTime: 0 });
|
|
||||||
assert(bn === 19139495n, "unexpected block number");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
const bn = await ethersProviderNoBatching.getBlockNumber();
|
|
||||||
assert(bn === 19139495, "unexpected block number");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
group("rpc (batching enabled)", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
const bn = await eth_blockNumber(rpcRequestBatching);
|
|
||||||
assert(bn === 19139495n, "unexpected block number");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
// disabling the cache to be more representative
|
|
||||||
const bn = await publicClientBatching.getBlockNumber({ cacheTime: 0 });
|
|
||||||
assert(bn === 19139495n, "unexpected block number");
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
const bn = await ethersProviderBatching.getBlockNumber();
|
|
||||||
assert(bn === 19139495, "unexpected block number");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await run();
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import { createAnvil } from "@viem/anvil";
|
|
||||||
import { $ } from "bun";
|
|
||||||
|
|
||||||
import { readdir } from "node:fs/promises";
|
|
||||||
import { join } from "node:path";
|
|
||||||
|
|
||||||
const forkHeader = {};
|
|
||||||
if (process.env.TW_SECRET_KEY) {
|
|
||||||
forkHeader["x-secret-key"] = process.env.TW_SECRET_KEY;
|
|
||||||
}
|
|
||||||
|
|
||||||
const anvil = createAnvil({
|
|
||||||
port: 8545,
|
|
||||||
chainId: 1,
|
|
||||||
forkUrl: "https://1.rpc.thirdweb.com",
|
|
||||||
forkHeader,
|
|
||||||
forkChainId: 1,
|
|
||||||
forkBlockNumber: 19139495n,
|
|
||||||
noMining: true,
|
|
||||||
startTimeout: 20000,
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log("Starting Anvil...");
|
|
||||||
await anvil.start();
|
|
||||||
|
|
||||||
// find all the benchmark files in this directory
|
|
||||||
const files = await readdir(__dirname);
|
|
||||||
const benchmarks = files.filter(
|
|
||||||
(file) => file.endsWith(".ts") && file !== "run.ts",
|
|
||||||
);
|
|
||||||
|
|
||||||
// run each benchmark
|
|
||||||
for (const benchmark of benchmarks) {
|
|
||||||
console.log(`\n-------------------${"-".repeat(benchmark.length)}
|
|
||||||
Running benchmark: ${benchmark}
|
|
||||||
-------------------${"-".repeat(benchmark.length)}\n`);
|
|
||||||
await $`bun run ${join(__dirname, benchmark)}`;
|
|
||||||
console.log("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("Stopping Anvil...");
|
|
||||||
await anvil.stop();
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
## Send Transaction Benchmark Results ([benchmark code](./send-transaction.ts))
|
|
||||||
|
|
||||||
The send transaction benchmark measures sending native tokens (ETH) to another address.
|
|
||||||
|
|
||||||
**CPU:** Apple M1 Pro
|
|
||||||
**Runtime:** bun 1.0.30 (arm64-darwin)
|
|
||||||
|
|
||||||
### transfer native tokens
|
|
||||||
|
|
||||||
| Library | Time (avg) | Min … Max | P75 | P99 | P999 |
|
|
||||||
| -------- | -------------- | --------------------- | --------- | --------- | --------- |
|
|
||||||
| thirdweb | 3'244 µs/iter | 1'879 µs … 5'580 µs | 3'958 µs | 5'543 µs | 5'580 µs |
|
|
||||||
| viem | 7'468 µs/iter | 6'224 µs … 10'241 µs | 8'077 µs | 10'241 µs | 10'241 µs |
|
|
||||||
| ethers | 18'376 µs/iter | 17'534 µs … 20'136 µs | 19'084 µs | 20'136 µs | 20'136 µs |
|
|
||||||
|
|
||||||
**Summary for Transfer Native Tokens:**
|
|
||||||
|
|
||||||
- **thirdweb** is 2.3x faster than viem and 5.67x faster than ethers.
|
|
||||||
|
|
||||||
### Running benchmarks
|
|
||||||
|
|
||||||
To run the benchmarks, clone the repository and run the following commands:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# install dependencies
|
|
||||||
pnpm i
|
|
||||||
# cd into the thirdweb package
|
|
||||||
cd packages/thirdweb
|
|
||||||
# run the benchmark
|
|
||||||
pnpm run bench:compare
|
|
||||||
```
|
|
||||||
|
|
||||||
**Prerequisites:**
|
|
||||||
|
|
||||||
- `bun` installed (https://bun.sh)
|
|
||||||
- `anvil` installed (https://book.getfoundry.sh/getting-started/installation)
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
import { bench, group, run } from "mitata";
|
|
||||||
|
|
||||||
import { defineChain } from "../src/chains/utils";
|
|
||||||
import { createThirdwebClient } from "../src/client/client";
|
|
||||||
import { sendTransaction } from "../src/transaction/actions/send-transaction";
|
|
||||||
import { prepareTransaction } from "../src/transaction/prepare-transaction";
|
|
||||||
import { privateKeyToAccount } from "../src/wallets/private-key";
|
|
||||||
|
|
||||||
import * as ethers from "ethers6";
|
|
||||||
import * as viem from "viem";
|
|
||||||
import { privateKeyToAccount as viemPrivateKeyToAccount } from "viem/accounts";
|
|
||||||
import { mainnet } from "viem/chains";
|
|
||||||
|
|
||||||
const LOCAL_RPC = "http://127.0.0.1:8545";
|
|
||||||
const VITALIK_WALLET = "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B";
|
|
||||||
|
|
||||||
const client = createThirdwebClient({
|
|
||||||
clientId: "BENCH",
|
|
||||||
config: { rpc: { maxBatchSize: 1 } },
|
|
||||||
});
|
|
||||||
|
|
||||||
const TEST_CHAIN = defineChain({
|
|
||||||
id: 1,
|
|
||||||
rpc: LOCAL_RPC,
|
|
||||||
});
|
|
||||||
|
|
||||||
const PKEY =
|
|
||||||
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
|
|
||||||
|
|
||||||
const account = privateKeyToAccount({
|
|
||||||
privateKey: PKEY,
|
|
||||||
client,
|
|
||||||
});
|
|
||||||
|
|
||||||
// viem setup
|
|
||||||
const privateKeyAccountViem = viemPrivateKeyToAccount(PKEY);
|
|
||||||
const walletClient = viem.createWalletClient({
|
|
||||||
account: privateKeyAccountViem,
|
|
||||||
transport: viem.http(LOCAL_RPC),
|
|
||||||
});
|
|
||||||
|
|
||||||
// ethers setup
|
|
||||||
const provider = new ethers.JsonRpcProvider(LOCAL_RPC, 1, {
|
|
||||||
staticNetwork: true,
|
|
||||||
batchMaxCount: 1,
|
|
||||||
cacheTimeout: 0,
|
|
||||||
});
|
|
||||||
const wallet = new ethers.Wallet(PKEY, provider);
|
|
||||||
|
|
||||||
function randomBigint() {
|
|
||||||
return BigInt(Math.floor(Math.random() * 1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
group("transfer native tokens", () => {
|
|
||||||
bench("thirdweb", async () => {
|
|
||||||
const transaction = prepareTransaction({
|
|
||||||
client,
|
|
||||||
chain: TEST_CHAIN,
|
|
||||||
value: randomBigint(),
|
|
||||||
to: VITALIK_WALLET,
|
|
||||||
});
|
|
||||||
|
|
||||||
await sendTransaction({ transaction, account });
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("viem", async () => {
|
|
||||||
await walletClient.sendTransaction({
|
|
||||||
chain: mainnet,
|
|
||||||
value: randomBigint(),
|
|
||||||
to: VITALIK_WALLET,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("ethers", async () => {
|
|
||||||
await wallet.sendTransaction({
|
|
||||||
to: VITALIK_WALLET,
|
|
||||||
value: randomBigint(),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
await run();
|
|
||||||
+18
-10
@@ -1,12 +1,20 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://unpkg.com/knip@5/schema.json",
|
"$schema": "https://unpkg.com/knip@5/schema.json",
|
||||||
"entry": ["src/exports/**/*.ts", "package.json"],
|
"entry": ["src/exports/**", "scripts/**/*.{ts,mjs}", "src/cli/bin.ts", ""],
|
||||||
"project": ["src/**/*.{ts,tsx}", "scripts/**/*.mjs"],
|
"project": ["src/**/*.{ts,tsx}", "scripts/**/*.mjs"],
|
||||||
"ignoreBinaries": ["printf", "yalc"],
|
"ignore": ["src/**/__generated__/**"],
|
||||||
"ignoreDependencies": ["ethers", "react", "tslib"],
|
"ignoreBinaries": ["printf"],
|
||||||
"vitest": {
|
"ignoreDependencies": [
|
||||||
"config": "test/vitest.config.ts",
|
"@codspeed/vitest-plugin",
|
||||||
"entry": ["src/**/*.{test,bench}.ts", "test/globalSetup.ts"],
|
"@testing-library/jest-dom",
|
||||||
"project": ["src/**/*.{ts,tsx}", "test/**/*.ts"]
|
"tslib",
|
||||||
}
|
"dotenv-mono",
|
||||||
|
"@size-limit/preset-big-lib",
|
||||||
|
"@viem/anvil",
|
||||||
|
"@vitest/coverage-v8"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"optionalPeerDependencies": "off",
|
||||||
|
"enumMembers": "off"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,60 +127,24 @@
|
|||||||
},
|
},
|
||||||
"typesVersions": {
|
"typesVersions": {
|
||||||
"*": {
|
"*": {
|
||||||
"adapters/*": [
|
"adapters/*": ["./dist/types/exports/adapters/*.d.ts"],
|
||||||
"./dist/types/exports/adapters/*.d.ts"
|
"auth": ["./dist/types/exports/auth.d.ts"],
|
||||||
],
|
"chains": ["./dist/types/exports/chains.d.ts"],
|
||||||
"auth": [
|
"contract": ["./dist/types/exports/contract.d.ts"],
|
||||||
"./dist/types/exports/auth.d.ts"
|
"deploys": ["./dist/types/exports/deploys.d.ts"],
|
||||||
],
|
"event": ["./dist/types/exports/event.d.ts"],
|
||||||
"chains": [
|
"extensions/*": ["./dist/types/exports/extensions/*.d.ts"],
|
||||||
"./dist/types/exports/chains.d.ts"
|
"pay": ["./dist/types/exports/pay.d.ts"],
|
||||||
],
|
"react": ["./dist/types/exports/react.d.ts"],
|
||||||
"contract": [
|
"react-native": ["./dist/types/exports/react-native.d.ts"],
|
||||||
"./dist/types/exports/contract.d.ts"
|
"rpc": ["./dist/types/exports/rpc.d.ts"],
|
||||||
],
|
"storage": ["./dist/types/exports/storage.d.ts"],
|
||||||
"deploys": [
|
"transaction": ["./dist/types/exports/transaction.d.ts"],
|
||||||
"./dist/types/exports/deploys.d.ts"
|
"utils": ["./dist/types/exports/utils.d.ts"],
|
||||||
],
|
"wallets": ["./dist/types/exports/wallets.d.ts"],
|
||||||
"event": [
|
"wallets/*": ["./dist/types/exports/wallets/*.d.ts"],
|
||||||
"./dist/types/exports/event.d.ts"
|
"modules": ["./dist/types/exports/modules.d.ts"],
|
||||||
],
|
"social": ["./dist/types/exports/social.d.ts"]
|
||||||
"extensions/*": [
|
|
||||||
"./dist/types/exports/extensions/*.d.ts"
|
|
||||||
],
|
|
||||||
"pay": [
|
|
||||||
"./dist/types/exports/pay.d.ts"
|
|
||||||
],
|
|
||||||
"react": [
|
|
||||||
"./dist/types/exports/react.d.ts"
|
|
||||||
],
|
|
||||||
"react-native": [
|
|
||||||
"./dist/types/exports/react-native.d.ts"
|
|
||||||
],
|
|
||||||
"rpc": [
|
|
||||||
"./dist/types/exports/rpc.d.ts"
|
|
||||||
],
|
|
||||||
"storage": [
|
|
||||||
"./dist/types/exports/storage.d.ts"
|
|
||||||
],
|
|
||||||
"transaction": [
|
|
||||||
"./dist/types/exports/transaction.d.ts"
|
|
||||||
],
|
|
||||||
"utils": [
|
|
||||||
"./dist/types/exports/utils.d.ts"
|
|
||||||
],
|
|
||||||
"wallets": [
|
|
||||||
"./dist/types/exports/wallets.d.ts"
|
|
||||||
],
|
|
||||||
"wallets/*": [
|
|
||||||
"./dist/types/exports/wallets/*.d.ts"
|
|
||||||
],
|
|
||||||
"modules": [
|
|
||||||
"./dist/types/exports/modules.d.ts"
|
|
||||||
],
|
|
||||||
"social": [
|
|
||||||
"./dist/types/exports/social.d.ts"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
@@ -214,13 +178,11 @@
|
|||||||
"@walletconnect/ethereum-provider": "2.16.2",
|
"@walletconnect/ethereum-provider": "2.16.2",
|
||||||
"@walletconnect/sign-client": "2.16.2",
|
"@walletconnect/sign-client": "2.16.2",
|
||||||
"abitype": "1.0.5",
|
"abitype": "1.0.5",
|
||||||
"fast-text-encoding": "^1.0.6",
|
|
||||||
"fuse.js": "7.0.0",
|
"fuse.js": "7.0.0",
|
||||||
"input-otp": "^1.2.4",
|
"input-otp": "^1.2.4",
|
||||||
"mipd": "0.0.7",
|
"mipd": "0.0.7",
|
||||||
"node-libs-browser": "2.2.1",
|
|
||||||
"uqr": "0.1.2",
|
"uqr": "0.1.2",
|
||||||
"viem": "2.21.9"
|
"viem": "2.21.11"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@aws-sdk/client-lambda": "^3",
|
"@aws-sdk/client-lambda": "^3",
|
||||||
@@ -228,8 +190,6 @@
|
|||||||
"@coinbase/wallet-mobile-sdk": "^1",
|
"@coinbase/wallet-mobile-sdk": "^1",
|
||||||
"@mobile-wallet-protocol/client": "0.0.3",
|
"@mobile-wallet-protocol/client": "0.0.3",
|
||||||
"@react-native-async-storage/async-storage": "^1 || ^2",
|
"@react-native-async-storage/async-storage": "^1 || ^2",
|
||||||
"amazon-cognito-identity-js": "^6",
|
|
||||||
"aws-amplify": "^5",
|
|
||||||
"ethers": "^5 || ^6",
|
"ethers": "^5 || ^6",
|
||||||
"expo-linking": "^6",
|
"expo-linking": "^6",
|
||||||
"expo-web-browser": "^13",
|
"expo-web-browser": "^13",
|
||||||
@@ -271,18 +231,12 @@
|
|||||||
"react-native-svg": {
|
"react-native-svg": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"aws-amplify": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@aws-sdk/client-lambda": {
|
"@aws-sdk/client-lambda": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@aws-sdk/credential-providers": {
|
"@aws-sdk/credential-providers": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"amazon-cognito-identity-js": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@react-native-async-storage/async-storage": {
|
"@react-native-async-storage/async-storage": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
@@ -297,7 +251,7 @@
|
|||||||
"bench:compare": "bun run ./benchmarks/run.ts",
|
"bench:compare": "bun run ./benchmarks/run.ts",
|
||||||
"bench": "vitest -c ./test/vitest.config.ts bench",
|
"bench": "vitest -c ./test/vitest.config.ts bench",
|
||||||
"format": "biome format ./src --write",
|
"format": "biome format ./src --write",
|
||||||
"lint": "biome check ./src",
|
"lint": "knip && biome check ./src && tsc --project ./tsconfig.build.json --module esnext --noEmit",
|
||||||
"fix": "biome check ./src --fix",
|
"fix": "biome check ./src --fix",
|
||||||
"knip": "knip",
|
"knip": "knip",
|
||||||
"build:generate": "bun scripts/generate/generate.ts",
|
"build:generate": "bun scripts/generate/generate.ts",
|
||||||
@@ -310,7 +264,6 @@
|
|||||||
"build:esm": "tsc --noCheck --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
"build:esm": "tsc --noCheck --project ./tsconfig.build.json --module es2020 --outDir ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
||||||
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
"build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
||||||
"clean": "rimraf dist",
|
"clean": "rimraf dist",
|
||||||
"push": "yalc push",
|
|
||||||
"size": "size-limit",
|
"size": "size-limit",
|
||||||
"test:watch": "vitest -c ./test/vitest.config.ts dev",
|
"test:watch": "vitest -c ./test/vitest.config.ts dev",
|
||||||
"test": "vitest run -c ./test/vitest.config.ts --coverage",
|
"test": "vitest run -c ./test/vitest.config.ts --coverage",
|
||||||
@@ -326,44 +279,53 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@aws-sdk/client-lambda": "3.651.1",
|
"@aws-sdk/client-lambda": "3.656.0",
|
||||||
"@aws-sdk/credential-providers": "3.651.1",
|
"@aws-sdk/credential-providers": "3.654.0",
|
||||||
|
"@biomejs/biome": "1.9.2",
|
||||||
"@chromatic-com/storybook": "2.0.2",
|
"@chromatic-com/storybook": "2.0.2",
|
||||||
"@codspeed/vitest-plugin": "3.1.1",
|
"@codspeed/vitest-plugin": "3.1.1",
|
||||||
"@coinbase/wallet-mobile-sdk": "1.1.2",
|
"@coinbase/wallet-mobile-sdk": "1.1.2",
|
||||||
"@mobile-wallet-protocol/client": "0.0.3",
|
"@mobile-wallet-protocol/client": "0.0.3",
|
||||||
"@react-native-async-storage/async-storage": "1.24.0",
|
"@react-native-async-storage/async-storage": "1.24.0",
|
||||||
"@storybook/addon-essentials": "8.3.1",
|
"@size-limit/preset-big-lib": "11.1.5",
|
||||||
"@storybook/addon-interactions": "8.3.1",
|
"@storybook/addon-essentials": "8.3.2",
|
||||||
"@storybook/addon-links": "8.3.1",
|
"@storybook/addon-interactions": "8.3.2",
|
||||||
"@storybook/addon-onboarding": "8.3.1",
|
"@storybook/addon-links": "8.3.2",
|
||||||
"@storybook/blocks": "8.3.1",
|
"@storybook/addon-onboarding": "8.3.2",
|
||||||
"@storybook/react": "8.3.1",
|
"@storybook/react": "8.3.2",
|
||||||
"@storybook/react-vite": "8.3.1",
|
"@storybook/react-vite": "8.3.2",
|
||||||
"@storybook/test": "8.3.1",
|
"@storybook/test": "8.3.2",
|
||||||
"@testing-library/jest-dom": "^6.4.7",
|
"@testing-library/jest-dom": "^6.4.7",
|
||||||
"@testing-library/react": "^16.0.0",
|
"@testing-library/react": "^16.0.0",
|
||||||
"@testing-library/user-event": "^14.5.2",
|
"@testing-library/user-event": "^14.5.2",
|
||||||
"@types/cross-spawn": "^6.0.6",
|
"@types/cross-spawn": "^6.0.6",
|
||||||
"@types/react": "^18.3.7",
|
"@types/react": "^18.3.8",
|
||||||
|
"@viem/anvil": "0.0.10",
|
||||||
"@vitejs/plugin-react": "^4.3.1",
|
"@vitejs/plugin-react": "^4.3.1",
|
||||||
|
"@vitest/coverage-v8": "2.1.1",
|
||||||
"@vitest/ui": "2.1.1",
|
"@vitest/ui": "2.1.1",
|
||||||
"amazon-cognito-identity-js": "6.3.12",
|
|
||||||
"aws-amplify": "5.3.19",
|
|
||||||
"cross-spawn": "7.0.3",
|
"cross-spawn": "7.0.3",
|
||||||
"ethers5": "npm:[email protected]",
|
"dotenv-mono": "^1.3.14",
|
||||||
"ethers6": "npm:ethers@6.13.2",
|
"ethers5": "npm:ethers@5",
|
||||||
|
"ethers6": "npm:ethers@6",
|
||||||
"expo-linking": "6.3.1",
|
"expo-linking": "6.3.1",
|
||||||
"expo-web-browser": "13.0.3",
|
"expo-web-browser": "13.0.3",
|
||||||
"happy-dom": "^15.7.4",
|
"happy-dom": "^15.7.4",
|
||||||
"msw": "2.4.8",
|
"knip": "^5.30.4",
|
||||||
|
"prettier": "^3.3.2",
|
||||||
|
"react": "18.3.1",
|
||||||
"react-native": "0.75.3",
|
"react-native": "0.75.3",
|
||||||
"react-native-aes-gcm-crypto": "0.2.2",
|
"react-native-aes-gcm-crypto": "0.2.2",
|
||||||
"react-native-passkey": "3.0.0-beta2",
|
"react-native-passkey": "3.0.0-beta2",
|
||||||
"react-native-quick-crypto": "0.7.4",
|
"react-native-quick-crypto": "0.7.4",
|
||||||
"react-native-svg": "15.7.1",
|
"react-native-svg": "15.7.1",
|
||||||
"storybook": "8.3.1",
|
"rimraf": "6.0.1",
|
||||||
|
"sharp": "^0.33.5",
|
||||||
|
"size-limit": "11.1.5",
|
||||||
|
"storybook": "8.3.2",
|
||||||
|
"typedoc": "0.26.7",
|
||||||
"typescript": "5.6.2",
|
"typescript": "5.6.2",
|
||||||
"vite": "5.4.6"
|
"vite": "5.4.7",
|
||||||
|
"vitest": "2.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,27 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
import { typedoc } from "typedoc-gen";
|
import TypeDoc from "typedoc";
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Generate a documentation JSON file for a project
|
||||||
|
* @param {{ entryPoints: string[]; exclude: string[]; }} options
|
||||||
|
*/
|
||||||
|
async function typedoc(options) {
|
||||||
|
const jsonOut = "typedoc/documentation.json";
|
||||||
|
|
||||||
|
const app = await TypeDoc.Application.bootstrapWithPlugins({
|
||||||
|
entryPoints: options.entryPoints,
|
||||||
|
excludeInternal: true,
|
||||||
|
exclude: options.exclude,
|
||||||
|
});
|
||||||
|
|
||||||
|
const project = await app.convert();
|
||||||
|
if (!project) {
|
||||||
|
throw new Error("Failed to create project");
|
||||||
|
}
|
||||||
|
|
||||||
|
await app.generateJson(project, jsonOut);
|
||||||
|
}
|
||||||
|
|
||||||
typedoc({
|
typedoc({
|
||||||
entryPoints: ["src/exports/**/*.ts", "src/extensions/modules/**/index.ts"],
|
entryPoints: ["src/exports/**/*.ts", "src/extensions/modules/**/index.ts"],
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
import type { AbiFunction } from "abitype";
|
|
||||||
import { type Hex, decodeAbiParameters } from "viem";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decodes the result of a function call based on the provided ABI function definition.
|
|
||||||
* @param abiFn - The ABI function definition.
|
|
||||||
* @param data - The encoded data to be decoded.
|
|
||||||
* @returns The decoded result.
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
export function decodeFunctionResult<const abiFn extends AbiFunction>(
|
|
||||||
abiFn: abiFn,
|
|
||||||
data: Hex,
|
|
||||||
) {
|
|
||||||
return decodeAbiParameters<abiFn["outputs"]>(abiFn.outputs, data);
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import type {
|
|
||||||
AbiFunction,
|
|
||||||
AbiParameter,
|
|
||||||
AbiParametersToPrimitiveTypes,
|
|
||||||
} from "abitype";
|
|
||||||
import { toFunctionSelector } from "viem";
|
|
||||||
import { encodeAbiParameters } from "../utils/abi/encodeAbiParameters.js";
|
|
||||||
import { concatHex } from "../utils/encoding/helpers/concat-hex.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Encodes an ABI function with its arguments into a hexadecimal string.
|
|
||||||
*
|
|
||||||
* @param abiFn - The ABI function object.
|
|
||||||
* @param args - The arguments to be encoded.
|
|
||||||
* @returns The encoded ABI function as a hexadecimal string.
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
export function encodeAbiFunction<
|
|
||||||
const TAbiFunction extends AbiFunction,
|
|
||||||
const TParams = AbiParametersToPrimitiveTypes<TAbiFunction["inputs"]>,
|
|
||||||
>(
|
|
||||||
abiFn: TAbiFunction,
|
|
||||||
args: TParams extends readonly AbiParameter[] ? TParams : never,
|
|
||||||
) {
|
|
||||||
const signature = toFunctionSelector(abiFn);
|
|
||||||
// if there are no inputs, we can return the signature as is
|
|
||||||
if (abiFn.inputs.length === 0) {
|
|
||||||
return signature;
|
|
||||||
}
|
|
||||||
const data = encodeAbiParameters(abiFn.inputs, args ?? []);
|
|
||||||
return concatHex([signature, data ?? "0x"]);
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,7 @@ import { encodeJWT } from "../../utils/jwt/encode-jwt.js";
|
|||||||
import type { AuthOptions } from "./types.js";
|
import type { AuthOptions } from "./types.js";
|
||||||
import type { VerifiedLoginPayload } from "./verify-login-payload.js";
|
import type { VerifiedLoginPayload } from "./verify-login-payload.js";
|
||||||
|
|
||||||
export const DEFAULT_TOKEN_DURATION_SECONDS = 60 * 60 * 24;
|
const DEFAULT_TOKEN_DURATION_SECONDS = 60 * 60 * 24;
|
||||||
|
|
||||||
type GenerateJWTParams<Tctx = unknown> = {
|
type GenerateJWTParams<Tctx = unknown> = {
|
||||||
payload: VerifiedLoginPayload;
|
payload: VerifiedLoginPayload;
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ import type { AuthOptions } from "./types.js";
|
|||||||
/**
|
/**
|
||||||
* @auth
|
* @auth
|
||||||
*/
|
*/
|
||||||
export type VerifyJWTParams = {
|
type VerifyJWTParams = {
|
||||||
jwt: string;
|
jwt: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @auth
|
* @auth
|
||||||
*/
|
*/
|
||||||
export type VerifyJWTResult =
|
type VerifyJWTResult =
|
||||||
| {
|
| {
|
||||||
valid: true;
|
valid: true;
|
||||||
parsedJWT: JWTPayload;
|
parsedJWT: JWTPayload;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { URL } from "node:url";
|
|||||||
const toPath = (urlOrPath: string | URL) =>
|
const toPath = (urlOrPath: string | URL) =>
|
||||||
urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
|
urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
|
||||||
|
|
||||||
export type Options = {
|
type Options = {
|
||||||
/**
|
/**
|
||||||
* The directory to start from.
|
* The directory to start from.
|
||||||
* @default process.cwd()
|
* @default process.cwd()
|
||||||
@@ -55,7 +55,7 @@ async function findUp(
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PackageDirectoryOptions = {
|
type PackageDirectoryOptions = {
|
||||||
/**
|
/**
|
||||||
* The directory to start searching from.
|
* The directory to start searching from.
|
||||||
* @default process.cwd()
|
* @default process.cwd()
|
||||||
|
|||||||
@@ -15,8 +15,3 @@ export function isNativeTokenAddress(address: string) {
|
|||||||
* The zero address in Ethereum, represented as a hexadecimal string.
|
* The zero address in Ethereum, represented as a hexadecimal string.
|
||||||
*/
|
*/
|
||||||
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link ZERO_ADDRESS}.
|
|
||||||
*/
|
|
||||||
export const ADDRESS_ZERO = ZERO_ADDRESS;
|
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
import type { Abi } from "abitype";
|
|
||||||
import { prepareTransaction } from "../../transaction/prepare-transaction.js";
|
import { prepareTransaction } from "../../transaction/prepare-transaction.js";
|
||||||
import {
|
import { computeDeploymentInfoFromContractId } from "../../utils/any-evm/compute-published-contract-deploy-info.js";
|
||||||
computeDeploymentInfoFromBytecode,
|
|
||||||
computeDeploymentInfoFromContractId,
|
|
||||||
} from "../../utils/any-evm/compute-published-contract-deploy-info.js";
|
|
||||||
import type { Hex } from "../../utils/encoding/hex.js";
|
|
||||||
import type { Prettify } from "../../utils/type-utils.js";
|
import type { Prettify } from "../../utils/type-utils.js";
|
||||||
import type { ClientAndChain } from "../../utils/types.js";
|
import type { ClientAndChain } from "../../utils/types.js";
|
||||||
import { computeCreate2FactoryAddress } from "./utils/create-2-factory.js";
|
import { computeCreate2FactoryAddress } from "./utils/create-2-factory.js";
|
||||||
@@ -12,7 +7,7 @@ import { computeCreate2FactoryAddress } from "./utils/create-2-factory.js";
|
|||||||
/**
|
/**
|
||||||
* @extension DEPLOY
|
* @extension DEPLOY
|
||||||
*/
|
*/
|
||||||
export type DeployDetemisiticParams = Prettify<
|
type DeployDetemisiticParams = Prettify<
|
||||||
ClientAndChain & {
|
ClientAndChain & {
|
||||||
contractId: string;
|
contractId: string;
|
||||||
constructorParams?: Record<string, unknown>;
|
constructorParams?: Record<string, unknown>;
|
||||||
@@ -61,31 +56,3 @@ export function prepareDeterministicDeployTransaction(
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
export function prepareDeterministicDeployTransactionFromBytecode(
|
|
||||||
options: ClientAndChain & {
|
|
||||||
abi: Abi;
|
|
||||||
bytecode: Hex;
|
|
||||||
constructorParams?: Record<string, unknown>;
|
|
||||||
salt?: string;
|
|
||||||
},
|
|
||||||
) {
|
|
||||||
const { client, chain } = options;
|
|
||||||
return prepareTransaction({
|
|
||||||
client,
|
|
||||||
chain,
|
|
||||||
to: () =>
|
|
||||||
computeCreate2FactoryAddress({
|
|
||||||
client,
|
|
||||||
chain,
|
|
||||||
}),
|
|
||||||
data: async () => {
|
|
||||||
const infraContractInfo =
|
|
||||||
await computeDeploymentInfoFromBytecode(options);
|
|
||||||
return infraContractInfo.initBytecodeWithsalt;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { type ThirdwebContract, getContract } from "../contract.js";
|
|||||||
|
|
||||||
export const CONTRACT_PUBLISHER_ADDRESS =
|
export const CONTRACT_PUBLISHER_ADDRESS =
|
||||||
"0xf5b896Ddb5146D5dA77efF4efBb3Eae36E300808"; // Polygon only
|
"0xf5b896Ddb5146D5dA77efF4efBb3Eae36E300808"; // Polygon only
|
||||||
export const THIRDWEB_DEPLOYER = "0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024";
|
const THIRDWEB_DEPLOYER = "0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
|
|||||||
@@ -2,10 +2,7 @@ import type { Chain } from "../../../chains/types.js";
|
|||||||
import type { ThirdwebClient } from "../../../client/client.js";
|
import type { ThirdwebClient } from "../../../client/client.js";
|
||||||
import { prepareTransaction } from "../../../transaction/prepare-transaction.js";
|
import { prepareTransaction } from "../../../transaction/prepare-transaction.js";
|
||||||
import { computeContractAddress } from "../../../utils/any-evm/compute-published-contract-address.js";
|
import { computeContractAddress } from "../../../utils/any-evm/compute-published-contract-address.js";
|
||||||
import {
|
import { computeDeploymentInfoFromMetadata } from "../../../utils/any-evm/compute-published-contract-deploy-info.js";
|
||||||
computeDeploymentInfoFromContractId,
|
|
||||||
computeDeploymentInfoFromMetadata,
|
|
||||||
} from "../../../utils/any-evm/compute-published-contract-deploy-info.js";
|
|
||||||
import type { FetchDeployMetadataResult } from "../../../utils/any-evm/deploy-metadata.js";
|
import type { FetchDeployMetadataResult } from "../../../utils/any-evm/deploy-metadata.js";
|
||||||
import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
|
import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
|
||||||
import type { Prettify } from "../../../utils/type-utils.js";
|
import type { Prettify } from "../../../utils/type-utils.js";
|
||||||
@@ -21,7 +18,7 @@ export type InfraContractId =
|
|||||||
| "TWCloneFactory"
|
| "TWCloneFactory"
|
||||||
| (string & {});
|
| (string & {});
|
||||||
|
|
||||||
export type GetDeployedInfraParams = Prettify<
|
type GetDeployedInfraParams = Prettify<
|
||||||
ClientAndChain & {
|
ClientAndChain & {
|
||||||
contractId: InfraContractId;
|
contractId: InfraContractId;
|
||||||
constructorParams?: Record<string, unknown>;
|
constructorParams?: Record<string, unknown>;
|
||||||
@@ -71,29 +68,6 @@ export async function getDeployedInfraContractFromMetadata(options: {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
export function prepareInfraContractDeployTransaction(
|
|
||||||
options: GetDeployedInfraParams,
|
|
||||||
) {
|
|
||||||
const { client, chain } = options;
|
|
||||||
return prepareTransaction({
|
|
||||||
client,
|
|
||||||
chain,
|
|
||||||
to: () =>
|
|
||||||
computeCreate2FactoryAddress({
|
|
||||||
client,
|
|
||||||
chain,
|
|
||||||
}),
|
|
||||||
data: async () => {
|
|
||||||
const infraContractInfo =
|
|
||||||
await computeDeploymentInfoFromContractId(options);
|
|
||||||
return infraContractInfo.initBytecodeWithsalt;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -72,3 +72,8 @@ export { frameTestnet } from "../chains/chain-definitions/frame-testnet.js";
|
|||||||
export { hokumTestnet } from "../chains/chain-definitions/hokum-testnet.js";
|
export { hokumTestnet } from "../chains/chain-definitions/hokum-testnet.js";
|
||||||
export { godWokenTestnetV1 } from "../chains/chain-definitions/god-woken-testnet-v1.js";
|
export { godWokenTestnetV1 } from "../chains/chain-definitions/god-woken-testnet-v1.js";
|
||||||
export { abstractTestnet } from "../chains/chain-definitions/abstract-testnet.js";
|
export { abstractTestnet } from "../chains/chain-definitions/abstract-testnet.js";
|
||||||
|
export { assetChainTestnet } from "../chains/chain-definitions/assetchain-testnet.js";
|
||||||
|
export { celoAlfajoresTestnet } from "../chains/chain-definitions/celo-alfajores-testnet.js";
|
||||||
|
export { fraxtalTestnet } from "../chains/chain-definitions/fraxtal-testnet.js";
|
||||||
|
export { metalL2Testnet } from "../chains/chain-definitions/metal-l2-testnet.js";
|
||||||
|
export { modeTestnet } from "../chains/chain-definitions/mode-testnet.js";
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export {
|
|||||||
export {
|
export {
|
||||||
deployMarketplaceContract,
|
deployMarketplaceContract,
|
||||||
type MarketplaceContractParams,
|
type MarketplaceContractParams,
|
||||||
|
type DeployMarketplaceContractOptions,
|
||||||
} from "../extensions/prebuilts/deploy-marketplace.js";
|
} from "../extensions/prebuilts/deploy-marketplace.js";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ export { freezeMetadata } from "../../extensions/erc1155/__generated__/INFTMetad
|
|||||||
export {
|
export {
|
||||||
getActiveClaimCondition,
|
getActiveClaimCondition,
|
||||||
isGetActiveClaimConditionSupported,
|
isGetActiveClaimConditionSupported,
|
||||||
|
type GetActiveClaimConditionParams,
|
||||||
} from "../../extensions/erc1155/drops/read/getActiveClaimCondition.js";
|
} from "../../extensions/erc1155/drops/read/getActiveClaimCondition.js";
|
||||||
export {
|
export {
|
||||||
getClaimConditionById,
|
getClaimConditionById,
|
||||||
|
|||||||
@@ -2,3 +2,8 @@ export {
|
|||||||
type CheckContractWalletSignatureOptions,
|
type CheckContractWalletSignatureOptions,
|
||||||
checkContractWalletSignature,
|
checkContractWalletSignature,
|
||||||
} from "../../extensions/erc1271/checkContractWalletSignature.js";
|
} from "../../extensions/erc1271/checkContractWalletSignature.js";
|
||||||
|
|
||||||
|
export {
|
||||||
|
type CheckContractWalletSignTypedDataOptions,
|
||||||
|
checkContractWalletSignedTypedData,
|
||||||
|
} from "../../extensions/erc1271/checkContractWalletSignedTypedData.js";
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export {
|
|||||||
export {
|
export {
|
||||||
type RemoveAdminOptions,
|
type RemoveAdminOptions,
|
||||||
removeAdmin,
|
removeAdmin,
|
||||||
|
isRemoveAdminSupported,
|
||||||
} from "../../extensions/erc4337/account/removeAdmin.js";
|
} from "../../extensions/erc4337/account/removeAdmin.js";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
@@ -18,11 +18,14 @@ export { getStorageRegistry } from "../../extensions/farcaster/contracts/getStor
|
|||||||
// EIP712 Signatures
|
// EIP712 Signatures
|
||||||
export {
|
export {
|
||||||
type RegisterMessage,
|
type RegisterMessage,
|
||||||
|
type SignRegisterOptions,
|
||||||
signRegister,
|
signRegister,
|
||||||
getRegisterData,
|
getRegisterData,
|
||||||
} from "../../extensions/farcaster/eip712Signatures/registerSignature.js";
|
} from "../../extensions/farcaster/eip712Signatures/registerSignature.js";
|
||||||
export {
|
export {
|
||||||
type SignedKeyRequestMessage,
|
type SignedKeyRequestMessage,
|
||||||
|
type SignedKeyRequestMetadataOptions,
|
||||||
|
type SignKeyRequestOptions,
|
||||||
signKeyRequest,
|
signKeyRequest,
|
||||||
getKeyRequestData,
|
getKeyRequestData,
|
||||||
encodeSignedKeyRequestMetadata,
|
encodeSignedKeyRequestMetadata,
|
||||||
@@ -30,6 +33,7 @@ export {
|
|||||||
} from "../../extensions/farcaster/eip712Signatures/keyRequestSignature.js";
|
} from "../../extensions/farcaster/eip712Signatures/keyRequestSignature.js";
|
||||||
export {
|
export {
|
||||||
type AddMessage,
|
type AddMessage,
|
||||||
|
type SignAddOptions,
|
||||||
signAdd,
|
signAdd,
|
||||||
getAddData,
|
getAddData,
|
||||||
} from "../../extensions/farcaster/eip712Signatures/addSignature.js";
|
} from "../../extensions/farcaster/eip712Signatures/addSignature.js";
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ export {
|
|||||||
type CurrencyPriceForListingParams,
|
type CurrencyPriceForListingParams,
|
||||||
} from "../../extensions/marketplace/direct-listings/read/currencyPriceForListing.js";
|
} from "../../extensions/marketplace/direct-listings/read/currencyPriceForListing.js";
|
||||||
|
|
||||||
export { isCancelListingSupported } from "../../extensions/marketplace/__generated__/IDirectListings/write/cancelListing.js";
|
|
||||||
|
|
||||||
// WRITE
|
// WRITE
|
||||||
export {
|
export {
|
||||||
createListing,
|
createListing,
|
||||||
@@ -46,6 +44,7 @@ export {
|
|||||||
} from "../../extensions/marketplace/direct-listings/write/updateListing.js";
|
} from "../../extensions/marketplace/direct-listings/write/updateListing.js";
|
||||||
export {
|
export {
|
||||||
cancelListing,
|
cancelListing,
|
||||||
|
isCancelListingSupported,
|
||||||
type CancelListingParams,
|
type CancelListingParams,
|
||||||
} from "../../extensions/marketplace/__generated__/IDirectListings/write/cancelListing.js";
|
} from "../../extensions/marketplace/__generated__/IDirectListings/write/cancelListing.js";
|
||||||
export {
|
export {
|
||||||
@@ -131,10 +130,10 @@ export {
|
|||||||
isBidInAuctionSupported,
|
isBidInAuctionSupported,
|
||||||
} from "../../extensions/marketplace/english-auctions/write/bidInAuction.js";
|
} from "../../extensions/marketplace/english-auctions/write/bidInAuction.js";
|
||||||
export {
|
export {
|
||||||
cancelAuction,
|
|
||||||
type CancelAuctionParams,
|
type CancelAuctionParams,
|
||||||
|
cancelAuction,
|
||||||
isCancelAuctionSupported,
|
isCancelAuctionSupported,
|
||||||
} from "../../extensions/marketplace/__generated__/IEnglishAuctions/write/cancelAuction.js";
|
} from "../../extensions/marketplace/english-auctions/write/cancelAuction.js";
|
||||||
export {
|
export {
|
||||||
buyoutAuction,
|
buyoutAuction,
|
||||||
type BuyoutAuctionParams,
|
type BuyoutAuctionParams,
|
||||||
|
|||||||
@@ -86,7 +86,10 @@ export {
|
|||||||
} from "../extensions/prebuilts/deploy-modular.js";
|
} from "../extensions/prebuilts/deploy-modular.js";
|
||||||
|
|
||||||
// Common
|
// Common
|
||||||
export { grantMinterRole } from "../extensions/modules/common/grantMinterRole.js";
|
export {
|
||||||
|
grantMinterRole,
|
||||||
|
type GrantMinterRoleParams,
|
||||||
|
} from "../extensions/modules/common/grantMinterRole.js";
|
||||||
export {
|
export {
|
||||||
getDeployedModule,
|
getDeployedModule,
|
||||||
getOrDeployModule,
|
getOrDeployModule,
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ declare module "abitype" {
|
|||||||
* CONSTANTS
|
* CONSTANTS
|
||||||
*/
|
*/
|
||||||
export {
|
export {
|
||||||
ADDRESS_ZERO,
|
/**
|
||||||
|
* @deprecated Use {@link ZERO_ADDRESS}.
|
||||||
|
*/
|
||||||
|
ZERO_ADDRESS as ADDRESS_ZERO,
|
||||||
ZERO_ADDRESS,
|
ZERO_ADDRESS,
|
||||||
NATIVE_TOKEN_ADDRESS,
|
NATIVE_TOKEN_ADDRESS,
|
||||||
} from "../constants/addresses.js";
|
} from "../constants/addresses.js";
|
||||||
|
|||||||
@@ -133,13 +133,13 @@ type GenerateReqInput = {
|
|||||||
contents: ContentType;
|
contents: ContentType;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AirdropContentERC1155 = [
|
const AirdropContentERC1155 = [
|
||||||
{ name: "recipient", type: "address" },
|
{ name: "recipient", type: "address" },
|
||||||
{ name: "tokenId", type: "uint256" },
|
{ name: "tokenId", type: "uint256" },
|
||||||
{ name: "amount", type: "uint256" },
|
{ name: "amount", type: "uint256" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const AirdropRequestERC1155 = [
|
const AirdropRequestERC1155 = [
|
||||||
{ name: "uid", type: "bytes32" },
|
{ name: "uid", type: "bytes32" },
|
||||||
{ name: "tokenAddress", type: "address" },
|
{ name: "tokenAddress", type: "address" },
|
||||||
{ name: "expirationTimestamp", type: "uint256" },
|
{ name: "expirationTimestamp", type: "uint256" },
|
||||||
|
|||||||
@@ -132,12 +132,12 @@ type GenerateReqInput = {
|
|||||||
contents: ContentType;
|
contents: ContentType;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AirdropContentERC20 = [
|
const AirdropContentERC20 = [
|
||||||
{ name: "recipient", type: "address" },
|
{ name: "recipient", type: "address" },
|
||||||
{ name: "amount", type: "uint256" },
|
{ name: "amount", type: "uint256" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const AirdropRequestERC20 = [
|
const AirdropRequestERC20 = [
|
||||||
{ name: "uid", type: "bytes32" },
|
{ name: "uid", type: "bytes32" },
|
||||||
{ name: "tokenAddress", type: "address" },
|
{ name: "tokenAddress", type: "address" },
|
||||||
{ name: "expirationTimestamp", type: "uint256" },
|
{ name: "expirationTimestamp", type: "uint256" },
|
||||||
|
|||||||
@@ -131,12 +131,12 @@ type GenerateReqInput = {
|
|||||||
contents: ContentType;
|
contents: ContentType;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AirdropContentERC721 = [
|
const AirdropContentERC721 = [
|
||||||
{ name: "recipient", type: "address" },
|
{ name: "recipient", type: "address" },
|
||||||
{ name: "tokenId", type: "uint256" },
|
{ name: "tokenId", type: "uint256" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const AirdropRequestERC721 = [
|
const AirdropRequestERC721 = [
|
||||||
{ name: "uid", type: "bytes32" },
|
{ name: "uid", type: "bytes32" },
|
||||||
{ name: "tokenAddress", type: "address" },
|
{ name: "tokenAddress", type: "address" },
|
||||||
{ name: "expirationTimestamp", type: "uint256" },
|
{ name: "expirationTimestamp", type: "uint256" },
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
ADDRESS_ZERO,
|
ZERO_ADDRESS,
|
||||||
isNativeTokenAddress,
|
isNativeTokenAddress,
|
||||||
} from "../../../constants/addresses.js";
|
} from "../../../constants/addresses.js";
|
||||||
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
||||||
@@ -52,7 +52,7 @@ export function claimERC20(options: BaseTransactionOptions<ClaimERC20Params>) {
|
|||||||
const tokenDecimals = await (async () => {
|
const tokenDecimals = await (async () => {
|
||||||
if (
|
if (
|
||||||
isNativeTokenAddress(tokenAddress) ||
|
isNativeTokenAddress(tokenAddress) ||
|
||||||
tokenAddress === ADDRESS_ZERO
|
tokenAddress === ZERO_ADDRESS
|
||||||
) {
|
) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Token address can't be zero address or native token",
|
"Token address can't be zero address or native token",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
ADDRESS_ZERO,
|
ZERO_ADDRESS,
|
||||||
isNativeTokenAddress,
|
isNativeTokenAddress,
|
||||||
} from "../../../constants/addresses.js";
|
} from "../../../constants/addresses.js";
|
||||||
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
||||||
@@ -52,7 +52,7 @@ export async function generateMerkleTreeInfoERC20(
|
|||||||
// get token decimals
|
// get token decimals
|
||||||
const tokenAddress = options.tokenAddress;
|
const tokenAddress = options.tokenAddress;
|
||||||
const tokenDecimals = await (async () => {
|
const tokenDecimals = await (async () => {
|
||||||
if (isNativeTokenAddress(tokenAddress) || tokenAddress === ADDRESS_ZERO) {
|
if (isNativeTokenAddress(tokenAddress) || tokenAddress === ZERO_ADDRESS) {
|
||||||
throw new Error("Token address can't be zero address or native token");
|
throw new Error("Token address can't be zero address or native token");
|
||||||
}
|
}
|
||||||
const [{ getContract }, { decimals: getDecimals }] = await Promise.all([
|
const [{ getContract }, { decimals: getDecimals }] = await Promise.all([
|
||||||
|
|||||||
@@ -21,10 +21,7 @@ export type ResolveL2NameOptions = {
|
|||||||
*
|
*
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export const convertReverseNodeToBytes = (
|
const convertReverseNodeToBytes = (address: Address, chainId: number) => {
|
||||||
address: Address,
|
|
||||||
chainId: number,
|
|
||||||
) => {
|
|
||||||
const addressFormatted = address.toLocaleLowerCase() as Address;
|
const addressFormatted = address.toLocaleLowerCase() as Address;
|
||||||
const addressNode = keccak256(addressFormatted.substring(2) as Hex);
|
const addressNode = keccak256(addressFormatted.substring(2) as Hex);
|
||||||
const cointype = (0x80000000 | chainId) >>> 0;
|
const cointype = (0x80000000 | chainId) >>> 0;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export type UpdateMetadataParams = {
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export async function getUpdateMetadataParams(
|
async function getUpdateMetadataParams(
|
||||||
options: BaseTransactionOptions<UpdateMetadataParams>,
|
options: BaseTransactionOptions<UpdateMetadataParams>,
|
||||||
): Promise<BatchBaseURI.UpdateBatchBaseURIParams> {
|
): Promise<BatchBaseURI.UpdateBatchBaseURIParams> {
|
||||||
const { contract, targetTokenId, newMetadata } = options;
|
const { contract, targetTokenId, newMetadata } = options;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ export function updateTokenURI(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getUpdateTokenParams(
|
async function getUpdateTokenParams(
|
||||||
options: BaseTransactionOptions<UpdateTokenURIParams>,
|
options: BaseTransactionOptions<UpdateTokenURIParams>,
|
||||||
): Promise<SetTokenURIParams> {
|
): Promise<SetTokenURIParams> {
|
||||||
const { tokenId, newMetadata } = options;
|
const { tokenId, newMetadata } = options;
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ type GeneratePayloadInput = {
|
|||||||
uid?: string;
|
uid?: string;
|
||||||
} & ({ quantity: string } | { quantityWei: bigint });
|
} & ({ quantity: string } | { quantityWei: bigint });
|
||||||
|
|
||||||
export const MintRequest20 = [
|
const MintRequest20 = [
|
||||||
{ name: "to", type: "address" },
|
{ name: "to", type: "address" },
|
||||||
{ name: "primarySaleRecipient", type: "address" },
|
{ name: "primarySaleRecipient", type: "address" },
|
||||||
{ name: "quantity", type: "uint256" },
|
{ name: "quantity", type: "uint256" },
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ADDRESS_ZERO } from "../../../constants/addresses.js";
|
import { ZERO_ADDRESS } from "../../../constants/addresses.js";
|
||||||
import type { ThirdwebContract } from "../../../contract/contract.js";
|
import type { ThirdwebContract } from "../../../contract/contract.js";
|
||||||
import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
|
import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
|
||||||
import { randomBytesHex } from "../../../utils/random.js";
|
import { randomBytesHex } from "../../../utils/random.js";
|
||||||
@@ -41,7 +41,7 @@ export async function toContractPermissions(options: {
|
|||||||
return {
|
return {
|
||||||
approvedTargets:
|
approvedTargets:
|
||||||
permissions.approvedTargets === "*"
|
permissions.approvedTargets === "*"
|
||||||
? [ADDRESS_ZERO]
|
? [ZERO_ADDRESS]
|
||||||
: permissions.approvedTargets,
|
: permissions.approvedTargets,
|
||||||
nativeTokenLimitPerTransaction: toWei(
|
nativeTokenLimitPerTransaction: toWei(
|
||||||
permissions.nativeTokenLimitPerTransaction?.toString() || "0",
|
permissions.nativeTokenLimitPerTransaction?.toString() || "0",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
TEST_ACCOUNT_A,
|
TEST_ACCOUNT_A,
|
||||||
TEST_ACCOUNT_B,
|
TEST_ACCOUNT_B,
|
||||||
} from "../../../../test/src/test-wallets.js";
|
} from "../../../../test/src/test-wallets.js";
|
||||||
import { ADDRESS_ZERO } from "../../../constants/addresses.js";
|
import { ZERO_ADDRESS } from "../../../constants/addresses.js";
|
||||||
import {
|
import {
|
||||||
type ThirdwebContract,
|
type ThirdwebContract,
|
||||||
getContract,
|
getContract,
|
||||||
@@ -127,7 +127,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("Account Permissions", () => {
|
|||||||
expect(logs[0]?.args.authorizingSigner).toBe(TEST_ACCOUNT_B.address);
|
expect(logs[0]?.args.authorizingSigner).toBe(TEST_ACCOUNT_B.address);
|
||||||
expect(logs[0]?.args.targetSigner).toBe(TEST_ACCOUNT_A.address);
|
expect(logs[0]?.args.targetSigner).toBe(TEST_ACCOUNT_A.address);
|
||||||
expect(logs[0]?.args.permissions.approvedTargets).toStrictEqual([
|
expect(logs[0]?.args.permissions.approvedTargets).toStrictEqual([
|
||||||
ADDRESS_ZERO,
|
ZERO_ADDRESS,
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export type UpdateMetadataParams = {
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export async function getUpdateMetadataParams(
|
async function getUpdateMetadataParams(
|
||||||
options: BaseTransactionOptions<UpdateMetadataParams>,
|
options: BaseTransactionOptions<UpdateMetadataParams>,
|
||||||
): Promise<BatchBaseURI.UpdateBatchBaseURIParams> {
|
): Promise<BatchBaseURI.UpdateBatchBaseURIParams> {
|
||||||
const { contract, targetTokenId, newMetadata } = options;
|
const { contract, targetTokenId, newMetadata } = options;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ADDRESS_ZERO } from "../../../constants/addresses.js";
|
import { ZERO_ADDRESS } from "../../../constants/addresses.js";
|
||||||
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
||||||
import { min } from "../../../utils/bigint.js";
|
import { min } from "../../../utils/bigint.js";
|
||||||
import { ownerOf } from "../__generated__/IERC721A/read/ownerOf.js";
|
import { ownerOf } from "../__generated__/IERC721A/read/ownerOf.js";
|
||||||
@@ -78,7 +78,7 @@ export async function getAllOwners(
|
|||||||
for (let i = start; i < maxId; i++) {
|
for (let i = start; i < maxId; i++) {
|
||||||
promises.push(
|
promises.push(
|
||||||
ownerOf({ contract: options.contract, tokenId: i })
|
ownerOf({ contract: options.contract, tokenId: i })
|
||||||
.catch(() => ADDRESS_ZERO)
|
.catch(() => ZERO_ADDRESS)
|
||||||
.then((owner) => ({
|
.then((owner) => ({
|
||||||
tokenId: i,
|
tokenId: i,
|
||||||
owner,
|
owner,
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export function updateTokenURI(
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export async function getUpdateTokenParams(
|
async function getUpdateTokenParams(
|
||||||
options: BaseTransactionOptions<UpdateTokenURIParams>,
|
options: BaseTransactionOptions<UpdateTokenURIParams>,
|
||||||
): Promise<SetTokenURIParams> {
|
): Promise<SetTokenURIParams> {
|
||||||
const { tokenId, newMetadata } = options;
|
const { tokenId, newMetadata } = options;
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ import type { Hex } from "../../../utils/encoding/hex.js";
|
|||||||
import type { Account } from "../../../wallets/interfaces/wallet.js";
|
import type { Account } from "../../../wallets/interfaces/wallet.js";
|
||||||
import { KEY_GATEWAY_ADDRESS } from "../constants.js";
|
import { KEY_GATEWAY_ADDRESS } from "../constants.js";
|
||||||
|
|
||||||
export const KEY_GATEWAY_EIP_712_DOMAIN = {
|
const KEY_GATEWAY_EIP_712_DOMAIN = {
|
||||||
name: "Farcaster KeyGateway",
|
name: "Farcaster KeyGateway",
|
||||||
version: "1",
|
version: "1",
|
||||||
chainId: 10,
|
chainId: 10,
|
||||||
verifyingContract: KEY_GATEWAY_ADDRESS,
|
verifyingContract: KEY_GATEWAY_ADDRESS,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const KEY_GATEWAY_ADD_TYPE = [
|
const KEY_GATEWAY_ADD_TYPE = [
|
||||||
{ name: "owner", type: "address" },
|
{ name: "owner", type: "address" },
|
||||||
{ name: "keyType", type: "uint32" },
|
{ name: "keyType", type: "uint32" },
|
||||||
{ name: "key", type: "bytes" },
|
{ name: "key", type: "bytes" },
|
||||||
@@ -20,7 +20,7 @@ export const KEY_GATEWAY_ADD_TYPE = [
|
|||||||
{ name: "deadline", type: "uint256" },
|
{ name: "deadline", type: "uint256" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const KEY_GATEWAY_EIP_712_TYPES = {
|
const KEY_GATEWAY_EIP_712_TYPES = {
|
||||||
domain: KEY_GATEWAY_EIP_712_DOMAIN,
|
domain: KEY_GATEWAY_EIP_712_DOMAIN,
|
||||||
types: { Add: KEY_GATEWAY_ADD_TYPE },
|
types: { Add: KEY_GATEWAY_ADD_TYPE },
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ const SIGNED_KEY_REQUEST_TYPE = [
|
|||||||
{ name: "deadline", type: "uint256" },
|
{ name: "deadline", type: "uint256" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_TYPES = {
|
const SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_TYPES = {
|
||||||
domain: SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN,
|
domain: SIGNED_KEY_REQUEST_VALIDATOR_EIP_712_DOMAIN,
|
||||||
types: { SignedKeyRequest: SIGNED_KEY_REQUEST_TYPE },
|
types: { SignedKeyRequest: SIGNED_KEY_REQUEST_TYPE },
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const SIGNED_KEY_REQUEST_METADATA_ABI = [
|
const SIGNED_KEY_REQUEST_METADATA_ABI = [
|
||||||
{
|
{
|
||||||
components: [
|
components: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,21 +3,21 @@ import type { Hex } from "../../../utils/encoding/hex.js";
|
|||||||
import type { Account } from "../../../wallets/interfaces/wallet.js";
|
import type { Account } from "../../../wallets/interfaces/wallet.js";
|
||||||
import { ID_GATEWAY_ADDRESS } from "../constants.js";
|
import { ID_GATEWAY_ADDRESS } from "../constants.js";
|
||||||
|
|
||||||
export const ID_GATEWAY_EIP_712_DOMAIN = {
|
const ID_GATEWAY_EIP_712_DOMAIN = {
|
||||||
name: "Farcaster IdGateway",
|
name: "Farcaster IdGateway",
|
||||||
version: "1",
|
version: "1",
|
||||||
chainId: 10,
|
chainId: 10,
|
||||||
verifyingContract: ID_GATEWAY_ADDRESS,
|
verifyingContract: ID_GATEWAY_ADDRESS,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const ID_GATEWAY_REGISTER_TYPE = [
|
const ID_GATEWAY_REGISTER_TYPE = [
|
||||||
{ name: "to", type: "address" },
|
{ name: "to", type: "address" },
|
||||||
{ name: "recovery", type: "address" },
|
{ name: "recovery", type: "address" },
|
||||||
{ name: "nonce", type: "uint256" },
|
{ name: "nonce", type: "uint256" },
|
||||||
{ name: "deadline", type: "uint256" },
|
{ name: "deadline", type: "uint256" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const ID_GATEWAY_EIP_712_TYPES = {
|
const ID_GATEWAY_EIP_712_TYPES = {
|
||||||
domain: ID_GATEWAY_EIP_712_DOMAIN,
|
domain: ID_GATEWAY_EIP_712_DOMAIN,
|
||||||
types: { Register: ID_GATEWAY_REGISTER_TYPE },
|
types: { Register: ID_GATEWAY_REGISTER_TYPE },
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export type LensProfileSchema = {
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export type MetadataAttribute =
|
type MetadataAttribute =
|
||||||
| {
|
| {
|
||||||
type: "Boolean";
|
type: "Boolean";
|
||||||
key: string;
|
key: string;
|
||||||
|
|||||||
@@ -68,14 +68,11 @@ export async function mapDirectListing(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
type IsListingValidParams = {
|
||||||
* @extension MARKETPLACE
|
|
||||||
*/
|
|
||||||
export type IsListingValidParams = {
|
|
||||||
listing: DirectListing;
|
listing: DirectListing;
|
||||||
quantity?: bigint;
|
quantity?: bigint;
|
||||||
};
|
};
|
||||||
export type ValidReturn = { valid: true } | { valid: false; reason: string };
|
type ValidReturn = { valid: true } | { valid: false; reason: string };
|
||||||
|
|
||||||
export async function isListingValid(
|
export async function isListingValid(
|
||||||
options: BaseTransactionOptions<IsListingValidParams>,
|
options: BaseTransactionOptions<IsListingValidParams>,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { encodeBytesBeforeMintERC1155Params } from "../__generated__/ClaimableER
|
|||||||
import { getClaimConditionByTokenId } from "../__generated__/ClaimableERC1155/read/getClaimConditionByTokenId.js";
|
import { getClaimConditionByTokenId } from "../__generated__/ClaimableERC1155/read/getClaimConditionByTokenId.js";
|
||||||
import { mint as generatedMint } from "../__generated__/ERC1155Core/write/mint.js";
|
import { mint as generatedMint } from "../__generated__/ERC1155Core/write/mint.js";
|
||||||
|
|
||||||
export type MintParams = {
|
type MintParams = {
|
||||||
to: string;
|
to: string;
|
||||||
tokenId: bigint;
|
tokenId: bigint;
|
||||||
quantity: string | number;
|
quantity: string | number;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { type Hex, padHex } from "../../../utils/encoding/hex.js";
|
|||||||
import { encodeBytesBeforeMintERC20Params } from "../__generated__/ClaimableERC20/encode/encodeBytesBeforeMintERC20.js";
|
import { encodeBytesBeforeMintERC20Params } from "../__generated__/ClaimableERC20/encode/encodeBytesBeforeMintERC20.js";
|
||||||
import { mint as generatedMint } from "../__generated__/ERC20Core/write/mint.js";
|
import { mint as generatedMint } from "../__generated__/ERC20Core/write/mint.js";
|
||||||
|
|
||||||
export type MintParams = {
|
type MintParams = {
|
||||||
to: string;
|
to: string;
|
||||||
quantity: string | number;
|
quantity: string | number;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { encodeBytesBeforeMintERC721Params } from "../__generated__/ClaimableERC
|
|||||||
import { getClaimCondition } from "../__generated__/ClaimableERC721/read/getClaimCondition.js";
|
import { getClaimCondition } from "../__generated__/ClaimableERC721/read/getClaimCondition.js";
|
||||||
import { mint as generatedMint } from "../__generated__/ERC721Core/write/mint.js";
|
import { mint as generatedMint } from "../__generated__/ERC721Core/write/mint.js";
|
||||||
|
|
||||||
export type MintParams = {
|
type MintParams = {
|
||||||
to: string;
|
to: string;
|
||||||
quantity: string | number;
|
quantity: string | number;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ type GeneratePayloadInput = {
|
|||||||
validityEndTimestamp?: Date;
|
validityEndTimestamp?: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MintRequestERC1155 = [
|
const MintRequestERC1155 = [
|
||||||
{ type: "address", name: "to" },
|
{ type: "address", name: "to" },
|
||||||
{ type: "uint256", name: "tokenId" },
|
{ type: "uint256", name: "tokenId" },
|
||||||
{ type: "uint256", name: "amount" },
|
{ type: "uint256", name: "amount" },
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ type GeneratePayloadInput = {
|
|||||||
uid?: Hex;
|
uid?: Hex;
|
||||||
} & ({ quantity: string } | { quantityWei: bigint });
|
} & ({ quantity: string } | { quantityWei: bigint });
|
||||||
|
|
||||||
export const MintRequestERC20 = [
|
const MintRequestERC20 = [
|
||||||
{ type: "address", name: "to" },
|
{ type: "address", name: "to" },
|
||||||
{ type: "uint256", name: "amount" },
|
{ type: "uint256", name: "amount" },
|
||||||
{ type: "bytes", name: "data" },
|
{ type: "bytes", name: "data" },
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ type GeneratePayloadInput = {
|
|||||||
validityEndTimestamp?: Date;
|
validityEndTimestamp?: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MintRequestERC721 = [
|
const MintRequestERC721 = [
|
||||||
{ type: "address", name: "to" },
|
{ type: "address", name: "to" },
|
||||||
{ type: "uint256", name: "amount" },
|
{ type: "uint256", name: "amount" },
|
||||||
{ type: "string", name: "baseURI" },
|
{ type: "string", name: "baseURI" },
|
||||||
|
|||||||
@@ -23,14 +23,9 @@ export const roleMap = {
|
|||||||
/**
|
/**
|
||||||
* @extension PERMISSIONS
|
* @extension PERMISSIONS
|
||||||
*/
|
*/
|
||||||
export type ThirdwebContractRole = keyof typeof roleMap;
|
type ThirdwebContractRole = keyof typeof roleMap;
|
||||||
|
|
||||||
export const ALL_ROLES = /* @__PURE__ */ (() =>
|
function isThirdwebContractRole(role: string): role is ThirdwebContractRole {
|
||||||
Object.keys(roleMap))() as ThirdwebContractRole[];
|
|
||||||
|
|
||||||
export function isThirdwebContractRole(
|
|
||||||
role: string,
|
|
||||||
): role is ThirdwebContractRole {
|
|
||||||
return role in roleMap;
|
return role in roleMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,10 +33,11 @@ export type MarketplaceContractParams = {
|
|||||||
trustedForwarders?: string[];
|
trustedForwarders?: string[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type DeployMarketplaceContractOptions =
|
export type DeployMarketplaceContractOptions = Prettify<
|
||||||
Prettify<ClientAndChainAndAccount> & {
|
ClientAndChainAndAccount & {
|
||||||
params: MarketplaceContractParams;
|
params: MarketplaceContractParams;
|
||||||
};
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO not quite ready for public consumption yet
|
* TODO not quite ready for public consumption yet
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { decimals } from "../erc20/read/decimals.js";
|
|||||||
/**
|
/**
|
||||||
* @extension DEPLOY
|
* @extension DEPLOY
|
||||||
*/
|
*/
|
||||||
export type VoteContractParams = {
|
type VoteContractParams = {
|
||||||
name: string;
|
name: string;
|
||||||
/**
|
/**
|
||||||
* The contract address for the ERC20 that will be used as voting power
|
* The contract address for the ERC20 that will be used as voting power
|
||||||
@@ -57,7 +57,7 @@ export type VoteContractParams = {
|
|||||||
/**
|
/**
|
||||||
* @extension DEPLOY
|
* @extension DEPLOY
|
||||||
*/
|
*/
|
||||||
export type DeployVoteContractOptions = Prettify<
|
type DeployVoteContractOptions = Prettify<
|
||||||
ClientAndChainAndAccount & {
|
ClientAndChainAndAccount & {
|
||||||
params: VoteContractParams;
|
params: VoteContractParams;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import type { DeployContractfromDeployMetadataOptions } from "./deploy-published
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export type DeployTransactionType =
|
type DeployTransactionType =
|
||||||
| "infra"
|
| "infra"
|
||||||
| "implementation"
|
| "implementation"
|
||||||
| "module"
|
| "module"
|
||||||
@@ -21,7 +21,7 @@ export type DeployTransactionType =
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export type DeployTransactionResult = {
|
type DeployTransactionResult = {
|
||||||
type: DeployTransactionType;
|
type: DeployTransactionType;
|
||||||
contractId: string;
|
contractId: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
import type { Address } from "abitype";
|
import type { Address } from "abitype";
|
||||||
import { ADDRESS_ZERO } from "../../../constants/addresses.js";
|
import { ZERO_ADDRESS } from "../../../constants/addresses.js";
|
||||||
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
import type { BaseTransactionOptions } from "../../../transaction/types.js";
|
||||||
import { UniswapFee } from "../types.js";
|
|
||||||
|
const UniswapFee = {
|
||||||
|
LOWEST: 100,
|
||||||
|
LOW: 500,
|
||||||
|
MEDIUM: 3000,
|
||||||
|
HIGH: 10000,
|
||||||
|
} as const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the parameters for the `findUniswapV3Pool` function.
|
* Represents the parameters for the `findUniswapV3Pool` function.
|
||||||
@@ -16,7 +22,7 @@ export type GetUniswapV3PoolParams = {
|
|||||||
* @extension UNISWAP
|
* @extension UNISWAP
|
||||||
*/
|
*/
|
||||||
export type GetUniswapV3PoolResult = {
|
export type GetUniswapV3PoolResult = {
|
||||||
poolFee: UniswapFee;
|
poolFee: (typeof UniswapFee)[keyof typeof UniswapFee];
|
||||||
poolAddress: Address;
|
poolAddress: Address;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -49,18 +55,18 @@ export async function getUniswapV3Pool(
|
|||||||
contract: options.contract,
|
contract: options.contract,
|
||||||
tokenA: options.tokenA,
|
tokenA: options.tokenA,
|
||||||
tokenB: options.tokenB,
|
tokenB: options.tokenB,
|
||||||
fee: Number(fee),
|
fee,
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
poolFee: Number(fee),
|
poolFee: fee,
|
||||||
poolAddress,
|
poolAddress,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const results = await Promise.all(promises);
|
const results = await Promise.all(promises);
|
||||||
const validPools = results.filter(
|
const validPools = results.filter(
|
||||||
(result) => result.poolAddress && result.poolAddress !== ADDRESS_ZERO,
|
(result) => result.poolAddress && result.poolAddress !== ZERO_ADDRESS,
|
||||||
);
|
);
|
||||||
|
|
||||||
return validPools;
|
return validPools;
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
export enum UniswapFee {
|
|
||||||
LOWEST = 100,
|
|
||||||
LOW = 500,
|
|
||||||
MEDIUM = 3000,
|
|
||||||
HIGH = 10000,
|
|
||||||
}
|
|
||||||
@@ -30,7 +30,7 @@ export function executeProposal(
|
|||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
export async function getExecuteParams(
|
async function getExecuteParams(
|
||||||
options: BaseTransactionOptions<{ proposalId: bigint }>,
|
options: BaseTransactionOptions<{ proposalId: bigint }>,
|
||||||
): Promise<ExecuteParams> {
|
): Promise<ExecuteParams> {
|
||||||
const { proposalId } = options;
|
const { proposalId } = options;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { toSerializableTransaction } from "../transaction/actions/to-serializabl
|
|||||||
import type { PreparedTransaction } from "../transaction/prepare-transaction.js";
|
import type { PreparedTransaction } from "../transaction/prepare-transaction.js";
|
||||||
import { readContract } from "../transaction/read-contract.js";
|
import { readContract } from "../transaction/read-contract.js";
|
||||||
|
|
||||||
export type EstimateL1FeeOptions = {
|
type EstimateL1FeeOptions = {
|
||||||
transaction: PreparedTransaction;
|
transaction: PreparedTransaction;
|
||||||
gasPriceOracleAddress?: string;
|
gasPriceOracleAddress?: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { getPayBuyWithCryptoStatusUrl } from "../utils/definitions.js";
|
|||||||
/**
|
/**
|
||||||
* @buyCrypto
|
* @buyCrypto
|
||||||
*/
|
*/
|
||||||
export type BuyWithCryptoQuoteSummary = {
|
type BuyWithCryptoQuoteSummary = {
|
||||||
fromToken: PayTokenInfo;
|
fromToken: PayTokenInfo;
|
||||||
toToken: PayTokenInfo;
|
toToken: PayTokenInfo;
|
||||||
|
|
||||||
@@ -45,9 +45,9 @@ export type BuyWithCryptoTransaction = {
|
|||||||
transactionHash: string;
|
transactionHash: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type BuyWithCryptoStatuses = "NONE" | "PENDING" | "FAILED" | "COMPLETED";
|
type BuyWithCryptoStatuses = "NONE" | "PENDING" | "FAILED" | "COMPLETED";
|
||||||
|
|
||||||
export type BuyWithCryptoSubStatuses =
|
type BuyWithCryptoSubStatuses =
|
||||||
| "NONE"
|
| "NONE"
|
||||||
| "WAITING_BRIDGE"
|
| "WAITING_BRIDGE"
|
||||||
| "REVERTED_ON_CHAIN"
|
| "REVERTED_ON_CHAIN"
|
||||||
@@ -56,7 +56,7 @@ export type BuyWithCryptoSubStatuses =
|
|||||||
| "UNKNOWN_ERROR"
|
| "UNKNOWN_ERROR"
|
||||||
| "REFUNDED";
|
| "REFUNDED";
|
||||||
|
|
||||||
export type SwapType = "SAME_CHAIN" | "CROSS_CHAIN" | "TRANSFER";
|
type SwapType = "SAME_CHAIN" | "CROSS_CHAIN" | "TRANSFER";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The object returned by the [`getBuyWithCryptoStatus`](https://portal.thirdweb.com/references/typescript/v5/getBuyWithCryptoStatus) function to represent the status of a quoted transaction
|
* The object returned by the [`getBuyWithCryptoStatus`](https://portal.thirdweb.com/references/typescript/v5/getBuyWithCryptoStatus) function to represent the status of a quoted transaction
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { getThirdwebDomains } from "../../utils/domains.js";
|
import { getThirdwebDomains } from "../../utils/domains.js";
|
||||||
|
|
||||||
export const getPayBaseUrl = () => {
|
const getPayBaseUrl = () => {
|
||||||
const payDomain: string = getThirdwebDomains().pay;
|
const payDomain: string = getThirdwebDomains().pay;
|
||||||
return payDomain.startsWith("localhost")
|
return payDomain.startsWith("localhost")
|
||||||
? `http://${payDomain}`
|
? `http://${payDomain}`
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export function parseTheme(theme: "light" | "dark" | Theme | undefined): Theme {
|
|||||||
return themeObj;
|
return themeObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isValidTheme(theme: unknown): theme is Theme {
|
function isValidTheme(theme: unknown): theme is Theme {
|
||||||
return (
|
return (
|
||||||
theme === "dark" ||
|
theme === "dark" ||
|
||||||
theme === "light" ||
|
theme === "light" ||
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ import {
|
|||||||
getWalletBalance,
|
getWalletBalance,
|
||||||
} from "../../../../wallets/utils/getWalletBalance.js";
|
} from "../../../../wallets/utils/getWalletBalance.js";
|
||||||
|
|
||||||
export type UseWalletBalanceOptions = Prettify<
|
type UseWalletBalanceOptions = Prettify<
|
||||||
Omit<GetWalletBalanceOptions, "address" | "chain"> & {
|
Omit<GetWalletBalanceOptions, "address" | "chain"> & {
|
||||||
address: string | undefined;
|
address: string | undefined;
|
||||||
chain: Chain | undefined;
|
chain: Chain | undefined;
|
||||||
}
|
}
|
||||||
>;
|
>;
|
||||||
export type UseWalletBalanceQueryOptions = Omit<
|
type UseWalletBalanceQueryOptions = Omit<
|
||||||
UseQueryOptions<GetWalletBalanceResult>,
|
UseQueryOptions<GetWalletBalanceResult>,
|
||||||
"queryFn" | "queryKey"
|
"queryFn" | "queryKey"
|
||||||
>;
|
>;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useActiveAccount } from "../wallets/useActiveAccount.js";
|
|||||||
/**
|
/**
|
||||||
* Configuration for the `useSendTransaction` hook.
|
* Configuration for the `useSendTransaction` hook.
|
||||||
*/
|
*/
|
||||||
export type SendAndConfirmTransactionConfig = {
|
type SendAndConfirmTransactionConfig = {
|
||||||
/**
|
/**
|
||||||
* Configuration for gasless transactions.
|
* Configuration for gasless transactions.
|
||||||
* Refer to [`GaslessOptions`](https://portal.thirdweb.com/references/typescript/v5/GaslessOptions) for more details.
|
* Refer to [`GaslessOptions`](https://portal.thirdweb.com/references/typescript/v5/GaslessOptions) for more details.
|
||||||
|
|||||||
@@ -219,10 +219,7 @@ export function useSendTransactionCore(args: {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getTotalTxCostForBuy(
|
async function getTotalTxCostForBuy(tx: PreparedTransaction, from?: string) {
|
||||||
tx: PreparedTransaction,
|
|
||||||
from?: string,
|
|
||||||
) {
|
|
||||||
try {
|
try {
|
||||||
const gasCost = await estimateGasCost({
|
const gasCost = await estimateGasCost({
|
||||||
transaction: tx,
|
transaction: tx,
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix any
|
|
||||||
export type DeepPartial<T extends Record<string, any>> = {
|
|
||||||
[P in keyof T]?: DeepPartial<T[P]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new object with given overrides object applied on top of given base object without mutating the base and overrides object
|
|
||||||
*
|
|
||||||
* @param defaultObj - The object to use as the base object
|
|
||||||
* @param overrides - The object to use as the overrides
|
|
||||||
*
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix any
|
|
||||||
export function immutableOverride<T extends Record<string, any>>(
|
|
||||||
defaultObj: T,
|
|
||||||
overrides: DeepPartial<T>,
|
|
||||||
): T {
|
|
||||||
const output = { ...defaultObj };
|
|
||||||
|
|
||||||
for (const key in overrides) {
|
|
||||||
const value = overrides[key];
|
|
||||||
// only apply overrides if it is not undefined
|
|
||||||
if (value !== undefined) {
|
|
||||||
// partially apply overrides object
|
|
||||||
if (typeof value === "object" && value !== null) {
|
|
||||||
output[key] = immutableOverride(defaultObj[key], value);
|
|
||||||
}
|
|
||||||
// completely override non-object values
|
|
||||||
else {
|
|
||||||
output[key] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ export type TokenInfo = {
|
|||||||
icon?: string;
|
icon?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const wrappedEthIcon =
|
const wrappedEthIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzYyN0VFQSIvPjxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDR2OC44N2w3LjQ5NyAzLjM1eiIvPjxwYXRoIGQ9Ik0xNi40OTggNEw5IDE2LjIybDcuNDk4LTMuMzV6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDIxLjk2OHY2LjAyN0wyNCAxNy42MTZ6Ii8+PHBhdGggZD0iTTE2LjQ5OCAyNy45OTV2LTYuMDI4TDkgMTcuNjE2eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjIiIGQ9Ik0xNi40OTggMjAuNTczbDcuNDk3LTQuMzUzLTcuNDk3LTMuMzQ4eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjYwMiIgZD0iTTkgMTYuMjJsNy40OTggNC4zNTN2LTcuNzAxeiIvPjwvZz48L2c+PC9zdmc+";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzYyN0VFQSIvPjxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDR2OC44N2w3LjQ5NyAzLjM1eiIvPjxwYXRoIGQ9Ik0xNi40OTggNEw5IDE2LjIybDcuNDk4LTMuMzV6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDIxLjk2OHY2LjAyN0wyNCAxNy42MTZ6Ii8+PHBhdGggZD0iTTE2LjQ5OCAyNy45OTV2LTYuMDI4TDkgMTcuNjE2eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjIiIGQ9Ik0xNi40OTggMjAuNTczbDcuNDk3LTQuMzUzLTcuNDk3LTMuMzQ4eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjYwMiIgZD0iTTkgMTYuMjJsNy40OTggNC4zNTN2LTcuNzAxeiIvPjwvZz48L2c+PC9zdmc+";
|
||||||
|
|
||||||
const tetherUsdIcon =
|
const tetherUsdIcon =
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { replaceEqualDeep } from "@tanstack/react-query";
|
|||||||
|
|
||||||
/** Forked from https://github.com/epoberezkin/fast-deep-equal */
|
/** Forked from https://github.com/epoberezkin/fast-deep-equal */
|
||||||
// biome-ignore lint/suspicious/noExplicitAny: This function by nature takes any object
|
// biome-ignore lint/suspicious/noExplicitAny: This function by nature takes any object
|
||||||
export function deepEqual(a: any, b: any) {
|
function deepEqual(a: any, b: any) {
|
||||||
if (a === b) return true;
|
if (a === b) return true;
|
||||||
|
|
||||||
if (a && b && typeof a === "object" && typeof b === "object") {
|
if (a && b && typeof a === "object" && typeof b === "object") {
|
||||||
|
|||||||
@@ -1,53 +1,32 @@
|
|||||||
// TODO make the social icons usable in RN too
|
// TODO make the social icons usable in RN too
|
||||||
export const googleIconUri =
|
const googleIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=";
|
||||||
export const facebookIconUri =
|
const facebookIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+";
|
||||||
export const twitterIconUri =
|
const appleIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgaWQ9InR3aXR0ZXIiPjxwYXRoIGZpbGw9IiMwM0E5RjQiIGQ9Ik0xNiAzLjUzOWE2LjgzOSA2LjgzOSAwIDAgMS0xLjg5LjUxOCAzLjI2MiAzLjI2MiAwIDAgMCAxLjQ0My0xLjgxMyA2LjU1NSA2LjU1NSAwIDAgMS0yLjA4Ljc5NCAzLjI4IDMuMjggMCAwIDAtNS42NzQgMi4yNDNjMCAuMjYuMDIyLjUxLjA3Ni43NDhhOS4yODQgOS4yODQgMCAwIDEtNi43NjEtMy40MzEgMy4yODUgMy4yODUgMCAwIDAgMS4wMDggNC4zODRBMy4yNCAzLjI0IDAgMCAxIC42NCA2LjU3OHYuMDM2YTMuMjk1IDMuMjk1IDAgMCAwIDIuNjI4IDMuMjIzIDMuMjc0IDMuMjc0IDAgMCAxLS44Ni4xMDggMi45IDIuOSAwIDAgMS0uNjIxLS4wNTYgMy4zMTEgMy4zMTEgMCAwIDAgMy4wNjUgMi4yODUgNi41OSA2LjU5IDAgMCAxLTQuMDY3IDEuMzk5Yy0uMjY5IDAtLjUyNy0uMDEyLS43ODUtLjA0NUE5LjIzNCA5LjIzNCAwIDAgMCA1LjAzMiAxNWM2LjAzNiAwIDkuMzM2LTUgOS4zMzYtOS4zMzQgMC0uMTQ1LS4wMDUtLjI4NS0uMDEyLS40MjRBNi41NDQgNi41NDQgMCAwIDAgMTYgMy41Mzl6Ij48L3BhdGg+PC9zdmc+";
|
|
||||||
export const githubIconUri =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwXzIpIj4KPHBhdGggZD0iTTcuOTk5IDBDMy41ODIwMSAwIDQuNjE2NDhlLTA2IDMuNTk2IDQuNjE2NDhlLTA2IDguMDMyQy0wLjAwMTggOS43MTU1NSAwLjUyNTUxOSAxMS4zNTcxIDEuNTA3NDQgMTIuNzI0NkMyLjQ4OTM1IDE0LjA5MjIgMy44NzYyMSAxNS4xMTY2IDUuNDcyIDE1LjY1M0M1Ljg3MiAxNS43MjcgNi4wMTggMTUuNDc5IDYuMDE4IDE1LjI2NkM2LjAxOCAxNS4wNzUgNi4wMTEgMTQuNTcgNi4wMDcgMTMuOUMzLjc4MiAxNC4zODUgMy4zMTIgMTIuODIzIDMuMzEyIDEyLjgyM0MyLjk0OSAxMS44OTUgMi40MjQgMTEuNjQ4IDIuNDI0IDExLjY0OEMxLjY5NyAxMS4xNSAyLjQ3OCAxMS4xNiAyLjQ3OCAxMS4xNkMzLjI4MSAxMS4yMTcgMy43MDMgMTEuOTg4IDMuNzAzIDExLjk4OEM0LjQxNyAxMy4yMTUgNS41NzYgMTIuODYxIDYuMDMyIDEyLjY1NUM2LjEwNCAxMi4xMzYgNi4zMTEgMTEuNzgyIDYuNTQgMTEuNTgxQzQuNzY0IDExLjM3OCAyLjg5NiAxMC42ODkgMi44OTYgNy42MTJDMi44OTYgNi43MzUgMy4yMDggNi4wMTggMy43MiA1LjQ1NkMzLjYzNyA1LjI1MyAzLjM2MyA0LjQzNiAzLjc5OCAzLjMzMUMzLjc5OCAzLjMzMSA0LjQ3IDMuMTE1IDUuOTk4IDQuMTU0QzYuNjUwNzUgMy45NzU2MSA3LjMyNDMyIDMuODg0ODIgOC4wMDEwMSAzLjg4NEM4LjY3NzcyIDMuODg1MzQgOS4zNTEyNiAzLjk3NjQ3IDEwLjAwNCA0LjE1NUMxMS41MzEgMy4xMTYgMTIuMjAyIDMuMzMyIDEyLjIwMiAzLjMzMkMxMi42MzggNC40MzggMTIuMzY0IDUuMjU0IDEyLjI4MiA1LjQ1N0MxMi43OTUgNi4wMTkgMTMuMTA0IDYuNzM2IDEzLjEwNCA3LjYxM0MxMy4xMDQgMTAuNjk4IDExLjIzNCAxMS4zNzcgOS40NTIgMTEuNTc2QzkuNzM5IDExLjgyNCA5Ljk5NSAxMi4zMTQgOS45OTUgMTMuMDYzQzkuOTk1IDE0LjEzNyA5Ljk4NSAxNS4wMDMgOS45ODUgMTUuMjY2QzkuOTg1IDE1LjQ4MSAxMC4xMjkgMTUuNzMxIDEwLjUzNSAxNS42NTJDMTIuMTI5MiAxNS4xMTQzIDEzLjUxNDQgMTQuMDg5NSAxNC40OTQ5IDEyLjcyMjNDMTUuNDc1NSAxMS4zNTUxIDE2LjAwMTkgOS43MTQ0OCAxNiA4LjAzMkMxNiAzLjU5NiAxMi40MTggMCA3Ljk5OSAwWiIgZmlsbD0iIzhCOEI4QiIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwXzIiPgo8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
|
|
||||||
export const appleIconUri =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDM4IiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA0OTYuMjU1IDYwOC43MjgiIGlkPSJhcHBsZSI+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTI3My44MSA1Mi45NzNDMzEzLjgwNi4yNTcgMzY5LjQxIDAgMzY5LjQxIDBzOC4yNzEgNDkuNTYyLTMxLjQ2MyA5Ny4zMDZjLTQyLjQyNiA1MC45OC05MC42NDkgNDIuNjM4LTkwLjY0OSA0Mi42MzhzLTkuMDU1LTQwLjA5NCAyNi41MTItODYuOTcxek0yNTIuMzg1IDE3NC42NjJjMjAuNTc2IDAgNTguNzY0LTI4LjI4NCAxMDguNDcxLTI4LjI4NCA4NS41NjIgMCAxMTkuMjIyIDYwLjg4MyAxMTkuMjIyIDYwLjg4M3MtNjUuODMzIDMzLjY1OS02NS44MzMgMTE1LjMzMWMwIDkyLjEzMyA4Mi4wMSAxMjMuODg1IDgyLjAxIDEyMy44ODVzLTU3LjMyOCAxNjEuMzU3LTEzNC43NjIgMTYxLjM1N2MtMzUuNTY1IDAtNjMuMjE1LTIzLjk2Ny0xMDAuNjg4LTIzLjk2Ny0zOC4xODggMC03Ni4wODQgMjQuODYxLTEwMC43NjYgMjQuODYxQzg5LjMzIDYwOC43MyAwIDQ1NS42NjYgMCAzMzIuNjI4YzAtMTIxLjA1MiA3NS42MTItMTg0LjU1NCAxNDYuNTMzLTE4NC41NTQgNDYuMTA1IDAgODEuODgzIDI2LjU4OCAxMDUuODUyIDI2LjU4OHoiPjwvcGF0aD48L3N2Zz4=";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDM4IiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA0OTYuMjU1IDYwOC43MjgiIGlkPSJhcHBsZSI+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTI3My44MSA1Mi45NzNDMzEzLjgwNi4yNTcgMzY5LjQxIDAgMzY5LjQxIDBzOC4yNzEgNDkuNTYyLTMxLjQ2MyA5Ny4zMDZjLTQyLjQyNiA1MC45OC05MC42NDkgNDIuNjM4LTkwLjY0OSA0Mi42MzhzLTkuMDU1LTQwLjA5NCAyNi41MTItODYuOTcxek0yNTIuMzg1IDE3NC42NjJjMjAuNTc2IDAgNTguNzY0LTI4LjI4NCAxMDguNDcxLTI4LjI4NCA4NS41NjIgMCAxMTkuMjIyIDYwLjg4MyAxMTkuMjIyIDYwLjg4M3MtNjUuODMzIDMzLjY1OS02NS44MzMgMTE1LjMzMWMwIDkyLjEzMyA4Mi4wMSAxMjMuODg1IDgyLjAxIDEyMy44ODVzLTU3LjMyOCAxNjEuMzU3LTEzNC43NjIgMTYxLjM1N2MtMzUuNTY1IDAtNjMuMjE1LTIzLjk2Ny0xMDAuNjg4LTIzLjk2Ny0zOC4xODggMC03Ni4wODQgMjQuODYxLTEwMC43NjYgMjQuODYxQzg5LjMzIDYwOC43MyAwIDQ1NS42NjYgMCAzMzIuNjI4YzAtMTIxLjA1MiA3NS42MTItMTg0LjU1NCAxNDYuNTMzLTE4NC41NTQgNDYuMTA1IDAgODEuODgzIDI2LjU4OCAxMDUuODUyIDI2LjU4OHoiPjwvcGF0aD48L3N2Zz4=";
|
||||||
export const linkedinIconUri =
|
const discordIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI0MCIgaWQ9ImxpbmtlZGluIj48cGF0aCBmaWxsPSIjMDA3RUJCIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NCA0MGgtOS43MjVWMjUuOTM4YzAtMy42OC0xLjUyLTYuMTkzLTQuODY2LTYuMTkzLTIuNTU4IDAtMy45ODEgMS42OTYtNC42NDMgMy4zMy0uMjQ5LjU4Ni0uMjEgMS40MDMtLjIxIDIuMjJWNDBoLTkuNjM0cy4xMjQtMjQuOTA5IDAtMjcuMTczaDkuNjM0djQuMjY1Yy41Ny0xLjg2NSAzLjY0OC00LjUyNiA4LjU2LTQuNTI2QzM5LjIxMSAxMi41NjYgNDQgMTYuNDc0IDQ0IDI0Ljg5MVY0MHpNNS4xOCA5LjQyOGgtLjA2M0MyLjAxMyA5LjQyOCAwIDcuMzUxIDAgNC43MTggMCAyLjAzNCAyLjA3MiAwIDUuMjM5IDBjMy4xNjQgMCA1LjExIDIuMDI5IDUuMTcxIDQuNzEgMCAyLjYzMy0yLjAwNyA0LjcxOC01LjIzIDQuNzE4em0tNC4wNyAzLjM5OWg4LjU3NlY0MEgxLjExVjEyLjgyN3oiPjwvcGF0aD48L3N2Zz4=";
|
|
||||||
export const bitbucketIconUri =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImJpdGJ1Y2tldCI+PHBhdGggZmlsbD0iIzI2ODBGOCIgZD0iTTQuMjk3IDIzaDE1LjY1OWEuNzc2Ljc3NiAwIDAgMCAuNzY5LS42NTdMMjMuOTkgMS45MTZhLjc4Ljc4IDAgMCAwLS42MzUtLjg5NyAxLjEzIDEuMTMgMCAwIDAtLjEzNC0uMDA5TC43NzkgMUEuNzc1Ljc3NSAwIDAgMCAwIDEuNzc1YzAgLjA0NC4wMDUuMDkzLjAwOS4xMzdsMy4yNjUgMjAuMTk2Yy4wODIuNTA5LjUxNS44ODcgMS4wMjMuODkyek0xNS43MzYgOC4zOTFsLTEuMjExIDcuMjA1aC01TDguMTczIDguMzkxaDcuNTYzeiI+PC9wYXRoPjwvc3ZnPg==";
|
|
||||||
export const gitlabIconUri =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjIzMDUiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCAyNTYgMjM2IiBpZD0iZ2l0bGFiIj48cGF0aCBmaWxsPSIjRTI0MzI5IiBkPSJNMTI4LjA3NSAyMzYuMDc1bDQ3LjEwNC0xNDQuOTdIODAuOTdsNDcuMTA0IDE0NC45N3oiPjwvcGF0aD48cGF0aCBmaWxsPSIjRkM2RDI2IiBkPSJNMTI4LjA3NSAyMzYuMDc0TDgwLjk3IDkxLjEwNEgxNC45NTZsMTEzLjExOSAxNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0ZDQTMyNiIgZD0iTTE0Ljk1NiA5MS4xMDRMLjY0MiAxMzUuMTZhOS43NTIgOS43NTIgMCAwIDAgMy41NDIgMTAuOTAzbDEyMy44OTEgOTAuMDEyLTExMy4xMi0xNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0UyNDMyOSIgZD0iTTE0Ljk1NiA5MS4xMDVIODAuOTdMNTIuNjAxIDMuNzljLTEuNDYtNC40OTMtNy44MTYtNC40OTItOS4yNzUgMGwtMjguMzcgODcuMzE1eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNGQzZEMjYiIGQ9Ik0xMjguMDc1IDIzNi4wNzRsNDcuMTA0LTE0NC45N2g2Ni4wMTVsLTExMy4xMiAxNDQuOTd6Ij48L3BhdGg+PHBhdGggZmlsbD0iI0ZDQTMyNiIgZD0iTTI0MS4xOTQgOTEuMTA0bDE0LjMxNCA0NC4wNTZhOS43NTIgOS43NTIgMCAwIDEtMy41NDMgMTAuOTAzbC0xMjMuODkgOTAuMDEyIDExMy4xMTktMTQ0Ljk3eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNFMjQzMjkiIGQ9Ik0yNDEuMTk0IDkxLjEwNWgtNjYuMDE1bDI4LjM3LTg3LjMxNWMxLjQ2LTQuNDkzIDcuODE2LTQuNDkyIDkuMjc1IDBsMjguMzcgODcuMzE1eiI+PC9wYXRoPjwvc3ZnPg==";
|
|
||||||
export const twitchIconUri =
|
|
||||||
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDExMS43ODY2NyAxMjcuMzg2NjciCiAgIGhlaWdodD0iMTI3LjM4NjY3IgogICB3aWR0aD0iMTExLjc4NjY3IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmczMzU1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJUd2l0Y2hfbG9nby5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xICgzYmY1YWUwZDI1LCAyMDIxLTA5LTIwKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICBpZD0iZGVmczI5Ij4KICAgIAogICAgCiAgPC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgaWQ9Im5hbWVkdmlldzI3IgogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iNC4xOTkyMjg0IgogICBpbmtzY2FwZTpjeD0iLTUwLjYwNDUzNSIKICAgaW5rc2NhcGU6Y3k9IjE0MC4zODI5MyIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMzg3IgogICBpbmtzY2FwZTp3aW5kb3cteD0iMTkxMiIKICAgaW5rc2NhcGU6d2luZG93LXk9Ii04IgogICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmczMzU1IiAvPgogIDxnCiAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywxMDEuMzkzMzMsNjcuNTg5MzMyKSIKICAgaWQ9ImczMzY1Ij4KICAgICAgPHBhdGgKICAgaWQ9InBhdGgzMzY3IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICBkPSJtIDAsMCAtMTMuNjUyLC0xMy42NTEgaCAtMjEuNDQ1IGwgLTExLjY5OSwtMTEuNjk3IHYgMTEuNjk3IEggLTY0LjM0NCBWIDQyLjg5MyBIIDAgWiBtIC03Mi4xNDYsNTAuNjkyIC0zLjg5OSwtMTUuNTk5IHYgLTcwLjE5IGggMTcuNTUgdiAtOS43NTEgaCA5Ljc0NiBsIDkuNzUyLDkuNzUxIGggMTUuNTk2IEwgNy43OTUsLTMuOTA1IHYgNTQuNTk3IHoiIC8+CiAgICA8L2c+PHBhdGgKICAgaWQ9InBhdGgzMzY5IgogICBzdHlsZT0iZmlsbDojNjQ0MWE1O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjMzMzMzIgogICBkPSJtIDQ0LjE5NzMzMSw2Mi4zOTQyNjYgaCAxMC4zOTg2NyBWIDMxLjE5MjkzMyBoIC0xMC4zOTg2NyB6IG0gMjguNTk0NjcsMCBoIDEwLjM5ODY2IFYgMzEuMTkyOTMzIGggLTEwLjM5ODY2IHoiIC8+Cjwvc3ZnPgo=";
|
|
||||||
export const discordIconUri =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBpZD0iZGlzY29yZCI+PHBhdGggZmlsbD0iIzY2NjVkMiIgZD0iTTg1LjIyLDI0Ljk1OGMtMTEuNDU5LTguNTc1LTIyLjQzOC04LjMzNC0yMi40MzgtOC4zMzRsLTEuMTIyLDEuMjgyCgkJCQljMTMuNjIzLDQuMDg3LDE5Ljk1NCwxMC4wOTcsMTkuOTU0LDEwLjA5N2MtMTkuNDkxLTEwLjczMS00NC4zMTctMTAuNjU0LTY0LjU5LDBjMCwwLDYuNTcxLTYuMzMxLDIwLjk5Ni0xMC40MThsLTAuODAxLTAuOTYyCgkJCQljMCwwLTEwLjg5OS0wLjI0LTIyLjQzOCw4LjMzNGMwLDAtMTEuNTQsMjAuNzU1LTExLjU0LDQ2LjMxOWMwLDAsNi43MzIsMTEuNTQsMjQuNDQyLDEyLjEwMWMwLDAsMi45NjUtMy41MjYsNS4zNjktNi41NzEKCQkJCWMtMTAuMTc3LTMuMDQ1LTE0LjAyNC05LjM3Ni0xNC4wMjQtOS4zNzZjNi4zOTQsNC4wMDEsMTIuODU5LDYuNTA1LDIwLjkxNiw4LjA5NGMxMy4xMDgsMi42OTgsMjkuNDEzLTAuMDc2LDQxLjU5MS04LjA5NAoJCQkJYzAsMC00LjAwNyw2LjQ5MS0xNC41MDUsOS40NTZjMi40MDQsMi45NjUsNS4yODksNi40MTEsNS4yODksNi40MTFjMTcuNzEtMC41NjEsMjQuNDQxLTEyLjEwMSwyNC40NDEtMTIuMDIKCQkJCUM5Ni43NTksNDUuNzEzLDg1LjIyLDI0Ljk1OCw4NS4yMiwyNC45NTh6IE0zNS4wNTUsNjMuODI0Yy00LjQ4OCwwLTguMTc0LTMuOTI3LTguMTc0LTguODE1CgkJCQljMC4zMjgtMTEuNzA3LDE2LjEwMi0xMS42NzEsMTYuMzQ4LDBDNDMuMjI5LDU5Ljg5NywzOS42MjIsNjMuODI0LDM1LjA1NSw2My44MjR6IE02NC4zMDQsNjMuODI0CgkJCQljLTQuNDg4LDAtOC4xNzQtMy45MjctOC4xNzQtOC44MTVjMC4zNi0xMS42ODQsMTUuOTM3LTExLjY4OSwxNi4zNDgsMEM3Mi40NzgsNTkuODk3LDY4Ljg3Miw2My44MjQsNjQuMzA0LDYzLjgyNHoiPjwvcGF0aD48L3N2Zz4=";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBpZD0iZGlzY29yZCI+PHBhdGggZmlsbD0iIzY2NjVkMiIgZD0iTTg1LjIyLDI0Ljk1OGMtMTEuNDU5LTguNTc1LTIyLjQzOC04LjMzNC0yMi40MzgtOC4zMzRsLTEuMTIyLDEuMjgyCgkJCQljMTMuNjIzLDQuMDg3LDE5Ljk1NCwxMC4wOTcsMTkuOTU0LDEwLjA5N2MtMTkuNDkxLTEwLjczMS00NC4zMTctMTAuNjU0LTY0LjU5LDBjMCwwLDYuNTcxLTYuMzMxLDIwLjk5Ni0xMC40MThsLTAuODAxLTAuOTYyCgkJCQljMCwwLTEwLjg5OS0wLjI0LTIyLjQzOCw4LjMzNGMwLDAtMTEuNTQsMjAuNzU1LTExLjU0LDQ2LjMxOWMwLDAsNi43MzIsMTEuNTQsMjQuNDQyLDEyLjEwMWMwLDAsMi45NjUtMy41MjYsNS4zNjktNi41NzEKCQkJCWMtMTAuMTc3LTMuMDQ1LTE0LjAyNC05LjM3Ni0xNC4wMjQtOS4zNzZjNi4zOTQsNC4wMDEsMTIuODU5LDYuNTA1LDIwLjkxNiw4LjA5NGMxMy4xMDgsMi42OTgsMjkuNDEzLTAuMDc2LDQxLjU5MS04LjA5NAoJCQkJYzAsMC00LjAwNyw2LjQ5MS0xNC41MDUsOS40NTZjMi40MDQsMi45NjUsNS4yODksNi40MTEsNS4yODksNi40MTFjMTcuNzEtMC41NjEsMjQuNDQxLTEyLjEwMSwyNC40NDEtMTIuMDIKCQkJCUM5Ni43NTksNDUuNzEzLDg1LjIyLDI0Ljk1OCw4NS4yMiwyNC45NTh6IE0zNS4wNTUsNjMuODI0Yy00LjQ4OCwwLTguMTc0LTMuOTI3LTguMTc0LTguODE1CgkJCQljMC4zMjgtMTEuNzA3LDE2LjEwMi0xMS42NzEsMTYuMzQ4LDBDNDMuMjI5LDU5Ljg5NywzOS42MjIsNjMuODI0LDM1LjA1NSw2My44MjR6IE02NC4zMDQsNjMuODI0CgkJCQljLTQuNDg4LDAtOC4xNzQtMy45MjctOC4xNzQtOC44MTVjMC4zNi0xMS42ODQsMTUuOTM3LTExLjY4OSwxNi4zNDgsMEM3Mi40NzgsNTkuODk3LDY4Ljg3Miw2My44MjQsNjQuMzA0LDYzLjgyNHoiPjwvcGF0aD48L3N2Zz4=";
|
||||||
export const coinbaseIconUri =
|
const coinbaseIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgdmlld0JveD0iMCAwIDU1NiA1NTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNDhfNSkiPgo8cGF0aCBkPSJNMjc4IDBDNDMxLjUzMyAwIDU1NiAxMjQuNDY3IDU1NiAyNzhDNTU2IDQzMS41MzMgNDMxLjUzMyA1NTYgMjc4IDU1NkMxMjQuNDY3IDU1NiAwIDQzMS41MzMgMCAyNzhDMCAxMjQuNDY3IDEyNC40NjcgMCAyNzggMFoiIGZpbGw9IiMwMDUyRkYiLz4KPHBhdGggZD0iTTI3OC40ODIgMzc1LjE5QzIyNC40OSAzNzUuMTkgMTgwLjg2MiAzMzEuNDEgMTgwLjg2MiAyNzcuNUMxODAuODYyIDIyMy41OSAyMjQuNjEgMTc5LjgxIDI3OC40ODIgMTc5LjgxQzMyNi44MSAxNzkuODEgMzY2Ljk0MyAyMTUuMDI3IDM3NC42NTYgMjYxLjIxOEg0NzNDNDY0LjY4NCAxNjAuODc1IDM4MC44MDMgODIgMjc4LjM2MiA4MkMxNzAuNDk3IDgyIDgzIDE2OS41NTkgODMgMjc3LjVDODMgMzg1LjQ0MSAxNzAuNDk3IDQ3MyAyNzguMzYyIDQ3M0MzODAuODAzIDQ3MyA0NjQuNjg0IDM5NC4xMjUgNDczIDI5My43ODJIMzc0LjUzNkMzNjYuODIzIDMzOS45NzMgMzI2LjgxIDM3NS4xOSAyNzguNDgyIDM3NS4xOVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ4XzUiPgo8cmVjdCB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgdmlld0JveD0iMCAwIDU1NiA1NTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNDhfNSkiPgo8cGF0aCBkPSJNMjc4IDBDNDMxLjUzMyAwIDU1NiAxMjQuNDY3IDU1NiAyNzhDNTU2IDQzMS41MzMgNDMxLjUzMyA1NTYgMjc4IDU1NkMxMjQuNDY3IDU1NiAwIDQzMS41MzMgMCAyNzhDMCAxMjQuNDY3IDEyNC40NjcgMCAyNzggMFoiIGZpbGw9IiMwMDUyRkYiLz4KPHBhdGggZD0iTTI3OC40ODIgMzc1LjE5QzIyNC40OSAzNzUuMTkgMTgwLjg2MiAzMzEuNDEgMTgwLjg2MiAyNzcuNUMxODAuODYyIDIyMy41OSAyMjQuNjEgMTc5LjgxIDI3OC40ODIgMTc5LjgxQzMyNi44MSAxNzkuODEgMzY2Ljk0MyAyMTUuMDI3IDM3NC42NTYgMjYxLjIxOEg0NzNDNDY0LjY4NCAxNjAuODc1IDM4MC44MDMgODIgMjc4LjM2MiA4MkMxNzAuNDk3IDgyIDgzIDE2OS41NTkgODMgMjc3LjVDODMgMzg1LjQ0MSAxNzAuNDk3IDQ3MyAyNzguMzYyIDQ3M0MzODAuODAzIDQ3MyA0NjQuNjg0IDM5NC4xMjUgNDczIDI5My43ODJIMzc0LjUzNkMzNjYuODIzIDMzOS45NzMgMzI2LjgxIDM3NS4xOSAyNzguNDgyIDM3NS4xOVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ4XzUiPgo8cmVjdCB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
||||||
export const lineIconUri =
|
const lineIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiB2aWV3Qm94PSIwIDAgMzIwIDMyMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwNmM3NTU7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMSU5FX0xPR08iIGRhdGEtbmFtZT0iTElORSBMT0dPIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iNzIuMTQiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNjYuNjYsMTQ0LjkyYzAtNDcuNzQtNDcuODYtODYuNTgtMTA2LjY5LTg2LjU4UzUzLjI4LDk3LjE4LDUzLjI4LDE0NC45MmMwLDQyLjgsMzgsNzguNjUsODkuMjIsODUuNDIsMy40OC43NSw4LjIxLDIuMjksOS40LDUuMjYsMS4wOCwyLjcuNzEsNi45My4zNSw5LjY1LDAsMC0xLjI1LDcuNTMtMS41Miw5LjEzLS40NywyLjctMi4xNSwxMC41NSw5LjI0LDUuNzZzNjEuNDQtMzYuMTgsODMuODItNjEuOTVoMEMyNTkuMjUsMTgxLjI0LDI2Ni42NiwxNjQsMjY2LjY2LDE0NC45MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzEuMTYsMTcyLjQ5aC0zMGEyLDIsMCwwLDEtMi0ydjBoMFYxMjMuOTRoMHYwYTIsMiwwLDAsMSwyLTJoMzBhMiwyLDAsMCwxLDIsMnY3LjU3YTIsMiwwLDAsMS0yLDJIMjEwLjc5djcuODVoMjAuMzdhMiwyLDAsMCwxLDIsMlYxNTFhMiwyLDAsMCwxLTIsMkgyMTAuNzl2Ny44NmgyMC4zN2EyLDIsMCwwLDEsMiwydjcuNTZBMiwyLDAsMCwxLDIzMS4xNiwxNzIuNDlaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIwLjI5LDE3Mi40OWEyLDIsMCwwLDAsMi0ydi03LjU2YTIsMiwwLDAsMC0yLTJIOTkuOTJ2LTM3YTIsMiwwLDAsMC0yLTJIOTAuMzJhMiwyLDAsMCwwLTIsMnY0Ni41M2gwdjBhMiwyLDAsMCwwLDIsMmgzMFoiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEyOC43MyIgeT0iMTIxLjg1IiB3aWR0aD0iMTEuNjQiIGhlaWdodD0iNTAuNjQiIHJ4PSIyLjA0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg5Ljg0LDEyMS44NWgtNy41NmEyLDIsMCwwLDAtMiwydjI3LjY2bC0yMS4zLTI4Ljc3YTEuMiwxLjIsMCwwLDAtLjE3LS4yMXYwbC0uMTItLjEyLDAsMC0uMTEtLjA5LS4wNiwwLS4xMS0uMDgtLjA2LDAtLjExLS4wNi0uMDcsMC0uMTEsMC0uMDcsMC0uMTIsMC0uMDgsMC0uMTIsMGgtLjA4bC0uMTEsMGgtNy43MWEyLDIsMCwwLDAtMiwydjQ2LjU2YTIsMiwwLDAsMCwyLDJoNy41N2EyLDIsMCwwLDAsMi0yVjE0Mi44MWwyMS4zMywyOC44YTIsMiwwLDAsMCwuNTIuNTJoMGwuMTIuMDguMDYsMCwuMS4wNS4xLDAsLjA3LDAsLjE0LDBoMGEyLjQyLDIuNDIsMCwwLDAsLjU0LjA3aDcuNTJhMiwyLDAsMCwwLDItMlYxMjMuODlBMiwyLDAsMCwwLDE4OS44NCwxMjEuODVaIi8+PC9nPjwvZz48L3N2Zz4=";
|
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiB2aWV3Qm94PSIwIDAgMzIwIDMyMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwNmM3NTU7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMSU5FX0xPR08iIGRhdGEtbmFtZT0iTElORSBMT0dPIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iNzIuMTQiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNjYuNjYsMTQ0LjkyYzAtNDcuNzQtNDcuODYtODYuNTgtMTA2LjY5LTg2LjU4UzUzLjI4LDk3LjE4LDUzLjI4LDE0NC45MmMwLDQyLjgsMzgsNzguNjUsODkuMjIsODUuNDIsMy40OC43NSw4LjIxLDIuMjksOS40LDUuMjYsMS4wOCwyLjcuNzEsNi45My4zNSw5LjY1LDAsMC0xLjI1LDcuNTMtMS41Miw5LjEzLS40NywyLjctMi4xNSwxMC41NSw5LjI0LDUuNzZzNjEuNDQtMzYuMTgsODMuODItNjEuOTVoMEMyNTkuMjUsMTgxLjI0LDI2Ni42NiwxNjQsMjY2LjY2LDE0NC45MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzEuMTYsMTcyLjQ5aC0zMGEyLDIsMCwwLDEtMi0ydjBoMFYxMjMuOTRoMHYwYTIsMiwwLDAsMSwyLTJoMzBhMiwyLDAsMCwxLDIsMnY3LjU3YTIsMiwwLDAsMS0yLDJIMjEwLjc5djcuODVoMjAuMzdhMiwyLDAsMCwxLDIsMlYxNTFhMiwyLDAsMCwxLTIsMkgyMTAuNzl2Ny44NmgyMC4zN2EyLDIsMCwwLDEsMiwydjcuNTZBMiwyLDAsMCwxLDIzMS4xNiwxNzIuNDlaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIwLjI5LDE3Mi40OWEyLDIsMCwwLDAsMi0ydi03LjU2YTIsMiwwLDAsMC0yLTJIOTkuOTJ2LTM3YTIsMiwwLDAsMC0yLTJIOTAuMzJhMiwyLDAsMCwwLTIsMnY0Ni41M2gwdjBhMiwyLDAsMCwwLDIsMmgzMFoiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEyOC43MyIgeT0iMTIxLjg1IiB3aWR0aD0iMTEuNjQiIGhlaWdodD0iNTAuNjQiIHJ4PSIyLjA0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg5Ljg0LDEyMS44NWgtNy41NmEyLDIsMCwwLDAtMiwydjI3LjY2bC0yMS4zLTI4Ljc3YTEuMiwxLjIsMCwwLDAtLjE3LS4yMXYwbC0uMTItLjEyLDAsMC0uMTEtLjA5LS4wNiwwLS4xMS0uMDgtLjA2LDAtLjExLS4wNi0uMDcsMC0uMTEsMC0uMDcsMC0uMTIsMC0uMDgsMC0uMTIsMGgtLjA4bC0uMTEsMGgtNy43MWEyLDIsMCwwLDAtMiwydjQ2LjU2YTIsMiwwLDAsMCwyLDJoNy41N2EyLDIsMCwwLDAsMi0yVjE0Mi44MWwyMS4zMywyOC44YTIsMiwwLDAsMCwuNTIuNTJoMGwuMTIuMDguMDYsMCwuMS4wNS4xLDAsLjA3LDAsLjE0LDBoMGEyLjQyLDIuNDIsMCwwLDAsLjU0LjA3aDcuNTJhMiwyLDAsMCwwLDItMlYxMjMuODlBMiwyLDAsMCwwLDE4OS44NCwxMjEuODVaIi8+PC9nPjwvZz48L3N2Zz4=";
|
||||||
export const farcasterIconUri =
|
const farcasterIconUri =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiByeD0iMjAwIiBmaWxsPSIjODU1RENEIi8+CjxwYXRoIGQ9Ik0yNTcuNzc4IDE1NS41NTZINzQyLjIyMlY4NDQuNDQ0SDY3MS4xMTFWNTI4Ljg4OUg2NzAuNDE0QzY2Mi41NTQgNDQxLjY3NyA1ODkuMjU4IDM3My4zMzMgNTAwIDM3My4zMzNDNDEwLjc0MiAzNzMuMzMzIDMzNy40NDYgNDQxLjY3NyAzMjkuNTg2IDUyOC44ODlIMzI4Ljg4OVY4NDQuNDQ0SDI1Ny43NzhWMTU1LjU1NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMjguODg5IDI1My4zMzNMMTU3Ljc3OCAzNTEuMTExSDE4Mi4yMjJWNzQ2LjY2N0MxNjkuOTQ5IDc0Ni42NjcgMTYwIDc1Ni42MTYgMTYwIDc2OC44ODlWNzk1LjU1NkgxNTUuNTU2QzE0My4yODMgNzk1LjU1NiAxMzMuMzMzIDgwNS41MDUgMTMzLjMzMyA4MTcuNzc4Vjg0NC40NDRIMzgyLjIyMlY4MTcuNzc4QzM4Mi4yMjIgODA1LjUwNSAzNzIuMjczIDc5NS41NTYgMzYwIDc5NS41NTZIMzU1LjU1NlY3NjguODg5QzM1NS41NTYgNzU2LjYxNiAzNDUuNjA2IDc0Ni42NjcgMzMzLjMzMyA3NDYuNjY3SDMwNi42NjdWMjUzLjMzM0gxMjguODg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTY3NS41NTYgNzQ2LjY2N0M2NjMuMjgzIDc0Ni42NjcgNjUzLjMzMyA3NTYuNjE2IDY1My4zMzMgNzY4Ljg4OVY3OTUuNTU2SDY0OC44ODlDNjM2LjYxNiA3OTUuNTU2IDYyNi42NjcgODA1LjUwNSA2MjYuNjY3IDgxNy43NzhWODQ0LjQ0NEg4NzUuNTU2VjgxNy43NzhDODc1LjU1NiA4MDUuNTA1IDg2NS42MDYgNzk1LjU1NiA4NTMuMzMzIDc5NS41NTZIODQ4Ljg4OVY3NjguODg5Qzg0OC44ODkgNzU2LjYxNiA4MzguOTQgNzQ2LjY2NyA4MjYuNjY3IDc0Ni42NjdWMzUxLjExMUg4NTEuMTExTDg4MCAyNTMuMzMzSDcwMi4yMjJWNzQ2LjY2N0g2NzUuNTU2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiByeD0iMjAwIiBmaWxsPSIjODU1RENEIi8+CjxwYXRoIGQ9Ik0yNTcuNzc4IDE1NS41NTZINzQyLjIyMlY4NDQuNDQ0SDY3MS4xMTFWNTI4Ljg4OUg2NzAuNDE0QzY2Mi41NTQgNDQxLjY3NyA1ODkuMjU4IDM3My4zMzMgNTAwIDM3My4zMzNDNDEwLjc0MiAzNzMuMzMzIDMzNy40NDYgNDQxLjY3NyAzMjkuNTg2IDUyOC44ODlIMzI4Ljg4OVY4NDQuNDQ0SDI1Ny43NzhWMTU1LjU1NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMjguODg5IDI1My4zMzNMMTU3Ljc3OCAzNTEuMTExSDE4Mi4yMjJWNzQ2LjY2N0MxNjkuOTQ5IDc0Ni42NjcgMTYwIDc1Ni42MTYgMTYwIDc2OC44ODlWNzk1LjU1NkgxNTUuNTU2QzE0My4yODMgNzk1LjU1NiAxMzMuMzMzIDgwNS41MDUgMTMzLjMzMyA4MTcuNzc4Vjg0NC40NDRIMzgyLjIyMlY4MTcuNzc4QzM4Mi4yMjIgODA1LjUwNSAzNzIuMjczIDc5NS41NTYgMzYwIDc5NS41NTZIMzU1LjU1NlY3NjguODg5QzM1NS41NTYgNzU2LjYxNiAzNDUuNjA2IDc0Ni42NjcgMzMzLjMzMyA3NDYuNjY3SDMwNi42NjdWMjUzLjMzM0gxMjguODg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTY3NS41NTYgNzQ2LjY2N0M2NjMuMjgzIDc0Ni42NjcgNjUzLjMzMyA3NTYuNjE2IDY1My4zMzMgNzY4Ljg4OVY3OTUuNTU2SDY0OC44ODlDNjM2LjYxNiA3OTUuNTU2IDYyNi42NjcgODA1LjUwNSA2MjYuNjY3IDgxNy43NzhWODQ0LjQ0NEg4NzUuNTU2VjgxNy43NzhDODc1LjU1NiA4MDUuNTA1IDg2NS42MDYgNzk1LjU1NiA4NTMuMzMzIDc5NS41NTZIODQ4Ljg4OVY3NjguODg5Qzg0OC44ODkgNzU2LjYxNiA4MzguOTQgNzQ2LjY2NyA4MjYuNjY3IDc0Ni42NjdWMzUxLjExMUg4NTEuMTExTDg4MCAyNTMuMzMzSDcwMi4yMjJWNzQ2LjY2N0g2NzUuNTU2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
||||||
export const telegramIconUri =
|
const telegramIconUri =
|
||||||
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwMHB4IiBoZWlnaHQ9IjEwMDBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTMuMiAoNzI2NDMpIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkFydGJvYXJkPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9Ijk5LjI1ODM0MDQlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyQUFCRUUiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyOUVEOSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJBcnRib2FyZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgY3g9IjUwMCIgY3k9IjUwMCIgcj0iNTAwIj48L2NpcmNsZT4KICAgICAgICA8cGF0aCBkPSJNMjI2LjMyODQxOSw0OTQuNzIyMDY5IEMzNzIuMDg4NTczLDQzMS4yMTY2ODUgNDY5LjI4NDgzOSwzODkuMzUwMDQ5IDUxNy45MTcyMTYsMzY5LjEyMjE2MSBDNjU2Ljc3MjUzNSwzMTEuMzY3NDMgNjg1LjYyNTQ4MSwzMDEuMzM0ODE1IDcwNC40MzE0MjcsMzAxLjAwMzUzMiBDNzA4LjU2NzYyMSwzMDAuOTMwNjcgNzE3LjgxNTgzOSwzMDEuOTU1NzQzIDcyMy44MDY0NDYsMzA2LjgxNjcwNyBDNzI4Ljg2NDc5NywzMTAuOTIxMjEgNzMwLjI1NjU1MiwzMTYuNDY1ODEgNzMwLjkyMjU1MSwzMjAuMzU3MzI5IEM3MzEuNTg4NTUxLDMyNC4yNDg4NDggNzMyLjQxNzg3OSwzMzMuMTEzODI4IDczMS43NTg2MjYsMzQwLjA0MDY2NiBDNzI0LjIzNDAwNyw0MTkuMTAyNDg2IDY5MS42NzUxMDQsNjEwLjk2NDY3NCA2NzUuMTEwOTgyLDY5OS41MTUyNjcgQzY2OC4xMDIwOCw3MzYuOTg0MzQyIDY1NC4zMDEzMzYsNzQ5LjU0NzUzMiA2NDAuOTQwNjE4LDc1MC43NzcwMDYgQzYxMS45MDQ2ODQsNzUzLjQ0ODkzOCA1ODkuODU2MTE1LDczMS41ODgwMzUgNTYxLjczMzM5Myw3MTMuMTUzMjM3IEM1MTcuNzI2ODg2LDY4NC4zMDY0MTYgNDkyLjg2NjAwOSw2NjYuMzQ5MTgxIDQ1MC4xNTAwNzQsNjM4LjIwMDAxMyBDNDAwLjc4NDQyLDYwNS42Njg3OCA0MzIuNzg2MTE5LDU4Ny43ODkwNDggNDYwLjkxOTQ2Miw1NTguNTY4NTYzIEM0NjguMjgyMDkxLDU1MC45MjE0MjMgNTk2LjIxNTA4LDQzNC41NTY0NzkgNTk4LjY5MTIyNyw0MjQuMDAwMzU1IEM1OTkuMDAwOTEsNDIyLjY4MDEzNSA1OTkuMjg4MzEyLDQxNy43NTg5ODEgNTk2LjM2NDc0LDQxNS4xNjA0MzEgQzU5My40NDExNjgsNDEyLjU2MTg4MSA1ODkuMTI2MjI5LDQxMy40NTA0ODQgNTg2LjAxMjQ0OCw0MTQuMTU3MTk4IEM1ODEuNTk4NzU4LDQxNS4xNTg5NDMgNTExLjI5Nzc5Myw0NjEuNjI1Mjc0IDM3NS4xMDk1NTMsNTUzLjU1NjE4OSBDMzU1LjE1NDg1OCw1NjcuMjU4NjIzIDMzNy4wODA1MTUsNTczLjkzNDkwOCAzMjAuODg2NTI0LDU3My41ODUwNDYgQzMwMy4wMzM5NDgsNTczLjE5OTM1MSAyNjguNjkyNzU0LDU2My40OTA5MjggMjQzLjE2MzYwNiw1NTUuMTkyNDA4IEMyMTEuODUxMDY3LDU0NS4wMTM5MzYgMTg2Ljk2NDQ4NCw1MzkuNjMyNTA0IDE4OS4xMzE1NDcsNTIyLjM0NjMwOSBDMTkwLjI2MDI4Nyw1MTMuMzQyNTg5IDIwMi42NTkyNDQsNTA0LjEzNDUwOSAyMjYuMzI4NDE5LDQ5NC43MjIwNjkgWiIgaWQ9IlBhdGgtMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=";
|
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwMHB4IiBoZWlnaHQ9IjEwMDBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTMuMiAoNzI2NDMpIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkFydGJvYXJkPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9Ijk5LjI1ODM0MDQlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyQUFCRUUiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyOUVEOSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJBcnRib2FyZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgY3g9IjUwMCIgY3k9IjUwMCIgcj0iNTAwIj48L2NpcmNsZT4KICAgICAgICA8cGF0aCBkPSJNMjI2LjMyODQxOSw0OTQuNzIyMDY5IEMzNzIuMDg4NTczLDQzMS4yMTY2ODUgNDY5LjI4NDgzOSwzODkuMzUwMDQ5IDUxNy45MTcyMTYsMzY5LjEyMjE2MSBDNjU2Ljc3MjUzNSwzMTEuMzY3NDMgNjg1LjYyNTQ4MSwzMDEuMzM0ODE1IDcwNC40MzE0MjcsMzAxLjAwMzUzMiBDNzA4LjU2NzYyMSwzMDAuOTMwNjcgNzE3LjgxNTgzOSwzMDEuOTU1NzQzIDcyMy44MDY0NDYsMzA2LjgxNjcwNyBDNzI4Ljg2NDc5NywzMTAuOTIxMjEgNzMwLjI1NjU1MiwzMTYuNDY1ODEgNzMwLjkyMjU1MSwzMjAuMzU3MzI5IEM3MzEuNTg4NTUxLDMyNC4yNDg4NDggNzMyLjQxNzg3OSwzMzMuMTEzODI4IDczMS43NTg2MjYsMzQwLjA0MDY2NiBDNzI0LjIzNDAwNyw0MTkuMTAyNDg2IDY5MS42NzUxMDQsNjEwLjk2NDY3NCA2NzUuMTEwOTgyLDY5OS41MTUyNjcgQzY2OC4xMDIwOCw3MzYuOTg0MzQyIDY1NC4zMDEzMzYsNzQ5LjU0NzUzMiA2NDAuOTQwNjE4LDc1MC43NzcwMDYgQzYxMS45MDQ2ODQsNzUzLjQ0ODkzOCA1ODkuODU2MTE1LDczMS41ODgwMzUgNTYxLjczMzM5Myw3MTMuMTUzMjM3IEM1MTcuNzI2ODg2LDY4NC4zMDY0MTYgNDkyLjg2NjAwOSw2NjYuMzQ5MTgxIDQ1MC4xNTAwNzQsNjM4LjIwMDAxMyBDNDAwLjc4NDQyLDYwNS42Njg3OCA0MzIuNzg2MTE5LDU4Ny43ODkwNDggNDYwLjkxOTQ2Miw1NTguNTY4NTYzIEM0NjguMjgyMDkxLDU1MC45MjE0MjMgNTk2LjIxNTA4LDQzNC41NTY0NzkgNTk4LjY5MTIyNyw0MjQuMDAwMzU1IEM1OTkuMDAwOTEsNDIyLjY4MDEzNSA1OTkuMjg4MzEyLDQxNy43NTg5ODEgNTk2LjM2NDc0LDQxNS4xNjA0MzEgQzU5My40NDExNjgsNDEyLjU2MTg4MSA1ODkuMTI2MjI5LDQxMy40NTA0ODQgNTg2LjAxMjQ0OCw0MTQuMTU3MTk4IEM1ODEuNTk4NzU4LDQxNS4xNTg5NDMgNTExLjI5Nzc5Myw0NjEuNjI1Mjc0IDM3NS4xMDk1NTMsNTUzLjU1NjE4OSBDMzU1LjE1NDg1OCw1NjcuMjU4NjIzIDMzNy4wODA1MTUsNTczLjkzNDkwOCAzMjAuODg2NTI0LDU3My41ODUwNDYgQzMwMy4wMzM5NDgsNTczLjE5OTM1MSAyNjguNjkyNzU0LDU2My40OTA5MjggMjQzLjE2MzYwNiw1NTUuMTkyNDA4IEMyMTEuODUxMDY3LDU0NS4wMTM5MzYgMTg2Ljk2NDQ4NCw1MzkuNjMyNTA0IDE4OS4xMzE1NDcsNTIyLjM0NjMwOSBDMTkwLjI2MDI4Nyw1MTMuMzQyNTg5IDIwMi42NTkyNDQsNTA0LjEzNDUwOSAyMjYuMzI4NDE5LDQ5NC43MjIwNjkgWiIgaWQ9IlBhdGgtMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=";
|
||||||
export const microsoftIconUri =
|
const xIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICB2aWV3Qm94PSIwIDAgNDggNDgiIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiPjxwYXRoIGZpbGw9IiNmZjU3MjIiIGQ9Ik02IDZIMjJWMjJINnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMTQgMTQpIi8+PHBhdGggZmlsbD0iIzRjYWY1MCIgZD0iTTI2IDZINDJWMjJIMjZ6IiB0cmFuc2Zvcm09InJvdGF0ZSgtMTgwIDM0IDE0KSIvPjxwYXRoIGZpbGw9IiNmZmMxMDciIGQ9Ik0yNiAyNkg0MlY0MkgyNnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMzQgMzQpIi8+PHBhdGggZmlsbD0iIzAzYTlmNCIgZD0iTTYgMjZIMjJWNDJINnoiIHRyYW5zZm9ybT0icm90YXRlKC0xODAgMTQgMzQpIi8+PC9zdmc+";
|
|
||||||
|
|
||||||
export const xIcon =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iMjQiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNzcuMzE1IDE0NS4zMzVMMjQ1LjA2OCA2N0gyMjkuMDEzTDE3MC4xODIgMTM1LjAxN0wxMjMuMTk1IDY3SDY5TDE0MC4wNTUgMTY5Ljg1NEw2OSAyNTJIODUuMDU2M0wxNDcuMTgzIDE4MC4xNzJMMTk2LjgwNSAyNTJIMjUxTDE3Ny4zMTEgMTQ1LjMzNUgxNzcuMzE1Wk0xNTUuMzIzIDE3MC43NkwxNDguMTI0IDE2MC41MThMOTAuODQxNyA3OS4wMjJIMTE1LjUwM0wxNjEuNzMxIDE0NC43OTJMMTY4LjkzIDE1NS4wMzRMMjI5LjAyIDI0MC41MjVIMjA0LjM1OUwxNTUuMzIzIDE3MC43NjRWMTcwLjc2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iMjQiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNzcuMzE1IDE0NS4zMzVMMjQ1LjA2OCA2N0gyMjkuMDEzTDE3MC4xODIgMTM1LjAxN0wxMjMuMTk1IDY3SDY5TDE0MC4wNTUgMTY5Ljg1NEw2OSAyNTJIODUuMDU2M0wxNDcuMTgzIDE4MC4xNzJMMTk2LjgwNSAyNTJIMjUxTDE3Ny4zMTEgMTQ1LjMzNUgxNzcuMzE1Wk0xNTUuMzIzIDE3MC43NkwxNDguMTI0IDE2MC41MThMOTAuODQxNyA3OS4wMjJIMTE1LjUwM0wxNjEuNzMxIDE0NC43OTJMMTY4LjkzIDE1NS4wMzRMMjI5LjAyIDI0MC41MjVIMjA0LjM1OUwxNTUuMzIzIDE3MC43NjRWMTcwLjc2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
||||||
|
|
||||||
export const emailIcon =
|
export const emailIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjMzMzUgMi42NjY1SDIuNjY2ODNDMS45MzA0NSAyLjY2NjUgMS4zMzM1IDMuMjYzNDYgMS4zMzM1IDMuOTk5ODRWMTEuOTk5OEMxLjMzMzUgMTIuNzM2MiAxLjkzMDQ1IDEzLjMzMzIgMi42NjY4MyAxMy4zMzMySDEzLjMzMzVDMTQuMDY5OSAxMy4zMzMyIDE0LjY2NjggMTIuNzM2MiAxNC42NjY4IDExLjk5OThWMy45OTk4NEMxNC42NjY4IDMuMjYzNDYgMTQuMDY5OSAyLjY2NjUgMTMuMzMzNSAyLjY2NjVaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQuNjY2OCA0LjY2NjVMOC42ODY4MyA4LjQ2NjVDOC40ODEwMSA4LjU5NTQ1IDguMjQzMDQgOC42NjM4NCA4LjAwMDE2IDguNjYzODRDNy43NTcyOCA4LjY2Mzg0IDcuNTE5MzEgOC41OTU0NSA3LjMxMzUgOC40NjY1TDEuMzMzNSA0LjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjMzMzUgMi42NjY1SDIuNjY2ODNDMS45MzA0NSAyLjY2NjUgMS4zMzM1IDMuMjYzNDYgMS4zMzM1IDMuOTk5ODRWMTEuOTk5OEMxLjMzMzUgMTIuNzM2MiAxLjkzMDQ1IDEzLjMzMzIgMi42NjY4MyAxMy4zMzMySDEzLjMzMzVDMTQuMDY5OSAxMy4zMzMyIDE0LjY2NjggMTIuNzM2MiAxNC42NjY4IDExLjk5OThWMy45OTk4NEMxNC42NjY4IDMuMjYzNDYgMTQuMDY5OSAyLjY2NjUgMTMuMzMzNSAyLjY2NjVaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQuNjY2OCA0LjY2NjVMOC42ODY4MyA4LjQ2NjVDOC40ODEwMSA4LjU5NTQ1IDguMjQzMDQgOC42NjM4NCA4LjAwMDE2IDguNjYzODRDNy43NTcyOCA4LjY2Mzg0IDcuNTE5MzEgOC41OTU0NSA3LjMxMzUgOC40NjY1TDEuMzMzNSA0LjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
||||||
|
|
||||||
export const phoneIcon =
|
export const phoneIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfNjMyKSI+CjxwYXRoIGQ9Ik0xNC42NjY5IDExLjI4MDJWMTMuMjgwMkMxNC42Njc3IDEzLjQ2NTkgMTQuNjI5NyAxMy42NDk3IDE0LjU1NTMgMTMuODE5OEMxNC40ODA5IDEzLjk4OTkgMTQuMzcxOCAxNC4xNDI2IDE0LjIzNSAxNC4yNjgxQzE0LjA5ODIgMTQuMzkzNyAxMy45MzY3IDE0LjQ4OTIgMTMuNzYwOCAxNC41NDg3QzEzLjU4NDkgMTQuNjA4MiAxMy4zOTg1IDE0LjYzMDMgMTMuMjEzNiAxNC42MTM2QzExLjE2MjIgMTQuMzkwNyA5LjE5MTYxIDEzLjY4OTcgNy40NjAyOCAxMi41NjY5QzUuODQ5NSAxMS41NDMzIDQuNDgzODQgMTAuMTc3NyAzLjQ2MDI4IDguNTY2ODlDMi4zMzM2IDYuODI3NyAxLjYzMjQ0IDQuODQ3NTYgMS40MTM2MSAyLjc4Njg5QzEuMzk2OTUgMi42MDI1NCAxLjQxODg2IDIuNDE2NzMgMS40Nzc5NSAyLjI0MTMxQzEuNTM3MDMgMi4wNjU4OSAxLjYzMTk5IDEuOTA0NjkgMS43NTY3OSAxLjc2Nzk3QzEuODgxNTkgMS42MzEyNiAyLjAzMzQ4IDEuNTIyMDMgMi4yMDI4MSAxLjQ0NzI0QzIuMzcyMTMgMS4zNzI0NSAyLjU1NTE3IDEuMzMzNzQgMi43NDAyOCAxLjMzMzU2SDQuNzQwMjhDNS4wNjM4MiAxLjMzMDM4IDUuMzc3NDggMS40NDQ5NSA1LjYyMjc5IDEuNjU1OTJDNS44NjgxIDEuODY2ODkgNi4wMjgzMyAyLjE1OTg2IDYuMDczNjEgMi40ODAyM0M2LjE1ODAzIDMuMTIwMjcgNi4zMTQ1OCAzLjc0ODcxIDYuNTQwMjggNC4zNTM1NkM2LjYyOTk4IDQuNTkyMTggNi42NDkzOSA0Ljg1MTUgNi41OTYyMiA1LjEwMDgxQzYuNTQzMDUgNS4zNTAxMiA2LjQxOTUyIDUuNTc4OTcgNi4yNDAyOCA1Ljc2MDIzTDUuMzkzNjEgNi42MDY4OUM2LjM0MjY1IDguMjc1OTIgNy43MjQ1OCA5LjY1Nzg2IDkuMzkzNjEgMTAuNjA2OUwxMC4yNDAzIDkuNzYwMjNDMTAuNDIxNSA5LjU4MDk5IDEwLjY1MDQgOS40NTc0NiAxMC44OTk3IDkuNDA0MjlDMTEuMTQ5IDkuMzUxMTIgMTEuNDA4MyA5LjM3MDUzIDExLjY0NjkgOS40NjAyM0MxMi4yNTE4IDkuNjg1OTMgMTIuODgwMiA5Ljg0MjQ4IDEzLjUyMDMgOS45MjY4OUMxMy44NDQxIDkuOTcyNTggMTQuMTM5OSAxMC4xMzU3IDE0LjM1MTMgMTAuMzg1MkMxNC41NjI3IDEwLjYzNDggMTQuNjc1MSAxMC45NTMzIDE0LjY2NjkgMTEuMjgwMloiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzYzMiI+CjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfNjMyKSI+CjxwYXRoIGQ9Ik0xNC42NjY5IDExLjI4MDJWMTMuMjgwMkMxNC42Njc3IDEzLjQ2NTkgMTQuNjI5NyAxMy42NDk3IDE0LjU1NTMgMTMuODE5OEMxNC40ODA5IDEzLjk4OTkgMTQuMzcxOCAxNC4xNDI2IDE0LjIzNSAxNC4yNjgxQzE0LjA5ODIgMTQuMzkzNyAxMy45MzY3IDE0LjQ4OTIgMTMuNzYwOCAxNC41NDg3QzEzLjU4NDkgMTQuNjA4MiAxMy4zOTg1IDE0LjYzMDMgMTMuMjEzNiAxNC42MTM2QzExLjE2MjIgMTQuMzkwNyA5LjE5MTYxIDEzLjY4OTcgNy40NjAyOCAxMi41NjY5QzUuODQ5NSAxMS41NDMzIDQuNDgzODQgMTAuMTc3NyAzLjQ2MDI4IDguNTY2ODlDMi4zMzM2IDYuODI3NyAxLjYzMjQ0IDQuODQ3NTYgMS40MTM2MSAyLjc4Njg5QzEuMzk2OTUgMi42MDI1NCAxLjQxODg2IDIuNDE2NzMgMS40Nzc5NSAyLjI0MTMxQzEuNTM3MDMgMi4wNjU4OSAxLjYzMTk5IDEuOTA0NjkgMS43NTY3OSAxLjc2Nzk3QzEuODgxNTkgMS42MzEyNiAyLjAzMzQ4IDEuNTIyMDMgMi4yMDI4MSAxLjQ0NzI0QzIuMzcyMTMgMS4zNzI0NSAyLjU1NTE3IDEuMzMzNzQgMi43NDAyOCAxLjMzMzU2SDQuNzQwMjhDNS4wNjM4MiAxLjMzMDM4IDUuMzc3NDggMS40NDQ5NSA1LjYyMjc5IDEuNjU1OTJDNS44NjgxIDEuODY2ODkgNi4wMjgzMyAyLjE1OTg2IDYuMDczNjEgMi40ODAyM0M2LjE1ODAzIDMuMTIwMjcgNi4zMTQ1OCAzLjc0ODcxIDYuNTQwMjggNC4zNTM1NkM2LjYyOTk4IDQuNTkyMTggNi42NDkzOSA0Ljg1MTUgNi41OTYyMiA1LjEwMDgxQzYuNTQzMDUgNS4zNTAxMiA2LjQxOTUyIDUuNTc4OTcgNi4yNDAyOCA1Ljc2MDIzTDUuMzkzNjEgNi42MDY4OUM2LjM0MjY1IDguMjc1OTIgNy43MjQ1OCA5LjY1Nzg2IDkuMzkzNjEgMTAuNjA2OUwxMC4yNDAzIDkuNzYwMjNDMTAuNDIxNSA5LjU4MDk5IDEwLjY1MDQgOS40NTc0NiAxMC44OTk3IDkuNDA0MjlDMTEuMTQ5IDkuMzUxMTIgMTEuNDA4MyA5LjM3MDUzIDExLjY0NjkgOS40NjAyM0MxMi4yNTE4IDkuNjg1OTMgMTIuODgwMiA5Ljg0MjQ4IDEzLjUyMDMgOS45MjY4OUMxMy44NDQxIDkuOTcyNTggMTQuMTM5OSAxMC4xMzU3IDE0LjM1MTMgMTAuMzg1MkMxNC41NjI3IDEwLjYzNDggMTQuNjc1MSAxMC45NTMzIDE0LjY2NjkgMTEuMjgwMloiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzYzMiI+CjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
||||||
|
|
||||||
export const genericTokenIcon =
|
export const genericTokenIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQwNDhfNDIzMSkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNTg0IDQuODU1NjZDNy43MTA2OSA0Ljc4MjUyIDcuODU0MzkgNC43NDQwMiA4LjAwMDY3IDQuNzQ0MDJDOC4xNDY5NSA0Ljc0NDAyIDguMjkwNjUgNC43ODI1MiA4LjQxNzM0IDQuODU1NjZMMTAuNTE1MyA2LjA2NjY2QzEwLjY0MiA2LjEzOTggMTAuNzQ3MiA2LjI0NSAxMC44MjA0IDYuMzcxNjhDMTAuODkzNSA2LjQ5ODM1IDEwLjkzMiA2LjY0MjA1IDEwLjkzMiA2Ljc4ODMzVjkuMjExQzEwLjkzMiA5LjM1NzI3IDEwLjg5MzUgOS41MDA5NyAxMC44MjA0IDkuNjI3NjVDMTAuNzQ3MiA5Ljc1NDMzIDEwLjY0MiA5Ljg1OTUzIDEwLjUxNTMgOS45MzI2Nkw4LjQxNzM0IDExLjE0NEM4LjI5MDY1IDExLjIxNzEgOC4xNDY5NSAxMS4yNTU2IDguMDAwNjcgMTEuMjU1NkM3Ljg1NDM5IDExLjI1NTYgNy43MTA2OSAxMS4yMTcxIDcuNTg0IDExLjE0NEw1LjQ4NiA5LjkzMjY2QzUuMzU5MzIgOS44NTk1MyA1LjI1NDEzIDkuNzU0MzMgNS4xODA5OSA5LjYyNzY1QzUuMTA3ODUgOS41MDA5NyA1LjA2OTM0IDkuMzU3MjcgNS4wNjkzNCA5LjIxMVY2Ljc4ODY2QzUuMDY5MjggNi42NDIzMyA1LjEwNzc2IDYuNDk4NTYgNS4xODA5IDYuMzcxODJDNS4yNTQwNSA2LjI0NTA4IDUuMzU5MjcgNi4xMzk4MyA1LjQ4NiA2LjA2NjY2TDcuNTg0IDQuODU1NjZaTTguMDg0IDUuNDMzQzguMDU4NjcgNS40MTgzNyA4LjAyOTkzIDUuNDEwNjcgOC4wMDA2NyA1LjQxMDY3QzcuOTcxNDEgNS40MTA2NyA3Ljk0MjY3IDUuNDE4MzcgNy45MTczNCA1LjQzM0w1LjgxOTM0IDYuNjQ0MzNDNS43OTQgNi42NTg5NiA1Ljc3Mjk2IDYuNjggNS43NTgzMyA2LjcwNTMzQzUuNzQzNyA2LjczMDY3IDUuNzM2IDYuNzU5NDEgNS43MzYgNi43ODg2NlY5LjIxMTMzQzUuNzM2IDkuMjQwNTkgNS43NDM3IDkuMjY5MzMgNS43NTgzMyA5LjI5NDY2QzUuNzcyOTYgOS4zMiA1Ljc5NCA5LjM0MTA0IDUuODE5MzQgOS4zNTU2Nkw3LjkxNzM0IDEwLjU2NjdDNy45NDI2NyAxMC41ODEzIDcuOTcxNDEgMTAuNTg5IDguMDAwNjcgMTAuNTg5QzguMDI5OTMgMTAuNTg5IDguMDU4NjcgMTAuNTgxMyA4LjA4NCAxMC41NjY3TDEwLjE4MiA5LjM1NTMzQzEwLjIwNzMgOS4zNDA3IDEwLjIyODQgOS4zMTk2NiAxMC4yNDMgOS4yOTQzM0MxMC4yNTc2IDkuMjY4OTkgMTAuMjY1MyA5LjI0MDI1IDEwLjI2NTMgOS4yMTFWNi43ODg2NkMxMC4yNjUzIDYuNzU5NDEgMTAuMjU3NiA2LjczMDY3IDEwLjI0MyA2LjcwNTMzQzEwLjIyODQgNi42OCAxMC4yMDczIDYuNjU4OTYgMTAuMTgyIDYuNjQ0MzNMOC4wODQgNS40MzNaIiBmaWxsPSIjNUM1QzVDIi8+CjwvZz4KPGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjcuNjkyMzEiIHN0cm9rZT0iIzVDNUM1QyIgc3Ryb2tlLXdpZHRoPSIwLjYxNTM4NSIvPgo8Y2lyY2xlIGN4PSI3Ljk5OTU1IiBjeT0iOC4wMDAwNCIgcj0iNS44NDYxNSIgc3Ryb2tlPSIjNUM1QzVDIiBzdHJva2Utd2lkdGg9IjAuNjE1Mzg1Ii8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQwNDhfNDIzMSI+CjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQwNDhfNDIzMSkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNTg0IDQuODU1NjZDNy43MTA2OSA0Ljc4MjUyIDcuODU0MzkgNC43NDQwMiA4LjAwMDY3IDQuNzQ0MDJDOC4xNDY5NSA0Ljc0NDAyIDguMjkwNjUgNC43ODI1MiA4LjQxNzM0IDQuODU1NjZMMTAuNTE1MyA2LjA2NjY2QzEwLjY0MiA2LjEzOTggMTAuNzQ3MiA2LjI0NSAxMC44MjA0IDYuMzcxNjhDMTAuODkzNSA2LjQ5ODM1IDEwLjkzMiA2LjY0MjA1IDEwLjkzMiA2Ljc4ODMzVjkuMjExQzEwLjkzMiA5LjM1NzI3IDEwLjg5MzUgOS41MDA5NyAxMC44MjA0IDkuNjI3NjVDMTAuNzQ3MiA5Ljc1NDMzIDEwLjY0MiA5Ljg1OTUzIDEwLjUxNTMgOS45MzI2Nkw4LjQxNzM0IDExLjE0NEM4LjI5MDY1IDExLjIxNzEgOC4xNDY5NSAxMS4yNTU2IDguMDAwNjcgMTEuMjU1NkM3Ljg1NDM5IDExLjI1NTYgNy43MTA2OSAxMS4yMTcxIDcuNTg0IDExLjE0NEw1LjQ4NiA5LjkzMjY2QzUuMzU5MzIgOS44NTk1MyA1LjI1NDEzIDkuNzU0MzMgNS4xODA5OSA5LjYyNzY1QzUuMTA3ODUgOS41MDA5NyA1LjA2OTM0IDkuMzU3MjcgNS4wNjkzNCA5LjIxMVY2Ljc4ODY2QzUuMDY5MjggNi42NDIzMyA1LjEwNzc2IDYuNDk4NTYgNS4xODA5IDYuMzcxODJDNS4yNTQwNSA2LjI0NTA4IDUuMzU5MjcgNi4xMzk4MyA1LjQ4NiA2LjA2NjY2TDcuNTg0IDQuODU1NjZaTTguMDg0IDUuNDMzQzguMDU4NjcgNS40MTgzNyA4LjAyOTkzIDUuNDEwNjcgOC4wMDA2NyA1LjQxMDY3QzcuOTcxNDEgNS40MTA2NyA3Ljk0MjY3IDUuNDE4MzcgNy45MTczNCA1LjQzM0w1LjgxOTM0IDYuNjQ0MzNDNS43OTQgNi42NTg5NiA1Ljc3Mjk2IDYuNjggNS43NTgzMyA2LjcwNTMzQzUuNzQzNyA2LjczMDY3IDUuNzM2IDYuNzU5NDEgNS43MzYgNi43ODg2NlY5LjIxMTMzQzUuNzM2IDkuMjQwNTkgNS43NDM3IDkuMjY5MzMgNS43NTgzMyA5LjI5NDY2QzUuNzcyOTYgOS4zMiA1Ljc5NCA5LjM0MTA0IDUuODE5MzQgOS4zNTU2Nkw3LjkxNzM0IDEwLjU2NjdDNy45NDI2NyAxMC41ODEzIDcuOTcxNDEgMTAuNTg5IDguMDAwNjcgMTAuNTg5QzguMDI5OTMgMTAuNTg5IDguMDU4NjcgMTAuNTgxMyA4LjA4NCAxMC41NjY3TDEwLjE4MiA5LjM1NTMzQzEwLjIwNzMgOS4zNDA3IDEwLjIyODQgOS4zMTk2NiAxMC4yNDMgOS4yOTQzM0MxMC4yNTc2IDkuMjY4OTkgMTAuMjY1MyA5LjI0MDI1IDEwLjI2NTMgOS4yMTFWNi43ODg2NkMxMC4yNjUzIDYuNzU5NDEgMTAuMjU3NiA2LjczMDY3IDEwLjI0MyA2LjcwNTMzQzEwLjIyODQgNi42OCAxMC4yMDczIDYuNjU4OTYgMTAuMTgyIDYuNjQ0MzNMOC4wODQgNS40MzNaIiBmaWxsPSIjNUM1QzVDIi8+CjwvZz4KPGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjcuNjkyMzEiIHN0cm9rZT0iIzVDNUM1QyIgc3Ryb2tlLXdpZHRoPSIwLjYxNTM4NSIvPgo8Y2lyY2xlIGN4PSI3Ljk5OTU1IiBjeT0iOC4wMDAwNCIgcj0iNS44NDYxNSIgc3Ryb2tlPSIjNUM1QzVDIiBzdHJva2Utd2lkdGg9IjAuNjE1Mzg1Ii8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQwNDhfNDIzMSI+CjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==";
|
||||||
|
const guestIcon =
|
||||||
export const guestIcon =
|
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDIxVjE5QzE5IDE3LjkzOTEgMTguNTc4NiAxNi45MjE3IDE3LjgyODQgMTYuMTcxNkMxNy4wNzgzIDE1LjQyMTQgMTYuMDYwOSAxNSAxNSAxNUg5QzcuOTM5MTMgMTUgNi45MjE3MiAxNS40MjE0IDYuMTcxNTcgMTYuMTcxNkM1LjQyMTQzIDE2LjkyMTcgNSAxNy45MzkxIDUgMTlWMjEiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyIDExQzE0LjIwOTEgMTEgMTYgOS4yMDkxNCAxNiA3QzE2IDQuNzkwODYgMTQuMjA5MSAzIDEyIDNDOS43OTA4NiAzIDggNC43OTA4NiA4IDdDOCA5LjIwOTE0IDkuNzkwODYgMTEgMTIgMTFaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDIxVjE5QzE5IDE3LjkzOTEgMTguNTc4NiAxNi45MjE3IDE3LjgyODQgMTYuMTcxNkMxNy4wNzgzIDE1LjQyMTQgMTYuMDYwOSAxNSAxNSAxNUg5QzcuOTM5MTMgMTUgNi45MjE3MiAxNS40MjE0IDYuMTcxNTcgMTYuMTcxNkM1LjQyMTQzIDE2LjkyMTcgNSAxNy45MzkxIDUgMTlWMjEiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyIDExQzE0LjIwOTEgMTEgMTYgOS4yMDkxNCAxNiA3QzE2IDQuNzkwODYgMTQuMjA5MSAzIDEyIDNDOS43OTA4NiAzIDggNC43OTA4NiA4IDdDOCA5LjIwOTE0IDkuNzkwODYgMTEgMTIgMTFaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
||||||
|
|
||||||
export const genericWalletIcon =
|
export const genericWalletIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2NjcgNC42NjY2N1YyLjY2NjY3QzEyLjY2NjcgMi40ODk4NiAxMi41OTY0IDIuMzIwMjkgMTIuNDcxNCAyLjE5NTI2QzEyLjM0NjQgMi4wNzAyNCAxMi4xNzY4IDIgMTIgMkgzLjMzMzMzQzIuOTc5NzEgMiAyLjY0MDU3IDIuMTQwNDggMi4zOTA1MiAyLjM5MDUyQzIuMTQwNDggMi42NDA1NyAyIDIuOTc5NzEgMiAzLjMzMzMzQzIgMy42ODY5NiAyLjE0MDQ4IDQuMDI2MDkgMi4zOTA1MiA0LjI3NjE0QzIuNjQwNTcgNC41MjYxOSAyLjk3OTcxIDQuNjY2NjcgMy4zMzMzMyA0LjY2NjY3SDEzLjMzMzNDMTMuNTEwMSA0LjY2NjY3IDEzLjY3OTcgNC43MzY5IDEzLjgwNDcgNC44NjE5M0MxMy45Mjk4IDQuOTg2OTUgMTQgNS4xNTY1MiAxNCA1LjMzMzMzVjhNMTQgOEgxMkMxMS42NDY0IDggMTEuMzA3MiA4LjE0MDQ4IDExLjA1NzIgOC4zOTA1MkMxMC44MDcxIDguNjQwNTcgMTAuNjY2NyA4Ljk3OTcxIDEwLjY2NjcgOS4zMzMzM0MxMC42NjY3IDkuNjg2OTYgMTAuODA3MSAxMC4wMjYxIDExLjA1NzIgMTAuMjc2MUMxMS4zMDcyIDEwLjUyNjIgMTEuNjQ2NCAxMC42NjY3IDEyIDEwLjY2NjdIMTRDMTQuMTc2OCAxMC42NjY3IDE0LjM0NjQgMTAuNTk2NCAxNC40NzE0IDEwLjQ3MTRDMTQuNTk2NCAxMC4zNDY0IDE0LjY2NjcgMTAuMTc2OCAxNC42NjY3IDEwVjguNjY2NjdDMTQuNjY2NyA4LjQ4OTg2IDE0LjU5NjQgOC4zMjAyOSAxNC40NzE0IDguMTk1MjZDMTQuMzQ2NCA4LjA3MDI0IDE0LjE3NjggOCAxNCA4WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMy4zMzM1VjEyLjY2NjhDMiAxMy4wMjA1IDIuMTQwNDggMTMuMzU5NiAyLjM5MDUyIDEzLjYwOTZDMi42NDA1NyAxMy44NTk3IDIuOTc5NzEgMTQuMDAwMiAzLjMzMzMzIDE0LjAwMDJIMTMuMzMzM0MxMy41MTAxIDE0LjAwMDIgMTMuNjc5NyAxMy45Mjk5IDEzLjgwNDcgMTMuODA0OUMxMy45Mjk4IDEzLjY3OTkgMTQgMTMuNTEwMyAxNCAxMy4zMzM1VjEwLjY2NjgiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2NjcgNC42NjY2N1YyLjY2NjY3QzEyLjY2NjcgMi40ODk4NiAxMi41OTY0IDIuMzIwMjkgMTIuNDcxNCAyLjE5NTI2QzEyLjM0NjQgMi4wNzAyNCAxMi4xNzY4IDIgMTIgMkgzLjMzMzMzQzIuOTc5NzEgMiAyLjY0MDU3IDIuMTQwNDggMi4zOTA1MiAyLjM5MDUyQzIuMTQwNDggMi42NDA1NyAyIDIuOTc5NzEgMiAzLjMzMzMzQzIgMy42ODY5NiAyLjE0MDQ4IDQuMDI2MDkgMi4zOTA1MiA0LjI3NjE0QzIuNjQwNTcgNC41MjYxOSAyLjk3OTcxIDQuNjY2NjcgMy4zMzMzMyA0LjY2NjY3SDEzLjMzMzNDMTMuNTEwMSA0LjY2NjY3IDEzLjY3OTcgNC43MzY5IDEzLjgwNDcgNC44NjE5M0MxMy45Mjk4IDQuOTg2OTUgMTQgNS4xNTY1MiAxNCA1LjMzMzMzVjhNMTQgOEgxMkMxMS42NDY0IDggMTEuMzA3MiA4LjE0MDQ4IDExLjA1NzIgOC4zOTA1MkMxMC44MDcxIDguNjQwNTcgMTAuNjY2NyA4Ljk3OTcxIDEwLjY2NjcgOS4zMzMzM0MxMC42NjY3IDkuNjg2OTYgMTAuODA3MSAxMC4wMjYxIDExLjA1NzIgMTAuMjc2MUMxMS4zMDcyIDEwLjUyNjIgMTEuNjQ2NCAxMC42NjY3IDEyIDEwLjY2NjdIMTRDMTQuMTc2OCAxMC42NjY3IDE0LjM0NjQgMTAuNTk2NCAxNC40NzE0IDEwLjQ3MTRDMTQuNTk2NCAxMC4zNDY0IDE0LjY2NjcgMTAuMTc2OCAxNC42NjY3IDEwVjguNjY2NjdDMTQuNjY2NyA4LjQ4OTg2IDE0LjU5NjQgOC4zMjAyOSAxNC40NzE0IDguMTk1MjZDMTQuMzQ2NCA4LjA3MDI0IDE0LjE3NjggOCAxNCA4WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMy4zMzM1VjEyLjY2NjhDMiAxMy4wMjA1IDIuMTQwNDggMTMuMzU5NiAyLjM5MDUyIDEzLjYwOTZDMi42NDA1NyAxMy44NTk3IDIuOTc5NzEgMTQuMDAwMiAzLjMzMzMzIDE0LjAwMDJIMTMuMzMzM0MxMy41MTAxIDE0LjAwMDIgMTMuNjc5NyAxMy45Mjk5IDEzLjgwNDcgMTMuODA0OUMxMy45Mjk4IDEzLjY3OTkgMTQgMTMuNTEwMyAxNCAxMy4zMzM1VjEwLjY2NjgiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";
|
||||||
|
|
||||||
export const passkeyIcon =
|
export const passkeyIcon =
|
||||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfMzIpIj4KPHBhdGggZD0iTTcuOTk5NTkgNi42NjY1QzcuNjQ1OTYgNi42NjY1IDcuMzA2ODMgNi44MDY5OCA3LjA1Njc4IDcuMDU3MDNDNi44MDY3MyA3LjMwNzA4IDYuNjY2MjUgNy42NDYyMiA2LjY2NjI1IDcuOTk5ODRDNi42NjYyNSA4LjY3OTg0IDYuNTk5NTkgOS42NzMxNyA2LjQ5MjkyIDEwLjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOS4zMzI5MyA4Ljc0NjU4QzkuMzMyOTMgMTAuMzMzMiA5LjMzMjkzIDEyLjk5OTkgOC42NjYyNiAxNC42NjY2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTExLjUyNzMgMTQuMDEzM0MxMS42MDczIDEzLjYxMzMgMTEuODE0IDEyLjQ4IDExLjg2MDcgMTIiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMS4zMzM5OCA4LjAwMDE2QzEuMzMzOTggNi42MDA5NSAxLjc3NDIzIDUuMjM3MiAyLjU5MjM3IDQuMTAyMDlDMy40MTA1MSAyLjk2Njk5IDQuNTY1MDUgMi4xMTgwOCA1Ljg5MjQ3IDEuNjc1NjFDNy4yMTk4OCAxLjIzMzE0IDguNjUyODYgMS4yMTk1NCA5Ljk4ODQ0IDEuNjM2NzRDMTEuMzI0IDIuMDUzOTQgMTIuNDk0NSAyLjg4MDc5IDEzLjMzNCA0LjAwMDE2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuMzMzOTggMTAuNjY2NUgxLjMzOTE0IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LjUzMjcgMTAuNjY2NUMxNC42NjYgOS4zMzMxNyAxNC42MiA3LjA5NzE3IDE0LjUzMjcgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTMuMzMzOTggMTIuOTk5OEMzLjY2NzMyIDExLjk5OTggNC4wMDA2NSA5Ljk5OTg0IDQuMDAwNjUgNy45OTk4NEMzLjk5OTk4IDcuNTQ1NzUgNC4wNzY2MyA3LjA5NDg2IDQuMjI3MzIgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTUuNzY3MDkgMTQuNjY2OEM1LjkwNzA5IDE0LjIyNjggNi4wNjcwOSAxMy43ODY4IDYuMTQ3MDkgMTMuMzMzNSIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjEuMjU0OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02IDQuNTMzNDZDNi42MDgyNyA0LjE4MjI4IDcuMjk4MjggMy45OTc0NSA4LjAwMDY0IDMuOTk3NTZDOC43MDMwMSAzLjk5NzY3IDkuMzkyOTYgNC4xODI3MiAxMC4wMDExIDQuNTM0MUMxMC42MDkzIDQuODg1NDggMTEuMTE0MiA1LjM5MDc5IDExLjQ2NTEgNS45OTkyM0MxMS44MTYgNi42MDc2NiAxMi4wMDA1IDcuMjk3NzYgMTIgOC4wMDAxMlY5LjMzMzQ2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzMyIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfMzIpIj4KPHBhdGggZD0iTTcuOTk5NTkgNi42NjY1QzcuNjQ1OTYgNi42NjY1IDcuMzA2ODMgNi44MDY5OCA3LjA1Njc4IDcuMDU3MDNDNi44MDY3MyA3LjMwNzA4IDYuNjY2MjUgNy42NDYyMiA2LjY2NjI1IDcuOTk5ODRDNi42NjYyNSA4LjY3OTg0IDYuNTk5NTkgOS42NzMxNyA2LjQ5MjkyIDEwLjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOS4zMzI5MyA4Ljc0NjU4QzkuMzMyOTMgMTAuMzMzMiA5LjMzMjkzIDEyLjk5OTkgOC42NjYyNiAxNC42NjY2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTExLjUyNzMgMTQuMDEzM0MxMS42MDczIDEzLjYxMzMgMTEuODE0IDEyLjQ4IDExLjg2MDcgMTIiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMS4zMzM5OCA4LjAwMDE2QzEuMzMzOTggNi42MDA5NSAxLjc3NDIzIDUuMjM3MiAyLjU5MjM3IDQuMTAyMDlDMy40MTA1MSAyLjk2Njk5IDQuNTY1MDUgMi4xMTgwOCA1Ljg5MjQ3IDEuNjc1NjFDNy4yMTk4OCAxLjIzMzE0IDguNjUyODYgMS4yMTk1NCA5Ljk4ODQ0IDEuNjM2NzRDMTEuMzI0IDIuMDUzOTQgMTIuNDk0NSAyLjg4MDc5IDEzLjMzNCA0LjAwMDE2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuMzMzOTggMTAuNjY2NUgxLjMzOTE0IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LjUzMjcgMTAuNjY2NUMxNC42NjYgOS4zMzMxNyAxNC42MiA3LjA5NzE3IDE0LjUzMjcgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTMuMzMzOTggMTIuOTk5OEMzLjY2NzMyIDExLjk5OTggNC4wMDA2NSA5Ljk5OTg0IDQuMDAwNjUgNy45OTk4NEMzLjk5OTk4IDcuNTQ1NzUgNC4wNzY2MyA3LjA5NDg2IDQuMjI3MzIgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTUuNzY3MDkgMTQuNjY2OEM1LjkwNzA5IDE0LjIyNjggNi4wNjcwOSAxMy43ODY4IDYuMTQ3MDkgMTMuMzMzNSIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjEuMjU0OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02IDQuNTMzNDZDNi42MDgyNyA0LjE4MjI4IDcuMjk4MjggMy45OTc0NSA4LjAwMDY0IDMuOTk3NTZDOC43MDMwMSAzLjk5NzY3IDkuMzkyOTYgNC4xODI3MiAxMC4wMDExIDQuNTM0MUMxMC42MDkzIDQuODg1NDggMTEuMTE0MiA1LjM5MDc5IDExLjQ2NTEgNS45OTkyM0MxMS44MTYgNi42MDc2NiAxMi4wMDA1IDcuMjk3NzYgMTIgOC4wMDAxMlY5LjMzMzQ2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzMyIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { useEffect } from "react";
|
|
||||||
import type { AutoConnectProps } from "../../../core/hooks/connection/types.js";
|
import type { AutoConnectProps } from "../../../core/hooks/connection/types.js";
|
||||||
import { useSetActiveWalletConnectionStatus } from "../../../core/hooks/wallets/useSetActiveWalletConnectionStatus.js";
|
|
||||||
import { useAutoConnect } from "../../hooks/wallets/useAutoConnect.js";
|
import { useAutoConnect } from "../../hooks/wallets/useAutoConnect.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,21 +37,3 @@ export function AutoConnect(props: AutoConnectProps) {
|
|||||||
useAutoConnect(props);
|
useAutoConnect(props);
|
||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
|
|
||||||
let noAutoConnectDone = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
export function NoAutoConnect() {
|
|
||||||
const setConnectionStatus = useSetActiveWalletConnectionStatus();
|
|
||||||
useEffect(() => {
|
|
||||||
if (noAutoConnectDone) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
noAutoConnectDone = true;
|
|
||||||
setConnectionStatus("disconnected");
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { CHECK, COPY_ICON } from "../icons/svgs.js";
|
|||||||
import { RNImage } from "./RNImage.js";
|
import { RNImage } from "./RNImage.js";
|
||||||
import { ThemedText } from "./text.js";
|
import { ThemedText } from "./text.js";
|
||||||
|
|
||||||
export type AddressProps = {
|
type AddressProps = {
|
||||||
account: Account;
|
account: Account;
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
addressOrENS: string;
|
addressOrENS: string;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { useChainIconUrl } from "../../../core/hooks/others/useChainQuery.js";
|
|||||||
import { CHAIN_ICON } from "../icons/svgs.js";
|
import { CHAIN_ICON } from "../icons/svgs.js";
|
||||||
import { RNImage } from "./RNImage.js";
|
import { RNImage } from "./RNImage.js";
|
||||||
|
|
||||||
export type ChainIconProps = {
|
type ChainIconProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
size: number;
|
size: number;
|
||||||
client: ThirdwebClient;
|
client: ThirdwebClient;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { SvgXml } from "react-native-svg";
|
|||||||
import type { Theme } from "../../../core/design-system/index.js";
|
import type { Theme } from "../../../core/design-system/index.js";
|
||||||
import { radius } from "../../design-system/index.js";
|
import { radius } from "../../design-system/index.js";
|
||||||
|
|
||||||
export type ImageInfo = {
|
type ImageInfo = {
|
||||||
size: number;
|
size: number;
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
data?: string | null;
|
data?: string | null;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { radius, spacing } from "../../design-system/index.js";
|
|||||||
import { RNImage } from "./RNImage.js";
|
import { RNImage } from "./RNImage.js";
|
||||||
import { ThemedText } from "./text.js";
|
import { ThemedText } from "./text.js";
|
||||||
|
|
||||||
export type ThemedButtonProps = TouchableOpacityProps & {
|
type ThemedButtonProps = TouchableOpacityProps & {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
variant?: "primary" | "secondary" | "accent";
|
variant?: "primary" | "secondary" | "accent";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { radius, spacing } from "../../design-system/index.js";
|
|||||||
import { RIGHT_ARROW } from "../icons/svgs.js";
|
import { RIGHT_ARROW } from "../icons/svgs.js";
|
||||||
import { ThemedSpinner } from "./spinner.js";
|
import { ThemedSpinner } from "./spinner.js";
|
||||||
|
|
||||||
export type ThemedInputProps = {
|
type ThemedInputProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
rightView?: React.ReactNode;
|
rightView?: React.ReactNode;
|
||||||
} & TextInputProps;
|
} & TextInputProps;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ActivityIndicator, type ActivityIndicatorProps } from "react-native";
|
import { ActivityIndicator, type ActivityIndicatorProps } from "react-native";
|
||||||
|
|
||||||
export type ThemedSpinnerProps = ActivityIndicatorProps;
|
type ThemedSpinnerProps = ActivityIndicatorProps;
|
||||||
|
|
||||||
export function ThemedSpinner(props: ThemedSpinnerProps) {
|
export function ThemedSpinner(props: ThemedSpinnerProps) {
|
||||||
return <ActivityIndicator {...props} />;
|
return <ActivityIndicator {...props} />;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { StyleSheet, Text, type TextProps } from "react-native";
|
import { StyleSheet, Text, type TextProps } from "react-native";
|
||||||
import type { Theme } from "../../../core/design-system/index.js";
|
import type { Theme } from "../../../core/design-system/index.js";
|
||||||
|
|
||||||
export type ThemedTextProps = TextProps & {
|
type ThemedTextProps = TextProps & {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
type?:
|
type?:
|
||||||
| "default"
|
| "default"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { View, type ViewProps } from "react-native";
|
import { View, type ViewProps } from "react-native";
|
||||||
import type { Theme } from "../../../core/design-system/index.js";
|
import type { Theme } from "../../../core/design-system/index.js";
|
||||||
|
|
||||||
export type ThemedViewProps = ViewProps & {
|
type ThemedViewProps = ViewProps & {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -581,7 +581,7 @@ function SignInView({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function OrDivider({ theme }: { theme: Theme }) {
|
function OrDivider({ theme }: { theme: Theme }) {
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
@@ -265,25 +265,6 @@ const ChainSwitcher = (props: ConnectedModalPropsInner) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** TODO (rn) implement transactions screen
|
|
||||||
const Transactions = (props: ConnectedModalPropsInner) => {
|
|
||||||
const { client, wallet, theme } = props;
|
|
||||||
return (
|
|
||||||
<TouchableOpacity style={styles.walletMenuRow} onPress={() => {}}>
|
|
||||||
<RNImage
|
|
||||||
theme={theme}
|
|
||||||
size={32}
|
|
||||||
data={TRANSACTIONS_ICON}
|
|
||||||
color={theme.colors.secondaryIconColor}
|
|
||||||
/>
|
|
||||||
<ThemedText theme={theme} type="defaultSemiBold">
|
|
||||||
Transactions
|
|
||||||
</ThemedText>
|
|
||||||
</TouchableOpacity>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
||||||
const ViewFunds = (props: ConnectedModalPropsInner) => {
|
const ViewFunds = (props: ConnectedModalPropsInner) => {
|
||||||
const { theme, setModalState } = props;
|
const { theme, setModalState } = props;
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { RNImage } from "../components/RNImage.js";
|
|||||||
import { ThemedText } from "../components/text.js";
|
import { ThemedText } from "../components/text.js";
|
||||||
import { CLOSE_CIRCLE } from "../icons/svgs.js";
|
import { CLOSE_CIRCLE } from "../icons/svgs.js";
|
||||||
|
|
||||||
export type ErrorViewProps = {
|
type ErrorViewProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
title: string;
|
title: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import type { ContainerType } from "../components/Header.js";
|
|||||||
import { Skeleton } from "../components/Skeleton.js";
|
import { Skeleton } from "../components/Skeleton.js";
|
||||||
import { ThemedText } from "../components/text.js";
|
import { ThemedText } from "../components/text.js";
|
||||||
|
|
||||||
export type ExternalWalletsUiProps = {
|
type ExternalWalletsUiProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
client: ThirdwebClient;
|
client: ThirdwebClient;
|
||||||
connector: (args: {
|
connector: (args: {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type { Theme } from "../../../core/design-system/index.js";
|
|||||||
import { spacing } from "../../design-system/index.js";
|
import { spacing } from "../../design-system/index.js";
|
||||||
import { ThemedSpinner } from "../components/spinner.js";
|
import { ThemedSpinner } from "../components/spinner.js";
|
||||||
|
|
||||||
export type LoadingViewProps = {
|
type LoadingViewProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { WalletImage } from "../components/WalletImage.js";
|
|||||||
import { Spacer } from "../components/spacer.js";
|
import { Spacer } from "../components/spacer.js";
|
||||||
import { ThemedText } from "../components/text.js";
|
import { ThemedText } from "../components/text.js";
|
||||||
|
|
||||||
export type ReceiveScreenProps = {
|
type ReceiveScreenProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
wallet: Wallet;
|
wallet: Wallet;
|
||||||
account: Account;
|
account: Account;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import { ErrorView } from "./ErrorView.js";
|
|||||||
import { SuccessView } from "./SuccessView.js";
|
import { SuccessView } from "./SuccessView.js";
|
||||||
import { TokenListScreen, TokenRow } from "./TokenListScreen.js";
|
import { TokenListScreen, TokenRow } from "./TokenListScreen.js";
|
||||||
|
|
||||||
export type SendScreenProps = {
|
type SendScreenProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
client: ThirdwebClient;
|
client: ThirdwebClient;
|
||||||
onClose?: () => void;
|
onClose?: () => void;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { RNImage } from "../components/RNImage.js";
|
|||||||
import { ThemedText } from "../components/text.js";
|
import { ThemedText } from "../components/text.js";
|
||||||
import { CHECK_CIRCLE } from "../icons/svgs.js";
|
import { CHECK_CIRCLE } from "../icons/svgs.js";
|
||||||
|
|
||||||
export type SuccessViewProps = {
|
type SuccessViewProps = {
|
||||||
theme: Theme;
|
theme: Theme;
|
||||||
title: string;
|
title: string;
|
||||||
};
|
};
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user