@swapkit/wallets 3.0.0-beta.2 → 3.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-p1kdg37m.js → chunk-38ztynv0.js} +1 -1
- package/dist/{chunk-p1kdg37m.js.map → chunk-38ztynv0.js.map} +1 -1
- package/dist/chunk-4ef2xs46.js +3 -0
- package/dist/chunk-4ef2xs46.js.map +10 -0
- package/dist/chunk-qgv1myym.js +3 -0
- package/dist/chunk-qgv1myym.js.map +10 -0
- package/dist/chunk-s6xqbsy0.js +4 -0
- package/dist/{chunk-czhtd6cy.js.map → chunk-s6xqbsy0.js.map} +3 -3
- package/dist/{chunk-qadd75nn.js → chunk-sygzrjje.js} +2 -2
- package/dist/{chunk-qadd75nn.js.map → chunk-sygzrjje.js.map} +3 -3
- package/dist/chunk-w07sv0jv.js +3 -0
- package/dist/chunk-w07sv0jv.js.map +10 -0
- package/dist/chunk-y0g3prs9.js +3 -0
- package/dist/chunk-y0g3prs9.js.map +10 -0
- package/dist/src/bitget/index.cjs +2 -2
- package/dist/src/bitget/index.cjs.map +3 -3
- package/dist/src/bitget/index.js +2 -2
- package/dist/src/bitget/index.js.map +3 -3
- package/dist/src/coinbase/index.js +1 -1
- package/dist/src/ctrl/index.cjs +2 -2
- package/dist/src/ctrl/index.cjs.map +3 -3
- package/dist/src/ctrl/index.js +2 -2
- package/dist/src/ctrl/index.js.map +3 -3
- package/dist/src/evm-extensions/index.js +1 -1
- package/dist/src/exodus/index.cjs +2 -2
- package/dist/src/exodus/index.cjs.map +3 -3
- package/dist/src/exodus/index.js +2 -2
- package/dist/src/exodus/index.js.map +3 -3
- package/dist/src/index.js +1 -1
- package/dist/src/keepkey/index.cjs +2 -2
- package/dist/src/keepkey/index.cjs.map +4 -4
- package/dist/src/keepkey/index.js +2 -2
- package/dist/src/keepkey/index.js.map +4 -4
- package/dist/src/keepkey-bex/index.js +1 -1
- package/dist/src/keplr/index.js +1 -1
- package/dist/src/keystore/index.cjs +2 -2
- package/dist/src/keystore/index.cjs.map +3 -3
- package/dist/src/keystore/index.js +2 -2
- package/dist/src/keystore/index.js.map +3 -3
- package/dist/src/ledger/index.cjs +3 -3
- package/dist/src/ledger/index.cjs.map +12 -11
- package/dist/src/ledger/index.js +3 -3
- package/dist/src/ledger/index.js.map +12 -11
- package/dist/src/okx/index.cjs +2 -2
- package/dist/src/okx/index.cjs.map +3 -3
- package/dist/src/okx/index.js +2 -2
- package/dist/src/okx/index.js.map +3 -3
- package/dist/src/onekey/index.cjs +2 -2
- package/dist/src/onekey/index.cjs.map +3 -3
- package/dist/src/onekey/index.js +2 -2
- package/dist/src/onekey/index.js.map +3 -3
- package/dist/src/phantom/index.js +1 -1
- package/dist/src/polkadotjs/index.js +1 -1
- package/dist/src/radix/index.js +1 -1
- package/dist/src/talisman/index.js +1 -1
- package/dist/src/trezor/index.cjs +2 -2
- package/dist/src/trezor/index.cjs.map +3 -3
- package/dist/src/trezor/index.js +2 -2
- package/dist/src/trezor/index.js.map +3 -3
- package/dist/src/walletconnect/index.cjs +2 -2
- package/dist/src/walletconnect/index.cjs.map +3 -3
- package/dist/src/walletconnect/index.js +2 -2
- package/dist/src/walletconnect/index.js.map +3 -3
- package/package.json +22 -22
- package/src/bitget/helpers.ts +1 -2
- package/src/cosmostation/index.ts +141 -0
- package/src/ctrl/walletHelpers.ts +82 -70
- package/src/exodus/index.ts +1 -2
- package/src/keepkey/chains/mayachain.ts +1 -1
- package/src/keepkey/chains/thorchain.ts +1 -1
- package/src/keystore/helpers.ts +2 -4
- package/src/ledger/clients/cosmos.ts +2 -2
- package/src/ledger/clients/evm.ts +1 -1
- package/src/ledger/clients/utxo.ts +3 -5
- package/src/ledger/clients/xrp.ts +66 -0
- package/src/ledger/helpers/getLedgerAddress.ts +12 -3
- package/src/ledger/helpers/getLedgerClient.ts +4 -0
- package/src/ledger/helpers/getLedgerTransport.ts +4 -2
- package/src/ledger/index.ts +11 -1
- package/src/ledger/interfaces/CosmosLedgerInterface.ts +1 -1
- package/src/okx/helpers.ts +2 -1
- package/src/onekey/index.ts +1 -1
- package/src/trezor/evmSigner.ts +3 -3
- package/src/trezor/index.ts +14 -4
- package/src/types.ts +3 -0
- package/src/utils.ts +4 -0
- package/src/walletconnect/index.ts +2 -2
- package/dist/chunk-bhfpfqc3.js +0 -3
- package/dist/chunk-bhfpfqc3.js.map +0 -10
- package/dist/chunk-czhtd6cy.js +0 -4
- package/dist/chunk-q81hzyra.js +0 -3
- package/dist/chunk-q81hzyra.js.map +0 -10
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/walletconnect/index.ts", "../src/walletconnect/constants.ts", "../src/walletconnect/evmSigner.ts", "../src/walletconnect/helpers.ts", "../src/walletconnect/namespaces.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = await import(\"@cosmjs/proto-signing\");\n const { makeSignDoc } = await import(\"@cosmjs/amino\");\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (e) {\n console.error(e);\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
|
|
5
|
+
"import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (e) {\n console.error(e);\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
|
|
6
6
|
"import type { ClientMetadata } from \"./types\";\n\nexport const DEFAULT_RELAY_URL = \"wss://relay.walletconnect.com\";\n\nexport const ETHEREUM_MAINNET_ID = \"eip155:1\";\nexport const BSC_MAINNET_ID = \"eip155:56\";\nexport const AVALANCHE_MAINNET_ID = \"eip155:43114\";\nexport const THORCHAIN_MAINNET_ID = \"cosmos:thorchain\";\nexport const COSMOS_HUB_MAINNET_ID = \"cosmos:cosmoshub-4\";\nexport const KUJIRA_MAINNET_ID = \"cosmos:kaiyo-1\";\nexport const MAYACHAIN_MAINNET_ID = \"cosmos:mayachain-mainnet-v1\";\nexport const ARBITRUM_ONE_MAINNET_ID = \"eip155:42161\";\nexport const OPTIMISM_MAINNET_ID = \"eip155:10\";\nexport const POLYGON_MAINNET_ID = \"eip155:137\";\nexport const BASE_MAINNET_ID = \"eip155:8453\";\n\nexport const DEFAULT_LOGGER = \"debug\";\n\nexport const DEFAULT_APP_METADATA: ClientMetadata = {\n name: \"THORSwap\",\n description: \"THORSwap multi-chain dex aggregator powered by THORChain\",\n url: \"https://app.thorswap.finance/\",\n icons: [\"https://static.thorswap.net/logo.png\"],\n};\n\n/**\n * EIP155\n */\nexport enum DEFAULT_EIP155_METHODS {\n ETH_SEND_TRANSACTION = \"eth_sendTransaction\",\n // not supported by most WC wallets\n // ETH_SIGN_TRANSACTION = 'eth_signTransaction',\n ETH_SIGN = \"eth_sign\",\n PERSONAL_SIGN = \"personal_sign\",\n ETH_SIGN_TYPED_DATA = \"eth_signTypedData\",\n}\n\nexport enum DEFAULT_EIP_155_EVENTS {\n ETH_CHAIN_CHANGED = \"chainChanged\",\n ETH_ACCOUNTS_CHANGED = \"accountsChanged\",\n}\n\n/**\n * COSMOS\n */\nexport enum DEFAULT_COSMOS_METHODS {\n COSMOS_SIGN_DIRECT = \"cosmos_signDirect\",\n COSMOS_SIGN_AMINO = \"cosmos_signAmino\",\n COSMOS_GET_ACCOUNTS = \"cosmos_getAccounts\",\n}\n\nexport enum DEFAULT_COSMOS_EVENTS {}\n\n/**\n * SOLANA\n */\nexport enum DEFAULT_SOLANA_METHODS {\n SOL_SIGN_TRANSACTION = \"solana_signTransaction\",\n SOL_SIGN_MESSAGE = \"solana_signMessage\",\n}\n\nexport enum DEFAULT_SOLANA_EVENTS {}\n\n/**\n * POLKADOT\n */\nexport enum DEFAULT_POLKADOT_METHODS {\n POLKADOT_SIGN_TRANSACTION = \"polkadot_signTransaction\",\n POLKADOT_SIGN_MESSAGE = \"polkadot_signMessage\",\n}\n\nexport enum DEFAULT_POLKADOT_EVENTS {}\n\n/**\n * NEAR\n */\nexport enum DEFAULT_NEAR_METHODS {\n NEAR_SIGN_IN = \"near_signIn\",\n NEAR_SIGN_OUT = \"near_signOut\",\n NEAR_GET_ACCOUNTS = \"near_getAccounts\",\n NEAR_SIGN_AND_SEND_TRANSACTION = \"near_signAndSendTransaction\",\n NEAR_SIGN_AND_SEND_TRANSACTIONS = \"near_signAndSendTransactions\",\n}\n\nexport enum DEFAULT_NEAR_EVENTS {}\n",
|
|
7
7
|
"import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new Error(\"Not implemented: signTransaction\");\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new Error(\"Not implemented: signTypedData\");\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
|
|
8
8
|
"import { Chain, type EVMChain } from \"@swapkit/helpers\";\n\nimport {\n ARBITRUM_ONE_MAINNET_ID,\n AVALANCHE_MAINNET_ID,\n BASE_MAINNET_ID,\n BSC_MAINNET_ID,\n COSMOS_HUB_MAINNET_ID,\n ETHEREUM_MAINNET_ID,\n KUJIRA_MAINNET_ID,\n MAYACHAIN_MAINNET_ID,\n OPTIMISM_MAINNET_ID,\n POLYGON_MAINNET_ID,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\n\nexport const getAddressByChain = (\n chain: EVMChain | Chain.THORChain | Chain.Maya | Chain.Kujira | Chain.Cosmos,\n accounts: string[],\n) => {\n const account = accounts.find((account) => account.startsWith(chainToChainId(chain))) || \"\";\n const address = account?.split(\":\")?.[2];\n\n return address || \"\";\n};\n\nexport const chainToChainId = (chain: Chain) => {\n switch (chain) {\n case Chain.Avalanche:\n return AVALANCHE_MAINNET_ID;\n case Chain.Base:\n return BASE_MAINNET_ID;\n case Chain.BinanceSmartChain:\n return BSC_MAINNET_ID;\n case Chain.Ethereum:\n return ETHEREUM_MAINNET_ID;\n case Chain.THORChain:\n return THORCHAIN_MAINNET_ID;\n case Chain.Arbitrum:\n return ARBITRUM_ONE_MAINNET_ID;\n case Chain.Optimism:\n return OPTIMISM_MAINNET_ID;\n case Chain.Polygon:\n return POLYGON_MAINNET_ID;\n case Chain.Maya:\n return MAYACHAIN_MAINNET_ID;\n case Chain.Cosmos:\n return COSMOS_HUB_MAINNET_ID;\n case Chain.Kujira:\n return KUJIRA_MAINNET_ID;\n default:\n return \"\";\n }\n};\n",
|
|
9
9
|
"import type { ProposalTypes } from \"@walletconnect/types\";\n\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport {\n DEFAULT_COSMOS_METHODS,\n DEFAULT_EIP155_METHODS,\n DEFAULT_EIP_155_EVENTS,\n DEFAULT_NEAR_EVENTS,\n DEFAULT_NEAR_METHODS,\n DEFAULT_POLKADOT_EVENTS,\n DEFAULT_POLKADOT_METHODS,\n DEFAULT_SOLANA_EVENTS,\n DEFAULT_SOLANA_METHODS,\n} from \"./constants\";\n\nexport const getNamespacesFromChains = (chains: string[]) => {\n const supportedNamespaces: string[] = [];\n for (const chainId of chains) {\n const [namespace] = chainId.split(\":\");\n if (namespace && !supportedNamespaces.includes(namespace)) {\n supportedNamespaces.push(namespace);\n }\n }\n\n return supportedNamespaces;\n};\n\nexport const getSupportedMethodsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP155_METHODS);\n case \"cosmos\":\n return Object.values(DEFAULT_COSMOS_METHODS);\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_METHODS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_METHODS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_METHODS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getSupportedEventsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP_155_EVENTS);\n case \"cosmos\":\n return [];\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_EVENTS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_EVENTS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_EVENTS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getRequiredNamespaces = (chains: string[]): ProposalTypes.RequiredNamespaces => {\n const selectedNamespaces = getNamespacesFromChains(chains);\n\n return Object.fromEntries(\n selectedNamespaces.map((namespace) => [\n namespace,\n {\n methods: getSupportedMethodsByNamespace(namespace),\n chains: chains.filter((chain) => chain.startsWith(namespace)),\n events: getSupportedEventsByNamespace(namespace) as any[],\n },\n ]),\n );\n};\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "28A6E31B556131D864756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/package.json
CHANGED
|
@@ -5,42 +5,42 @@
|
|
|
5
5
|
"dist/"
|
|
6
6
|
],
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@coinbase/wallet-sdk": "4.3.
|
|
8
|
+
"@coinbase/wallet-sdk": "4.3.4",
|
|
9
9
|
"@cosmjs/amino": "0.33.1",
|
|
10
10
|
"@cosmjs/crypto": "0.33.1",
|
|
11
11
|
"@cosmjs/proto-signing": "0.33.1",
|
|
12
12
|
"@keepkey/keepkey-sdk": "0.2.62",
|
|
13
|
-
"@keplr-wallet/types": "0.12.
|
|
14
|
-
"@ledgerhq/devices": "8.4.
|
|
15
|
-
"@ledgerhq/errors": "6.
|
|
16
|
-
"@ledgerhq/hw-app-btc": "10.
|
|
17
|
-
"@ledgerhq/hw-app-cosmos": "6.32.
|
|
18
|
-
"@ledgerhq/hw-app-eth": "6.45.
|
|
19
|
-
"@ledgerhq/hw-
|
|
20
|
-
"@ledgerhq/hw-transport
|
|
21
|
-
"@ledgerhq/
|
|
13
|
+
"@keplr-wallet/types": "0.12.238",
|
|
14
|
+
"@ledgerhq/devices": "8.4.6",
|
|
15
|
+
"@ledgerhq/errors": "6.21.0",
|
|
16
|
+
"@ledgerhq/hw-app-btc": "10.9.2",
|
|
17
|
+
"@ledgerhq/hw-app-cosmos": "6.32.2",
|
|
18
|
+
"@ledgerhq/hw-app-eth": "6.45.6",
|
|
19
|
+
"@ledgerhq/hw-app-xrp": "6.31.2",
|
|
20
|
+
"@ledgerhq/hw-transport": "6.31.6",
|
|
21
|
+
"@ledgerhq/hw-transport-webusb": "6.29.6",
|
|
22
|
+
"@ledgerhq/wallet-api-client": "1.9.0",
|
|
22
23
|
"@passkeys/core": "3.3.7",
|
|
23
24
|
"@passkeys/react": "2.5.4",
|
|
24
25
|
"@radixdlt/babylon-gateway-api-sdk": "1.10.1",
|
|
25
26
|
"@radixdlt/radix-dapp-toolkit": "2.2.1",
|
|
26
|
-
"@scure/base": "1.2.
|
|
27
|
-
"@scure/bip39": "1.
|
|
28
|
-
"@
|
|
29
|
-
"@swapkit/
|
|
30
|
-
"@
|
|
27
|
+
"@scure/base": "1.2.6",
|
|
28
|
+
"@scure/bip39": "1.6.0",
|
|
29
|
+
"@solana/web3.js": "1.98.2",
|
|
30
|
+
"@swapkit/helpers": "3.0.0-beta.12",
|
|
31
|
+
"@swapkit/toolboxes": "1.0.0-beta.17",
|
|
32
|
+
"@trezor/connect-web": "9.6.0",
|
|
31
33
|
"@walletconnect/modal-sign-html": "2.7.0",
|
|
32
34
|
"bitcoinjs-lib": "6.1.7",
|
|
33
35
|
"blakejs": "1.2.1",
|
|
34
36
|
"cosmjs-types": "0.9.0",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
"peerDependencies": {
|
|
39
|
-
"@solana/web3.js": "1.98.0"
|
|
37
|
+
"ripple-binary-codec": "2.4.0",
|
|
38
|
+
"sats-connect": "3.5.0",
|
|
39
|
+
"ts-pattern": "5.7.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@walletconnect/logger": "2.1.2",
|
|
43
|
-
"@walletconnect/types": "2.
|
|
43
|
+
"@walletconnect/types": "2.21.2"
|
|
44
44
|
},
|
|
45
45
|
"exports": {
|
|
46
46
|
".": {
|
|
@@ -154,5 +154,5 @@
|
|
|
154
154
|
"type-check:go": "tsgo"
|
|
155
155
|
},
|
|
156
156
|
"type": "module",
|
|
157
|
-
"version": "3.0.0-beta.
|
|
157
|
+
"version": "3.0.0-beta.20"
|
|
158
158
|
}
|
package/src/bitget/helpers.ts
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
prepareNetworkSwitch,
|
|
7
7
|
switchEVMWalletNetwork,
|
|
8
8
|
} from "@swapkit/helpers";
|
|
9
|
-
import
|
|
9
|
+
import { Psbt } from "bitcoinjs-lib";
|
|
10
10
|
import type { Eip1193Provider } from "ethers";
|
|
11
11
|
|
|
12
12
|
export async function getWalletMethods(chain: Chain) {
|
|
@@ -38,7 +38,6 @@ export async function getWalletMethods(chain: Chain) {
|
|
|
38
38
|
}
|
|
39
39
|
const { unisat: wallet } = bitget;
|
|
40
40
|
|
|
41
|
-
const { Psbt } = await import("bitcoinjs-lib");
|
|
42
41
|
const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
|
|
43
42
|
const [address] = await wallet.requestAccounts();
|
|
44
43
|
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { Keplr } from "@keplr-wallet/types";
|
|
2
|
+
import {
|
|
3
|
+
Chain,
|
|
4
|
+
ChainId,
|
|
5
|
+
ChainToChainId,
|
|
6
|
+
WalletOption,
|
|
7
|
+
createWallet,
|
|
8
|
+
filterSupportedChains,
|
|
9
|
+
} from "@swapkit/helpers";
|
|
10
|
+
|
|
11
|
+
const cosmostationSupportedChainIds = [ChainId.Cosmos, ChainId.Kujira, ChainId.THORChain] as const;
|
|
12
|
+
const cosmostationSupportedEVMChains = [
|
|
13
|
+
Chain.Ethereum,
|
|
14
|
+
Chain.BinanceSmartChain,
|
|
15
|
+
Chain.Avalanche,
|
|
16
|
+
Chain.Polygon,
|
|
17
|
+
Chain.Arbitrum,
|
|
18
|
+
Chain.Optimism,
|
|
19
|
+
Chain.Base,
|
|
20
|
+
] as const;
|
|
21
|
+
|
|
22
|
+
declare global {
|
|
23
|
+
interface Window {
|
|
24
|
+
cosmostation?: {
|
|
25
|
+
providers?: {
|
|
26
|
+
keplr?: Keplr;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async function connectCosmosChains(chains: Chain[], addChain: any, keplrProvider: Keplr) {
|
|
33
|
+
await Promise.all(
|
|
34
|
+
chains.map(async (chain) => {
|
|
35
|
+
const chainId = ChainToChainId[chain] as (typeof cosmostationSupportedChainIds)[number];
|
|
36
|
+
|
|
37
|
+
await keplrProvider.enable(chainId);
|
|
38
|
+
const signer = keplrProvider.getOfflineSignerOnlyAmino(chainId);
|
|
39
|
+
if (!signer) throw new Error("Could not load signer");
|
|
40
|
+
|
|
41
|
+
const { getCosmosToolbox } = await import("@swapkit/toolboxes/cosmos");
|
|
42
|
+
|
|
43
|
+
const accounts = await signer.getAccounts();
|
|
44
|
+
if (!accounts?.[0]?.address) throw new Error("No accounts found");
|
|
45
|
+
|
|
46
|
+
const [{ address }] = accounts;
|
|
47
|
+
const toolbox = getCosmosToolbox(chain as any, { signer });
|
|
48
|
+
|
|
49
|
+
addChain({
|
|
50
|
+
...toolbox,
|
|
51
|
+
chain,
|
|
52
|
+
address,
|
|
53
|
+
walletType: WalletOption.COSMOSTATION,
|
|
54
|
+
});
|
|
55
|
+
}),
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function connectEvmChains(chains: Chain[], addChain: any) {
|
|
60
|
+
const provider = window.ethereum;
|
|
61
|
+
|
|
62
|
+
if (!provider) {
|
|
63
|
+
throw new Error("No Ethereum provider found for Cosmostation");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const accounts = (await provider.request({
|
|
67
|
+
method: "eth_requestAccounts",
|
|
68
|
+
})) as string[];
|
|
69
|
+
|
|
70
|
+
if (!accounts || accounts.length === 0) {
|
|
71
|
+
throw new Error("No EVM accounts found");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const { getEvmToolbox } = await import("@swapkit/toolboxes/evm");
|
|
75
|
+
|
|
76
|
+
for (const chain of chains) {
|
|
77
|
+
const toolbox = getEvmToolbox(chain as any, { provider });
|
|
78
|
+
const [address] = accounts;
|
|
79
|
+
|
|
80
|
+
if (!address) {
|
|
81
|
+
throw new Error("No address found for EVM chain");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
addChain({
|
|
85
|
+
...toolbox,
|
|
86
|
+
chain,
|
|
87
|
+
address,
|
|
88
|
+
walletType: WalletOption.COSMOSTATION,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export const cosmostationWallet = createWallet({
|
|
94
|
+
name: "connectCosmostation",
|
|
95
|
+
supportedChains: [
|
|
96
|
+
Chain.Cosmos,
|
|
97
|
+
Chain.Kujira,
|
|
98
|
+
Chain.THORChain,
|
|
99
|
+
Chain.Ethereum,
|
|
100
|
+
Chain.BinanceSmartChain,
|
|
101
|
+
Chain.Avalanche,
|
|
102
|
+
Chain.Polygon,
|
|
103
|
+
Chain.Arbitrum,
|
|
104
|
+
Chain.Optimism,
|
|
105
|
+
Chain.Base,
|
|
106
|
+
],
|
|
107
|
+
connect: ({ addChain, supportedChains }) =>
|
|
108
|
+
async function connectCosmostation(chains: Chain[]) {
|
|
109
|
+
const filteredChains = filterSupportedChains({
|
|
110
|
+
chains,
|
|
111
|
+
supportedChains,
|
|
112
|
+
walletType: WalletOption.COSMOSTATION,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
if (!window.cosmostation) {
|
|
116
|
+
throw new Error("Cosmostation wallet not found");
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const cosmosChains = filteredChains.filter((chain) =>
|
|
120
|
+
cosmostationSupportedChainIds.includes(ChainToChainId[chain] as any),
|
|
121
|
+
);
|
|
122
|
+
const evmChains = filteredChains.filter((chain) =>
|
|
123
|
+
cosmostationSupportedEVMChains.includes(chain as any),
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
if (cosmosChains.length > 0) {
|
|
127
|
+
const keplrProvider = window.cosmostation.providers?.keplr;
|
|
128
|
+
if (!keplrProvider) {
|
|
129
|
+
throw new Error("Cosmostation Keplr provider not found");
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
await connectCosmosChains(cosmosChains, addChain, keplrProvider);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (evmChains.length > 0) {
|
|
136
|
+
await connectEvmChains(evmChains, addChain);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return true;
|
|
140
|
+
},
|
|
141
|
+
});
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type FeeOption,
|
|
9
9
|
SwapKitError,
|
|
10
10
|
WalletOption,
|
|
11
|
+
providerRequest,
|
|
11
12
|
} from "@swapkit/helpers";
|
|
12
13
|
import { erc20ABI } from "@swapkit/helpers/contracts";
|
|
13
14
|
import type { ApproveParams, CallParams, EVMTxParams } from "@swapkit/toolboxes/evm";
|
|
@@ -59,12 +60,14 @@ export async function getCtrlProvider<T extends Chain>(
|
|
|
59
60
|
Chain.Polygon,
|
|
60
61
|
() => window.xfi?.ethereum,
|
|
61
62
|
)
|
|
62
|
-
.with(Chain.Cosmos, Chain.Kujira,
|
|
63
|
+
.with(Chain.Cosmos, Chain.Kujira, () => window.xfi?.keplr)
|
|
63
64
|
.with(Chain.Bitcoin, () => window.xfi?.bitcoin)
|
|
64
65
|
.with(Chain.BitcoinCash, () => window.xfi?.bitcoincash)
|
|
65
66
|
.with(Chain.Dogecoin, () => window.xfi?.dogecoin)
|
|
66
67
|
.with(Chain.Litecoin, () => window.xfi?.litecoin)
|
|
67
68
|
.with(Chain.Solana, () => window.xfi?.solana)
|
|
69
|
+
.with(Chain.THORChain, () => window.xfi?.thorchain)
|
|
70
|
+
.with(Chain.Maya, () => window.xfi?.mayachain)
|
|
68
71
|
.otherwise(() => undefined);
|
|
69
72
|
}
|
|
70
73
|
|
|
@@ -90,55 +93,67 @@ async function transaction({
|
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
export async function getCtrlAddress(chain: Chain) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
errorKey: "wallet_provider_not_found",
|
|
97
|
-
info: { wallet: WalletOption.CTRL, chain },
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if ([Chain.Cosmos, Chain.Kujira].includes(chain)) {
|
|
102
|
-
const provider = await getCtrlProvider(Chain.Cosmos);
|
|
103
|
-
if (!provider || "request" in provider) {
|
|
96
|
+
try {
|
|
97
|
+
const eipProvider = (await getCtrlProvider(chain)) as Eip1193Provider;
|
|
98
|
+
if (!eipProvider) {
|
|
104
99
|
throw new SwapKitError({
|
|
105
100
|
errorKey: "wallet_provider_not_found",
|
|
106
101
|
info: { wallet: WalletOption.CTRL, chain },
|
|
107
102
|
});
|
|
108
103
|
}
|
|
109
104
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
if ([Chain.Cosmos, Chain.Kujira].includes(chain)) {
|
|
106
|
+
const provider = await getCtrlProvider(Chain.Cosmos);
|
|
107
|
+
if (!provider || "request" in provider) {
|
|
108
|
+
throw new SwapKitError({
|
|
109
|
+
errorKey: "wallet_provider_not_found",
|
|
110
|
+
info: { wallet: WalletOption.CTRL, chain },
|
|
111
|
+
});
|
|
112
|
+
}
|
|
115
113
|
|
|
116
|
-
|
|
114
|
+
// Enabling before using the Keplr is recommended.
|
|
115
|
+
// This method will ask the user whether to allow access if they haven't visited this website.
|
|
116
|
+
// Also, it will request that the user unlock the wallet if the wallet is locked.
|
|
117
|
+
const chainId = ChainToChainId[chain];
|
|
118
|
+
await provider.enable(chainId);
|
|
117
119
|
|
|
118
|
-
|
|
119
|
-
return item?.address;
|
|
120
|
-
}
|
|
120
|
+
const offlineSigner = provider.getOfflineSigner(chainId);
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
const [item] = await offlineSigner.getAccounts();
|
|
123
|
+
return item?.address;
|
|
124
|
+
}
|
|
124
125
|
|
|
125
|
-
|
|
126
|
-
|
|
126
|
+
if (EVMChains.includes(chain as EVMChain)) {
|
|
127
|
+
// For CTRL wallet, we need to use the request method directly on the provider
|
|
128
|
+
if ("request" in eipProvider && typeof eipProvider.request === "function") {
|
|
129
|
+
const accounts = await eipProvider.request({ method: "eth_requestAccounts" });
|
|
130
|
+
return accounts[0];
|
|
131
|
+
}
|
|
132
|
+
const { BrowserProvider } = await import("ethers");
|
|
133
|
+
const provider = new BrowserProvider(eipProvider, "any");
|
|
134
|
+
const [response] = await providerRequest({
|
|
135
|
+
provider,
|
|
136
|
+
method: "eth_requestAccounts",
|
|
137
|
+
params: [],
|
|
138
|
+
});
|
|
139
|
+
return response;
|
|
140
|
+
}
|
|
127
141
|
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
if (chain === Chain.Solana) {
|
|
143
|
+
const provider = await getCtrlProvider(Chain.Solana);
|
|
130
144
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
145
|
+
const accounts = await provider.connect();
|
|
146
|
+
return accounts.publicKey.toString();
|
|
147
|
+
}
|
|
134
148
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
149
|
+
const accounts = await eipProvider.request({ method: "request_accounts", params: [] });
|
|
150
|
+
return accounts[0];
|
|
151
|
+
} catch (_error) {
|
|
152
|
+
throw new SwapKitError({
|
|
153
|
+
errorKey: "wallet_provider_not_found",
|
|
154
|
+
info: { wallet: WalletOption.CTRL, chain },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
142
157
|
}
|
|
143
158
|
|
|
144
159
|
export async function walletTransfer(
|
|
@@ -188,8 +203,9 @@ export function getCtrlMethods(provider: BrowserProvider, chain: EVMChain) {
|
|
|
188
203
|
if (!contractAddress) {
|
|
189
204
|
throw new SwapKitError("wallet_ctrl_contract_address_not_provided");
|
|
190
205
|
}
|
|
191
|
-
const { createContract, getCreateContractTxObject, isStateChangingCall
|
|
192
|
-
|
|
206
|
+
const { createContract, getCreateContractTxObject, isStateChangingCall } = await import(
|
|
207
|
+
"@swapkit/toolboxes/evm"
|
|
208
|
+
);
|
|
193
209
|
|
|
194
210
|
const isStateChanging = isStateChangingCall({ abi, funcName });
|
|
195
211
|
|
|
@@ -203,14 +219,14 @@ export function getCtrlMethods(provider: BrowserProvider, chain: EVMChain) {
|
|
|
203
219
|
txOverrides,
|
|
204
220
|
});
|
|
205
221
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
222
|
+
const signer = await provider.getSigner();
|
|
223
|
+
const tx = await signer.sendTransaction({
|
|
224
|
+
value: BigInt(value || 0),
|
|
225
|
+
from,
|
|
226
|
+
to,
|
|
227
|
+
data: data || "0x",
|
|
228
|
+
});
|
|
229
|
+
return tx.hash as T;
|
|
214
230
|
}
|
|
215
231
|
const contract = createContract(contractAddress, abi, provider);
|
|
216
232
|
|
|
@@ -219,9 +235,7 @@ export function getCtrlMethods(provider: BrowserProvider, chain: EVMChain) {
|
|
|
219
235
|
return typeof result?.hash === "string" ? result?.hash : result;
|
|
220
236
|
},
|
|
221
237
|
approve: async ({ assetAddress, spenderAddress, amount, from }: ApproveParams) => {
|
|
222
|
-
const { MAX_APPROVAL, getCreateContractTxObject
|
|
223
|
-
"@swapkit/toolboxes/evm"
|
|
224
|
-
);
|
|
238
|
+
const { MAX_APPROVAL, getCreateContractTxObject } = await import("@swapkit/toolboxes/evm");
|
|
225
239
|
const funcParams = [spenderAddress, BigInt(amount || MAX_APPROVAL)];
|
|
226
240
|
const txOverrides = { from };
|
|
227
241
|
|
|
@@ -236,31 +250,29 @@ export function getCtrlMethods(provider: BrowserProvider, chain: EVMChain) {
|
|
|
236
250
|
const createTx = getCreateContractTxObject({ provider, chain });
|
|
237
251
|
const { value, to, data } = await createTx(functionCallParams);
|
|
238
252
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
253
|
+
const signer = await provider.getSigner();
|
|
254
|
+
const tx = await signer.sendTransaction({
|
|
255
|
+
value: BigInt(value || 0),
|
|
256
|
+
from,
|
|
257
|
+
to,
|
|
258
|
+
data: data || "0x",
|
|
259
|
+
});
|
|
260
|
+
return tx.hash;
|
|
247
261
|
},
|
|
248
|
-
sendTransaction: async (
|
|
249
|
-
const { from, to, data, value } =
|
|
262
|
+
sendTransaction: async (txParams: EVMTxParams) => {
|
|
263
|
+
const { from, to, data, value } = txParams;
|
|
250
264
|
if (!to) {
|
|
251
265
|
throw new SwapKitError("wallet_ctrl_send_transaction_no_address");
|
|
252
266
|
}
|
|
253
267
|
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
} as any,
|
|
263
|
-
]);
|
|
268
|
+
const signer = await provider.getSigner();
|
|
269
|
+
const tx = await signer.sendTransaction({
|
|
270
|
+
value: BigInt(value || 0),
|
|
271
|
+
from,
|
|
272
|
+
to,
|
|
273
|
+
data: data || "0x",
|
|
274
|
+
});
|
|
275
|
+
return tx.hash;
|
|
264
276
|
},
|
|
265
277
|
};
|
|
266
278
|
}
|
package/src/exodus/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
prepareNetworkSwitch,
|
|
10
10
|
switchEVMWalletNetwork,
|
|
11
11
|
} from "@swapkit/helpers";
|
|
12
|
-
import
|
|
12
|
+
import { Psbt } from "bitcoinjs-lib";
|
|
13
13
|
import type { BrowserProvider, Eip1193Provider } from "ethers";
|
|
14
14
|
import {
|
|
15
15
|
AddressPurpose,
|
|
@@ -34,7 +34,6 @@ async function getWalletMethods({
|
|
|
34
34
|
}) {
|
|
35
35
|
switch (chain) {
|
|
36
36
|
case Chain.Bitcoin: {
|
|
37
|
-
const { Psbt } = await import("bitcoinjs-lib");
|
|
38
37
|
const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
|
|
39
38
|
|
|
40
39
|
let address = "";
|
|
@@ -44,7 +44,7 @@ export const mayachainWalletMethods = async ({
|
|
|
44
44
|
sender,
|
|
45
45
|
memo,
|
|
46
46
|
}: SignTransactionParams) => {
|
|
47
|
-
const { makeSignDoc } = await import("@cosmjs/amino");
|
|
47
|
+
const { makeSignDoc } = (await import("@cosmjs/amino")).default;
|
|
48
48
|
const { getDenomWithChain } = await import("@swapkit/toolboxes/cosmos");
|
|
49
49
|
|
|
50
50
|
const account = await toolbox.getAccount(sender);
|
|
@@ -31,7 +31,7 @@ export const thorchainWalletMethods = async ({
|
|
|
31
31
|
sdk: KeepKeySdk;
|
|
32
32
|
derivationPath?: DerivationPathArray;
|
|
33
33
|
}) => {
|
|
34
|
-
const { makeSignDoc } = await import("@cosmjs/amino");
|
|
34
|
+
const { makeSignDoc } = (await import("@cosmjs/amino")).default;
|
|
35
35
|
const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } =
|
|
36
36
|
await import("@swapkit/toolboxes/cosmos");
|
|
37
37
|
|
package/src/keystore/helpers.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes } from "node:crypto";
|
|
1
2
|
import { generateMnemonic, validateMnemonic } from "@scure/bip39";
|
|
2
3
|
import { wordlist } from "@scure/bip39/wordlists/english";
|
|
3
4
|
|
|
@@ -15,7 +16,7 @@ export type Keystore = {
|
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
async function blake256(initData: Buffer | string) {
|
|
18
|
-
const { blake2bFinal, blake2bInit, blake2bUpdate } = await import("blakejs");
|
|
19
|
+
const { blake2bFinal, blake2bInit, blake2bUpdate } = (await import("blakejs")).default;
|
|
19
20
|
let data = initData;
|
|
20
21
|
|
|
21
22
|
if (!(data instanceof Buffer)) {
|
|
@@ -32,8 +33,6 @@ async function blake256(initData: Buffer | string) {
|
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export async function encryptToKeyStore(phrase: string, password: string) {
|
|
35
|
-
const { pbkdf2Sync, randomBytes, createCipheriv } = await import("node:crypto");
|
|
36
|
-
|
|
37
36
|
const cipher = "aes-128-ctr";
|
|
38
37
|
const iv = randomBytes(16);
|
|
39
38
|
const salt = randomBytes(32);
|
|
@@ -71,7 +70,6 @@ export function validatePhrase(phrase: string) {
|
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
export async function decryptFromKeystore(keystore: Keystore, password: string) {
|
|
74
|
-
const { createDecipheriv, pbkdf2Sync } = await import("node:crypto");
|
|
75
73
|
const { SwapKitError } = await import("@swapkit/helpers");
|
|
76
74
|
|
|
77
75
|
switch (keystore.version) {
|
|
@@ -64,8 +64,8 @@ export class CosmosLedger extends CosmosLedgerInterface {
|
|
|
64
64
|
throw new Error(`Address ${signerAddress} not found in wallet`);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
const { encodeSecp256k1Signature, serializeSignDoc } = await import("@cosmjs/amino");
|
|
68
|
-
const { Secp256k1Signature } = await import("@cosmjs/crypto");
|
|
67
|
+
const { encodeSecp256k1Signature, serializeSignDoc } = (await import("@cosmjs/amino")).default;
|
|
68
|
+
const { Secp256k1Signature } = (await import("@cosmjs/crypto")).default;
|
|
69
69
|
|
|
70
70
|
const message = serializeSignDoc(signDoc);
|
|
71
71
|
const signature = await this.ledgerApp.sign(this.derivationPath, message);
|