@swapkit/wallets 4.0.0-beta.54 → 4.0.0-beta.55
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-e674mh4n.js → chunk-mcrgqfr9.js} +3 -3
- package/dist/{chunk-e674mh4n.js.map → chunk-mcrgqfr9.js.map} +1 -1
- package/dist/{chunk-mvbb9fwb.js → chunk-sbf0f2p4.js} +2 -2
- package/dist/{chunk-p2ca0j1v.js → chunk-yqaz2d25.js} +3 -3
- package/dist/{chunk-p2ca0j1v.js.map → chunk-yqaz2d25.js.map} +1 -1
- 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.cjs +2 -2
- package/dist/src/coinbase/index.cjs.map +3 -3
- package/dist/src/coinbase/index.js +2 -2
- package/dist/src/coinbase/index.js.map +3 -3
- package/dist/src/cosmostation/index.cjs +2 -2
- package/dist/src/cosmostation/index.cjs.map +3 -3
- package/dist/src/cosmostation/index.js +2 -2
- package/dist/src/cosmostation/index.js.map +3 -3
- 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.cjs +2 -2
- package/dist/src/evm-extensions/index.cjs.map +3 -3
- package/dist/src/evm-extensions/index.js +2 -2
- package/dist/src/evm-extensions/index.js.map +3 -3
- 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.cjs +2 -2
- package/dist/src/index.cjs.map +5 -3
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +5 -3
- package/dist/src/keepkey-bex/index.cjs +2 -2
- package/dist/src/keepkey-bex/index.cjs.map +3 -3
- package/dist/src/keepkey-bex/index.js +2 -2
- package/dist/src/keepkey-bex/index.js.map +3 -3
- package/dist/src/keepkey.cjs +4 -0
- package/dist/src/keepkey.cjs.map +10 -0
- package/dist/src/keepkey.js +4 -0
- package/dist/src/keepkey.js.map +10 -0
- package/dist/src/keplr/index.cjs +2 -2
- package/dist/src/keplr/index.cjs.map +3 -3
- package/dist/src/keplr/index.js +2 -2
- package/dist/src/keplr/index.js.map +3 -3
- package/dist/src/keystore.cjs +4 -0
- package/dist/src/keystore.cjs.map +10 -0
- package/dist/src/keystore.js +4 -0
- package/dist/src/keystore.js.map +10 -0
- package/dist/src/ledger.cjs +4 -0
- package/dist/src/ledger.cjs.map +10 -0
- package/dist/src/ledger.js +4 -0
- package/dist/src/ledger.js.map +10 -0
- package/dist/src/okx/index.cjs +2 -2
- package/dist/src/okx/index.cjs.map +4 -4
- package/dist/src/okx/index.js +2 -2
- package/dist/src/okx/index.js.map +4 -4
- 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.cjs +2 -2
- package/dist/src/phantom/index.cjs.map +3 -3
- package/dist/src/phantom/index.js +2 -2
- package/dist/src/phantom/index.js.map +3 -3
- package/dist/src/polkadotjs/index.cjs +2 -2
- package/dist/src/polkadotjs/index.cjs.map +3 -3
- package/dist/src/polkadotjs/index.js +2 -2
- package/dist/src/polkadotjs/index.js.map +3 -3
- package/dist/src/radix/index.cjs +2 -2
- package/dist/src/radix/index.cjs.map +3 -3
- package/dist/src/radix/index.js +2 -2
- package/dist/src/radix/index.js.map +3 -3
- package/dist/src/talisman/index.cjs +2 -2
- package/dist/src/talisman/index.cjs.map +3 -3
- package/dist/src/talisman/index.js +2 -2
- package/dist/src/talisman/index.js.map +3 -3
- package/dist/src/trezor.cjs +4 -0
- package/dist/src/trezor.cjs.map +10 -0
- package/dist/src/trezor.js +4 -0
- package/dist/src/trezor.js.map +10 -0
- package/dist/src/vultisig/index.cjs +2 -2
- package/dist/src/vultisig/index.cjs.map +3 -3
- package/dist/src/vultisig/index.js +2 -2
- package/dist/src/vultisig/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/dist/src/xaman/index.cjs +2 -2
- package/dist/src/xaman/index.cjs.map +5 -5
- package/dist/src/xaman/index.js +2 -2
- package/dist/src/xaman/index.js.map +5 -5
- package/dist/types/bitget/helpers.d.ts +330 -0
- package/dist/types/bitget/helpers.d.ts.map +1 -0
- package/dist/types/bitget/index.d.ts +11 -0
- package/dist/types/bitget/index.d.ts.map +1 -0
- package/dist/types/coinbase/index.d.ts +11 -0
- package/dist/types/coinbase/index.d.ts.map +1 -0
- package/dist/types/coinbase/signer.d.ts +91 -0
- package/dist/types/coinbase/signer.d.ts.map +1 -0
- package/dist/types/cosmostation/index.d.ts +21 -0
- package/dist/types/cosmostation/index.d.ts.map +1 -0
- package/dist/types/ctrl/index.d.ts +11 -0
- package/dist/types/ctrl/index.d.ts.map +1 -0
- package/dist/types/ctrl/walletHelpers.d.ts +24 -0
- package/dist/types/ctrl/walletHelpers.d.ts.map +1 -0
- package/dist/types/evm-extensions/index.d.ts +101 -0
- package/dist/types/evm-extensions/index.d.ts.map +1 -0
- package/{src/evm-extensions/types.ts → dist/types/evm-extensions/types.d.ts} +11 -13
- package/dist/types/evm-extensions/types.d.ts.map +1 -0
- package/dist/types/exodus/index.d.ts +14 -0
- package/dist/types/exodus/index.d.ts.map +1 -0
- package/dist/types/helpers/near.d.ts +57 -0
- package/dist/types/helpers/near.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/keepkey-bex/index.d.ts +11 -0
- package/dist/types/keepkey-bex/index.d.ts.map +1 -0
- package/dist/types/keepkey-bex/walletHelpers.d.ts +45 -0
- package/dist/types/keepkey-bex/walletHelpers.d.ts.map +1 -0
- package/dist/types/keepkey.d.ts +2 -0
- package/dist/types/keepkey.d.ts.map +1 -0
- package/dist/types/keplr/chainRegistry.d.ts +4 -0
- package/dist/types/keplr/chainRegistry.d.ts.map +1 -0
- package/dist/types/keplr/index.d.ts +11 -0
- package/dist/types/keplr/index.d.ts.map +1 -0
- package/dist/types/keystore.d.ts +2 -0
- package/dist/types/keystore.d.ts.map +1 -0
- package/dist/types/ledger.d.ts +2 -0
- package/dist/types/ledger.d.ts.map +1 -0
- package/dist/types/okx/helpers.d.ts +227 -0
- package/dist/types/okx/helpers.d.ts.map +1 -0
- package/dist/types/okx/index.d.ts +11 -0
- package/dist/types/okx/index.d.ts.map +1 -0
- package/dist/types/okx/types.d.ts +104 -0
- package/dist/types/okx/types.d.ts.map +1 -0
- package/dist/types/onekey/evmSigner.d.ts +29 -0
- package/dist/types/onekey/evmSigner.d.ts.map +1 -0
- package/dist/types/onekey/index.d.ts +11 -0
- package/dist/types/onekey/index.d.ts.map +1 -0
- package/dist/types/phantom/index.d.ts +12 -0
- package/dist/types/phantom/index.d.ts.map +1 -0
- package/dist/types/polkadotjs/index.d.ts +11 -0
- package/dist/types/polkadotjs/index.d.ts.map +1 -0
- package/dist/types/radix/index.d.ts +11 -0
- package/dist/types/radix/index.d.ts.map +1 -0
- package/dist/types/talisman/index.d.ts +11 -0
- package/dist/types/talisman/index.d.ts.map +1 -0
- package/dist/types/trezor.d.ts +2 -0
- package/dist/types/trezor.d.ts.map +1 -0
- package/dist/types/types.d.ts +246 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils.d.ts +4 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/vultisig/index.d.ts +11 -0
- package/dist/types/vultisig/index.d.ts.map +1 -0
- package/dist/types/vultisig/walletHelpers.d.ts +34 -0
- package/dist/types/vultisig/walletHelpers.d.ts.map +1 -0
- package/dist/types/walletconnect/constants.d.ts +85 -0
- package/dist/types/walletconnect/constants.d.ts.map +1 -0
- package/dist/types/walletconnect/evmSigner.d.ts +25 -0
- package/dist/types/walletconnect/evmSigner.d.ts.map +1 -0
- package/dist/types/walletconnect/helpers.d.ts +4 -0
- package/dist/types/walletconnect/helpers.d.ts.map +1 -0
- package/dist/types/walletconnect/index.d.ts +22 -0
- package/dist/types/walletconnect/index.d.ts.map +1 -0
- package/dist/types/walletconnect/namespaces.d.ts +7 -0
- package/dist/types/walletconnect/namespaces.d.ts.map +1 -0
- package/dist/types/walletconnect/types.d.ts +7 -0
- package/dist/types/walletconnect/types.d.ts.map +1 -0
- package/dist/types/xaman/helpers.d.ts +54 -0
- package/dist/types/xaman/helpers.d.ts.map +1 -0
- package/dist/types/xaman/index.d.ts +14 -0
- package/dist/types/xaman/index.d.ts.map +1 -0
- package/dist/types/xaman/types.d.ts +24 -0
- package/dist/types/xaman/types.d.ts.map +1 -0
- package/dist/types/xaman/walletMethods.d.ts +16 -0
- package/dist/types/xaman/walletMethods.d.ts.map +1 -0
- package/package.json +44 -68
- package/dist/chunk-2aa1w78q.js +0 -4
- package/dist/chunk-2aa1w78q.js.map +0 -10
- package/dist/chunk-31bmhjxx.js +0 -4
- package/dist/chunk-31bmhjxx.js.map +0 -10
- package/dist/chunk-3etn0w20.js +0 -4
- package/dist/chunk-3etn0w20.js.map +0 -10
- package/dist/chunk-bk58smyr.js +0 -4
- package/dist/chunk-bk58smyr.js.map +0 -10
- package/dist/chunk-etm8zfkk.js +0 -4
- package/dist/chunk-etm8zfkk.js.map +0 -10
- package/dist/chunk-h7myvxxm.js +0 -5
- package/dist/chunk-h7myvxxm.js.map +0 -10
- package/dist/chunk-htvthkj1.js +0 -5
- package/dist/chunk-htvthkj1.js.map +0 -10
- package/dist/chunk-nfas79hz.js +0 -4
- package/dist/chunk-nfas79hz.js.map +0 -10
- package/dist/src/keepkey/index.cjs +0 -4
- package/dist/src/keepkey/index.cjs.map +0 -15
- package/dist/src/keepkey/index.js +0 -4
- package/dist/src/keepkey/index.js.map +0 -15
- package/dist/src/keystore/index.cjs +0 -4
- package/dist/src/keystore/index.cjs.map +0 -11
- package/dist/src/keystore/index.js +0 -4
- package/dist/src/keystore/index.js.map +0 -11
- package/dist/src/ledger/index.cjs +0 -5
- package/dist/src/ledger/index.cjs.map +0 -25
- package/dist/src/ledger/index.js +0 -5
- package/dist/src/ledger/index.js.map +0 -25
- package/dist/src/trezor/index.cjs +0 -4
- package/dist/src/trezor/index.cjs.map +0 -10
- package/dist/src/trezor/index.js +0 -4
- package/dist/src/trezor/index.js.map +0 -10
- package/src/bitget/helpers.ts +0 -167
- package/src/bitget/index.ts +0 -34
- package/src/coinbase/index.ts +0 -52
- package/src/coinbase/signer.ts +0 -83
- package/src/cosmostation/index.ts +0 -142
- package/src/ctrl/index.ts +0 -248
- package/src/ctrl/walletHelpers.ts +0 -297
- package/src/evm-extensions/index.ts +0 -134
- package/src/exodus/index.ts +0 -179
- package/src/helpers/near-browser-provider.d.ts +0 -286
- package/src/helpers/near.ts +0 -206
- package/src/index.ts +0 -2
- package/src/keepkey/chains/cosmos.ts +0 -78
- package/src/keepkey/chains/evm.ts +0 -125
- package/src/keepkey/chains/mayachain.ts +0 -123
- package/src/keepkey/chains/ripple.ts +0 -118
- package/src/keepkey/chains/thorchain.ts +0 -118
- package/src/keepkey/chains/utxo.ts +0 -147
- package/src/keepkey/coins.ts +0 -71
- package/src/keepkey/index.ts +0 -153
- package/src/keepkey-bex/index.ts +0 -162
- package/src/keepkey-bex/walletHelpers.ts +0 -255
- package/src/keplr/chainRegistry.ts +0 -211
- package/src/keplr/index.ts +0 -55
- package/src/keystore/helpers.ts +0 -102
- package/src/keystore/index.ts +0 -73
- package/src/ledger/clients/cosmos.ts +0 -102
- package/src/ledger/clients/evm.ts +0 -183
- package/src/ledger/clients/near.ts +0 -86
- package/src/ledger/clients/thorchain/common.ts +0 -117
- package/src/ledger/clients/thorchain/helpers.ts +0 -149
- package/src/ledger/clients/thorchain/index.ts +0 -94
- package/src/ledger/clients/thorchain/lib.ts +0 -300
- package/src/ledger/clients/thorchain/utils.ts +0 -76
- package/src/ledger/clients/tron.ts +0 -92
- package/src/ledger/clients/utxo.ts +0 -148
- package/src/ledger/clients/xrp.ts +0 -66
- package/src/ledger/cosmosTypes.ts +0 -101
- package/src/ledger/helpers/getLedgerAddress.ts +0 -67
- package/src/ledger/helpers/getLedgerClient.ts +0 -124
- package/src/ledger/helpers/getLedgerTransport.ts +0 -80
- package/src/ledger/helpers/index.ts +0 -3
- package/src/ledger/index.ts +0 -311
- package/src/ledger/interfaces/CosmosLedgerInterface.ts +0 -65
- package/src/ledger/types.ts +0 -45
- package/src/okx/helpers.ts +0 -181
- package/src/okx/index.ts +0 -43
- package/src/okx/types.ts +0 -117
- package/src/onekey/evmSigner.ts +0 -133
- package/src/onekey/index.ts +0 -213
- package/src/phantom/index.ts +0 -126
- package/src/polkadotjs/index.ts +0 -67
- package/src/radix/index.ts +0 -202
- package/src/talisman/index.ts +0 -130
- package/src/trezor/evmSigner.ts +0 -197
- package/src/trezor/index.ts +0 -260
- package/src/types.ts +0 -280
- package/src/utils.ts +0 -60
- package/src/vultisig/index.ts +0 -199
- package/src/vultisig/walletHelpers.ts +0 -359
- package/src/walletconnect/constants.ts +0 -104
- package/src/walletconnect/evmSigner.ts +0 -147
- package/src/walletconnect/helpers.ts +0 -77
- package/src/walletconnect/index.ts +0 -460
- package/src/walletconnect/namespaces.ts +0 -87
- package/src/walletconnect/types.ts +0 -6
- package/src/xaman/README.md +0 -66
- package/src/xaman/helpers.ts +0 -59
- package/src/xaman/index.ts +0 -79
- package/src/xaman/types.ts +0 -26
- package/src/xaman/walletMethods.ts +0 -126
- /package/dist/{chunk-mvbb9fwb.js.map → chunk-sbf0f2p4.js.map} +0 -0
package/src/exodus/index.ts
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import type { Wallet } from "@passkeys/core";
|
|
2
|
-
import {
|
|
3
|
-
Chain,
|
|
4
|
-
EVMChains,
|
|
5
|
-
SwapKitError,
|
|
6
|
-
WalletOption,
|
|
7
|
-
createWallet,
|
|
8
|
-
filterSupportedChains,
|
|
9
|
-
prepareNetworkSwitch,
|
|
10
|
-
switchEVMWalletNetwork,
|
|
11
|
-
} from "@swapkit/helpers";
|
|
12
|
-
import { Psbt } from "bitcoinjs-lib";
|
|
13
|
-
import type { BrowserProvider, Eip1193Provider } from "ethers";
|
|
14
|
-
import {
|
|
15
|
-
AddressPurpose,
|
|
16
|
-
BitcoinNetworkType,
|
|
17
|
-
type BitcoinProvider,
|
|
18
|
-
type GetAddressOptions,
|
|
19
|
-
type GetAddressResponse,
|
|
20
|
-
type SignTransactionOptions,
|
|
21
|
-
getAddress,
|
|
22
|
-
signTransaction as satsSignTransaction,
|
|
23
|
-
} from "sats-connect";
|
|
24
|
-
import { getWalletSupportedChains } from "../utils";
|
|
25
|
-
|
|
26
|
-
async function getWalletMethods({
|
|
27
|
-
walletProvider,
|
|
28
|
-
provider,
|
|
29
|
-
chain,
|
|
30
|
-
}: {
|
|
31
|
-
walletProvider?: Eip1193Provider;
|
|
32
|
-
provider: BrowserProvider | BitcoinProvider;
|
|
33
|
-
chain: Chain;
|
|
34
|
-
}) {
|
|
35
|
-
switch (chain) {
|
|
36
|
-
case Chain.Bitcoin: {
|
|
37
|
-
const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
|
|
38
|
-
|
|
39
|
-
let address = "";
|
|
40
|
-
|
|
41
|
-
const getProvider: () => Promise<BitcoinProvider | undefined> = () =>
|
|
42
|
-
new Promise((res) => res(provider as BitcoinProvider));
|
|
43
|
-
|
|
44
|
-
const getAddressOptions: GetAddressOptions = {
|
|
45
|
-
getProvider,
|
|
46
|
-
payload: {
|
|
47
|
-
purposes: [AddressPurpose.Payment],
|
|
48
|
-
message: "Address for receiving and sending payments",
|
|
49
|
-
network: { type: BitcoinNetworkType.Mainnet },
|
|
50
|
-
},
|
|
51
|
-
onFinish: (response: GetAddressResponse) => {
|
|
52
|
-
if (!response.addresses[0]) throw new SwapKitError("wallet_exodus_no_address");
|
|
53
|
-
address = response.addresses[0].address;
|
|
54
|
-
},
|
|
55
|
-
onCancel: () => {
|
|
56
|
-
throw new SwapKitError("wallet_exodus_request_canceled");
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
// TODO: Towan - probably not needed ?
|
|
61
|
-
await getAddress(getAddressOptions);
|
|
62
|
-
|
|
63
|
-
async function signTransaction(psbt: Psbt) {
|
|
64
|
-
let signedPsbt: Psbt | undefined;
|
|
65
|
-
const signPsbtOptions: SignTransactionOptions = {
|
|
66
|
-
getProvider,
|
|
67
|
-
payload: {
|
|
68
|
-
message: "Sign transaction",
|
|
69
|
-
network: {
|
|
70
|
-
type: BitcoinNetworkType.Mainnet,
|
|
71
|
-
},
|
|
72
|
-
psbtBase64: psbt.toBase64(),
|
|
73
|
-
broadcast: false,
|
|
74
|
-
inputsToSign: [
|
|
75
|
-
{ address: address, signingIndexes: psbt.txInputs.map((_, index) => index) },
|
|
76
|
-
],
|
|
77
|
-
},
|
|
78
|
-
onFinish: (response) => {
|
|
79
|
-
signedPsbt = Psbt.fromBase64(response.psbtBase64);
|
|
80
|
-
},
|
|
81
|
-
onCancel: () => {
|
|
82
|
-
throw new SwapKitError("wallet_exodus_signature_canceled");
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
await satsSignTransaction(signPsbtOptions);
|
|
87
|
-
if (!signedPsbt) throw new SwapKitError("wallet_exodus_sign_transaction_error");
|
|
88
|
-
return signedPsbt;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const signer = {
|
|
92
|
-
signTransaction,
|
|
93
|
-
getAddress: () => Promise.resolve(address),
|
|
94
|
-
};
|
|
95
|
-
const toolbox = await getUtxoToolbox(chain, { signer });
|
|
96
|
-
|
|
97
|
-
return { ...toolbox, address };
|
|
98
|
-
}
|
|
99
|
-
case Chain.Arbitrum:
|
|
100
|
-
case Chain.Aurora:
|
|
101
|
-
case Chain.Avalanche:
|
|
102
|
-
case Chain.Base:
|
|
103
|
-
case Chain.BinanceSmartChain:
|
|
104
|
-
case Chain.Ethereum:
|
|
105
|
-
case Chain.Optimism:
|
|
106
|
-
case Chain.Polygon: {
|
|
107
|
-
if (!walletProvider) throw new SwapKitError("wallet_exodus_not_found");
|
|
108
|
-
const { getProvider, getEvmToolbox } = await import("@swapkit/toolboxes/evm");
|
|
109
|
-
|
|
110
|
-
const jsonRpcProvider = await getProvider(chain);
|
|
111
|
-
const browserProvider = provider as BrowserProvider;
|
|
112
|
-
|
|
113
|
-
await browserProvider.send("eth_requestAccounts", []);
|
|
114
|
-
|
|
115
|
-
const signer = await browserProvider.getSigner();
|
|
116
|
-
const address = await signer.getAddress();
|
|
117
|
-
const toolbox = await getEvmToolbox(chain, { provider: jsonRpcProvider, signer });
|
|
118
|
-
|
|
119
|
-
try {
|
|
120
|
-
if (chain !== Chain.Ethereum) {
|
|
121
|
-
const networkParams = toolbox.getNetworkParams();
|
|
122
|
-
await switchEVMWalletNetwork(browserProvider, chain, networkParams);
|
|
123
|
-
}
|
|
124
|
-
} catch (_error) {
|
|
125
|
-
throw new SwapKitError("wallet_exodus_failed_to_switch_network", { chain });
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return { ...prepareNetworkSwitch({ toolbox, chain, provider: browserProvider }), address };
|
|
129
|
-
}
|
|
130
|
-
default:
|
|
131
|
-
throw new SwapKitError("wallet_exodus_chain_not_supported", { chain });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export const exodusWallet = createWallet({
|
|
136
|
-
name: "connectExodusWallet",
|
|
137
|
-
walletType: WalletOption.EXODUS,
|
|
138
|
-
supportedChains: [...EVMChains, Chain.Bitcoin],
|
|
139
|
-
connect: ({ addChain, walletType, supportedChains }) =>
|
|
140
|
-
async function connectExodusWallet(chains: Chain[], wallet: Wallet) {
|
|
141
|
-
if (!wallet) throw new SwapKitError("wallet_exodus_instance_missing");
|
|
142
|
-
const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });
|
|
143
|
-
const { BrowserProvider } = await import("ethers");
|
|
144
|
-
|
|
145
|
-
const { providers } = wallet;
|
|
146
|
-
|
|
147
|
-
await Promise.all(
|
|
148
|
-
filteredChains.map(async (chain) => {
|
|
149
|
-
const provider =
|
|
150
|
-
chain === Chain.Bitcoin
|
|
151
|
-
? providers.bitcoin
|
|
152
|
-
: new BrowserProvider(providers.ethereum, "any");
|
|
153
|
-
|
|
154
|
-
const { address, ...walletMethods } = await getWalletMethods({
|
|
155
|
-
chain,
|
|
156
|
-
provider,
|
|
157
|
-
walletProvider: providers.ethereum,
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
const disconnect = () =>
|
|
161
|
-
provider.send("wallet_revokePermissions", [{ eth_accounts: {} }]);
|
|
162
|
-
|
|
163
|
-
addChain({
|
|
164
|
-
...walletMethods,
|
|
165
|
-
disconnect,
|
|
166
|
-
chain,
|
|
167
|
-
address,
|
|
168
|
-
walletType: WalletOption.EXODUS,
|
|
169
|
-
});
|
|
170
|
-
}),
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
return true;
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
export const EXODUS_SUPPORTED_CHAINS = getWalletSupportedChains(exodusWallet);
|
|
178
|
-
export * from "@passkeys/react";
|
|
179
|
-
export * from "@passkeys/core";
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NEAR Browser Wallet Provider Interface Definitions
|
|
3
|
-
*
|
|
4
|
-
* This file contains the standard TypeScript interface definitions for NEAR browser wallet providers
|
|
5
|
-
* that inject themselves into the window object (e.g., OKX, XDEFI/CTRL, etc.)
|
|
6
|
-
*
|
|
7
|
-
* Based on:
|
|
8
|
-
* - NEAR Protocol wallet-selector library
|
|
9
|
-
* - Common patterns from OKX, XDEFI/CTRL, and other NEAR wallet implementations
|
|
10
|
-
* - NEAR API JS types
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { PublicKey } from "near-api-js/lib/utils";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Transaction action types supported by NEAR
|
|
17
|
-
*/
|
|
18
|
-
export interface NearAction {
|
|
19
|
-
type: "FunctionCall" | "Transfer" | "Stake" | "AddKey" | "DeleteKey" | "DeleteAccount";
|
|
20
|
-
params?: {
|
|
21
|
-
methodName?: string;
|
|
22
|
-
args?: object;
|
|
23
|
-
gas?: string;
|
|
24
|
-
deposit?: string;
|
|
25
|
-
publicKey?: string;
|
|
26
|
-
beneficiaryId?: string;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Transaction structure for NEAR
|
|
32
|
-
*/
|
|
33
|
-
export interface NearTransaction {
|
|
34
|
-
receiverId: string;
|
|
35
|
-
actions: NearAction[];
|
|
36
|
-
// Optional fields
|
|
37
|
-
signerId?: string;
|
|
38
|
-
publicKey?: string;
|
|
39
|
-
nonce?: number;
|
|
40
|
-
recentBlockHash?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Message signing parameters
|
|
45
|
-
*/
|
|
46
|
-
export interface NearSignMessageParams {
|
|
47
|
-
message: string;
|
|
48
|
-
recipient: string;
|
|
49
|
-
nonce: Buffer | Uint8Array;
|
|
50
|
-
callbackUrl?: string;
|
|
51
|
-
state?: string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Signed message response
|
|
56
|
-
*/
|
|
57
|
-
export interface NearSignedMessage {
|
|
58
|
-
accountId: string;
|
|
59
|
-
publicKey: string;
|
|
60
|
-
signature: string;
|
|
61
|
-
// Optional callback data
|
|
62
|
-
callbackUrl?: string;
|
|
63
|
-
state?: string;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Sign-in request parameters
|
|
68
|
-
*/
|
|
69
|
-
export interface NearSignInParams {
|
|
70
|
-
contractId?: string;
|
|
71
|
-
methodNames?: string[];
|
|
72
|
-
// Success and failure URLs for browser wallets
|
|
73
|
-
successUrl?: string;
|
|
74
|
-
failureUrl?: string;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Account information
|
|
79
|
-
*/
|
|
80
|
-
export interface NearAccount {
|
|
81
|
-
accountId: string;
|
|
82
|
-
publicKey?: string;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Access key information
|
|
87
|
-
*/
|
|
88
|
-
export interface NearAccessKey {
|
|
89
|
-
publicKey: PublicKey;
|
|
90
|
-
accessKey: {
|
|
91
|
-
nonce: number;
|
|
92
|
-
permission:
|
|
93
|
-
| "FullAccess"
|
|
94
|
-
| {
|
|
95
|
-
FunctionCall: {
|
|
96
|
-
allowance?: string;
|
|
97
|
-
receiverId: string;
|
|
98
|
-
methodNames: string[];
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Transaction execution result
|
|
106
|
-
*/
|
|
107
|
-
export interface NearFinalExecutionOutcome {
|
|
108
|
-
status: object;
|
|
109
|
-
transaction: object;
|
|
110
|
-
transaction_outcome: object;
|
|
111
|
-
receipts_outcome: object[];
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Standard NEAR browser wallet provider interface
|
|
116
|
-
*
|
|
117
|
-
* This interface represents the common API surface that NEAR browser wallets
|
|
118
|
-
* expose when they inject themselves into the window object.
|
|
119
|
-
*/
|
|
120
|
-
export interface NearBrowserWalletProvider {
|
|
121
|
-
// Connection Management
|
|
122
|
-
/**
|
|
123
|
-
* Request connection to the wallet
|
|
124
|
-
* Returns array of account IDs that were connected
|
|
125
|
-
*/
|
|
126
|
-
connect(): Promise<string[]>;
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Alternative connection method used by some wallets
|
|
130
|
-
*/
|
|
131
|
-
request?(params: { method: "connect"; params?: any }): Promise<string[]>;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Disconnect from the wallet
|
|
135
|
-
*/
|
|
136
|
-
disconnect(): Promise<void>;
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Sign out from the wallet (some wallets use this instead of disconnect)
|
|
140
|
-
*/
|
|
141
|
-
signOut?(): void;
|
|
142
|
-
|
|
143
|
-
// Account Management
|
|
144
|
-
/**
|
|
145
|
-
* Check if user is signed in
|
|
146
|
-
*/
|
|
147
|
-
isSignedIn?(): boolean;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Get the current account ID
|
|
151
|
-
*/
|
|
152
|
-
getAccountId(): string | Promise<string>;
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Get list of accounts (some wallets support multiple accounts)
|
|
156
|
-
*/
|
|
157
|
-
getAccounts?(): Promise<NearAccount[]>;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Get the public key for the current account
|
|
161
|
-
*/
|
|
162
|
-
getPublicKey?(): Promise<string>;
|
|
163
|
-
|
|
164
|
-
// Legacy sign-in methods (used by some wallets)
|
|
165
|
-
/**
|
|
166
|
-
* Request sign in (legacy method)
|
|
167
|
-
*/
|
|
168
|
-
requestSignIn?(params: NearSignInParams): Promise<NearAccount>;
|
|
169
|
-
|
|
170
|
-
// Signing Operations
|
|
171
|
-
/**
|
|
172
|
-
* Sign a message
|
|
173
|
-
*/
|
|
174
|
-
signMessage(params: NearSignMessageParams): Promise<NearSignedMessage>;
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Sign and send a single transaction
|
|
178
|
-
*/
|
|
179
|
-
signAndSendTransaction(params: {
|
|
180
|
-
receiverId: string;
|
|
181
|
-
actions: NearAction[];
|
|
182
|
-
// Optional parameters
|
|
183
|
-
signerId?: string;
|
|
184
|
-
publicKey?: string;
|
|
185
|
-
nonce?: number;
|
|
186
|
-
recentBlockHash?: string;
|
|
187
|
-
}): Promise<NearFinalExecutionOutcome>;
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Sign and send multiple transactions
|
|
191
|
-
*/
|
|
192
|
-
signAndSendTransactions(params: {
|
|
193
|
-
transactions: NearTransaction[];
|
|
194
|
-
}): Promise<NearFinalExecutionOutcome[]>;
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Request signing of transactions (alternative method used by some wallets)
|
|
198
|
-
*/
|
|
199
|
-
requestSignTransactions?(params: {
|
|
200
|
-
transactions: NearTransaction[];
|
|
201
|
-
}): Promise<any>;
|
|
202
|
-
|
|
203
|
-
// Verification
|
|
204
|
-
/**
|
|
205
|
-
* Verify ownership of an account
|
|
206
|
-
*/
|
|
207
|
-
verifyOwner?(params: {
|
|
208
|
-
message: string;
|
|
209
|
-
// Additional parameters may vary by wallet
|
|
210
|
-
}): Promise<{
|
|
211
|
-
accountId: string;
|
|
212
|
-
publicKey: string;
|
|
213
|
-
signature: string;
|
|
214
|
-
// Additional fields may be returned
|
|
215
|
-
}>;
|
|
216
|
-
|
|
217
|
-
// Network Information
|
|
218
|
-
/**
|
|
219
|
-
* Get the current network (mainnet, testnet, etc.)
|
|
220
|
-
*/
|
|
221
|
-
getNetwork?(): string | Promise<string>;
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Check if wallet is connected to mainnet
|
|
225
|
-
*/
|
|
226
|
-
isMainnet?(): boolean;
|
|
227
|
-
|
|
228
|
-
// Wallet Metadata
|
|
229
|
-
/**
|
|
230
|
-
* Wallet name or identifier
|
|
231
|
-
*/
|
|
232
|
-
name?: string;
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* Wallet version
|
|
236
|
-
*/
|
|
237
|
-
version?: string;
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Check if this is a specific wallet (used for wallet detection)
|
|
241
|
-
*/
|
|
242
|
-
isOKX?: boolean;
|
|
243
|
-
isXDEFI?: boolean;
|
|
244
|
-
isCTRL?: boolean;
|
|
245
|
-
|
|
246
|
-
// Event Handling (not all wallets support events)
|
|
247
|
-
on?(event: "accountsChanged" | "networkChanged" | "disconnect", handler: Function): void;
|
|
248
|
-
off?(event: string, handler: Function): void;
|
|
249
|
-
removeListener?(event: string, handler: Function): void;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Extended window interface for NEAR wallets
|
|
254
|
-
*/
|
|
255
|
-
declare global {
|
|
256
|
-
interface Window {
|
|
257
|
-
// Generic NEAR provider (if wallet uses this pattern)
|
|
258
|
-
near?: NearBrowserWalletProvider;
|
|
259
|
-
|
|
260
|
-
// Specific wallet providers
|
|
261
|
-
okxwallet?: {
|
|
262
|
-
near: NearBrowserWalletProvider;
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
xfi?: {
|
|
266
|
-
near: NearBrowserWalletProvider;
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
// Add other wallet-specific providers as needed
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Helper type for wallet detection
|
|
275
|
-
*/
|
|
276
|
-
export type NearWalletType = "okx" | "xdefi" | "ctrl" | "generic";
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Configuration for NEAR network
|
|
280
|
-
*/
|
|
281
|
-
export interface NearNetworkConfig {
|
|
282
|
-
networkId: "mainnet" | "testnet" | "betanet";
|
|
283
|
-
nodeUrl: string;
|
|
284
|
-
walletUrl?: string;
|
|
285
|
-
helperUrl?: string;
|
|
286
|
-
}
|
package/src/helpers/near.ts
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
//TBD @towan to be moved somewhere else
|
|
2
|
-
import { SwapKitError } from "@swapkit/helpers";
|
|
3
|
-
import type { NearSigner } from "@swapkit/toolboxes/near";
|
|
4
|
-
import type { Account } from "near-api-js";
|
|
5
|
-
import {
|
|
6
|
-
type Action,
|
|
7
|
-
type Signature,
|
|
8
|
-
SignedTransaction,
|
|
9
|
-
type Transaction,
|
|
10
|
-
} from "near-api-js/lib/transaction";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* NEAR Browser Wallet Provider Interface
|
|
14
|
-
* Common interface implemented by browser extension wallets
|
|
15
|
-
*/
|
|
16
|
-
export interface NearBrowserWalletProvider {
|
|
17
|
-
// Connection methods
|
|
18
|
-
connect(params?: { contractId?: string; methodNames?: string[] }): Promise<
|
|
19
|
-
Account[] | { accountId: string }
|
|
20
|
-
>;
|
|
21
|
-
disconnect?(): Promise<void>;
|
|
22
|
-
signOut?(): Promise<void>; // Alternative to disconnect
|
|
23
|
-
|
|
24
|
-
// Account methods
|
|
25
|
-
getAccountId(): string | Promise<string>;
|
|
26
|
-
getAccounts?(): Promise<Account[]>;
|
|
27
|
-
isSignedIn(): boolean;
|
|
28
|
-
getPublicKey?(): Promise<string>;
|
|
29
|
-
|
|
30
|
-
// Signing methods
|
|
31
|
-
signMessage?(params: any): Promise<any>;
|
|
32
|
-
signAndSendTransaction(params: {
|
|
33
|
-
receiverId: string;
|
|
34
|
-
actions: Action[];
|
|
35
|
-
signerId?: string;
|
|
36
|
-
}): Promise<any>;
|
|
37
|
-
signAndSendTransactions?(params: {
|
|
38
|
-
transactions: Transaction[];
|
|
39
|
-
}): Promise<any[]>;
|
|
40
|
-
|
|
41
|
-
// Optional utility methods
|
|
42
|
-
request<T>(params: { method: string; params?: any }): Promise<T>;
|
|
43
|
-
verifyOwner?(params: {
|
|
44
|
-
message: string;
|
|
45
|
-
callbackUrl?: string;
|
|
46
|
-
}): Promise<any>;
|
|
47
|
-
getNetwork?(): Promise<{ networkId: string; nodeUrl: string }>;
|
|
48
|
-
|
|
49
|
-
// Event handlers (optional)
|
|
50
|
-
on?(event: string, handler: Function): void;
|
|
51
|
-
off?(event: string, handler: Function): void;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Helper to create a NEAR signer from browser extension providers
|
|
56
|
-
*/
|
|
57
|
-
export async function createNearSignerFromProvider(
|
|
58
|
-
provider: NearBrowserWalletProvider,
|
|
59
|
-
walletName: string,
|
|
60
|
-
) {
|
|
61
|
-
const isConnected = provider.isSignedIn ? provider.isSignedIn() : false;
|
|
62
|
-
if (!isConnected) {
|
|
63
|
-
await provider.connect({ contractId: "", methodNames: [] });
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const signer = {
|
|
67
|
-
...provider,
|
|
68
|
-
async getPublicKey() {
|
|
69
|
-
// Most browser wallets expose public key through message signing
|
|
70
|
-
const { utils } = await import("near-api-js");
|
|
71
|
-
|
|
72
|
-
if (provider.getPublicKey) {
|
|
73
|
-
const pubKey = await provider.getPublicKey();
|
|
74
|
-
return utils.PublicKey.from(pubKey);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (!provider.signMessage) {
|
|
78
|
-
throw new SwapKitError("wallet_ledger_method_not_supported", {
|
|
79
|
-
wallet: walletName,
|
|
80
|
-
method: "getPublicKey",
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Most browser wallets don't expose public key directly
|
|
85
|
-
// Return a dummy public key
|
|
86
|
-
const { PublicKey } = await import("near-api-js/lib/utils");
|
|
87
|
-
// Create a dummy ed25519 public key
|
|
88
|
-
const dummyKeyData = Buffer.alloc(32);
|
|
89
|
-
const dummyKey = `ed25519:${Buffer.from(dummyKeyData).toString("base64")}`;
|
|
90
|
-
return PublicKey.from(dummyKey);
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
async signNep413Message(
|
|
94
|
-
message: string,
|
|
95
|
-
_accountId: string,
|
|
96
|
-
recipient: string,
|
|
97
|
-
nonce: Uint8Array,
|
|
98
|
-
callbackUrl?: string,
|
|
99
|
-
) {
|
|
100
|
-
if (!provider.signMessage) {
|
|
101
|
-
throw new SwapKitError("wallet_ledger_method_not_supported", {
|
|
102
|
-
wallet: walletName,
|
|
103
|
-
method: "signNep413Message",
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// We know signMessage exists because we checked above
|
|
108
|
-
const result = await (
|
|
109
|
-
provider as Required<Pick<NearBrowserWalletProvider, "signMessage">>
|
|
110
|
-
).signMessage({
|
|
111
|
-
message,
|
|
112
|
-
recipient,
|
|
113
|
-
nonce: Buffer.from(nonce),
|
|
114
|
-
callbackUrl,
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
return result;
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
async signTransaction(transaction: Transaction) {
|
|
121
|
-
if (!provider.request) {
|
|
122
|
-
throw new SwapKitError("wallet_near_method_not_supported", {
|
|
123
|
-
wallet: walletName,
|
|
124
|
-
method: "request",
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Browser wallets typically sign and send in one operation
|
|
129
|
-
// This is a limitation of browser wallet APIs
|
|
130
|
-
const result = await provider.request<{ signatures: Signature }>({
|
|
131
|
-
method: "near_signTransactions",
|
|
132
|
-
params: {
|
|
133
|
-
transactions: [transaction], // must be Array type
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
const signedTransaction = new SignedTransaction({
|
|
138
|
-
transaction,
|
|
139
|
-
signature: result.signatures,
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
return [result.signatures.data, signedTransaction] as [
|
|
143
|
-
Uint8Array<ArrayBufferLike>,
|
|
144
|
-
SignedTransaction,
|
|
145
|
-
];
|
|
146
|
-
},
|
|
147
|
-
|
|
148
|
-
signDelegateAction(_delegateAction: any) {
|
|
149
|
-
// Most browser wallets don't support delegate actions yet
|
|
150
|
-
return Promise.reject(
|
|
151
|
-
new SwapKitError("wallet_ledger_method_not_supported", {
|
|
152
|
-
wallet: walletName,
|
|
153
|
-
method: "signDelegateAction",
|
|
154
|
-
}),
|
|
155
|
-
);
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
async getAddress() {
|
|
159
|
-
if (provider.getAccountId) {
|
|
160
|
-
return provider.getAccountId();
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (provider.isSignedIn && !provider.isSignedIn()) {
|
|
164
|
-
// Try connect method for wallets that don't have requestSignIn
|
|
165
|
-
const result = await provider.connect();
|
|
166
|
-
if (Array.isArray(result) && result.length > 0 && result[0]) {
|
|
167
|
-
return typeof result[0] === "string" ? result[0] : result[0].accountId;
|
|
168
|
-
}
|
|
169
|
-
throw new SwapKitError("wallet_connection_rejected_by_user", {
|
|
170
|
-
wallet: walletName,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
throw new SwapKitError("wallet_connection_rejected_by_user", {
|
|
175
|
-
wallet: walletName,
|
|
176
|
-
});
|
|
177
|
-
},
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
return signer as NearSigner;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Detect if a wallet provider supports NEAR
|
|
185
|
-
*/
|
|
186
|
-
export function detectNearProvider(
|
|
187
|
-
window: any,
|
|
188
|
-
providerPath: string,
|
|
189
|
-
): NearBrowserWalletProvider | null {
|
|
190
|
-
const parts = providerPath.split(".");
|
|
191
|
-
let provider = window;
|
|
192
|
-
|
|
193
|
-
for (const part of parts) {
|
|
194
|
-
provider = provider?.[part];
|
|
195
|
-
if (!provider) return null;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return provider;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Get NEAR chain ID for WalletConnect
|
|
203
|
-
*/
|
|
204
|
-
export function getNearChainId(isTestnet: boolean): string {
|
|
205
|
-
return isTestnet ? "near:testnet" : "near:mainnet";
|
|
206
|
-
}
|
package/src/index.ts
DELETED