@swapkit/wallets 3.0.0-beta.20 → 3.0.0-beta.21
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-2aa1w78q.js +3 -0
- package/dist/chunk-2aa1w78q.js.map +10 -0
- package/dist/{chunk-s6xqbsy0.js → chunk-ebfkk1jn.js} +1 -1
- package/dist/{chunk-s6xqbsy0.js.map → chunk-ebfkk1jn.js.map} +1 -1
- package/dist/{chunk-sygzrjje.js → chunk-k9q04afa.js} +1 -1
- package/dist/{chunk-sygzrjje.js.map → chunk-k9q04afa.js.map} +1 -1
- package/dist/chunk-x5hgx9x9.js +3 -0
- package/dist/chunk-x5hgx9x9.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.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 +3 -0
- package/dist/src/cosmostation/index.cjs.map +10 -0
- package/dist/src/cosmostation/index.js +3 -0
- package/dist/src/cosmostation/index.js.map +10 -0
- package/dist/src/ctrl/index.js +1 -1
- 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.js +1 -1
- package/dist/src/keepkey/index.cjs +2 -2
- package/dist/src/keepkey/index.cjs.map +9 -9
- package/dist/src/keepkey/index.js +2 -2
- package/dist/src/keepkey/index.js.map +9 -9
- package/dist/src/keepkey-bex/index.cjs +2 -2
- package/dist/src/keepkey-bex/index.cjs.map +4 -4
- package/dist/src/keepkey-bex/index.js +2 -2
- package/dist/src/keepkey-bex/index.js.map +4 -4
- 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/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 +13 -13
- package/dist/src/ledger/index.js +3 -3
- package/dist/src/ledger/index.js.map +13 -13
- 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.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.js +1 -1
- package/dist/src/trezor/index.cjs +1 -1
- package/dist/src/trezor/index.js +1 -1
- package/dist/src/walletconnect/index.cjs +2 -2
- package/dist/src/walletconnect/index.cjs.map +4 -4
- package/dist/src/walletconnect/index.js +2 -2
- package/dist/src/walletconnect/index.js.map +4 -4
- package/package.json +13 -8
- package/src/bitget/helpers.ts +3 -2
- package/src/coinbase/signer.ts +4 -4
- package/src/cosmostation/index.ts +8 -7
- package/src/evm-extensions/index.ts +4 -3
- package/src/exodus/index.ts +7 -7
- package/src/keepkey/chains/cosmos.ts +44 -50
- package/src/keepkey/chains/evm.ts +16 -8
- package/src/keepkey/chains/mayachain.ts +2 -1
- package/src/keepkey/chains/thorchain.ts +2 -1
- package/src/keepkey/chains/utxo.ts +9 -2
- package/src/keepkey/coins.ts +10 -4
- package/src/keepkey/index.ts +15 -7
- package/src/keepkey-bex/index.ts +9 -14
- package/src/keepkey-bex/walletHelpers.ts +1 -1
- package/src/keplr/index.ts +4 -3
- package/src/keystore/index.ts +1 -0
- package/src/ledger/clients/cosmos.ts +3 -2
- package/src/ledger/clients/evm.ts +6 -5
- package/src/ledger/clients/thorchain/helpers.ts +9 -4
- package/src/ledger/clients/thorchain/index.ts +3 -3
- package/src/ledger/clients/thorchain/lib.ts +3 -2
- package/src/ledger/clients/thorchain/utils.ts +20 -9
- package/src/ledger/cosmosTypes.ts +14 -10
- package/src/ledger/helpers/getLedgerClient.ts +54 -47
- package/src/ledger/helpers/getLedgerTransport.ts +1 -1
- package/src/ledger/index.ts +7 -6
- package/src/ledger/interfaces/CosmosLedgerInterface.ts +0 -1
- package/src/okx/helpers.ts +9 -8
- package/src/onekey/index.ts +2 -6
- package/src/radix/index.ts +4 -4
- package/src/trezor/evmSigner.ts +1 -1
- package/src/walletconnect/evmSigner.ts +6 -2
- package/src/walletconnect/index.ts +2 -2
- package/dist/chunk-4ef2xs46.js +0 -3
- package/dist/chunk-4ef2xs46.js.map +0 -10
- package/dist/chunk-qgv1myym.js +0 -3
- package/dist/chunk-qgv1myym.js.map +0 -10
- package/dist/chunk-w07sv0jv.js +0 -3
- package/dist/chunk-w07sv0jv.js.map +0 -10
- package/dist/chunk-y0g3prs9.js +0 -3
- package/dist/chunk-y0g3prs9.js.map +0 -10
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { base64 } from "@scure/base";
|
|
2
|
+
import { SwapKitError } from "@swapkit/helpers";
|
|
2
3
|
|
|
3
4
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor
|
|
4
5
|
export const getSignature = (signatureArray: any) => {
|
|
5
6
|
// Check Type Length Value encoding
|
|
6
7
|
if (signatureArray.length < 64) {
|
|
7
|
-
throw new
|
|
8
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "Too short" });
|
|
8
9
|
}
|
|
9
10
|
if (signatureArray[0] !== 0x30) {
|
|
10
|
-
throw new
|
|
11
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", {
|
|
12
|
+
reason: "TLV encoding: expected first byte 0x30",
|
|
13
|
+
});
|
|
11
14
|
}
|
|
12
15
|
if (signatureArray[1] + 2 !== signatureArray.length) {
|
|
13
|
-
throw new
|
|
16
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", {
|
|
17
|
+
reason: "signature length does not match TLV",
|
|
18
|
+
});
|
|
14
19
|
}
|
|
15
20
|
if (signatureArray[2] !== 0x02) {
|
|
16
|
-
throw new
|
|
21
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", {
|
|
22
|
+
reason: "TLV encoding: expected length type 0x02",
|
|
23
|
+
});
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
// r signature
|
|
@@ -24,7 +31,7 @@ export const getSignature = (signatureArray: any) => {
|
|
|
24
31
|
if (rSignature.length === 33 && rSignature[0] === 0) {
|
|
25
32
|
rSignature = rSignature.slice(1, 33);
|
|
26
33
|
} else if (rSignature.length === 33) {
|
|
27
|
-
throw new
|
|
34
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "r too long" });
|
|
28
35
|
}
|
|
29
36
|
|
|
30
37
|
// add leading zero's to pad to 32 bytes
|
|
@@ -34,13 +41,17 @@ export const getSignature = (signatureArray: any) => {
|
|
|
34
41
|
|
|
35
42
|
// s signature
|
|
36
43
|
if (signatureArray[rLength + 4] !== 0x02) {
|
|
37
|
-
throw new
|
|
44
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", {
|
|
45
|
+
reason: "TLV encoding: expected length type 0x02 for s",
|
|
46
|
+
});
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
const sLength = signatureArray[rLength + 5];
|
|
41
50
|
|
|
42
51
|
if (4 + rLength + 2 + sLength !== signatureArray.length) {
|
|
43
|
-
throw new
|
|
52
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", {
|
|
53
|
+
reason: "TLV byte lengths do not match message length",
|
|
54
|
+
});
|
|
44
55
|
}
|
|
45
56
|
|
|
46
57
|
let sSignature = signatureArray.slice(rLength + 6, signatureArray.length);
|
|
@@ -49,7 +60,7 @@ export const getSignature = (signatureArray: any) => {
|
|
|
49
60
|
if (sSignature.length === 33 && sSignature[0] === 0) {
|
|
50
61
|
sSignature = sSignature.slice(1, 33);
|
|
51
62
|
} else if (sSignature.length === 33) {
|
|
52
|
-
throw new
|
|
63
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "s too long" });
|
|
53
64
|
}
|
|
54
65
|
|
|
55
66
|
// add leading zero's to pad to 32 bytes
|
|
@@ -58,7 +69,7 @@ export const getSignature = (signatureArray: any) => {
|
|
|
58
69
|
}
|
|
59
70
|
|
|
60
71
|
if (rSignature.length !== 32 || sSignature.length !== 32) {
|
|
61
|
-
throw new
|
|
72
|
+
throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "must be 32 bytes each" });
|
|
62
73
|
}
|
|
63
74
|
|
|
64
75
|
return base64.encode(Buffer.concat([rSignature, sSignature]));
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { SwapKitError } from "@swapkit/helpers";
|
|
2
|
+
|
|
1
3
|
export interface Coin {
|
|
2
4
|
readonly denom: string;
|
|
3
5
|
readonly amount: string;
|
|
@@ -57,12 +59,14 @@ export class AminoTypes {
|
|
|
57
59
|
toAmino({ typeUrl, value }: EncodeObject): AminoMsg {
|
|
58
60
|
const converter = this.register[typeUrl];
|
|
59
61
|
if (converter === "not_supported_by_chain") {
|
|
60
|
-
throw new
|
|
61
|
-
`The message type '${typeUrl}' cannot be signed using the Amino JSON sign mode because this is not supported by chain.`,
|
|
62
|
-
);
|
|
62
|
+
throw new SwapKitError("wallet_ledger_chain_not_supported", {
|
|
63
|
+
reason: `The message type '${typeUrl}' cannot be signed using the Amino JSON sign mode because this is not supported by chain.`,
|
|
64
|
+
});
|
|
63
65
|
}
|
|
64
66
|
if (!converter) {
|
|
65
|
-
throw new
|
|
67
|
+
throw new SwapKitError("wallet_ledger_invalid_params", {
|
|
68
|
+
reason: `Type URL '${typeUrl}' does not exist in the Amino message type register.`,
|
|
69
|
+
});
|
|
66
70
|
}
|
|
67
71
|
return {
|
|
68
72
|
type: converter.aminoType,
|
|
@@ -76,18 +80,18 @@ export class AminoTypes {
|
|
|
76
80
|
.filter(([_typeUrl, { aminoType }]) => aminoType === type);
|
|
77
81
|
|
|
78
82
|
if (matches.length === 0) {
|
|
79
|
-
throw new
|
|
80
|
-
`Amino type identifier '${type}' does not exist in the Amino message type register.`,
|
|
81
|
-
);
|
|
83
|
+
throw new SwapKitError("wallet_ledger_invalid_params", {
|
|
84
|
+
reason: `Amino type identifier '${type}' does not exist in the Amino message type register.`,
|
|
85
|
+
});
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
if (matches.length > 1) {
|
|
85
|
-
throw new
|
|
86
|
-
`Multiple types are registered with Amino type identifier '${type}': '${matches
|
|
89
|
+
throw new SwapKitError("wallet_ledger_invalid_params", {
|
|
90
|
+
reason: `Multiple types are registered with Amino type identifier '${type}': '${matches
|
|
87
91
|
.map(([key, _value]) => key)
|
|
88
92
|
.sort()
|
|
89
93
|
.join("', '")}'. Thus fromAmino cannot be performed.`,
|
|
90
|
-
);
|
|
94
|
+
});
|
|
91
95
|
}
|
|
92
96
|
|
|
93
97
|
const [typeUrl, converter] = matches[0] as [string, AminoConverter];
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Chain,
|
|
3
|
+
type DerivationPathArray,
|
|
4
|
+
type EVMChain,
|
|
5
|
+
SwapKitError,
|
|
6
|
+
WalletOption,
|
|
7
|
+
} from "@swapkit/helpers";
|
|
2
8
|
|
|
3
9
|
import { CosmosLedger } from "../clients/cosmos";
|
|
4
10
|
import {
|
|
@@ -47,53 +53,54 @@ export const getLedgerClient = async <T extends LedgerSupportedChain>({
|
|
|
47
53
|
chain: T;
|
|
48
54
|
derivationPath?: DerivationPathArray;
|
|
49
55
|
}): Promise<LedgerSignerMap[T]> => {
|
|
50
|
-
|
|
51
|
-
case Chain.THORChain:
|
|
52
|
-
return new THORChainLedger(derivationPath) as LedgerSignerMap[T];
|
|
53
|
-
case Chain.Cosmos:
|
|
54
|
-
return new CosmosLedger(derivationPath) as LedgerSignerMap[T];
|
|
55
|
-
case Chain.Bitcoin:
|
|
56
|
-
return BitcoinLedger(derivationPath) as LedgerSignerMap[T];
|
|
57
|
-
case Chain.BitcoinCash:
|
|
58
|
-
return BitcoinCashLedger(derivationPath) as LedgerSignerMap[T];
|
|
59
|
-
case Chain.Dash:
|
|
60
|
-
return DashLedger(derivationPath) as LedgerSignerMap[T];
|
|
61
|
-
case Chain.Dogecoin:
|
|
62
|
-
return DogecoinLedger(derivationPath) as LedgerSignerMap[T];
|
|
63
|
-
case Chain.Litecoin:
|
|
64
|
-
return LitecoinLedger(derivationPath) as LedgerSignerMap[T];
|
|
65
|
-
case Chain.Ripple:
|
|
66
|
-
return XRPLedger(derivationPath) as LedgerSignerMap[T];
|
|
67
|
-
|
|
68
|
-
case Chain.Arbitrum:
|
|
69
|
-
case Chain.Avalanche:
|
|
70
|
-
case Chain.BinanceSmartChain:
|
|
71
|
-
case Chain.Ethereum:
|
|
72
|
-
case Chain.Optimism:
|
|
73
|
-
case Chain.Polygon:
|
|
74
|
-
case Chain.Base: {
|
|
75
|
-
const { getProvider } = await import("@swapkit/toolboxes/evm");
|
|
76
|
-
const params = { provider: await getProvider(chain), derivationPath };
|
|
56
|
+
const { match } = await import("ts-pattern");
|
|
77
57
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
58
|
+
return match(chain as LedgerSupportedChain)
|
|
59
|
+
.returnType<Promise<LedgerSignerMap[T]>>()
|
|
60
|
+
.with(Chain.THORChain, () =>
|
|
61
|
+
Promise.resolve(new THORChainLedger(derivationPath) as LedgerSignerMap[T]),
|
|
62
|
+
)
|
|
63
|
+
.with(Chain.Cosmos, () =>
|
|
64
|
+
Promise.resolve(new CosmosLedger(derivationPath) as LedgerSignerMap[T]),
|
|
65
|
+
)
|
|
66
|
+
.with(Chain.Bitcoin, () => Promise.resolve(BitcoinLedger(derivationPath) as LedgerSignerMap[T]))
|
|
67
|
+
.with(Chain.BitcoinCash, () =>
|
|
68
|
+
Promise.resolve(BitcoinCashLedger(derivationPath) as LedgerSignerMap[T]),
|
|
69
|
+
)
|
|
70
|
+
.with(Chain.Dash, () => Promise.resolve(DashLedger(derivationPath) as LedgerSignerMap[T]))
|
|
71
|
+
.with(Chain.Dogecoin, () =>
|
|
72
|
+
Promise.resolve(DogecoinLedger(derivationPath) as LedgerSignerMap[T]),
|
|
73
|
+
)
|
|
74
|
+
.with(Chain.Litecoin, () =>
|
|
75
|
+
Promise.resolve(LitecoinLedger(derivationPath) as LedgerSignerMap[T]),
|
|
76
|
+
)
|
|
77
|
+
.with(Chain.Ripple, () => Promise.resolve(XRPLedger(derivationPath) as LedgerSignerMap[T]))
|
|
78
|
+
.with(
|
|
79
|
+
Chain.Arbitrum,
|
|
80
|
+
Chain.Avalanche,
|
|
81
|
+
Chain.BinanceSmartChain,
|
|
82
|
+
Chain.Ethereum,
|
|
83
|
+
Chain.Optimism,
|
|
84
|
+
Chain.Polygon,
|
|
85
|
+
Chain.Base,
|
|
86
|
+
async () => {
|
|
87
|
+
const { getProvider } = await import("@swapkit/toolboxes/evm");
|
|
88
|
+
const params = { provider: await getProvider(chain as EVMChain), derivationPath };
|
|
95
89
|
|
|
96
|
-
|
|
90
|
+
return match(chain as Chain)
|
|
91
|
+
.with(
|
|
92
|
+
Chain.BinanceSmartChain,
|
|
93
|
+
() => BinanceSmartChainLedger(params) as LedgerSignerMap[T],
|
|
94
|
+
)
|
|
95
|
+
.with(Chain.Avalanche, () => AvalancheLedger(params) as LedgerSignerMap[T])
|
|
96
|
+
.with(Chain.Arbitrum, () => ArbitrumLedger(params) as LedgerSignerMap[T])
|
|
97
|
+
.with(Chain.Optimism, () => OptimismLedger(params) as LedgerSignerMap[T])
|
|
98
|
+
.with(Chain.Polygon, () => PolygonLedger(params) as LedgerSignerMap[T])
|
|
99
|
+
.with(Chain.Base, () => BaseLedger(params) as LedgerSignerMap[T])
|
|
100
|
+
.otherwise(() => EthereumLedger(params) as LedgerSignerMap[T]);
|
|
101
|
+
},
|
|
102
|
+
)
|
|
103
|
+
.otherwise(() => {
|
|
97
104
|
throw new SwapKitError("wallet_chain_not_supported", { wallet: WalletOption.LEDGER, chain });
|
|
98
|
-
|
|
105
|
+
});
|
|
99
106
|
};
|
|
@@ -61,7 +61,7 @@ export const getLedgerTransport = async () => {
|
|
|
61
61
|
|
|
62
62
|
const Transport = (await import("@ledgerhq/hw-transport-webusb")).default;
|
|
63
63
|
const isSupported = await Transport.isSupported();
|
|
64
|
-
if (!isSupported) throw new
|
|
64
|
+
if (!isSupported) throw new SwapKitError("wallet_ledger_webusb_not_supported");
|
|
65
65
|
|
|
66
66
|
const { DisconnectedDevice } = await import("@ledgerhq/errors");
|
|
67
67
|
|
package/src/ledger/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
type GenericTransferParams,
|
|
7
7
|
SKConfig,
|
|
8
8
|
StagenetChain,
|
|
9
|
+
SwapKitError,
|
|
9
10
|
WalletOption,
|
|
10
11
|
createWallet,
|
|
11
12
|
filterSupportedChains,
|
|
@@ -149,7 +150,7 @@ async function getWalletMethods({
|
|
|
149
150
|
const address = await getLedgerAddress({ chain, ledgerClient: signer });
|
|
150
151
|
|
|
151
152
|
const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {
|
|
152
|
-
if (!assetValue) throw new
|
|
153
|
+
if (!assetValue) throw new SwapKitError("wallet_ledger_invalid_asset");
|
|
153
154
|
|
|
154
155
|
const sendCoinsMessage = {
|
|
155
156
|
amount: [
|
|
@@ -209,9 +210,9 @@ async function getWalletMethods({
|
|
|
209
210
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Refactor to reduce complexity
|
|
210
211
|
}: GenericTransferParams | ThorchainDepositParams) => {
|
|
211
212
|
const account = await toolbox.getAccount(address);
|
|
212
|
-
if (!account) throw new
|
|
213
|
-
if (!assetValue) throw new
|
|
214
|
-
if (!value) throw new
|
|
213
|
+
if (!account) throw new SwapKitError("wallet_ledger_invalid_account");
|
|
214
|
+
if (!assetValue) throw new SwapKitError("wallet_ledger_invalid_asset");
|
|
215
|
+
if (!value) throw new SwapKitError("wallet_ledger_pubkey_not_found");
|
|
215
216
|
|
|
216
217
|
const { accountNumber, sequence: sequenceNumber } = account;
|
|
217
218
|
const sequence = (sequenceNumber || 0).toString();
|
|
@@ -231,7 +232,7 @@ async function getWalletMethods({
|
|
|
231
232
|
});
|
|
232
233
|
|
|
233
234
|
const signatures = await signTransaction(rawSendTx, sequence);
|
|
234
|
-
if (!signatures) throw new
|
|
235
|
+
if (!signatures) throw new SwapKitError("wallet_ledger_signing_error");
|
|
235
236
|
|
|
236
237
|
const pubkey = encodePubkey({ type: "tendermint/PubKeySecp256k1", value });
|
|
237
238
|
const msgs = orderedMessages.map(parseAminoMessageForDirectSigning);
|
|
@@ -278,6 +279,6 @@ async function getWalletMethods({
|
|
|
278
279
|
}
|
|
279
280
|
|
|
280
281
|
default:
|
|
281
|
-
throw new
|
|
282
|
+
throw new SwapKitError("wallet_ledger_chain_not_supported", { chain });
|
|
282
283
|
}
|
|
283
284
|
}
|
package/src/okx/helpers.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
ChainId,
|
|
4
4
|
type EVMChain,
|
|
5
5
|
SKConfig,
|
|
6
|
+
SwapKitError,
|
|
6
7
|
prepareNetworkSwitch,
|
|
7
8
|
switchEVMWalletNetwork,
|
|
8
9
|
} from "@swapkit/helpers";
|
|
@@ -13,7 +14,7 @@ const cosmosTransfer =
|
|
|
13
14
|
() =>
|
|
14
15
|
async ({ from, recipient, amount, asset, memo }: any) => {
|
|
15
16
|
if (!(window.okxwallet && "keplr" in window.okxwallet)) {
|
|
16
|
-
throw new
|
|
17
|
+
throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Cosmos });
|
|
17
18
|
}
|
|
18
19
|
const { createSigningStargateClient } = await import("@swapkit/toolboxes/cosmos");
|
|
19
20
|
|
|
@@ -39,7 +40,7 @@ async function getWeb3WalletMethods({
|
|
|
39
40
|
}: { walletProvider: Eip1193Provider | undefined; chain: EVMChain }) {
|
|
40
41
|
const { getEvmToolbox } = await import("@swapkit/toolboxes/evm");
|
|
41
42
|
const { BrowserProvider } = await import("ethers");
|
|
42
|
-
if (!walletProvider) throw new
|
|
43
|
+
if (!walletProvider) throw new SwapKitError("wallet_okx_not_found");
|
|
43
44
|
|
|
44
45
|
const provider = new BrowserProvider(walletProvider, "any");
|
|
45
46
|
const signer = await provider.getSigner();
|
|
@@ -50,7 +51,7 @@ async function getWeb3WalletMethods({
|
|
|
50
51
|
await switchEVMWalletNetwork(provider, chain, toolbox.getNetworkParams());
|
|
51
52
|
}
|
|
52
53
|
} catch (_error) {
|
|
53
|
-
throw new
|
|
54
|
+
throw new SwapKitError("wallet_okx_failed_to_switch_network", { chain });
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
return prepareNetworkSwitch({ toolbox, provider, chain });
|
|
@@ -66,7 +67,7 @@ export async function getWalletMethods(chain: Chain) {
|
|
|
66
67
|
case Chain.Polygon:
|
|
67
68
|
case Chain.BinanceSmartChain: {
|
|
68
69
|
if (!(window.okxwallet && "send" in window.okxwallet)) {
|
|
69
|
-
throw new
|
|
70
|
+
throw new SwapKitError("wallet_okx_not_found", { chain });
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
const evmWallet = await getWeb3WalletMethods({
|
|
@@ -80,7 +81,7 @@ export async function getWalletMethods(chain: Chain) {
|
|
|
80
81
|
|
|
81
82
|
case Chain.Bitcoin: {
|
|
82
83
|
if (!(window.okxwallet && "bitcoin" in window.okxwallet)) {
|
|
83
|
-
throw new
|
|
84
|
+
throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Bitcoin });
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
|
|
@@ -107,13 +108,13 @@ export async function getWalletMethods(chain: Chain) {
|
|
|
107
108
|
|
|
108
109
|
case Chain.Cosmos: {
|
|
109
110
|
if (!(window.okxwallet && "keplr" in window.okxwallet)) {
|
|
110
|
-
throw new
|
|
111
|
+
throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Cosmos });
|
|
111
112
|
}
|
|
112
113
|
const { keplr: wallet } = window.okxwallet;
|
|
113
114
|
|
|
114
115
|
await wallet.enable(ChainId.Cosmos);
|
|
115
116
|
const accounts = await wallet.getOfflineSignerOnlyAmino(ChainId.Cosmos).getAccounts();
|
|
116
|
-
if (!accounts?.[0]) throw new
|
|
117
|
+
if (!accounts?.[0]) throw new SwapKitError("wallet_okx_no_accounts", { chain: Chain.Cosmos });
|
|
117
118
|
|
|
118
119
|
const { getCosmosToolbox } = await import("@swapkit/toolboxes/cosmos");
|
|
119
120
|
const [{ address }] = accounts;
|
|
@@ -123,6 +124,6 @@ export async function getWalletMethods(chain: Chain) {
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
default:
|
|
126
|
-
throw new
|
|
127
|
+
throw new SwapKitError("wallet_okx_chain_not_supported", { chain });
|
|
127
128
|
}
|
|
128
129
|
}
|
package/src/onekey/index.ts
CHANGED
|
@@ -22,10 +22,7 @@ async function getWalletMethodsForExtension(chain: Chain) {
|
|
|
22
22
|
switch (chain) {
|
|
23
23
|
case Chain.Bitcoin: {
|
|
24
24
|
if (!window.$onekey?.btc) {
|
|
25
|
-
throw new SwapKitError({
|
|
26
|
-
errorKey: "wallet_onekey_not_found",
|
|
27
|
-
info: { chain },
|
|
28
|
-
});
|
|
25
|
+
throw new SwapKitError({ errorKey: "wallet_onekey_not_found", info: { chain } });
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
|
|
@@ -38,8 +35,7 @@ async function getWalletMethodsForExtension(chain: Chain) {
|
|
|
38
35
|
|
|
39
36
|
let address = "";
|
|
40
37
|
|
|
41
|
-
const getProvider
|
|
42
|
-
new Promise((res) => res(window.$onekey?.btc as BitcoinProvider));
|
|
38
|
+
const getProvider = () => new Promise<BitcoinProvider>((res) => res(window.$onekey?.btc));
|
|
43
39
|
|
|
44
40
|
const getAddressOptions: GetAddressOptions = {
|
|
45
41
|
getProvider,
|
package/src/radix/index.ts
CHANGED
|
@@ -162,13 +162,13 @@ async function getWalletMethods() {
|
|
|
162
162
|
const res = await rdt.walletApi.sendRequest();
|
|
163
163
|
|
|
164
164
|
if (!res) {
|
|
165
|
-
throw new
|
|
165
|
+
throw new SwapKitError("wallet_radix_no_account");
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
const newAddress = res.unwrapOr(null)?.accounts[0]?.address;
|
|
169
169
|
|
|
170
170
|
if (!newAddress) {
|
|
171
|
-
throw new
|
|
171
|
+
throw new SwapKitError("wallet_radix_no_account");
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
return newAddress;
|
|
@@ -182,7 +182,7 @@ async function getWalletMethods() {
|
|
|
182
182
|
getAddress,
|
|
183
183
|
getBalance: () => getBalance(address),
|
|
184
184
|
transfer: (_params: { assetValue: AssetValue; recipient: string; from: string }) => {
|
|
185
|
-
throw new
|
|
185
|
+
throw new SwapKitError("wallet_radix_method_not_supported", { method: "transfer" });
|
|
186
186
|
},
|
|
187
187
|
signAndBroadcast: async ({ manifest, message }: { manifest: string; message: string }) => {
|
|
188
188
|
const tx = await rdt.walletApi.sendTransaction({
|
|
@@ -193,7 +193,7 @@ async function getWalletMethods() {
|
|
|
193
193
|
const txResult = tx.unwrapOr(null)?.transactionIntentHash;
|
|
194
194
|
|
|
195
195
|
if (!txResult) {
|
|
196
|
-
throw new
|
|
196
|
+
throw new SwapKitError("wallet_radix_transaction_failed");
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
return txResult;
|
package/src/trezor/evmSigner.ts
CHANGED
|
@@ -74,7 +74,7 @@ export async function getEVMSigner({ chain, derivationPath, provider }: TrezorEV
|
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
signTypedData(): Promise<string> {
|
|
77
|
-
throw new
|
|
77
|
+
throw new SwapKitError("wallet_trezor_method_not_supported", { method: "signTypedData" });
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
signTransaction = async ({
|
|
@@ -54,7 +54,9 @@ class WalletconnectSigner extends AbstractSigner {
|
|
|
54
54
|
};
|
|
55
55
|
|
|
56
56
|
signTransaction = () => {
|
|
57
|
-
throw new
|
|
57
|
+
throw new SwapKitError("wallet_walletconnect_method_not_supported", {
|
|
58
|
+
method: "signTransaction",
|
|
59
|
+
});
|
|
58
60
|
|
|
59
61
|
// const baseTx = {
|
|
60
62
|
// from,
|
|
@@ -77,7 +79,9 @@ class WalletconnectSigner extends AbstractSigner {
|
|
|
77
79
|
|
|
78
80
|
// ANCHOR (@Towan) - Implement in future
|
|
79
81
|
signTypedData = () => {
|
|
80
|
-
throw new
|
|
82
|
+
throw new SwapKitError("wallet_walletconnect_method_not_supported", {
|
|
83
|
+
method: "signTypedData",
|
|
84
|
+
});
|
|
81
85
|
|
|
82
86
|
// const { toHexString } = await import('@swapkit/toolboxes/evm');
|
|
83
87
|
|
|
@@ -296,8 +296,8 @@ async function getWalletconnect(
|
|
|
296
296
|
};
|
|
297
297
|
|
|
298
298
|
return { session, accounts, client, disconnect };
|
|
299
|
-
} catch (
|
|
300
|
-
|
|
299
|
+
} catch (_e) {
|
|
300
|
+
// Errors are handled by returning undefined
|
|
301
301
|
} finally {
|
|
302
302
|
if (modal) {
|
|
303
303
|
// @ts-expect-error wrong typing
|
package/dist/chunk-4ef2xs46.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{c as h,d}from"./chunk-38ztynv0.js";import{Chain as o,ChainId as l,ChainToChainId as p,WalletOption as m,createWallet as C,filterSupportedChains as f}from"@swapkit/helpers";var y=[l.Cosmos,l.Kujira,l.THORChain],O=[o.Ethereum,o.BinanceSmartChain,o.Avalanche,o.Polygon,o.Arbitrum,o.Optimism,o.Base];async function E(r,c,a){await Promise.all(r.map(async(t)=>{let e=p[t];await a.enable(e);let s=a.getOfflineSignerOnlyAmino(e);if(!s)throw new Error("Could not load signer");let{getCosmosToolbox:i}=await import("@swapkit/toolboxes/cosmos"),n=await s.getAccounts();if(!n?.[0]?.address)throw new Error("No accounts found");let[{address:u}]=n,w=i(t,{signer:s});c({...w,chain:t,address:u,walletType:m.COSMOSTATION})}))}async function g(r,c){let a=window.ethereum;if(!a)throw new Error("No Ethereum provider found for Cosmostation");let t=await a.request({method:"eth_requestAccounts"});if(!t||t.length===0)throw new Error("No EVM accounts found");let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm");for(let s of r){let i=e(s,{provider:a}),[n]=t;if(!n)throw new Error("No address found for EVM chain");c({...i,chain:s,address:n,walletType:m.COSMOSTATION})}}var S=C({name:"connectCosmostation",supportedChains:[o.Cosmos,o.Kujira,o.THORChain,o.Ethereum,o.BinanceSmartChain,o.Avalanche,o.Polygon,o.Arbitrum,o.Optimism,o.Base],connect:({addChain:r,supportedChains:c})=>async function a(t){let e=f({chains:t,supportedChains:c,walletType:m.COSMOSTATION});if(!window.cosmostation)throw new Error("Cosmostation wallet not found");let s=e.filter((n)=>y.includes(p[n])),i=e.filter((n)=>O.includes(n));if(s.length>0){let n=window.cosmostation.providers?.keplr;if(!n)throw new Error("Cosmostation Keplr provider not found");await E(s,r,n)}if(i.length>0)await g(i,r);return!0}});export{S as cosmostationWallet};
|
|
2
|
-
|
|
3
|
-
//# debugId=9485AA1287D2F65D64756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/cosmostation/index.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { Keplr } from \"@keplr-wallet/types\";\nimport {\n Chain,\n ChainId,\n ChainToChainId,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nconst cosmostationSupportedChainIds = [ChainId.Cosmos, ChainId.Kujira, ChainId.THORChain] as const;\nconst cosmostationSupportedEVMChains = [\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n] as const;\n\ndeclare global {\n interface Window {\n cosmostation?: {\n providers?: {\n keplr?: Keplr;\n };\n };\n }\n}\n\nasync function connectCosmosChains(chains: Chain[], addChain: any, keplrProvider: Keplr) {\n await Promise.all(\n chains.map(async (chain) => {\n const chainId = ChainToChainId[chain] as (typeof cosmostationSupportedChainIds)[number];\n\n await keplrProvider.enable(chainId);\n const signer = keplrProvider.getOfflineSignerOnlyAmino(chainId);\n if (!signer) throw new Error(\"Could not load signer\");\n\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const accounts = await signer.getAccounts();\n if (!accounts?.[0]?.address) throw new Error(\"No accounts found\");\n\n const [{ address }] = accounts;\n const toolbox = getCosmosToolbox(chain as any, { signer });\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }),\n );\n}\n\nasync function connectEvmChains(chains: Chain[], addChain: any) {\n const provider = window.ethereum;\n\n if (!provider) {\n throw new Error(\"No Ethereum provider found for Cosmostation\");\n }\n\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) {\n throw new Error(\"No EVM accounts found\");\n }\n\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n for (const chain of chains) {\n const toolbox = getEvmToolbox(chain as any, { provider });\n const [address] = accounts;\n\n if (!address) {\n throw new Error(\"No address found for EVM chain\");\n }\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }\n}\n\nexport const cosmostationWallet = createWallet({\n name: \"connectCosmostation\",\n supportedChains: [\n Chain.Cosmos,\n Chain.Kujira,\n Chain.THORChain,\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n ],\n connect: ({ addChain, supportedChains }) =>\n async function connectCosmostation(chains: Chain[]) {\n const filteredChains = filterSupportedChains({\n chains,\n supportedChains,\n walletType: WalletOption.COSMOSTATION,\n });\n\n if (!window.cosmostation) {\n throw new Error(\"Cosmostation wallet not found\");\n }\n\n const cosmosChains = filteredChains.filter((chain) =>\n cosmostationSupportedChainIds.includes(ChainToChainId[chain] as any),\n );\n const evmChains = filteredChains.filter((chain) =>\n cosmostationSupportedEVMChains.includes(chain as any),\n );\n\n if (cosmosChains.length > 0) {\n const keplrProvider = window.cosmostation.providers?.keplr;\n if (!keplrProvider) {\n throw new Error(\"Cosmostation Keplr provider not found\");\n }\n\n await connectCosmosChains(cosmosChains, addChain, keplrProvider);\n }\n\n if (evmChains.length > 0) {\n await connectEvmChains(evmChains, addChain);\n }\n\n return true;\n },\n});\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "0CACA,gBACE,aACA,oBACA,kBACA,kBACA,2BACA,yBAGF,IAAM,EAAgC,CAAC,EAAQ,OAAQ,EAAQ,OAAQ,EAAQ,SAAS,EAClF,EAAiC,CACrC,EAAM,SACN,EAAM,kBACN,EAAM,UACN,EAAM,QACN,EAAM,SACN,EAAM,SACN,EAAM,IACR,EAYA,eAAe,CAAmB,CAAC,EAAiB,EAAe,EAAsB,CACvF,MAAM,QAAQ,IACZ,EAAO,IAAI,MAAO,IAAU,CAC1B,IAAM,EAAU,EAAe,GAE/B,MAAM,EAAc,OAAO,CAAO,EAClC,IAAM,EAAS,EAAc,0BAA0B,CAAO,EAC9D,IAAK,EAAQ,MAAM,IAAI,MAAM,uBAAuB,EAEpD,IAAQ,oBAAqB,KAAa,qCAEpC,EAAW,MAAM,EAAO,YAAY,EAC1C,IAAK,IAAW,IAAI,QAAS,MAAM,IAAI,MAAM,mBAAmB,EAEhE,KAAS,YAAa,EAChB,EAAU,EAAiB,EAAc,CAAE,QAAO,CAAC,EAEzD,EAAS,IACJ,EACH,QACA,UACA,WAAY,EAAa,YAC3B,CAAC,EACF,CACH,EAGF,eAAe,CAAgB,CAAC,EAAiB,EAAe,CAC9D,IAAM,EAAW,OAAO,SAExB,IAAK,EACH,MAAM,IAAI,MAAM,6CAA6C,EAG/D,IAAM,EAAY,MAAM,EAAS,QAAQ,CACvC,OAAQ,qBACV,CAAC,EAED,IAAK,GAAY,EAAS,SAAW,EACnC,MAAM,IAAI,MAAM,uBAAuB,EAGzC,IAAQ,iBAAkB,KAAa,kCAEvC,QAAW,KAAS,EAAQ,CAC1B,IAAM,EAAU,EAAc,EAAc,CAAE,UAAS,CAAC,GACjD,GAAW,EAElB,IAAK,EACH,MAAM,IAAI,MAAM,gCAAgC,EAGlD,EAAS,IACJ,EACH,QACA,UACA,WAAY,EAAa,YAC3B,CAAC,GAIE,IAAM,EAAqB,EAAa,CAC7C,KAAM,sBACN,gBAAiB,CACf,EAAM,OACN,EAAM,OACN,EAAM,UACN,EAAM,SACN,EAAM,kBACN,EAAM,UACN,EAAM,QACN,EAAM,SACN,EAAM,SACN,EAAM,IACR,EACA,QAAS,EAAG,WAAU,qBACpB,eAAe,CAAmB,CAAC,EAAiB,CAClD,IAAM,EAAiB,EAAsB,CAC3C,SACA,kBACA,WAAY,EAAa,YAC3B,CAAC,EAED,IAAK,OAAO,aACV,MAAM,IAAI,MAAM,+BAA+B,EAGjD,IAAM,EAAe,EAAe,OAAO,CAAC,IAC1C,EAA8B,SAAS,EAAe,EAAa,CACrE,EACM,EAAY,EAAe,OAAO,CAAC,IACvC,EAA+B,SAAS,CAAY,CACtD,EAEA,GAAI,EAAa,OAAS,EAAG,CAC3B,IAAM,EAAgB,OAAO,aAAa,WAAW,MACrD,IAAK,EACH,MAAM,IAAI,MAAM,uCAAuC,EAGzD,MAAM,EAAoB,EAAc,EAAU,CAAa,EAGjE,GAAI,EAAU,OAAS,EACrB,MAAM,EAAiB,EAAW,CAAQ,EAG5C,MAAO,GAEb,CAAC",
|
|
8
|
-
"debugId": "9485AA1287D2F65D64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-qgv1myym.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{c as M,d as Q}from"./chunk-38ztynv0.js";import{ChainToChainId as E,SwapKitError as B,SwapKitNumber as G,WalletOption as h,derivationPathToString as $}from"@swapkit/helpers";async function l({chain:W,derivationPath:k,provider:N}){let{AbstractSigner:f,Signature:C}=await import("ethers");class Y extends f{address;chain;derivationPath;provider;constructor({chain:j,derivationPath:q,provider:D}){super(D);this.address="",this.chain=j,this.derivationPath=q,this.provider=D}getAddress=async()=>{if(!this.address){let q=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:$(this.derivationPath),showOnTrezor:!0});if(!q.success)throw new B({errorKey:"wallet_trezor_failed_to_get_address",info:{...q,chain:this.chain,derivationPath:this.derivationPath}});this.address=q.payload.address}return this.address};signMessage=async(j)=>{let D=await(await import("@trezor/connect-web")).default.ethereumSignMessage({path:$(this.derivationPath),message:j});if(!D.success)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...D,message:j,chain:this.chain,derivationPath:this.derivationPath}});return D.payload.signature};signTypedData(){throw new Error("Not implemented")}signTransaction=async({to:j,gasLimit:q,value:D,data:_,nonce:H,maxFeePerGas:U,maxPriorityFeePerGas:V,gasPrice:X})=>{if(!j)throw new B({errorKey:"wallet_missing_params",info:{to:j}});if(!q)throw new B({errorKey:"wallet_missing_params",info:{gasLimit:q}});let R=U&&V;if(R&&!U)throw new B({errorKey:"wallet_missing_params",info:{maxFeePerGas:U}});if(R&&!V)throw new B({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:V}});if(!(R||X))throw new B({errorKey:"wallet_missing_params",info:{gasPrice:X}});let I=(await import("@trezor/connect-web")).default,{toHexString:J}=await import("@swapkit/toolboxes/evm"),{Transaction:L}=await import("ethers"),b=R?{maxFeePerGas:J(BigInt(U?.toString()||0)),maxPriorityFeePerGas:J(BigInt(V?.toString()||0))}:X&&{gasPrice:J(BigInt(X?.toString()||0))}||{gasPrice:"0x0"},z=J(BigInt(H||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),Z={chainId:Number.parseInt(E[this.chain]),to:j.toString(),value:J(BigInt(D?.toString()||0)),gasLimit:J(BigInt(q?.toString()||0)),nonce:z,data:_?.toString()||"0x",...b},{success:K,payload:A}=await I.ethereumSignTransaction({path:$(this.derivationPath),transaction:Z});if(!K)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...A,chain:this.chain,derivationPath:this.derivationPath}});let{r:u,s:y,v:T}=A,w=C.from({r:u,s:y,v:new G(BigInt(T)).getBaseValue("number")}),O=L.from({...Z,nonce:Number.parseInt(Z.nonce,16),type:R?2:0,signature:w}).serialized;if(!O)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return O};connect=(j)=>{if(!j)throw new B({errorKey:"wallet_provider_not_found",info:{wallet:h.TREZOR,chain:this.chain,derivationPath:this.derivationPath}});return new Y({chain:this.chain,derivationPath:this.derivationPath,provider:j})}}return new Y({chain:W,derivationPath:k,provider:N})}export{l as getEVMSigner};
|
|
2
|
-
|
|
3
|
-
//# debugId=CB5F21DB09AC943A64756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/trezor/evmSigner.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n SwapKitError,\n SwapKitNumber,\n WalletOption,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n path: derivationPathToString(this.derivationPath),\n message,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, message, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new Error(\"Not implemented\");\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit)\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { maxPriorityFeePerGas },\n });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || {\n gasPrice: \"0x0\",\n };\n\n const hexifiedNonce = toHexString(\n BigInt(\n nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\")),\n ),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain]),\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n data: data?.toString() || \"0x\",\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({\n r,\n s,\n v: new SwapKitNumber(BigInt(v)).getBaseValue(\"number\"),\n });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n type: isEIP1559 ? 2 : 0,\n signature,\n }).serialized;\n\n if (!serializedTx) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: {\n wallet: WalletOption.TREZOR,\n chain: this.chain,\n derivationPath: this.derivationPath,\n },\n });\n }\n\n return new TrezorSigner({\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "CB5F21DB09AC943A64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-w07sv0jv.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var j=require("@swapkit/helpers");async function T({chain:A,derivationPath:O,provider:W}){let{AbstractSigner:k,Signature:N}=await import("ethers");class X extends k{address;chain;derivationPath;provider;constructor({chain:q,derivationPath:B,provider:D}){super(D);this.address="",this.chain=q,this.derivationPath=B,this.provider=D}getAddress=async()=>{if(!this.address){let B=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:j.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!B.success)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{...B,chain:this.chain,derivationPath:this.derivationPath}});this.address=B.payload.address}return this.address};signMessage=async(q)=>{let D=await(await import("@trezor/connect-web")).default.ethereumSignMessage({path:j.derivationPathToString(this.derivationPath),message:q});if(!D.success)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...D,message:q,chain:this.chain,derivationPath:this.derivationPath}});return D.payload.signature};signTypedData(){throw new Error("Not implemented")}signTransaction=async({to:q,gasLimit:B,value:D,data:f,nonce:C,maxFeePerGas:R,maxPriorityFeePerGas:U,gasPrice:V})=>{if(!q)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{to:q}});if(!B)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{gasLimit:B}});let Q=R&&U;if(Q&&!R)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{maxFeePerGas:R}});if(Q&&!U)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:U}});if(!(Q||V))throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{gasPrice:V}});let _=(await import("@trezor/connect-web")).default,{toHexString:J}=await import("@swapkit/toolboxes/evm"),{Transaction:H}=await import("ethers"),I=Q?{maxFeePerGas:J(BigInt(R?.toString()||0)),maxPriorityFeePerGas:J(BigInt(U?.toString()||0))}:V&&{gasPrice:J(BigInt(V?.toString()||0))}||{gasPrice:"0x0"},L=J(BigInt(C||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),Y={chainId:Number.parseInt(j.ChainToChainId[this.chain]),to:q.toString(),value:J(BigInt(D?.toString()||0)),gasLimit:J(BigInt(B?.toString()||0)),nonce:L,data:f?.toString()||"0x",...I},{success:b,payload:Z}=await _.ethereumSignTransaction({path:j.derivationPathToString(this.derivationPath),transaction:Y});if(!b)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Z,chain:this.chain,derivationPath:this.derivationPath}});let{r:z,s:K,v:u}=Z,y=N.from({r:z,s:K,v:new j.SwapKitNumber(BigInt(u)).getBaseValue("number")}),$=H.from({...Y,nonce:Number.parseInt(Y.nonce,16),type:Q?2:0,signature:y}).serialized;if(!$)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return $};connect=(q)=>{if(!q)throw new j.SwapKitError({errorKey:"wallet_provider_not_found",info:{wallet:j.WalletOption.TREZOR,chain:this.chain,derivationPath:this.derivationPath}});return new X({chain:this.chain,derivationPath:this.derivationPath,provider:q})}}return new X({chain:A,derivationPath:O,provider:W})}
|
|
2
|
-
|
|
3
|
-
//# debugId=6FCFD995EF3A4A1864756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/trezor/evmSigner.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n SwapKitError,\n SwapKitNumber,\n WalletOption,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n path: derivationPathToString(this.derivationPath),\n message,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, message, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new Error(\"Not implemented\");\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit)\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { maxPriorityFeePerGas },\n });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || {\n gasPrice: \"0x0\",\n };\n\n const hexifiedNonce = toHexString(\n BigInt(\n nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\")),\n ),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain]),\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n data: data?.toString() || \"0x\",\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({\n r,\n s,\n v: new SwapKitNumber(BigInt(v)).getBaseValue(\"number\"),\n });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n type: isEIP1559 ? 2 : 0,\n signature,\n }).serialized;\n\n if (!serializedTx) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: {\n wallet: WalletOption.TREZOR,\n chain: this.chain,\n derivationPath: this.derivationPath,\n },\n });\n }\n\n return new TrezorSigner({\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "6FCFD995EF3A4A1864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-y0g3prs9.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var o=require("@swapkit/helpers"),d=[o.ChainId.Cosmos,o.ChainId.Kujira,o.ChainId.THORChain],p=[o.Chain.Ethereum,o.Chain.BinanceSmartChain,o.Chain.Avalanche,o.Chain.Polygon,o.Chain.Arbitrum,o.Chain.Optimism,o.Chain.Base];async function u(r,c,a){await Promise.all(r.map(async(t)=>{let e=o.ChainToChainId[t];await a.enable(e);let s=a.getOfflineSignerOnlyAmino(e);if(!s)throw new Error("Could not load signer");let{getCosmosToolbox:i}=await import("@swapkit/toolboxes/cosmos"),n=await s.getAccounts();if(!n?.[0]?.address)throw new Error("No accounts found");let[{address:m}]=n,h=i(t,{signer:s});c({...h,chain:t,address:m,walletType:o.WalletOption.COSMOSTATION})}))}async function w(r,c){let a=window.ethereum;if(!a)throw new Error("No Ethereum provider found for Cosmostation");let t=await a.request({method:"eth_requestAccounts"});if(!t||t.length===0)throw new Error("No EVM accounts found");let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm");for(let s of r){let i=e(s,{provider:a}),[n]=t;if(!n)throw new Error("No address found for EVM chain");c({...i,chain:s,address:n,walletType:o.WalletOption.COSMOSTATION})}}var C=o.createWallet({name:"connectCosmostation",supportedChains:[o.Chain.Cosmos,o.Chain.Kujira,o.Chain.THORChain,o.Chain.Ethereum,o.Chain.BinanceSmartChain,o.Chain.Avalanche,o.Chain.Polygon,o.Chain.Arbitrum,o.Chain.Optimism,o.Chain.Base],connect:({addChain:r,supportedChains:c})=>async function a(t){let e=o.filterSupportedChains({chains:t,supportedChains:c,walletType:o.WalletOption.COSMOSTATION});if(!window.cosmostation)throw new Error("Cosmostation wallet not found");let s=e.filter((n)=>d.includes(o.ChainToChainId[n])),i=e.filter((n)=>p.includes(n));if(s.length>0){let n=window.cosmostation.providers?.keplr;if(!n)throw new Error("Cosmostation Keplr provider not found");await u(s,r,n)}if(i.length>0)await w(i,r);return!0}});
|
|
2
|
-
|
|
3
|
-
//# debugId=F805093C0EE69DC864756E2164756E21
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/cosmostation/index.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { Keplr } from \"@keplr-wallet/types\";\nimport {\n Chain,\n ChainId,\n ChainToChainId,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nconst cosmostationSupportedChainIds = [ChainId.Cosmos, ChainId.Kujira, ChainId.THORChain] as const;\nconst cosmostationSupportedEVMChains = [\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n] as const;\n\ndeclare global {\n interface Window {\n cosmostation?: {\n providers?: {\n keplr?: Keplr;\n };\n };\n }\n}\n\nasync function connectCosmosChains(chains: Chain[], addChain: any, keplrProvider: Keplr) {\n await Promise.all(\n chains.map(async (chain) => {\n const chainId = ChainToChainId[chain] as (typeof cosmostationSupportedChainIds)[number];\n\n await keplrProvider.enable(chainId);\n const signer = keplrProvider.getOfflineSignerOnlyAmino(chainId);\n if (!signer) throw new Error(\"Could not load signer\");\n\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const accounts = await signer.getAccounts();\n if (!accounts?.[0]?.address) throw new Error(\"No accounts found\");\n\n const [{ address }] = accounts;\n const toolbox = getCosmosToolbox(chain as any, { signer });\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }),\n );\n}\n\nasync function connectEvmChains(chains: Chain[], addChain: any) {\n const provider = window.ethereum;\n\n if (!provider) {\n throw new Error(\"No Ethereum provider found for Cosmostation\");\n }\n\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) {\n throw new Error(\"No EVM accounts found\");\n }\n\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n for (const chain of chains) {\n const toolbox = getEvmToolbox(chain as any, { provider });\n const [address] = accounts;\n\n if (!address) {\n throw new Error(\"No address found for EVM chain\");\n }\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }\n}\n\nexport const cosmostationWallet = createWallet({\n name: \"connectCosmostation\",\n supportedChains: [\n Chain.Cosmos,\n Chain.Kujira,\n Chain.THORChain,\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n ],\n connect: ({ addChain, supportedChains }) =>\n async function connectCosmostation(chains: Chain[]) {\n const filteredChains = filterSupportedChains({\n chains,\n supportedChains,\n walletType: WalletOption.COSMOSTATION,\n });\n\n if (!window.cosmostation) {\n throw new Error(\"Cosmostation wallet not found\");\n }\n\n const cosmosChains = filteredChains.filter((chain) =>\n cosmostationSupportedChainIds.includes(ChainToChainId[chain] as any),\n );\n const evmChains = filteredChains.filter((chain) =>\n cosmostationSupportedEVMChains.includes(chain as any),\n );\n\n if (cosmosChains.length > 0) {\n const keplrProvider = window.cosmostation.providers?.keplr;\n if (!keplrProvider) {\n throw new Error(\"Cosmostation Keplr provider not found\");\n }\n\n await connectCosmosChains(cosmosChains, addChain, keplrProvider);\n }\n\n if (evmChains.length > 0) {\n await connectEvmChains(evmChains, addChain);\n }\n\n return true;\n },\n});\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "AAQO,IAPP,8BASM,EAAgC,CAAC,UAAQ,OAAQ,UAAQ,OAAQ,UAAQ,SAAS,EAClF,EAAiC,CACrC,QAAM,SACN,QAAM,kBACN,QAAM,UACN,QAAM,QACN,QAAM,SACN,QAAM,SACN,QAAM,IACR,EAYA,eAAe,CAAmB,CAAC,EAAiB,EAAe,EAAsB,CACvF,MAAM,QAAQ,IACZ,EAAO,IAAI,MAAO,IAAU,CAC1B,IAAM,EAAU,iBAAe,GAE/B,MAAM,EAAc,OAAO,CAAO,EAClC,IAAM,EAAS,EAAc,0BAA0B,CAAO,EAC9D,IAAK,EAAQ,MAAM,IAAI,MAAM,uBAAuB,EAEpD,IAAQ,oBAAqB,KAAa,qCAEpC,EAAW,MAAM,EAAO,YAAY,EAC1C,IAAK,IAAW,IAAI,QAAS,MAAM,IAAI,MAAM,mBAAmB,EAEhE,KAAS,YAAa,EAChB,EAAU,EAAiB,EAAc,CAAE,QAAO,CAAC,EAEzD,EAAS,IACJ,EACH,QACA,UACA,WAAY,eAAa,YAC3B,CAAC,EACF,CACH,EAGF,eAAe,CAAgB,CAAC,EAAiB,EAAe,CAC9D,IAAM,EAAW,OAAO,SAExB,IAAK,EACH,MAAM,IAAI,MAAM,6CAA6C,EAG/D,IAAM,EAAY,MAAM,EAAS,QAAQ,CACvC,OAAQ,qBACV,CAAC,EAED,IAAK,GAAY,EAAS,SAAW,EACnC,MAAM,IAAI,MAAM,uBAAuB,EAGzC,IAAQ,iBAAkB,KAAa,kCAEvC,QAAW,KAAS,EAAQ,CAC1B,IAAM,EAAU,EAAc,EAAc,CAAE,UAAS,CAAC,GACjD,GAAW,EAElB,IAAK,EACH,MAAM,IAAI,MAAM,gCAAgC,EAGlD,EAAS,IACJ,EACH,QACA,UACA,WAAY,eAAa,YAC3B,CAAC,GAIE,IAAM,EAAqB,eAAa,CAC7C,KAAM,sBACN,gBAAiB,CACf,QAAM,OACN,QAAM,OACN,QAAM,UACN,QAAM,SACN,QAAM,kBACN,QAAM,UACN,QAAM,QACN,QAAM,SACN,QAAM,SACN,QAAM,IACR,EACA,QAAS,EAAG,WAAU,qBACpB,eAAe,CAAmB,CAAC,EAAiB,CAClD,IAAM,EAAiB,wBAAsB,CAC3C,SACA,kBACA,WAAY,eAAa,YAC3B,CAAC,EAED,IAAK,OAAO,aACV,MAAM,IAAI,MAAM,+BAA+B,EAGjD,IAAM,EAAe,EAAe,OAAO,CAAC,IAC1C,EAA8B,SAAS,iBAAe,EAAa,CACrE,EACM,EAAY,EAAe,OAAO,CAAC,IACvC,EAA+B,SAAS,CAAY,CACtD,EAEA,GAAI,EAAa,OAAS,EAAG,CAC3B,IAAM,EAAgB,OAAO,aAAa,WAAW,MACrD,IAAK,EACH,MAAM,IAAI,MAAM,uCAAuC,EAGzD,MAAM,EAAoB,EAAc,EAAU,CAAa,EAGjE,GAAI,EAAU,OAAS,EACrB,MAAM,EAAiB,EAAW,CAAQ,EAG5C,MAAO,GAEb,CAAC",
|
|
8
|
-
"debugId": "F805093C0EE69DC864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|