diff --git a/chain-registry b/chain-registry index 8ae25a8c..9063f1ef 160000 --- a/chain-registry +++ b/chain-registry @@ -1 +1 @@ -Subproject commit 8ae25a8cca5367d5abd391de760450ee43339fc3 +Subproject commit 9063f1eff6624136877529c14972140e4f15297d diff --git a/initia-registry b/initia-registry index b420a089..c51c945c 160000 --- a/initia-registry +++ b/initia-registry @@ -1 +1 @@ -Subproject commit b420a08900f659e6ea34bc4f2951e778e2604476 +Subproject commit c51c945ceba21c79e1260612878faa21714b01ad diff --git a/package-lock.json b/package-lock.json index 34115bbc..d83c2ed2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,6 @@ "version": "0.1.0", "hasInstallScript": true, "dependencies": { - "@cosmjs/amino": "0.31.x", - "@cosmjs/cosmwasm-stargate": "0.31.x", - "@cosmjs/encoding": "0.31.x", - "@cosmjs/proto-signing": "0.31.x", - "@cosmjs/stargate": "0.31.x", - "@cosmos-kit/core": "2.8.x", - "@cosmos-kit/cosmostation": "2.6.x", - "@cosmos-kit/cosmostation-extension": "^2.7.10", - "@cosmos-kit/keplr": "2.6.x", - "@cosmos-kit/keplr-extension": "^2.7.9", - "@cosmos-kit/leap": "2.6.x", - "@cosmos-kit/leap-extension": "^2.7.10", - "@cosmos-kit/okxwallet": "2.4.x", - "@cosmos-kit/react": "2.10.x", - "@cosmos-kit/station": "2.5.x", - "@cosmos-kit/vectis": "2.6.x", - "@cosmos-kit/xdefi": "2.5.x", "@fontsource/jost": "^5.0.16", "@graz-sh/types": "^0.0.14", "@heroicons/react": "^2.1.1", @@ -2566,6 +2549,20 @@ "pako": "^2.0.2" } }, + "node_modules/@cosmjs/cosmwasm-stargate/node_modules/@cosmjs/proto-signing": { + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz", + "integrity": "sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==", + "dependencies": { + "@cosmjs/amino": "^0.31.3", + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3", + "cosmjs-types": "^0.8.0", + "long": "^4.0.0" + } + }, "node_modules/@cosmjs/crypto": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.31.3.tgz", @@ -2613,6 +2610,17 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@cosmjs/launchpad/node_modules/@cosmjs/amino": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.27.1.tgz", + "integrity": "sha512-w56ar/nK9+qlvWDpBPRmD0Blk2wfkkLqRi1COs1x7Ll1LF0AtkIBUjbRKplENLbNovK0T3h+w8bHiFm+GBGQOA==", + "dependencies": { + "@cosmjs/crypto": "0.27.1", + "@cosmjs/encoding": "0.27.1", + "@cosmjs/math": "0.27.1", + "@cosmjs/utils": "0.27.1" + } + }, "node_modules/@cosmjs/launchpad/node_modules/@cosmjs/crypto": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.27.1.tgz", @@ -2630,6 +2638,16 @@ "sha.js": "^2.4.11" } }, + "node_modules/@cosmjs/launchpad/node_modules/@cosmjs/encoding": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.27.1.tgz", + "integrity": "sha512-rayLsA0ojHeniaRfWWcqSsrE/T1rl1gl0OXVNtXlPwLJifKBeLEefGbOUiAQaT0wgJ8VNGBazVtAZBpJidfDhw==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, "node_modules/@cosmjs/launchpad/node_modules/@cosmjs/math": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.27.1.tgz", @@ -2660,19 +2678,71 @@ } }, "node_modules/@cosmjs/proto-signing": { - "version": "0.31.3", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz", - "integrity": "sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==", + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.3.tgz", + "integrity": "sha512-kSZ0ZUY0DwcRT0NcIn2HkadH4NKlwjfZgbLj1ABwh/4l0RgeT84QCscZCu63tJYq3K6auwqTiZSZERwlO4/nbg==", "dependencies": { - "@cosmjs/amino": "^0.31.3", - "@cosmjs/crypto": "^0.31.3", - "@cosmjs/encoding": "^0.31.3", - "@cosmjs/math": "^0.31.3", - "@cosmjs/utils": "^0.31.3", - "cosmjs-types": "^0.8.0", - "long": "^4.0.0" + "@cosmjs/amino": "^0.32.3", + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0" } }, + "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.3.tgz", + "integrity": "sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", + "integrity": "sha512-niQOWJHUtlJm2GG4F00yGT7sGPKxfUwz+2qQ30uO/E3p58gOusTcH2qjiJNVxb8vScYJhFYFqpm/OA/mVqoUGQ==", + "dependencies": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "node_modules/@cosmjs/proto-signing/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@cosmjs/socket": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.31.3.tgz", @@ -2703,6 +2773,20 @@ "xstream": "^11.14.0" } }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/proto-signing": { + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz", + "integrity": "sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==", + "dependencies": { + "@cosmjs/amino": "^0.31.3", + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3", + "cosmjs-types": "^0.8.0", + "long": "^4.0.0" + } + }, "node_modules/@cosmjs/stream": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.31.3.tgz", @@ -2759,15 +2843,138 @@ "uuid": "^9.0.1" } }, - "node_modules/@cosmos-kit/cosmostation": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/cosmostation/-/cosmostation-2.6.8.tgz", - "integrity": "sha512-4nXUPpZUfibcFfBLoM3+LgHz+PRkv3Y1e1GlmVQ8brI14lBZvTc/5NHDU7hO9LtsAawAgswWoSac9vFpUXi1ig==", + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/amino": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.3.tgz", + "integrity": "sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/cosmwasm-stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.3.tgz", + "integrity": "sha512-pqkt+QsLIPNMTRh9m+igJgIpzXXgn1BxmxfAb9zlC23kvsuzY/12un9M7iAdim1NwKXDFeYw46xC2YkprwQp+g==", + "dependencies": { + "@cosmjs/amino": "^0.32.3", + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stargate": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/crypto": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", + "integrity": "sha512-niQOWJHUtlJm2GG4F00yGT7sGPKxfUwz+2qQ30uO/E3p58gOusTcH2qjiJNVxb8vScYJhFYFqpm/OA/mVqoUGQ==", "dependencies": { - "@cosmos-kit/cosmostation-extension": "^2.7.8", - "@cosmos-kit/cosmostation-mobile": "^2.6.8" + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" } }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/json-rpc": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.3.tgz", + "integrity": "sha512-JwFRWZa+Y95KrAG8CuEbPVOSnXO2uMSEBcaAB/FBU3Mo4jQnDoUjXvt3vwtFWxfAytrWCn1I4YDFaOAinnEG/Q==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/socket": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "dependencies": { + "@confio/ics23": "^0.6.8", + "@cosmjs/amino": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stream": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/tendermint-rpc": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.3.tgz", + "integrity": "sha512-xeprW+VR9xKGstqZg0H/KBZoUp8/FfFyS9ljIUTLM/UINjP2MhiwncANPS2KScfJVepGufUKk0/phHUeIBSEkw==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/json-rpc": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/socket": "^0.32.3", + "@cosmjs/stream": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmos-kit/core/node_modules/@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "node_modules/@cosmos-kit/core/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@cosmos-kit/cosmostation-extension": { "version": "2.7.10", "resolved": "https://registry.npmjs.org/@cosmos-kit/cosmostation-extension/-/cosmostation-extension-2.7.10.tgz", @@ -2782,24 +2989,10 @@ "@cosmjs/proto-signing": ">=0.32.2" } }, - "node_modules/@cosmos-kit/cosmostation-mobile": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/cosmostation-mobile/-/cosmostation-mobile-2.6.8.tgz", - "integrity": "sha512-GchATnZJ3X265f34CfYYKO5C+KVXOYHHejMXB1PszwK4FPqJ6ixOnswsX8W3ECEmdSAn9g0+4beMmEynnlJXFw==", - "dependencies": { - "@chain-registry/cosmostation": "1.26.0", - "@cosmos-kit/core": "^2.8.8", - "@cosmos-kit/walletconnect": "^2.5.8" - } - }, - "node_modules/@cosmos-kit/keplr": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/keplr/-/keplr-2.6.8.tgz", - "integrity": "sha512-nJ3hVw7sK5w7vhArcEY+HVj1xmYfj8iUltBNawhGcZhN4x17cMhPOsrLagt1NmYof3+SAw7Ww6NrSX0McUMOyw==", - "dependencies": { - "@cosmos-kit/keplr-extension": "^2.7.8", - "@cosmos-kit/keplr-mobile": "^2.6.8" - } + "node_modules/@cosmos-kit/cosmostation-extension/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" }, "node_modules/@cosmos-kit/keplr-extension": { "version": "2.7.9", @@ -2815,30 +3008,6 @@ "@cosmjs/proto-signing": ">=0.32.2" } }, - "node_modules/@cosmos-kit/keplr-mobile": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/keplr-mobile/-/keplr-mobile-2.6.8.tgz", - "integrity": "sha512-Kyb/cxYxqlkkdBaFw067FY8yYHuCr2MjtJ2bgQq6sNXHSKRGvUO7aur6Vb/A1uogpmbhMEka0UFA45HHPgAZhw==", - "dependencies": { - "@chain-registry/keplr": "1.28.0", - "@cosmos-kit/core": "^2.8.8", - "@cosmos-kit/walletconnect": "^2.5.8" - }, - "peerDependencies": { - "@cosmjs/amino": ">=0.32.2", - "@cosmjs/proto-signing": ">=0.32.2" - } - }, - "node_modules/@cosmos-kit/leap": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/leap/-/leap-2.6.8.tgz", - "integrity": "sha512-5ioVlKa+YqvBVdcEBLCjYLFr8bQgAZlVA74tNIyny+7+69IrZSEbJxPJoOm9i5IMaZuII0AJvThYY0IHR1zN4Q==", - "dependencies": { - "@cosmos-kit/leap-extension": "^2.7.8", - "@cosmos-kit/leap-metamask-cosmos-snap": "^0.5.8", - "@cosmos-kit/leap-mobile": "^2.6.8" - } - }, "node_modules/@cosmos-kit/leap-extension": { "version": "2.7.10", "resolved": "https://registry.npmjs.org/@cosmos-kit/leap-extension/-/leap-extension-2.7.10.tgz", @@ -2852,32 +3021,6 @@ "@cosmjs/proto-signing": ">=0.32.2" } }, - "node_modules/@cosmos-kit/leap-metamask-cosmos-snap": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/leap-metamask-cosmos-snap/-/leap-metamask-cosmos-snap-0.5.8.tgz", - "integrity": "sha512-5vy1CfA3ZFlib/qepAeYbgr0rgk4nfFvdJc4lgIwFmOhYVsZvC2+a1rNb1f9V0cuKDsNDLLV/DhUcnrROm1TQQ==", - "dependencies": { - "@chain-registry/keplr": "1.28.0", - "@cosmos-kit/core": "^2.8.8", - "@leapwallet/cosmos-snap-provider": "0.1.25", - "@metamask/providers": "^11.1.1" - }, - "peerDependencies": { - "@cosmjs/amino": ">=0.32.2", - "@cosmjs/proto-signing": ">=0.32.2", - "cosmjs-types": ">=0.9.0" - } - }, - "node_modules/@cosmos-kit/leap-mobile": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/leap-mobile/-/leap-mobile-2.6.8.tgz", - "integrity": "sha512-MNapVwhtSQgqFwi08krdY1R/ZhVbzOXc1xisb+zqGDGrsNksrVSQPG/C7soYb3sFa7+veDDpQDL3aa30s01NMg==", - "dependencies": { - "@chain-registry/keplr": "1.28.0", - "@cosmos-kit/core": "^2.8.8", - "@cosmos-kit/walletconnect": "^2.5.8" - } - }, "node_modules/@cosmos-kit/okxwallet": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/@cosmos-kit/okxwallet/-/okxwallet-2.4.8.tgz", @@ -3017,42 +3160,6 @@ "@cosmjs/proto-signing": ">=0.32.2" } }, - "node_modules/@cosmos-kit/walletconnect": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/walletconnect/-/walletconnect-2.5.8.tgz", - "integrity": "sha512-k4ookgLGOMy3z/+GCfU6WfOIRFTLB0pu4lwv5fBw10yZXvzeNLWPUNPT8jEe4OF6W6ifcZ+dV7HJt41FiV7zyg==", - "dependencies": { - "@cosmjs/proto-signing": "0.32.2", - "@cosmos-kit/core": "^2.8.8", - "@walletconnect/sign-client": "^2.9.0", - "@walletconnect/utils": "^2.9.0", - "events": "3.3.0" - }, - "peerDependencies": { - "@cosmjs/amino": ">=0.32.2", - "@walletconnect/types": "2.11.0" - } - }, - "node_modules/@cosmos-kit/xdefi": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/xdefi/-/xdefi-2.5.8.tgz", - "integrity": "sha512-3VCPT26v12nMLBVq+J4muHXluwY15GgiET8ktkODuudmqx6Oe2CMoZs7HCOl90D4MHFYzCj/tRCQBx3tVigXGQ==", - "dependencies": { - "@cosmos-kit/xdefi-extension": "^2.6.8" - } - }, - "node_modules/@cosmos-kit/xdefi-extension": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/@cosmos-kit/xdefi-extension/-/xdefi-extension-2.6.8.tgz", - "integrity": "sha512-dqxk1vc4kEPVrWwOEv1l1HPVoa3ypoBpACXY+5YVNBVwy83VUQklS5LIr5UPbRD3sijLJGLIXWuSM8xRJgjE9g==", - "dependencies": { - "@cosmos-kit/core": "^2.8.8" - }, - "peerDependencies": { - "@cosmjs/amino": ">=0.32.2", - "@cosmjs/proto-signing": ">=0.32.2" - } - }, "node_modules/@cosmostation/extension-client": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/@cosmostation/extension-client/-/extension-client-0.1.15.tgz", @@ -5071,6 +5178,29 @@ "snakecase-keys": "^5.4.1" } }, + "node_modules/@injectivelabs/sdk-ts/node_modules/@cosmjs/proto-signing": { + "version": "0.31.3", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz", + "integrity": "sha512-24+10/cGl6lLS4VCrGTCJeDRPQTn1K5JfknzXzDIHOx8THR31JxA7/HV5eWGHqWgAbudA7ccdSvEK08lEHHtLA==", + "dependencies": { + "@cosmjs/amino": "^0.31.3", + "@cosmjs/crypto": "^0.31.3", + "@cosmjs/encoding": "^0.31.3", + "@cosmjs/math": "^0.31.3", + "@cosmjs/utils": "^0.31.3", + "cosmjs-types": "^0.8.0", + "long": "^4.0.0" + } + }, + "node_modules/@injectivelabs/sdk-ts/node_modules/@cosmjs/proto-signing/node_modules/cosmjs-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.8.0.tgz", + "integrity": "sha512-Q2Mj95Fl0PYMWEhA2LuGEIhipF7mQwd9gTQ85DdP9jjjopeoGaDxvmPa5nakNzsq7FnO1DMTatXTAx6bxMH7Lg==", + "dependencies": { + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, "node_modules/@injectivelabs/sdk-ts/node_modules/axios": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", @@ -5085,6 +5215,15 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, + "node_modules/@injectivelabs/sdk-ts/node_modules/cosmjs-types": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", + "integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==", + "dependencies": { + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, "node_modules/@injectivelabs/sdk-ts/node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -6290,30 +6429,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@leapwallet/cosmos-snap-provider": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@leapwallet/cosmos-snap-provider/-/cosmos-snap-provider-0.1.25.tgz", - "integrity": "sha512-oov2jgISkvoAYvGsWkPscFt/XEEv1McTehTqJRfIJPO8uebIE6goJi4wjaaMW3wDIDsMMK54uGSdqbL6C8ciYQ==", - "dependencies": { - "@cosmjs/amino": "^0.31.0", - "@cosmjs/proto-signing": "^0.31.0", - "bignumber.js": "^9.1.2", - "long": "^5.2.3" - } - }, - "node_modules/@leapwallet/cosmos-snap-provider/node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "engines": { - "node": "*" - } - }, - "node_modules/@leapwallet/cosmos-snap-provider/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, "node_modules/@ledgerhq/hw-transport-webhid": { "version": "6.27.1", "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.27.1.tgz", @@ -6566,27 +6681,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/@metamask/providers": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@metamask/providers/-/providers-11.1.2.tgz", - "integrity": "sha512-xjE4cKrGpKZjripkMKMStc0H4LXrWJPijfbaj1kKeDLVhRH2Yu3ZecV3iIhf1EIJePeA+Kx6Pcm7d0IVJ+ea7g==", - "dependencies": { - "@metamask/object-multiplex": "^1.1.0", - "@metamask/safe-event-emitter": "^3.0.0", - "detect-browser": "^5.2.0", - "eth-rpc-errors": "^4.0.2", - "extension-port-stream": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "is-stream": "^2.0.0", - "json-rpc-engine": "^6.1.0", - "json-rpc-middleware-stream": "^4.2.1", - "pump": "^3.0.0", - "webextension-polyfill": "^0.10.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@metamask/rpc-errors": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.2.1.tgz", @@ -11270,6 +11364,39 @@ "react-dom": "17.x || 18.x" } }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/amino": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.3.tgz", + "integrity": "sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/cosmwasm-stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.3.tgz", + "integrity": "sha512-pqkt+QsLIPNMTRh9m+igJgIpzXXgn1BxmxfAb9zlC23kvsuzY/12un9M7iAdim1NwKXDFeYw46xC2YkprwQp+g==", + "dependencies": { + "@cosmjs/amino": "^0.32.3", + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stargate": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/cosmwasm-stargate/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@skip-go/widget/node_modules/@cosmjs/crypto": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", @@ -11284,6 +11411,16 @@ "libsodium-wrappers-sumo": "^0.7.11" } }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, "node_modules/@skip-go/widget/node_modules/@cosmjs/json-rpc": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.3.tgz", @@ -11312,6 +11449,28 @@ "xstream": "^11.14.0" } }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "dependencies": { + "@confio/ics23": "^0.6.8", + "@cosmjs/amino": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stream": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@skip-go/widget/node_modules/@cosmjs/stargate/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@skip-go/widget/node_modules/@cosmjs/stream": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", @@ -11416,6 +11575,39 @@ "chain-registry": "^1.33.11" } }, + "node_modules/@skip-router/core/node_modules/@cosmjs/amino": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.3.tgz", + "integrity": "sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@skip-router/core/node_modules/@cosmjs/cosmwasm-stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.3.tgz", + "integrity": "sha512-pqkt+QsLIPNMTRh9m+igJgIpzXXgn1BxmxfAb9zlC23kvsuzY/12un9M7iAdim1NwKXDFeYw46xC2YkprwQp+g==", + "dependencies": { + "@cosmjs/amino": "^0.32.3", + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stargate": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@skip-router/core/node_modules/@cosmjs/cosmwasm-stargate/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@skip-router/core/node_modules/@cosmjs/crypto": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", @@ -11430,6 +11622,16 @@ "libsodium-wrappers-sumo": "^0.7.11" } }, + "node_modules/@skip-router/core/node_modules/@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, "node_modules/@skip-router/core/node_modules/@cosmjs/json-rpc": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.3.tgz", @@ -11458,6 +11660,28 @@ "xstream": "^11.14.0" } }, + "node_modules/@skip-router/core/node_modules/@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "dependencies": { + "@confio/ics23": "^0.6.8", + "@cosmjs/amino": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stream": "^0.32.3", + "@cosmjs/tendermint-rpc": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "cosmjs-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@skip-router/core/node_modules/@cosmjs/stargate/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, "node_modules/@skip-router/core/node_modules/@cosmjs/stream": { "version": "0.32.3", "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", diff --git a/package.json b/package.json index 6a2ffe83..9f07a4cc 100644 --- a/package.json +++ b/package.json @@ -18,32 +18,7 @@ "test:e2e-3": "playwright test 3cosmoshubAtomToNobleUSDC.spec.ts --project=chromium", "visdeps": "bash ./src/scripts/visdeps.sh" }, - "overrides": { - "@cosmjs/amino": "0.31.x", - "@cosmjs/cosmwasm-stargate": "0.31.x", - "@cosmjs/encoding": "0.31.x", - "@cosmjs/proto-signing": "0.31.x", - "@cosmjs/stargate": "0.31.x", - "cosmjs-types": "0.8.x" - }, "dependencies": { - "@cosmjs/amino": "0.31.x", - "@cosmjs/cosmwasm-stargate": "0.31.x", - "@cosmjs/encoding": "0.31.x", - "@cosmjs/proto-signing": "0.31.x", - "@cosmjs/stargate": "0.31.x", - "@cosmos-kit/core": "2.8.x", - "@cosmos-kit/cosmostation": "2.6.x", - "@cosmos-kit/cosmostation-extension": "^2.7.10", - "@cosmos-kit/keplr": "2.6.x", - "@cosmos-kit/keplr-extension": "^2.7.9", - "@cosmos-kit/leap": "2.6.x", - "@cosmos-kit/leap-extension": "^2.7.10", - "@cosmos-kit/okxwallet": "2.4.x", - "@cosmos-kit/react": "2.10.x", - "@cosmos-kit/station": "2.5.x", - "@cosmos-kit/vectis": "2.6.x", - "@cosmos-kit/xdefi": "2.5.x", "@fontsource/jost": "^5.0.16", "@graz-sh/types": "^0.0.14", "@heroicons/react": "^2.1.1", diff --git a/src/components/AssetInput.tsx b/src/components/AssetInput.tsx deleted file mode 100644 index 9044f8b5..00000000 --- a/src/components/AssetInput.tsx +++ /dev/null @@ -1,232 +0,0 @@ -import { BackspaceIcon } from "@heroicons/react/20/solid"; -import { Asset } from "@skip-router/core"; -import { BigNumber } from "bignumber.js"; -import { MouseEventHandler, useMemo } from "react"; -import { formatUnits } from "viem"; - -import { useAssets } from "@/context/assets"; -import { useAnyDisclosureOpen } from "@/context/disclosures"; -import { useAccount } from "@/hooks/useAccount"; -import { useBalancesByChain } from "@/hooks/useBalancesByChain"; -import { Chain } from "@/hooks/useChains"; -import { formatPercent, formatUSD } from "@/utils/intl"; -import { formatNumberWithCommas, formatNumberWithoutCommas } from "@/utils/number"; -import { cn } from "@/utils/ui"; - -import AssetSelect from "./AssetSelect"; -import ChainSelect from "./ChainSelect"; -import { SimpleTooltip } from "./SimpleTooltip"; -import { SpinnerIcon } from "./SpinnerIcon"; - -interface Props { - amount: string; - amountUSD?: string; - diffPercentage?: number; - onAmountChange?: (amount: string) => void; - onAmountMax?: MouseEventHandler; - asset?: Asset; - onAssetChange?: (asset: Asset) => void; - chain?: Chain; - onChainChange?: (chain: Chain) => void; - chains: Chain[]; - context: "source" | "destination"; - isError?: string | boolean; - isLoading?: boolean; -} - -function AssetInput({ - amount, - amountUSD, - diffPercentage = 0, - onAmountChange, - onAmountMax, - asset, - onAssetChange, - chain, - chains, - onChainChange, - context, - isError, - isLoading, -}: Props) { - const { assetsByChainID, getNativeAssets } = useAssets(); - - const assets = useMemo(() => { - if (!chain) return getNativeAssets(); - return assetsByChainID(chain.chainID); - }, [assetsByChainID, chain, getNativeAssets]); - - const account = useAccount(chain?.chainID); - - const isAnyDisclosureOpen = useAnyDisclosureOpen(); - - const { data: balances, isLoading: isBalancesLoading } = useBalancesByChain({ - address: account?.address, - chain, - assets, - enabled: !isAnyDisclosureOpen && context === "source", - }); - - const selectedAssetBalance = useMemo(() => { - if (!asset || !balances) return "0"; - return formatUnits(BigInt(balances[asset.denom] ?? "0"), asset.decimals ?? 6); - }, [asset, balances]); - - const maxButtonDisabled = useMemo(() => { - return parseFloat(selectedAssetBalance) <= 0; - }, [selectedAssetBalance]); - - return ( -
-
-
- -
-
- -
-
-
- {isLoading && } - {amount && !isLoading && ( - - )} - { - if (!onAmountChange) return; - - let latest = e.target.value; - - if (latest.match(/^[.,]/)) latest = `0.${latest}`; // Handle first character being a period or comma - latest = latest.replace(/^[0]{2,}/, "0"); // Remove leading zeros - latest = latest.replace(/[^\d.,]/g, ""); // Remove non-numeric and non-decimal characters - latest = latest.replace(/[.]{2,}/g, "."); // Remove multiple decimals - latest = latest.replace(/[,]{2,}/g, ","); // Remove multiple commas - - onAmountChange?.(formatNumberWithoutCommas(latest)); - }} - onKeyDown={(event) => { - if (!onAmountChange) return; - - if (event.key === "Escape") { - if (event.currentTarget.selectionStart === event.currentTarget.selectionEnd) { - event.currentTarget.select(); - } - return; - } - - if (event.key === "ArrowUp" || event.key === "ArrowDown") { - let value = new BigNumber(formatNumberWithoutCommas(event.currentTarget.value) || "0"); - if (event.key === "ArrowUp") { - event.preventDefault(); - if (event.shiftKey) { - value = value.plus(10); - } else if (event.altKey || event.ctrlKey || event.metaKey) { - value = value.plus(0.1); - } else { - value = value.plus(1); - } - } - if (event.key === "ArrowDown") { - event.preventDefault(); - if (event.shiftKey) { - value = value.minus(10); - } else if (event.altKey || event.ctrlKey || event.metaKey) { - value = value.minus(0.1); - } else { - value = value.minus(1); - } - } - if (value.isNegative()) { - value = new BigNumber(0); - } - onAmountChange(value.toString()); - } - }} - /> -
-

- {amountUSD && Number(amountUSD) > 0 ? formatUSD(amountUSD) : null} -

- {amountUSD !== undefined && Number(amountUSD) > 0 && diffPercentage !== 0 && context === "destination" ? ( -

= 0 ? "text-green-500" : "text-red-500")}> - ({formatPercent(diffPercentage)}) -

- ) : null} -
- {context === "source" && account?.address && asset && ( -
- Balance:{" "} - {isBalancesLoading ? ( - - ) : ( - -
- {parseFloat(selectedAssetBalance).toLocaleString("en-US", { - maximumFractionDigits: 4, - })} -
-
- )} - -
- )} -
-
- {typeof isError === "string" && ( -
- {isError} -
- )} -
- ); -} - -export default AssetInput; diff --git a/src/components/AssetSelect/AssetSelectContent.tsx b/src/components/AssetSelect/AssetSelectContent.tsx deleted file mode 100644 index 0de0f266..00000000 --- a/src/components/AssetSelect/AssetSelectContent.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import { ArrowLeftIcon } from "@heroicons/react/20/solid"; -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import { Asset } from "@skip-router/core"; -import { matchSorter } from "match-sorter"; -import { useEffect, useMemo, useRef, useState } from "react"; -import { formatUnits } from "viem"; - -import { cn } from "@/utils/ui"; - -import { SpinnerIcon } from "../SpinnerIcon"; - -interface Props { - assets?: Asset[]; - balances: Record; - onChange?: (asset: Asset) => void; - onClose: () => void; - showChainInfo?: boolean; - isBalancesLoading?: boolean; -} - -function AssetSelectContent({ assets = [], balances, onChange, onClose, showChainInfo, isBalancesLoading }: Props) { - const inputRef = useRef(null); - - useEffect(() => inputRef.current?.focus(), []); - - const [searchValue, setSearchValue] = useState(""); - - const sortedAssets = useMemo(() => { - return assets - ?.sort((a, b) => { - if (!a.recommendedSymbol) return 1; - if (!b.recommendedSymbol) return -1; - if (a.recommendedSymbol > b.recommendedSymbol) return 1; - if (a.recommendedSymbol < b.recommendedSymbol) return -1; - return 0; - }) - .filter((asset) => { - if (asset.originChainID === "sifchain-1" && asset.originDenom !== "rowan") { - return false; - } - return true; - }) - .sort((a, b) => { - const balanceA = BigInt(balances[a.denom] || "0"); - const balanceB = BigInt(balances[b.denom] || "0"); - if (balanceA > balanceB) return -1; - if (balanceA < balanceB) return 1; - return 0; - }); - }, [assets, balances]); - - const filteredAssets = useMemo(() => { - if (!searchValue) return sortedAssets; - return matchSorter(sortedAssets || [], searchValue, { - keys: ["recommendedSymbol", "symbol", "denom"], - }); - }, [searchValue, sortedAssets]); - - return ( -
-
- -

Select Token

- {isBalancesLoading && } -
- setSearchValue(e.target.value)} - value={searchValue} - ref={inputRef} - /> - - - {filteredAssets.map((asset) => ( - - ))} - - - - - - -
- ); -} - -export default AssetSelectContent; diff --git a/src/components/AssetSelect/index.tsx b/src/components/AssetSelect/index.tsx deleted file mode 100644 index c34ed24e..00000000 --- a/src/components/AssetSelect/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { ChevronDownIcon } from "@heroicons/react/20/solid"; -import { Asset } from "@skip-router/core"; -import { useState } from "react"; - -import { Dialog, DialogContent, DialogTrigger } from "@/components/Dialog"; -import { cn } from "@/utils/ui"; - -import AssetSelectContent from "./AssetSelectContent"; - -interface Props { - asset?: Asset; - assets?: Asset[]; - balances?: Record; - onChange?: (asset: Asset) => void; - showChainInfo?: boolean; - isBalancesLoading?: boolean; -} - -function AssetSelect({ asset, assets, balances, onChange, showChainInfo, isBalancesLoading }: Props) { - const [isOpen, setIsOpen] = useState(false); - return ( - - - - - - setIsOpen(false)} - showChainInfo={showChainInfo} - isBalancesLoading={isBalancesLoading} - /> - - - ); -} - -export default AssetSelect; diff --git a/src/components/AssetValue.tsx b/src/components/AssetValue.tsx deleted file mode 100644 index c5ea9551..00000000 --- a/src/components/AssetValue.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useMemo } from "react"; -import { formatUnits } from "viem"; - -import { useAssets } from "@/context/assets"; -import { raise } from "@/utils/assert"; - -interface Props { - chainId: string; - denom: string; - value: string; -} - -export function AssetValue({ chainId, denom, value }: Props) { - const { getAsset } = useAssets(); - - const { decimals = 6, recommendedSymbol } = useMemo(() => { - return getAsset(denom, chainId) || raise(`AssetValue error: no asset found for '${denom}' on '${chainId}'`); - }, [chainId, denom, getAsset]); - - const formattedValue = useMemo(() => { - const v = formatUnits(BigInt(value), decimals); - return parseFloat(v).toLocaleString("en-US", { - maximumFractionDigits: 2, - }); - }, [decimals, value]); - - return ( - - {formattedValue} {recommendedSymbol} - - ); -} diff --git a/src/components/BuildInfo.tsx b/src/components/BuildInfo.tsx deleted file mode 100644 index e425f0f7..00000000 --- a/src/components/BuildInfo.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { ReactNode, useEffect, useState } from "react"; -import { tinykeys } from "tinykeys"; - -import { API_URL } from "@/constants/api"; -import { cn } from "@/utils/ui"; - -const githubUrl = "https://github.com/skip-mev/ibc-dot-fun"; - -const buildInfo: [string, ReactNode][] = [ - ["node env", process.env.NODE_ENV], - ["api url", API_URL], - [ - "commit", - process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA - ? `${githubUrl}/commit/${process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA}` - : null, - ], - [ - "pull request", - process.env.NEXT_PUBLIC_GIT_PULL_REQUEST_ID - ? `${githubUrl}/pull/${process.env.NEXT_PUBLIC_GIT_PULL_REQUEST_ID}` - : null, - ], -]; - -export const BuildInfo = () => { - const [show, setShow] = useState(() => process.env.NEXT_PUBLIC_VERCEL_ENV !== "production"); - - useEffect(() => { - return tinykeys(window, { - "Shift+Escape": () => setShow((prev) => !prev), - }); - }, []); - - if (!show) return null; - - return ( -
-
- {buildInfo.map( - ([k, v], i) => - v && ( -
-
{k}
-
- {typeof v === "string" && /^https?:\/\//.test(v) ? ( - - {v.replace(/^https?:\/\//, "")} - - ) : ( - v - )} -
-
- ), - )} -
-
- -
- ); -}; diff --git a/src/components/ChainSelect/ChainSelectContent.tsx b/src/components/ChainSelect/ChainSelectContent.tsx deleted file mode 100644 index c6852fe6..00000000 --- a/src/components/ChainSelect/ChainSelectContent.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { ArrowLeftIcon } from "@heroicons/react/20/solid"; -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import { matchSorter } from "match-sorter"; -import { useEffect, useMemo, useRef, useState } from "react"; - -import { Chain } from "@/hooks/useChains"; -import { cn } from "@/utils/ui"; - -interface Props { - chains: Chain[]; - onChange: (chain: Chain) => void; - onClose: () => void; -} - -function ChainSelectContent({ chains, onChange, onClose }: Props) { - const inputRef = useRef(null); - - useEffect(() => inputRef.current?.focus(), []); - - const [searchValue, setSearchValue] = useState(""); - - const filteredChains = useMemo(() => { - if (!searchValue) return chains; - return matchSorter(chains, searchValue, { - keys: ["chainID", "chainName", "prettyName"], - }); - }, [chains, searchValue]); - - return ( -
-
- -

Select Network

-
- setSearchValue(e.target.value)} - value={searchValue} - ref={inputRef} - /> - {chains.length < 1 ? ( -
- - - - -
- ) : ( - - - {filteredChains.map((chain) => ( - - ))} - - - - - - - )} -
- ); -} - -export default ChainSelectContent; diff --git a/src/components/ChainSelect/ChainSelectTrigger.tsx b/src/components/ChainSelect/ChainSelectTrigger.tsx deleted file mode 100644 index 162fcf46..00000000 --- a/src/components/ChainSelect/ChainSelectTrigger.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { ChevronDownIcon } from "@heroicons/react/20/solid"; -import { forwardRef } from "react"; - -import { Chain } from "@/hooks/useChains"; -import { cn } from "@/utils/ui"; - -interface Props { - chain?: Chain; -} - -const ChainSelectTrigger = forwardRef( - function ChainSelectTrigger({ chain, ...props }, ref) { - return ( - - ); - }, - // -); - -export default ChainSelectTrigger; diff --git a/src/components/ChainSelect/index.tsx b/src/components/ChainSelect/index.tsx deleted file mode 100644 index f90ada4c..00000000 --- a/src/components/ChainSelect/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { FC, Fragment, useState } from "react"; - -import { Dialog, DialogContent, DialogTrigger } from "@/components/Dialog"; -import { Chain } from "@/hooks/useChains"; - -import ChainSelectContent from "./ChainSelectContent"; -import ChainSelectTrigger from "./ChainSelectTrigger"; - -interface Props { - chain?: Chain; - chains: Chain[]; - onChange?: (chain: Chain) => void; -} - -const ChainSelect: FC = ({ chain, chains, onChange = () => {} }) => { - const [isOpen, setIsOpen] = useState(false); - return ( - - - - - - - { - onChange(_chain); - setIsOpen(false); - }} - onClose={() => setIsOpen(false)} - /> - - - - ); -}; - -export default ChainSelect; diff --git a/src/components/ChainSymbol.tsx b/src/components/ChainSymbol.tsx deleted file mode 100644 index c11ffefe..00000000 --- a/src/components/ChainSymbol.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { CubeIcon } from "@heroicons/react/20/solid"; -import { useMemo } from "react"; - -import { useChainByID } from "@/hooks/useChains"; - -interface Props { - chainId: string; -} - -export const ChainSymbol = ({ chainId }: Props) => { - const { data: chain } = useChainByID(chainId); - - const src = useMemo(() => { - if (!chain) return; - return chain.logoURI; - }, [chain]); - - const alt = chain?.prettyName || chain?.chainName || "UNKNOWN"; - - const Icon = src ? "img" : CubeIcon; - const iconProps = src ? { src, alt } : {}; - - return ( -
- - {alt} -
- ); -}; diff --git a/src/components/ClientOnly.tsx b/src/components/ClientOnly.tsx deleted file mode 100644 index b9123806..00000000 --- a/src/components/ClientOnly.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { ReactNode, useEffect, useState } from "react"; - -export function ClientOnly({ children }: { children: ReactNode }) { - const [state, setState] = useState(false); - useEffect(() => setState(true), []); - return state ? <>{children} : null; -} diff --git a/src/components/ConnectWalletButtonSmall.tsx b/src/components/ConnectWalletButtonSmall.tsx deleted file mode 100644 index 6a58ff0c..00000000 --- a/src/components/ConnectWalletButtonSmall.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { PlusIcon } from "@heroicons/react/20/solid"; -import { ComponentProps } from "react"; - -import { cn } from "@/utils/ui"; - -export function ConnectWalletButtonSmall({ className, ...props }: ComponentProps<"button">) { - return ( - - ); -} diff --git a/src/components/ConnectedWalletButton.tsx b/src/components/ConnectedWalletButton.tsx deleted file mode 100644 index 2c82f0ee..00000000 --- a/src/components/ConnectedWalletButton.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { ComponentProps, forwardRef } from "react"; - -import { cn } from "@/utils/ui"; - -type Props = ComponentProps<"button"> & { - address: string; - walletName: string; - walletLogo?: string; -}; - -export const ConnectedWalletButton = forwardRef( - function Component(props, ref) { - const { address, walletLogo, walletName, className, ...rest } = props; - return ( - - ); - }, - // -); diff --git a/src/components/ConversionRate.tsx b/src/components/ConversionRate.tsx deleted file mode 100644 index 4c2c348b..00000000 --- a/src/components/ConversionRate.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { Asset } from "@skip-router/core"; -import { ReactNode, useCallback, useMemo, useState } from "react"; - -export interface Props { - srcAsset: Asset; - destAsset: Asset; - amountIn: string; - amountOut: string; - defaultDirection?: ConvDirection; - - children: (args: RenderArgs) => ReactNode; -} - -interface RenderArgs { - left: Asset; - right: Asset; - conversion: number; - toggle: () => void; -} - -export const ConversionRate = ({ - srcAsset: src, - destAsset: dest, - amountIn, - amountOut, - defaultDirection = ConvDirection.DEST_SRC, - children, -}: Props) => { - const [direction, setState] = useState(() => defaultDirection); - - const toggle = useCallback(() => { - setState((prev) => { - return prev === ConvDirection.DEST_SRC ? ConvDirection.SRC_DEST : ConvDirection.DEST_SRC; - }); - }, []); - - const left = direction === ConvDirection.DEST_SRC ? dest : src; - const right = direction === ConvDirection.DEST_SRC ? src : dest; - - const conversion = useMemo(() => { - if (direction === ConvDirection.DEST_SRC) { - return +amountIn / +amountOut; - } else { - return +amountOut / +amountIn; - } - }, [amountIn, amountOut, direction]); - - const renderArgs: RenderArgs = useMemo( - () => ({ left, right, conversion, toggle }), - [conversion, left, right, toggle], - ); - - return children(renderArgs); -}; - -export enum ConvDirection { - DEST_SRC = "dest-src", - SRC_DEST = "src-dest", -} diff --git a/src/components/Dialog/Dialog.tsx b/src/components/Dialog/Dialog.tsx deleted file mode 100644 index af10b587..00000000 --- a/src/components/Dialog/Dialog.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as RadixDialog from "@radix-ui/react-dialog"; -import { PropsWithChildren, useRef } from "react"; - -import { DialogContext } from "./context"; - -interface Props extends PropsWithChildren { - open: boolean; - onOpenChange: (open: boolean) => void; -} - -export function Dialog({ children, open, onOpenChange }: Props) { - const ref = useRef(null); - - return ( - - - {children} -
- - - ); -} diff --git a/src/components/Dialog/DialogContent.tsx b/src/components/Dialog/DialogContent.tsx deleted file mode 100644 index 68e4c209..00000000 --- a/src/components/Dialog/DialogContent.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import * as Dialog from "@radix-ui/react-dialog"; -import { DialogContentProps } from "@radix-ui/react-dialog"; -import { PropsWithChildren, useContext } from "react"; - -import { DialogContext } from "./context"; - -interface Props extends PropsWithChildren { - onInteractOutside?: DialogContentProps["onInteractOutside"]; -} - -export function DialogContent({ children, onInteractOutside }: Props) { - const { open, container } = useContext(DialogContext); - - if (!open) return null; - - return ( - - - {children} - - - ); -} diff --git a/src/components/Dialog/DialogTrigger.tsx b/src/components/Dialog/DialogTrigger.tsx deleted file mode 100644 index c6ad2486..00000000 --- a/src/components/Dialog/DialogTrigger.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import * as RadixDialog from "@radix-ui/react-dialog"; -import { ForwardedRef, forwardRef, PropsWithChildren } from "react"; - -interface Props extends PropsWithChildren {} - -export const DialogTrigger = forwardRef(function DialogTrigger( - { children, ...props }: Props, - ref: ForwardedRef, -) { - return ( - - {children} - - ); -}); diff --git a/src/components/Dialog/context.ts b/src/components/Dialog/context.ts deleted file mode 100644 index 9d766a5f..00000000 --- a/src/components/Dialog/context.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createContext, RefObject } from "react"; - -export interface DialogContext { - open: boolean; - onOpenChange: (open: boolean) => void; - container: RefObject; -} - -export const DialogContext = createContext({ - open: false, - onOpenChange: () => {}, - container: { current: null }, -}); diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx deleted file mode 100644 index 06a856fd..00000000 --- a/src/components/Dialog/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./Dialog"; -export * from "./DialogContent"; -export * from "./DialogTrigger"; diff --git a/src/components/EmbedButton.tsx b/src/components/EmbedButton.tsx deleted file mode 100644 index 3e8c6e19..00000000 --- a/src/components/EmbedButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { CodeBracketIcon } from "@heroicons/react/20/solid"; - -import { disclosure } from "@/context/disclosures"; -import { cn } from "@/utils/ui"; - -import { SimpleTooltip } from "./SimpleTooltip"; - -export const EmbedButton = () => { - return ( - - - - ); -}; diff --git a/src/components/EmbedDialog/index.tsx b/src/components/EmbedDialog/index.tsx deleted file mode 100644 index 5e497c4a..00000000 --- a/src/components/EmbedDialog/index.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { ArrowLeftIcon } from "@heroicons/react/20/solid"; -import * as Dialog from "@radix-ui/react-dialog"; -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import toast from "react-hot-toast"; - -import { useDisclosureKey } from "@/context/disclosures"; -import { cn } from "@/utils/ui"; - -export const EmbedDialog = ({ embedLink }: { embedLink: string }) => { - const [isOpen, { close }] = useDisclosureKey("embedDialog"); - - const embedCode = `