diff --git a/examples/example-react/package.json b/examples/example-react/package.json
index 6824baf..74998c5 100644
--- a/examples/example-react/package.json
+++ b/examples/example-react/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"@casperdash/usewallet": "workspace:*",
+ "@casperdash/usewallet-evm": "workspace:*",
"@hookform/resolvers": "^3.1.1",
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-label": "^2.0.2",
@@ -25,7 +26,8 @@
"sonner": "^0.6.2",
"tailwind-merge": "^1.14.0",
"tailwindcss-animate": "^1.0.6",
- "zod": "^3.21.4"
+ "zod": "^3.21.4",
+ "viem": "^1.19.4"
},
"devDependencies": {
"@types/node": "18.11.10",
diff --git a/examples/example-react/src/App.tsx b/examples/example-react/src/App.tsx
index f177aab..20ebbf9 100644
--- a/examples/example-react/src/App.tsx
+++ b/examples/example-react/src/App.tsx
@@ -15,6 +15,7 @@ import CasperDashWebButton from './components/ConnectButton/CasperDashWebButton'
import CasperWalletButton from './components/ConnectButton/CasperWalletButton';
import { Button } from './components/ui/Button';
import { FormTabs } from './components/Form/FormTabs';
+import MetaMaskButton from './components/ConnectButton/MetaMaskButton';
function App() {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -93,6 +94,8 @@ function App() {
+
+
>
)}
diff --git a/examples/example-react/src/client/index.ts b/examples/example-react/src/client/index.ts
new file mode 100644
index 0000000..085ac0f
--- /dev/null
+++ b/examples/example-react/src/client/index.ts
@@ -0,0 +1,7 @@
+import { createWalletClient, custom } from 'viem';
+import { mainnet } from 'viem/chains';
+
+export const client = createWalletClient({
+ chain: mainnet,
+ transport: custom(window.ethereum!),
+});
diff --git a/examples/example-react/src/components/ConnectButton/MetaMaskButton.tsx b/examples/example-react/src/components/ConnectButton/MetaMaskButton.tsx
new file mode 100644
index 0000000..535a4d9
--- /dev/null
+++ b/examples/example-react/src/components/ConnectButton/MetaMaskButton.tsx
@@ -0,0 +1,23 @@
+import { EVMConnector } from '@casperdash/usewallet-evm';
+import {
+ useConnect,
+} from '@casperdash/usewallet';
+
+import { Button } from '../ui/Button';
+
+
+export const MetaMaskButton = () => {
+ const { connect } = useConnect({
+ connector: new EVMConnector({}),
+ });
+
+ return (
+
+
+
+ );
+};
+
+export default MetaMaskButton;
diff --git a/examples/example-react/src/main.tsx b/examples/example-react/src/main.tsx
index 101d54b..1724d1c 100644
--- a/examples/example-react/src/main.tsx
+++ b/examples/example-react/src/main.tsx
@@ -8,12 +8,18 @@ import {
import React from 'react';
import ReactDOM from 'react-dom/client';
import { CasperLedgerConnector } from '@casperdash/usewallet-ledger';
+import { EVMConnector } from '@casperdash/usewallet-evm';
import App from './App';
import '../app/globals.css';
const client = createClient({
- connectors: [new CasperSignerConnector(), new CasperDashConnector(), new CasperWalletConnector(), new CasperLedgerConnector()],
+ connectors: [
+ new CasperSignerConnector(),
+ new CasperDashConnector(),
+ new CasperWalletConnector(),
+ new CasperLedgerConnector(),
+ new EVMConnector()],
// autoConnect: true,
});
diff --git a/packages/evm/package.json b/packages/evm/package.json
new file mode 100644
index 0000000..59511aa
--- /dev/null
+++ b/packages/evm/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@casperdash/usewallet-evm",
+ "version": "1.0.3",
+ "description": "A React hook for interacting with the Casper Network via Ledger",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/CasperDash/useWallet.git",
+ "directory": "packages/ledger"
+ },
+ "homepage": "https://usewallet.casperdash.io/",
+ "contributors": [
+ "dev "
+ ],
+ "type": "module",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "build": "tsc && vite build --mode development",
+ "dev": "tsup src/index.ts --watch",
+ "start": "pnpm build -- --watch"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@ledgerhq/hw-transport-webusb": "^6.27.19",
+ "@zondax/ledger-casper": "^2.6.1",
+ "casper-js-sdk": "^2.15.3",
+ "@casperdash/usewallet-core": "workspace:*",
+ "@tanstack/query-core": "^4.35.3",
+ "@tanstack/react-query": "^4.35.3",
+ "typedjson": "^1.8.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "viem": "^1.19.4"
+ },
+ "devDependencies": {
+ "@testing-library/react": "^13.4.0",
+ "@types/react": "18.0.26",
+ "typescript": ">=5.2.2",
+ "@rollup/plugin-inject": "5.0.3",
+ "vite": "^4.4.9",
+ "@vitejs/plugin-react-swc": "3.3.2",
+ "vite-plugin-dts": "^3.5.4",
+ "vite-plugin-node-polyfills": "^0.14.1"
+ }
+}
diff --git a/packages/evm/src/client.ts b/packages/evm/src/client.ts
new file mode 100644
index 0000000..65e9944
--- /dev/null
+++ b/packages/evm/src/client.ts
@@ -0,0 +1,14 @@
+import { createWalletClient, custom } from 'viem';
+import { mainnet } from 'viem/chains';
+
+declare global {
+ interface Window {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ ethereum: any;
+ }
+}
+
+export const client = createWalletClient({
+ chain: mainnet,
+ transport: custom(window.ethereum),
+});
diff --git a/packages/evm/src/evm.ts b/packages/evm/src/evm.ts
new file mode 100644
index 0000000..eeb7206
--- /dev/null
+++ b/packages/evm/src/evm.ts
@@ -0,0 +1,114 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
+import { JsonTypes } from 'typedjson';
+import {
+ Connector,
+ Deploy,
+} from '@casperdash/usewallet-core';
+import { WalletClient } from 'viem';
+
+import { client } from './client';
+
+
+type EVMConnectorOptions = {
+ enableDebugLogs?: boolean;
+ getEventProvider?: () => EventProvider;
+};
+
+type Provider = WalletClient;
+type EventProvider = Window;
+
+export class EVMConnector extends Connector<
+Provider,
+Window,
+EVMConnectorOptions
+> {
+ public isReady!: boolean;
+ public readonly id: string = 'evm';
+ public transport!: TransportWebUSB;
+ public casperApp?: Provider;
+ public accountIndex?: string;
+
+ constructor({
+ options: defaultOptions,
+ }: { options?: EVMConnectorOptions } = {}) {
+ const options = {
+ name: 'EVM',
+ ...defaultOptions,
+ };
+
+ super({ options });
+ }
+
+ public async getProvider(): Promise {
+ return client;
+ }
+
+ /**
+ * > This function returns the event provider that was passed in the options object
+ * @returns The event provider
+ */
+ public async getEventProvider(): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ public async isConnected(): Promise {
+ const publicKey = await this.getActivePublicKey();
+
+ return !!publicKey;
+ }
+
+ public async disconnect(): Promise {
+ // Do nothing
+ return;
+ }
+
+ public async connect(): Promise {
+ const provider = await this.getProvider();
+
+ await provider.requestAddresses();
+ }
+
+ public async getActivePublicKey(): Promise {
+ const accounts = await (await this.getProvider()).getAddresses();
+
+ if (!accounts.length) {
+ throw new Error('No accounts found');
+ }
+
+ return accounts[0];
+ }
+
+ public async signMessage(message: string, signingPublicKeyHex?: string): Promise {
+ const account = signingPublicKeyHex || await this.getActivePublicKey();
+ const provider = await this.getProvider();
+
+ return provider.signMessage({
+ account: account as `0x${string}`,
+ message,
+ });
+ }
+
+ public async sign(
+ deploy: { deploy: JsonTypes },
+ signingPublicKeyHex: string,
+ _targetPublicKeyHex: string,
+ ): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ public onConnected(_event: CustomEventInit): void {
+ throw new Error('Method not implemented.');
+ }
+
+ /**
+ * It emits a custom event called 'casper:disconnect'
+ */
+ public onDisconnected(): void {
+ throw new Error('Method not implemented.');
+ }
+
+ public onActiveKeyChanged(_event: CustomEventInit): void {
+ throw new Error('Method not implemented.');
+ }
+}
diff --git a/packages/evm/src/index.ts b/packages/evm/src/index.ts
new file mode 100644
index 0000000..5a4ecbf
--- /dev/null
+++ b/packages/evm/src/index.ts
@@ -0,0 +1 @@
+export * from './evm';
diff --git a/packages/evm/tsconfig.json b/packages/evm/tsconfig.json
new file mode 100644
index 0000000..827e3c0
--- /dev/null
+++ b/packages/evm/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "declaration": true,
+ "rootDir": "./src"
+ },
+ "include": [ "**/*.ts" ],
+ "exclude": ["node_modules", "dist"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/packages/evm/tsconfig.node.json b/packages/evm/tsconfig.node.json
new file mode 100644
index 0000000..c3dfa0f
--- /dev/null
+++ b/packages/evm/tsconfig.node.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "allowSyntheticDefaultImports": true
+ },
+ "exclude": ["node_modules", "dist"],
+}
diff --git a/packages/evm/vite.config.js b/packages/evm/vite.config.js
new file mode 100644
index 0000000..7c0a76f
--- /dev/null
+++ b/packages/evm/vite.config.js
@@ -0,0 +1,24 @@
+import { resolve } from 'path';
+
+import { defineConfig } from 'vite';
+import dts from 'vite-plugin-dts';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ dts(),
+ ],
+ build: {
+ lib: {
+ entry: resolve(__dirname, 'src/index.ts'),
+ name: 'index',
+ fileName: 'index',
+ },
+ rollupOptions: {
+ external: ['react'],
+ output: {
+ format: 'esm',
+ },
+ },
+ },
+});
diff --git a/packages/ledger/vite.config.js b/packages/ledger/vite.config.js
index cf254bf..b186e1b 100644
--- a/packages/ledger/vite.config.js
+++ b/packages/ledger/vite.config.js
@@ -2,7 +2,6 @@ import { resolve } from 'path';
import { defineConfig } from 'vite';
import { nodePolyfills } from 'vite-plugin-node-polyfills';
-import inject from '@rollup/plugin-inject';
import dts from 'vite-plugin-dts';
// https://vitejs.dev/config/
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cc8b445..ff39096 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -108,6 +108,9 @@ importers:
'@casperdash/usewallet':
specifier: workspace:*
version: link:../../packages/react
+ '@casperdash/usewallet-evm':
+ specifier: workspace:*
+ version: link:../../packages/evm
'@casperdash/usewallet-ledger':
specifier: workspace:*
version: link:../../packages/ledger
@@ -153,6 +156,9 @@ importers:
tailwindcss-animate:
specifier: ^1.0.6
version: 1.0.7(tailwindcss@3.3.3)
+ viem:
+ specifier: ^1.19.4
+ version: 1.19.4(typescript@4.9.4)(zod@3.22.2)
zod:
specifier: ^3.21.4
version: 3.22.2
@@ -250,6 +256,64 @@ importers:
specifier: '>=4.9.4'
version: 4.9.4
+ packages/evm:
+ dependencies:
+ '@casperdash/usewallet-core':
+ specifier: workspace:*
+ version: link:../core
+ '@ledgerhq/hw-transport-webusb':
+ specifier: ^6.27.19
+ version: 6.27.19
+ '@tanstack/query-core':
+ specifier: ^4.35.3
+ version: 4.35.3
+ '@tanstack/react-query':
+ specifier: ^4.35.3
+ version: 4.35.3(react-dom@18.2.0)(react@18.2.0)
+ '@zondax/ledger-casper':
+ specifier: ^2.6.1
+ version: 2.6.1
+ casper-js-sdk:
+ specifier: ^2.15.3
+ version: 2.15.3
+ react:
+ specifier: ^18.2.0
+ version: 18.2.0
+ react-dom:
+ specifier: ^18.2.0
+ version: 18.2.0(react@18.2.0)
+ typedjson:
+ specifier: ^1.8.0
+ version: 1.8.0
+ viem:
+ specifier: ^1.19.4
+ version: 1.19.4(typescript@5.2.2)
+ devDependencies:
+ '@rollup/plugin-inject':
+ specifier: 5.0.3
+ version: 5.0.3
+ '@testing-library/react':
+ specifier: ^13.4.0
+ version: 13.4.0(react-dom@18.2.0)(react@18.2.0)
+ '@types/react':
+ specifier: 18.0.26
+ version: 18.0.26
+ '@vitejs/plugin-react-swc':
+ specifier: 3.3.2
+ version: 3.3.2(vite@4.4.9)
+ typescript:
+ specifier: '>=5.2.2'
+ version: 5.2.2
+ vite:
+ specifier: ^4.4.9
+ version: 4.4.9(@types/node@18.11.10)
+ vite-plugin-dts:
+ specifier: ^3.5.4
+ version: 3.5.4(typescript@5.2.2)(vite@4.4.9)
+ vite-plugin-node-polyfills:
+ specifier: ^0.14.1
+ version: 0.14.1(vite@4.4.9)
+
packages/ledger:
dependencies:
'@casperdash/usewallet-core':
@@ -341,6 +405,10 @@ importers:
packages:
+ /@adraffy/ens-normalize@1.10.0:
+ resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==}
+ dev: false
+
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -537,7 +605,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
- dev: false
/@babel/template@7.20.7:
resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
@@ -1716,6 +1783,12 @@ packages:
'@noble/hashes': 1.3.1
dev: false
+ /@noble/curves@1.2.0:
+ resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
+ dependencies:
+ '@noble/hashes': 1.3.2
+ dev: false
+
/@noble/ed25519@1.7.3:
resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==}
dev: false
@@ -1725,6 +1798,11 @@ packages:
engines: {node: '>= 16'}
dev: false
+ /@noble/hashes@1.3.2:
+ resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
+ engines: {node: '>= 16'}
+ dev: false
+
/@noble/secp256k1@1.7.1:
resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
dev: false
@@ -2134,23 +2212,31 @@ packages:
string-argv: 0.3.1
dev: true
- /@scure/base@1.1.1:
- resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
+ /@scure/base@1.1.3:
+ resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==}
dev: false
/@scure/bip32@1.3.1:
resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==}
dependencies:
'@noble/curves': 1.1.0
- '@noble/hashes': 1.3.1
- '@scure/base': 1.1.1
+ '@noble/hashes': 1.3.2
+ '@scure/base': 1.1.3
+ dev: false
+
+ /@scure/bip32@1.3.2:
+ resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==}
+ dependencies:
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@scure/base': 1.1.3
dev: false
/@scure/bip39@1.2.1:
resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==}
dependencies:
- '@noble/hashes': 1.3.1
- '@scure/base': 1.1.1
+ '@noble/hashes': 1.3.2
+ '@scure/base': 1.1.3
dev: false
/@sinclair/typebox@0.27.8:
@@ -2438,7 +2524,7 @@ packages:
engines: {node: '>=12'}
dependencies:
'@babel/code-frame': 7.18.6
- '@babel/runtime': 7.20.13
+ '@babel/runtime': 7.22.6
'@types/aria-query': 5.0.1
aria-query: 5.1.3
chalk: 4.1.2
@@ -2457,7 +2543,7 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.20.13
+ '@babel/runtime': 7.22.6
'@testing-library/dom': 8.20.0
'@types/react-dom': 18.0.10
react: 18.2.0
@@ -2964,6 +3050,25 @@ packages:
vue-template-compiler: 2.7.14
dev: true
+ /@vue/language-core@1.8.13(typescript@5.2.2):
+ resolution: {integrity: sha512-nata2fYBZAkl4QJrU+IcArJCMTHt1VP8ePL/Z7eUPC2AF+Cm7Qgo9ksNCPBzZRh1LYjCaSaqV7njqNogwpsMVg==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@volar/language-core': 1.10.1
+ '@volar/source-map': 1.10.1
+ '@vue/compiler-dom': 3.3.4
+ '@vue/reactivity': 3.3.4
+ '@vue/shared': 3.3.4
+ minimatch: 9.0.3
+ muggle-string: 0.3.1
+ typescript: 5.2.2
+ vue-template-compiler: 2.7.14
+ dev: true
+
/@vue/reactivity@3.3.4:
resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
dependencies:
@@ -2983,6 +3088,15 @@ packages:
- typescript
dev: true
+ /@vue/typescript@1.8.13(typescript@5.2.2):
+ resolution: {integrity: sha512-ALJjHFqQ3dgZVCI/ogAS/dZ7JEhIi1N0Em5I7uwabY1p9RDRK3odLsycMHyxZRjm5dLI15c07eeBloHiD2Otlg==}
+ dependencies:
+ '@volar/typescript': 1.10.1
+ '@vue/language-core': 1.8.13(typescript@5.2.2)
+ transitivePeerDependencies:
+ - typescript
+ dev: true
+
/@zondax/ledger-casper@2.6.1:
resolution: {integrity: sha512-Zk+DOVK9G9Gyt7ua9x/G5iVVSlNfp1l+Tek+7+MoqP5aTr4YznBJIhdnPD8yYSxEEZZLs8Q0tV0TyfsXeRokQw==}
dependencies:
@@ -2995,6 +3109,35 @@ packages:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
dev: true
+ /abitype@0.9.8(typescript@4.9.4)(zod@3.22.2):
+ resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.19.1
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+ dependencies:
+ typescript: 4.9.4
+ zod: 3.22.2
+ dev: false
+
+ /abitype@0.9.8(typescript@5.2.2):
+ resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.19.1
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+ dependencies:
+ typescript: 5.2.2
+ dev: false
+
/acorn-globals@7.0.1:
resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
dependencies:
@@ -6269,6 +6412,14 @@ packages:
ws: 7.5.9
dev: false
+ /isows@1.0.3(ws@8.13.0):
+ resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==}
+ peerDependencies:
+ ws: '*'
+ dependencies:
+ ws: 8.13.0
+ dev: false
+
/istanbul-lib-coverage@3.2.0:
resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
engines: {node: '>=8'}
@@ -6644,7 +6795,7 @@ packages:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.14
+ '@jridgewell/sourcemap-codec': 1.4.15
dev: true
/magic-string@0.30.3:
@@ -9765,7 +9916,6 @@ packages:
resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
engines: {node: '>=4.2.0'}
hasBin: true
- dev: true
/typescript@5.0.4:
resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
@@ -9773,6 +9923,11 @@ packages:
hasBin: true
dev: true
+ /typescript@5.2.2:
+ resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
/ufo@1.3.0:
resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==}
dev: true
@@ -10093,6 +10248,52 @@ packages:
vfile-message: 4.0.2
dev: false
+ /viem@1.19.4(typescript@4.9.4)(zod@3.22.2):
+ resolution: {integrity: sha512-CvAVaOzxlu3Q/cpfrYvTRMBIPDMAkLu8aFmHLqU1Bg25DyUxp9xwoF1Ljp38q7/Rosm1OPFQ4y6K64v/VwoumQ==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.0
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@scure/bip32': 1.3.2
+ '@scure/bip39': 1.2.1
+ abitype: 0.9.8(typescript@4.9.4)(zod@3.22.2)
+ isows: 1.0.3(ws@8.13.0)
+ typescript: 4.9.4
+ ws: 8.13.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+ dev: false
+
+ /viem@1.19.4(typescript@5.2.2):
+ resolution: {integrity: sha512-CvAVaOzxlu3Q/cpfrYvTRMBIPDMAkLu8aFmHLqU1Bg25DyUxp9xwoF1Ljp38q7/Rosm1OPFQ4y6K64v/VwoumQ==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.0
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@scure/bip32': 1.3.2
+ '@scure/bip39': 1.2.1
+ abitype: 0.9.8(typescript@5.2.2)
+ isows: 1.0.3(ws@8.13.0)
+ typescript: 5.2.2
+ ws: 8.13.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+ dev: false
+
/vite-node@0.34.5(@types/node@18.11.10):
resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==}
engines: {node: '>=v14.18.0'}
@@ -10139,6 +10340,30 @@ packages:
- supports-color
dev: true
+ /vite-plugin-dts@3.5.4(typescript@5.2.2)(vite@4.4.9):
+ resolution: {integrity: sha512-BJLBj1Vg9kV7ZMXAULT9UGogrElwz5s+k8TzC7LsFkHv5Jy90OWnHKUp8qm7sypu2pkF5pTJ5McUuHudnT0Imw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ dependencies:
+ '@microsoft/api-extractor': 7.37.0
+ '@rollup/pluginutils': 5.0.2
+ '@vue/language-core': 1.8.13(typescript@5.2.2)
+ debug: 4.3.4
+ kolorist: 1.8.0
+ typescript: 5.2.2
+ vite: 4.4.9(@types/node@18.11.10)
+ vue-tsc: 1.8.13(typescript@5.2.2)
+ transitivePeerDependencies:
+ - '@types/node'
+ - rollup
+ - supports-color
+ dev: true
+
/vite-plugin-node-polyfills@0.14.1(vite@4.4.9):
resolution: {integrity: sha512-S5ofYUkXea/d94AHzDwiTA7Pv/yEwzagnjgVEuBZdy7E72GBfK17qpljAlyK3CD+CRcDzAwwl/4bEjKdvZmTGQ==}
peerDependencies:
@@ -10340,10 +10565,22 @@ packages:
dependencies:
'@vue/language-core': 1.8.13(typescript@4.9.4)
'@vue/typescript': 1.8.13(typescript@4.9.4)
- semver: 7.3.8
+ semver: 7.5.4
typescript: 4.9.4
dev: true
+ /vue-tsc@1.8.13(typescript@5.2.2):
+ resolution: {integrity: sha512-Hl8zUXPVK2KzPtbXeMCN0CSFkwvD96YOtYt9KvJPG9W8QGcNpGk9KHwPuGMxA8blWXSIli7gtsoC+clICEVdVg==}
+ hasBin: true
+ peerDependencies:
+ typescript: '*'
+ dependencies:
+ '@vue/language-core': 1.8.13(typescript@5.2.2)
+ '@vue/typescript': 1.8.13(typescript@5.2.2)
+ semver: 7.5.4
+ typescript: 5.2.2
+ dev: true
+
/w3c-xmlserializer@4.0.0:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
@@ -10533,6 +10770,19 @@ packages:
optional: true
dev: true
+ /ws@8.13.0:
+ resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: false
+
/xml-name-validator@4.0.0:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
diff --git a/tsconfig.json b/tsconfig.json
index 946fccf..0838656 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -21,6 +21,8 @@
"@casperdash/usewallet/*": ["packages/react/src/*"],
"@casperdash/usewallet-ledger": ["packages/ledger/src"],
"@casperdash/usewallet-ledger/*": ["packages/ledger/src/*"],
+ "@casperdash/usewallet-evm": ["packages/evm/src"],
+ "@casperdash/usewallet-evm/*": ["packages/evm/src/*"],
},
"resolveJsonModule": true,
"skipLibCheck": true,