@sidhujag/sysweb3-keyring 1.0.547 → 1.0.548
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/package.json +2 -27
- package/coverage/clover.xml +0 -2875
- package/coverage/coverage-final.json +0 -29468
- package/coverage/lcov-report/base.css +0 -354
- package/coverage/lcov-report/block-navigation.js +0 -85
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -320
- package/coverage/lcov-report/prettify.css +0 -101
- package/coverage/lcov-report/prettify.js +0 -1008
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -191
- package/coverage/lcov-report/src/index.html +0 -276
- package/coverage/lcov-report/src/index.ts.html +0 -114
- package/coverage/lcov-report/src/initial-state.ts.html +0 -558
- package/coverage/lcov-report/src/keyring-manager.ts.html +0 -6279
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.html +0 -178
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.ts.html +0 -144
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/appClient.ts.html +0 -1560
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/bip32.ts.html +0 -276
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/buffertools.ts.html +0 -495
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/clientCommands.ts.html +0 -1138
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/index.html +0 -363
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts.html +0 -289
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkle.ts.html +0 -486
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkleMap.ts.html +0 -240
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/policy.ts.html +0 -342
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/psbtv2.ts.html +0 -2388
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/varint.ts.html +0 -453
- package/coverage/lcov-report/src/ledger/consts.ts.html +0 -177
- package/coverage/lcov-report/src/ledger/index.html +0 -216
- package/coverage/lcov-report/src/ledger/index.ts.html +0 -1371
- package/coverage/lcov-report/src/ledger/utils.ts.html +0 -102
- package/coverage/lcov-report/src/signers.ts.html +0 -591
- package/coverage/lcov-report/src/storage.ts.html +0 -198
- package/coverage/lcov-report/src/transactions/ethereum.ts.html +0 -5826
- package/coverage/lcov-report/src/transactions/index.html +0 -216
- package/coverage/lcov-report/src/transactions/index.ts.html +0 -93
- package/coverage/lcov-report/src/transactions/syscoin.ts.html +0 -1521
- package/coverage/lcov-report/src/trezor/index.html +0 -176
- package/coverage/lcov-report/src/trezor/index.ts.html +0 -2655
- package/coverage/lcov-report/src/types.ts.html +0 -1443
- package/coverage/lcov-report/src/utils/derivation-paths.ts.html +0 -486
- package/coverage/lcov-report/src/utils/index.html +0 -196
- package/coverage/lcov-report/src/utils/psbt.ts.html +0 -159
- package/coverage/lcov-report/test/helpers/constants.ts.html +0 -627
- package/coverage/lcov-report/test/helpers/index.html +0 -176
- package/coverage/lcov.info +0 -4832
- package/dist/package.json +0 -50
- package/examples/basic-usage.js +0 -140
- package/jest.config.js +0 -32
- package/readme.md +0 -201
- package/src/declare.d.ts +0 -7
- package/src/errorUtils.ts +0 -83
- package/src/hardware-wallet-manager.ts +0 -655
- package/src/index.ts +0 -12
- package/src/initial-state.ts +0 -108
- package/src/keyring-manager.ts +0 -2698
- package/src/ledger/bitcoin_client/index.ts +0 -19
- package/src/ledger/bitcoin_client/lib/appClient.ts +0 -405
- package/src/ledger/bitcoin_client/lib/bip32.ts +0 -61
- package/src/ledger/bitcoin_client/lib/buffertools.ts +0 -134
- package/src/ledger/bitcoin_client/lib/clientCommands.ts +0 -356
- package/src/ledger/bitcoin_client/lib/constants.ts +0 -12
- package/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts +0 -65
- package/src/ledger/bitcoin_client/lib/merkle.ts +0 -136
- package/src/ledger/bitcoin_client/lib/merkleMap.ts +0 -49
- package/src/ledger/bitcoin_client/lib/policy.ts +0 -91
- package/src/ledger/bitcoin_client/lib/psbtv2.ts +0 -768
- package/src/ledger/bitcoin_client/lib/varint.ts +0 -120
- package/src/ledger/consts.ts +0 -3
- package/src/ledger/index.ts +0 -685
- package/src/ledger/types.ts +0 -74
- package/src/network-utils.ts +0 -99
- package/src/providers.ts +0 -345
- package/src/signers.ts +0 -158
- package/src/storage.ts +0 -63
- package/src/transactions/__tests__/integration.test.ts +0 -303
- package/src/transactions/__tests__/syscoin.test.ts +0 -409
- package/src/transactions/ethereum.ts +0 -2503
- package/src/transactions/index.ts +0 -2
- package/src/transactions/syscoin.ts +0 -542
- package/src/trezor/index.ts +0 -1050
- package/src/types.ts +0 -366
- package/src/utils/derivation-paths.ts +0 -133
- package/src/utils/psbt.ts +0 -24
- package/src/utils.ts +0 -191
- package/test/README.md +0 -158
- package/test/__mocks__/ledger-mock.js +0 -20
- package/test/__mocks__/trezor-mock.js +0 -75
- package/test/cleanup-summary.md +0 -167
- package/test/helpers/README.md +0 -78
- package/test/helpers/constants.ts +0 -79
- package/test/helpers/setup.ts +0 -714
- package/test/integration/import-validation.spec.ts +0 -588
- package/test/unit/hardware/ledger.spec.ts +0 -869
- package/test/unit/hardware/trezor.spec.ts +0 -828
- package/test/unit/keyring-manager/account-management.spec.ts +0 -970
- package/test/unit/keyring-manager/import-watchonly.spec.ts +0 -181
- package/test/unit/keyring-manager/import-wif.spec.ts +0 -126
- package/test/unit/keyring-manager/initialization.spec.ts +0 -782
- package/test/unit/keyring-manager/key-derivation.spec.ts +0 -996
- package/test/unit/keyring-manager/security.spec.ts +0 -505
- package/test/unit/keyring-manager/state-management.spec.ts +0 -375
- package/test/unit/network/network-management.spec.ts +0 -372
- package/test/unit/transactions/ethereum-transactions.spec.ts +0 -382
- package/test/unit/transactions/syscoin-transactions.spec.ts +0 -615
- package/tsconfig.json +0 -14
- /package/{dist/README.md → README.md} +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js.map +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/index.js +0 -0
- /package/{dist/cjs → cjs}/index.js.map +0 -0
- /package/{dist/cjs → cjs}/initial-state.js +0 -0
- /package/{dist/cjs → cjs}/initial-state.js.map +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js.map +0 -0
- /package/{dist/cjs → cjs}/network-utils.js +0 -0
- /package/{dist/cjs → cjs}/network-utils.js.map +0 -0
- /package/{dist/cjs → cjs}/providers.js +0 -0
- /package/{dist/cjs → cjs}/providers.js.map +0 -0
- /package/{dist/cjs → cjs}/signers.js +0 -0
- /package/{dist/cjs → cjs}/signers.js.map +0 -0
- /package/{dist/cjs → cjs}/storage.js +0 -0
- /package/{dist/cjs → cjs}/storage.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/ethereum.js +0 -0
- /package/{dist/cjs → cjs}/transactions/ethereum.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js.map +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js.map +0 -0
- /package/{dist/cjs → cjs}/types.js +0 -0
- /package/{dist/cjs → cjs}/types.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js.map +0 -0
- /package/{dist/cjs → cjs}/utils.js +0 -0
- /package/{dist/cjs → cjs}/utils.js.map +0 -0
- /package/{dist/types → types}/errorUtils.d.ts +0 -0
- /package/{dist/types → types}/hardware-wallet-manager.d.ts +0 -0
- /package/{dist/types → types}/index.d.ts +0 -0
- /package/{dist/types → types}/initial-state.d.ts +0 -0
- /package/{dist/types → types}/keyring-manager.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/appClient.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/bip32.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/buffertools.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/clientCommands.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/constants.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkelizedPsbt.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkle.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkleMap.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/policy.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/psbtv2.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/varint.d.ts +0 -0
- /package/{dist/types → types}/ledger/consts.d.ts +0 -0
- /package/{dist/types → types}/ledger/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/types.d.ts +0 -0
- /package/{dist/types → types}/network-utils.d.ts +0 -0
- /package/{dist/types → types}/providers.d.ts +0 -0
- /package/{dist/types → types}/signers.d.ts +0 -0
- /package/{dist/types → types}/storage.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/integration.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/syscoin.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/ethereum.d.ts +0 -0
- /package/{dist/types → types}/transactions/index.d.ts +0 -0
- /package/{dist/types → types}/transactions/syscoin.d.ts +0 -0
- /package/{dist/types → types}/trezor/index.d.ts +0 -0
- /package/{dist/types → types}/types.d.ts +0 -0
- /package/{dist/types → types}/utils/derivation-paths.d.ts +0 -0
- /package/{dist/types → types}/utils/psbt.d.ts +0 -0
- /package/{dist/types → types}/utils.d.ts +0 -0
package/src/ledger/types.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { SignTypedDataVersion } from '@metamask/eth-sig-util';
|
|
2
|
-
|
|
3
|
-
export interface IUTXOMethods {
|
|
4
|
-
getUtxoAddress: ({
|
|
5
|
-
coin,
|
|
6
|
-
index,
|
|
7
|
-
slip44,
|
|
8
|
-
}: {
|
|
9
|
-
coin: string;
|
|
10
|
-
index: number;
|
|
11
|
-
slip44: number;
|
|
12
|
-
}) => Promise<string>;
|
|
13
|
-
getXpub: ({
|
|
14
|
-
index,
|
|
15
|
-
coin,
|
|
16
|
-
slip44,
|
|
17
|
-
}: {
|
|
18
|
-
coin: string;
|
|
19
|
-
index: number;
|
|
20
|
-
slip44: number;
|
|
21
|
-
}) => Promise<string>;
|
|
22
|
-
verifyUtxoAddress: (
|
|
23
|
-
accountIndex: number,
|
|
24
|
-
currency: string,
|
|
25
|
-
slip44: number
|
|
26
|
-
) => Promise<string>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface MessageTypeProperty {
|
|
30
|
-
name: string;
|
|
31
|
-
type: string;
|
|
32
|
-
}
|
|
33
|
-
export interface MessageTypes {
|
|
34
|
-
[additionalProperties: string]: MessageTypeProperty[];
|
|
35
|
-
EIP712Domain: MessageTypeProperty[];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface IEvmMethods {
|
|
39
|
-
getEvmAddressAndPubKey: ({
|
|
40
|
-
accountIndex,
|
|
41
|
-
}: {
|
|
42
|
-
accountIndex: number;
|
|
43
|
-
}) => Promise<{
|
|
44
|
-
address: string;
|
|
45
|
-
publicKey: string;
|
|
46
|
-
}>;
|
|
47
|
-
signEVMTransaction: ({
|
|
48
|
-
rawTx,
|
|
49
|
-
accountIndex,
|
|
50
|
-
}: {
|
|
51
|
-
accountIndex: number;
|
|
52
|
-
rawTx: string;
|
|
53
|
-
}) => Promise<{
|
|
54
|
-
r: string;
|
|
55
|
-
s: string;
|
|
56
|
-
v: string;
|
|
57
|
-
}>;
|
|
58
|
-
signPersonalMessage: ({
|
|
59
|
-
message,
|
|
60
|
-
accountIndex,
|
|
61
|
-
}: {
|
|
62
|
-
accountIndex: number;
|
|
63
|
-
message: string;
|
|
64
|
-
}) => Promise<string>;
|
|
65
|
-
signTypedData: ({
|
|
66
|
-
version,
|
|
67
|
-
data,
|
|
68
|
-
accountIndex,
|
|
69
|
-
}: {
|
|
70
|
-
accountIndex: number;
|
|
71
|
-
data: any;
|
|
72
|
-
version: SignTypedDataVersion;
|
|
73
|
-
}) => Promise<string>;
|
|
74
|
-
}
|
package/src/network-utils.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
INetwork,
|
|
3
|
-
INetworkType,
|
|
4
|
-
coins as utxoCoins,
|
|
5
|
-
} from '@sidhujag/sysweb3-network';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Generate default UTXO networks from coins.ts data
|
|
9
|
-
* This ensures consistency and avoids hardcoded duplicates
|
|
10
|
-
*/
|
|
11
|
-
export function getDefaultUTXONetworks(): { [chainId: number]: INetwork } {
|
|
12
|
-
const defaultNetworks: { [chainId: number]: INetwork } = {};
|
|
13
|
-
|
|
14
|
-
// Filter coins that should be default networks
|
|
15
|
-
const defaultCoins = utxoCoins.filter((coin) => {
|
|
16
|
-
// Include Syscoin mainnet and testnet as defaults
|
|
17
|
-
return (
|
|
18
|
-
(coin.coinShortcut === 'SYS' && coin.slip44 === 57) || // Syscoin Mainnet
|
|
19
|
-
(coin.coinShortcut === 'tSYS' && coin.slip44 === 1) || // Syscoin Testnet
|
|
20
|
-
(coin.coinShortcut === 'BTC' && coin.slip44 === 0) // Bitcoin Mainnet only
|
|
21
|
-
);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
defaultCoins.forEach((coin) => {
|
|
25
|
-
if (
|
|
26
|
-
!coin.blockchainLink ||
|
|
27
|
-
!coin.blockchainLink.url ||
|
|
28
|
-
coin.blockchainLink.url.length === 0
|
|
29
|
-
) {
|
|
30
|
-
return; // Skip coins without valid blockbook URLs
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Use primary blockbook URL
|
|
34
|
-
const primaryUrl = Array.isArray(coin.blockchainLink.url)
|
|
35
|
-
? coin.blockchainLink.url[0]
|
|
36
|
-
: coin.blockchainLink.url;
|
|
37
|
-
|
|
38
|
-
const chainId = (coin as any).chainId || coin.slip44;
|
|
39
|
-
|
|
40
|
-
const network: INetwork = {
|
|
41
|
-
chainId,
|
|
42
|
-
url: primaryUrl,
|
|
43
|
-
label: coin.name || coin.coinLabel || `${coin.coinShortcut} Network`,
|
|
44
|
-
default: coin.coinShortcut === 'SYS',
|
|
45
|
-
currency: coin.coinShortcut?.toLowerCase() || 'unknown',
|
|
46
|
-
slip44: coin.slip44,
|
|
47
|
-
kind: INetworkType.Syscoin,
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
defaultNetworks[chainId] = network;
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
return defaultNetworks;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Get specific default UTXO networks for backwards compatibility
|
|
58
|
-
*/
|
|
59
|
-
export function getSyscoinUTXOMainnetNetwork(): INetwork {
|
|
60
|
-
const networks = getDefaultUTXONetworks();
|
|
61
|
-
// Find Syscoin mainnet (slip44: 57)
|
|
62
|
-
const syscoinMainnet = Object.values(networks).find(
|
|
63
|
-
(network) => network.slip44 === 57 && network.currency === 'sys'
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
if (!syscoinMainnet) {
|
|
67
|
-
throw new Error('Syscoin UTXO Mainnet network not found in coins.ts');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return syscoinMainnet;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function getSyscoinUTXOTestnetNetwork(): INetwork {
|
|
74
|
-
const networks = getDefaultUTXONetworks();
|
|
75
|
-
// Find Syscoin testnet (slip44: 1, currency: tsys)
|
|
76
|
-
const syscoinTestnet = Object.values(networks).find(
|
|
77
|
-
(network) => network.slip44 === 1 && network.currency === 'tsys'
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
if (!syscoinTestnet) {
|
|
81
|
-
throw new Error('Syscoin UTXO Testnet network not found in coins.ts');
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return syscoinTestnet;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export function getBitcoinMainnetNetwork(): INetwork {
|
|
88
|
-
const networks = getDefaultUTXONetworks();
|
|
89
|
-
// Find Bitcoin mainnet (slip44: 0, currency: btc)
|
|
90
|
-
const bitcoinMainnet = Object.values(networks).find(
|
|
91
|
-
(network) => network.slip44 === 0 && network.currency === 'btc'
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
if (!bitcoinMainnet) {
|
|
95
|
-
throw new Error('Bitcoin Mainnet network not found in coins.ts');
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return bitcoinMainnet;
|
|
99
|
-
}
|
package/src/providers.ts
DELETED
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
-
import { Logger } from '@ethersproject/logger';
|
|
3
|
-
import { Networkish } from '@ethersproject/networks';
|
|
4
|
-
import { shallowCopy } from '@ethersproject/properties';
|
|
5
|
-
import { JsonRpcProvider } from '@ethersproject/providers';
|
|
6
|
-
|
|
7
|
-
import { handleStatusCodeError } from './errorUtils';
|
|
8
|
-
import { checkError } from './utils';
|
|
9
|
-
|
|
10
|
-
const logger = new Logger('sysweb3-keyring/providers');
|
|
11
|
-
|
|
12
|
-
// Type definition for zksync-ethers Provider to avoid direct import
|
|
13
|
-
type ZkSyncProvider = any;
|
|
14
|
-
|
|
15
|
-
class BaseProvider extends JsonRpcProvider {
|
|
16
|
-
private isPossibleGetChainId = true;
|
|
17
|
-
private cooldownTime = 120 * 1000;
|
|
18
|
-
private rateLimit = 30;
|
|
19
|
-
private requestCount = 0;
|
|
20
|
-
private lastRequestTime = 0;
|
|
21
|
-
private currentChainId = '';
|
|
22
|
-
private currentId = 1;
|
|
23
|
-
public isInCooldown = false;
|
|
24
|
-
public errorMessage: any = '';
|
|
25
|
-
public serverHasAnError = false;
|
|
26
|
-
signal: AbortSignal;
|
|
27
|
-
_pendingBatchAggregator: NodeJS.Timer | null;
|
|
28
|
-
_pendingBatch: Array<{
|
|
29
|
-
reject: (error: Error) => void;
|
|
30
|
-
request: { id: number; jsonrpc: '2.0'; method: string; params: Array<any> };
|
|
31
|
-
resolve: (result: any) => void;
|
|
32
|
-
}> | null;
|
|
33
|
-
|
|
34
|
-
constructor(
|
|
35
|
-
signal: AbortSignal,
|
|
36
|
-
url?: string | { url: string },
|
|
37
|
-
network?: Networkish
|
|
38
|
-
) {
|
|
39
|
-
super(url, network);
|
|
40
|
-
this.signal = signal;
|
|
41
|
-
this._pendingBatchAggregator = null;
|
|
42
|
-
this._pendingBatch = null;
|
|
43
|
-
|
|
44
|
-
this.bindMethods();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
private bindMethods() {
|
|
48
|
-
const proto = Object.getPrototypeOf(this);
|
|
49
|
-
for (const key of Object.getOwnPropertyNames(proto)) {
|
|
50
|
-
if (typeof this[key] === 'function' && key !== 'constructor') {
|
|
51
|
-
this[key] = this[key].bind(this);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private throttledRequest = <T>(requestFn: () => Promise<T>): Promise<T> => {
|
|
57
|
-
if (!this.canMakeRequest()) {
|
|
58
|
-
return this.cooldown();
|
|
59
|
-
}
|
|
60
|
-
// Execute request immediately without timeout delay
|
|
61
|
-
return requestFn().catch((error) => {
|
|
62
|
-
if (error.name === 'AbortError') {
|
|
63
|
-
console.log('Aborted request', error);
|
|
64
|
-
return Promise.reject(error);
|
|
65
|
-
}
|
|
66
|
-
throw error;
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
private canMakeRequest = () => {
|
|
70
|
-
const now = Date.now();
|
|
71
|
-
let elapsedTime = 0;
|
|
72
|
-
if (this.lastRequestTime > 0) {
|
|
73
|
-
elapsedTime = now - this.lastRequestTime;
|
|
74
|
-
}
|
|
75
|
-
if (elapsedTime <= this.cooldownTime && this.serverHasAnError) {
|
|
76
|
-
this.isInCooldown = true;
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (elapsedTime >= this.cooldownTime && this.serverHasAnError) {
|
|
81
|
-
this.requestCount = 0;
|
|
82
|
-
this.serverHasAnError = false;
|
|
83
|
-
this.isInCooldown = true;
|
|
84
|
-
return false; //One last blocked request before cooldown ends
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (this.requestCount < this.rateLimit || !this.serverHasAnError) {
|
|
88
|
-
this.requestCount++;
|
|
89
|
-
if (elapsedTime > 1000) {
|
|
90
|
-
//Uncomment the console.log to see the request per second
|
|
91
|
-
// console.log(
|
|
92
|
-
// `Request/sec to Provider(${this.connection.url}): ${this.requestCount}`
|
|
93
|
-
// );
|
|
94
|
-
this.requestCount = 1;
|
|
95
|
-
this.lastRequestTime = now;
|
|
96
|
-
} else if (this.lastRequestTime === 0) {
|
|
97
|
-
this.lastRequestTime = now;
|
|
98
|
-
}
|
|
99
|
-
this.isInCooldown = false;
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
private cooldown = async () => {
|
|
105
|
-
const now = Date.now();
|
|
106
|
-
const elapsedTime = now - this.lastRequestTime;
|
|
107
|
-
console.error(
|
|
108
|
-
'Cant make request, rpc cooldown is active for the next: ',
|
|
109
|
-
(this.cooldownTime - elapsedTime) / 1000,
|
|
110
|
-
' seconds'
|
|
111
|
-
);
|
|
112
|
-
throw {
|
|
113
|
-
message: `Cant make request, rpc cooldown is active for the next: ${
|
|
114
|
-
(this.cooldownTime - elapsedTime) / 1000
|
|
115
|
-
} seconds`,
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
async perform(method: string, params: any): Promise<any> {
|
|
120
|
-
// Legacy networks do not like the type field being passed along (which
|
|
121
|
-
// is fair), so we delete type if it is 0 and a non-EIP-1559 network
|
|
122
|
-
if (method === 'call' || method === 'estimateGas') {
|
|
123
|
-
const tx = params.transaction;
|
|
124
|
-
if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {
|
|
125
|
-
// If there are no EIP-1559 properties, it might be non-EIP-1559
|
|
126
|
-
if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {
|
|
127
|
-
const feeData = await this.getFeeData();
|
|
128
|
-
if (
|
|
129
|
-
feeData.maxFeePerGas == null &&
|
|
130
|
-
feeData.maxPriorityFeePerGas == null
|
|
131
|
-
) {
|
|
132
|
-
// Network doesn't know about EIP-1559 (and hence type)
|
|
133
|
-
params = shallowCopy(params);
|
|
134
|
-
params.transaction = shallowCopy(tx);
|
|
135
|
-
delete params.transaction.type;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const args = this.prepareRequest(method, params);
|
|
142
|
-
|
|
143
|
-
if (args == null) {
|
|
144
|
-
logger.throwError(
|
|
145
|
-
method + ' not implemented',
|
|
146
|
-
Logger.errors.NOT_IMPLEMENTED,
|
|
147
|
-
{ operation: method }
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
try {
|
|
151
|
-
return await this.send(args[0], args[1]);
|
|
152
|
-
} catch (error) {
|
|
153
|
-
return checkError(method, error, params);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
override send = async (method: string, params: any[]) => {
|
|
158
|
-
if (!this.isPossibleGetChainId && method === 'eth_chainId') {
|
|
159
|
-
return this.currentChainId;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const headers = {
|
|
163
|
-
'Content-Type': 'application/json',
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
const options: RequestInit = {
|
|
167
|
-
method: 'POST',
|
|
168
|
-
headers,
|
|
169
|
-
body: JSON.stringify({
|
|
170
|
-
jsonrpc: '2.0',
|
|
171
|
-
method,
|
|
172
|
-
params,
|
|
173
|
-
id: this.currentId,
|
|
174
|
-
}),
|
|
175
|
-
signal: this.signal,
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
const result = await this.throttledRequest(() =>
|
|
179
|
-
fetch(this.connection.url, options)
|
|
180
|
-
.then(async (response) => {
|
|
181
|
-
if (!response.ok) {
|
|
182
|
-
let errorBody = {
|
|
183
|
-
error: undefined,
|
|
184
|
-
message: undefined,
|
|
185
|
-
};
|
|
186
|
-
try {
|
|
187
|
-
errorBody = await response.json();
|
|
188
|
-
} catch (error) {
|
|
189
|
-
console.warn('No body in request', error);
|
|
190
|
-
}
|
|
191
|
-
this.errorMessage =
|
|
192
|
-
errorBody.error ||
|
|
193
|
-
errorBody.message ||
|
|
194
|
-
'No message from Provider';
|
|
195
|
-
handleStatusCodeError(response.status, this.errorMessage);
|
|
196
|
-
}
|
|
197
|
-
switch (response.status) {
|
|
198
|
-
case 200:
|
|
199
|
-
return response.json();
|
|
200
|
-
default:
|
|
201
|
-
throw {
|
|
202
|
-
message: `Unexpected HTTP status code: ${response.status}`,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
})
|
|
206
|
-
.then((json) => {
|
|
207
|
-
if (json.error) {
|
|
208
|
-
if (json.error.message.includes('insufficient funds')) {
|
|
209
|
-
console.error({
|
|
210
|
-
errorMessage: json.error.message,
|
|
211
|
-
});
|
|
212
|
-
this.errorMessage = json.error.message;
|
|
213
|
-
throw new Error(json.error.message);
|
|
214
|
-
}
|
|
215
|
-
this.errorMessage = json.error.message;
|
|
216
|
-
console.log({ requestData: { method, params }, error: json.error });
|
|
217
|
-
console.error({
|
|
218
|
-
errorMessage: json.error.message,
|
|
219
|
-
});
|
|
220
|
-
throw new Error(json.error.message);
|
|
221
|
-
}
|
|
222
|
-
if (method === 'eth_chainId') {
|
|
223
|
-
this.currentChainId = json.result;
|
|
224
|
-
this.isPossibleGetChainId = false;
|
|
225
|
-
}
|
|
226
|
-
this.currentId++;
|
|
227
|
-
this.serverHasAnError = false;
|
|
228
|
-
return json.result;
|
|
229
|
-
})
|
|
230
|
-
);
|
|
231
|
-
return result;
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
async sendBatch(method: string, params: Array<any[]>): Promise<any[]> {
|
|
235
|
-
// Create batch request array
|
|
236
|
-
const requests = params.map((param, index) => ({
|
|
237
|
-
jsonrpc: '2.0',
|
|
238
|
-
id: this.currentId + index,
|
|
239
|
-
method,
|
|
240
|
-
params: param,
|
|
241
|
-
}));
|
|
242
|
-
|
|
243
|
-
this.currentId += requests.length;
|
|
244
|
-
|
|
245
|
-
const headers = {
|
|
246
|
-
'Content-Type': 'application/json',
|
|
247
|
-
};
|
|
248
|
-
|
|
249
|
-
const options: RequestInit = {
|
|
250
|
-
method: 'POST',
|
|
251
|
-
headers,
|
|
252
|
-
body: JSON.stringify(requests),
|
|
253
|
-
signal: this.signal,
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
const results = await this.throttledRequest(() =>
|
|
257
|
-
fetch(this.connection.url, options)
|
|
258
|
-
.then(async (response) => {
|
|
259
|
-
if (!response.ok) {
|
|
260
|
-
let errorBody = {
|
|
261
|
-
error: undefined,
|
|
262
|
-
message: undefined,
|
|
263
|
-
};
|
|
264
|
-
try {
|
|
265
|
-
errorBody = await response.json();
|
|
266
|
-
} catch (error) {
|
|
267
|
-
console.warn('No body in request', error);
|
|
268
|
-
}
|
|
269
|
-
this.errorMessage =
|
|
270
|
-
errorBody.error ||
|
|
271
|
-
errorBody.message ||
|
|
272
|
-
'No message from Provider';
|
|
273
|
-
handleStatusCodeError(response.status, this.errorMessage);
|
|
274
|
-
}
|
|
275
|
-
return response.json();
|
|
276
|
-
})
|
|
277
|
-
.then((jsonArray) => {
|
|
278
|
-
// Sort results by ID to ensure correct order
|
|
279
|
-
const sortedResults = jsonArray.sort((a: any, b: any) => a.id - b.id);
|
|
280
|
-
|
|
281
|
-
// Extract results or throw errors
|
|
282
|
-
return sortedResults.map((json: any) => {
|
|
283
|
-
if (json.error) {
|
|
284
|
-
this.errorMessage = json.error.message;
|
|
285
|
-
console.error({
|
|
286
|
-
errorMessage: json.error.message,
|
|
287
|
-
});
|
|
288
|
-
throw new Error(json.error.message);
|
|
289
|
-
}
|
|
290
|
-
return json.result;
|
|
291
|
-
});
|
|
292
|
-
})
|
|
293
|
-
);
|
|
294
|
-
|
|
295
|
-
return results;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
export class CustomJsonRpcProvider extends BaseProvider {
|
|
300
|
-
constructor(
|
|
301
|
-
signal: AbortSignal,
|
|
302
|
-
url?: string | { url: string },
|
|
303
|
-
network?: Networkish
|
|
304
|
-
) {
|
|
305
|
-
super(signal, url, network);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
// CustomL2JsonRpcProvider extends BaseProvider to provide all standard provider methods
|
|
310
|
-
export class CustomL2JsonRpcProvider extends BaseProvider {
|
|
311
|
-
private zkSyncProvider: ZkSyncProvider | null = null;
|
|
312
|
-
|
|
313
|
-
constructor(
|
|
314
|
-
signal: AbortSignal,
|
|
315
|
-
url?: string | { url: string },
|
|
316
|
-
network?: Networkish
|
|
317
|
-
) {
|
|
318
|
-
super(signal, url, network);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// Lazy initialization of zkSync provider
|
|
322
|
-
private async initializeZkSyncProvider(): Promise<void> {
|
|
323
|
-
if (!this.zkSyncProvider) {
|
|
324
|
-
// Dynamic import creates a separate chunk for zksync-ethers
|
|
325
|
-
// webpack magic comment for chunk naming
|
|
326
|
-
const { Provider } = await import(
|
|
327
|
-
/* webpackChunkName: "zksync-provider" */ 'zksync-ethers'
|
|
328
|
-
);
|
|
329
|
-
this.zkSyncProvider = new Provider(this.connection.url, this.network);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// Override perform to handle zkSync-specific methods
|
|
334
|
-
async perform(method: string, params: any): Promise<any> {
|
|
335
|
-
// For zkSync-specific methods, ensure zkSync provider is initialized
|
|
336
|
-
if (method.startsWith('zks_') || method === 'eth_estimateGas') {
|
|
337
|
-
await this.initializeZkSyncProvider();
|
|
338
|
-
if (this.zkSyncProvider && this.zkSyncProvider.perform) {
|
|
339
|
-
return this.zkSyncProvider.perform(method, params);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
// For all other methods, use the base provider
|
|
343
|
-
return super.perform(method, params);
|
|
344
|
-
}
|
|
345
|
-
}
|
package/src/signers.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { BitcoinNetwork, IPubTypes, INetwork } from '@sidhujag/sysweb3-network';
|
|
2
|
-
import { BIP32Interface } from 'bip32';
|
|
3
|
-
import { Psbt } from 'bitcoinjs-lib';
|
|
4
|
-
import * as syscoinjs from 'syscoinjs-lib';
|
|
5
|
-
|
|
6
|
-
export const getSyscoinSigners = ({
|
|
7
|
-
mnemonic,
|
|
8
|
-
rpc,
|
|
9
|
-
}: ISyscoinSignerParams): { hd: SyscoinHDSigner; main: any } => {
|
|
10
|
-
const { url, slip44, currency } = rpc.formattedNetwork;
|
|
11
|
-
let config: BitcoinNetwork | null = null;
|
|
12
|
-
let pubTypes: IPubTypes | null = null;
|
|
13
|
-
let networks: { mainnet: BitcoinNetwork; testnet: BitcoinNetwork } | null =
|
|
14
|
-
null;
|
|
15
|
-
let isTestnet = false;
|
|
16
|
-
|
|
17
|
-
// Determine if this is a testnet based on slip44 and currency
|
|
18
|
-
isTestnet =
|
|
19
|
-
slip44 === 1 || Boolean(currency && currency.toLowerCase().startsWith('t'));
|
|
20
|
-
|
|
21
|
-
if (rpc.networkConfig) {
|
|
22
|
-
const { networkConfig } = rpc;
|
|
23
|
-
const { networks: _networkConfig, types } = networkConfig;
|
|
24
|
-
|
|
25
|
-
config = isTestnet ? _networkConfig.testnet : _networkConfig.mainnet;
|
|
26
|
-
networks = _networkConfig;
|
|
27
|
-
pubTypes = types.zPubType;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// @ts-ignore
|
|
31
|
-
const hd: SyscoinHDSigner = new syscoinjs.utils.HDSigner(
|
|
32
|
-
mnemonic,
|
|
33
|
-
null,
|
|
34
|
-
isTestnet, // Use proper testnet flag
|
|
35
|
-
networks,
|
|
36
|
-
slip44,
|
|
37
|
-
pubTypes,
|
|
38
|
-
84
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
const main: any = new syscoinjs.SyscoinJSLib(hd, url, config);
|
|
42
|
-
|
|
43
|
-
return {
|
|
44
|
-
hd,
|
|
45
|
-
main,
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export type SyscoinHdAccount = {
|
|
50
|
-
network: BitcoinNetwork;
|
|
51
|
-
networks: {
|
|
52
|
-
mainnet: BitcoinNetwork;
|
|
53
|
-
testnet: BitcoinNetwork;
|
|
54
|
-
};
|
|
55
|
-
pubTypes: IPubTypes;
|
|
56
|
-
zprv: string;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export type ISyscoinSignerParams = {
|
|
60
|
-
mnemonic: string;
|
|
61
|
-
rpc: {
|
|
62
|
-
formattedNetwork: INetwork;
|
|
63
|
-
networkConfig?: {
|
|
64
|
-
networks: { mainnet: BitcoinNetwork; testnet: BitcoinNetwork };
|
|
65
|
-
types: { xPubType: IPubTypes; zPubType: IPubTypes };
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export type IMainSignerParams = {
|
|
71
|
-
hd: SyscoinHDSigner;
|
|
72
|
-
network?: BitcoinNetwork;
|
|
73
|
-
url: string;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
export interface SyscoinHDSigner {
|
|
77
|
-
Signer: {
|
|
78
|
-
SLIP44: number;
|
|
79
|
-
accountIndex: number;
|
|
80
|
-
accounts: any;
|
|
81
|
-
blockbookURL: string;
|
|
82
|
-
changeIndex: number;
|
|
83
|
-
network: BitcoinNetwork;
|
|
84
|
-
networks: { mainnet: BitcoinNetwork; testnet: BitcoinNetwork };
|
|
85
|
-
password: string | null;
|
|
86
|
-
pubTypes: IPubTypes;
|
|
87
|
-
receivingIndex: number;
|
|
88
|
-
setIndexFlag: number;
|
|
89
|
-
};
|
|
90
|
-
backup: () => void;
|
|
91
|
-
blockbookURL: string;
|
|
92
|
-
// Already async
|
|
93
|
-
createAccount: (bipNum?: number, zprv?: string) => number;
|
|
94
|
-
createAccountAtIndex: (
|
|
95
|
-
index: number,
|
|
96
|
-
bipNum?: number,
|
|
97
|
-
zprv?: string
|
|
98
|
-
) => number;
|
|
99
|
-
createAddress: (
|
|
100
|
-
addressIndex: number,
|
|
101
|
-
isChange: boolean,
|
|
102
|
-
bipNum?: number
|
|
103
|
-
) => string;
|
|
104
|
-
createKeypair: (addressIndex: number, isChange: boolean) => BIP32Interface;
|
|
105
|
-
deriveAccount: (index: number, bipNum?: number) => string;
|
|
106
|
-
deriveKeypair: (keypath: string) => BIP32Interface;
|
|
107
|
-
derivePubKey: (keypath: string) => string;
|
|
108
|
-
// Updated signature
|
|
109
|
-
getAccountXpub: () => string;
|
|
110
|
-
getAddressFromKeypair: (keypair: BIP32Interface) => string;
|
|
111
|
-
getAddressFromPubKey: (pubkey: string) => string;
|
|
112
|
-
getHDPath: (
|
|
113
|
-
addressIndex: number,
|
|
114
|
-
isChange: boolean,
|
|
115
|
-
bipNum?: number
|
|
116
|
-
) => string; // Already async
|
|
117
|
-
getNewReceivingAddress: (
|
|
118
|
-
skipIncrement?: boolean,
|
|
119
|
-
bipNum?: number
|
|
120
|
-
) => Promise<string>;
|
|
121
|
-
// Added new property for import method tracking
|
|
122
|
-
node: {
|
|
123
|
-
seed: Buffer;
|
|
124
|
-
coinType: number;
|
|
125
|
-
pubTypes: IPubTypes;
|
|
126
|
-
network: BitcoinNetwork;
|
|
127
|
-
};
|
|
128
|
-
setAccountIndex: (accountIndex: number) => void;
|
|
129
|
-
getRootNode: () => BIP32Interface;
|
|
130
|
-
// Updated to reflect the enhanced property name
|
|
131
|
-
importMethod: string;
|
|
132
|
-
signPSBT: ({
|
|
133
|
-
psbt,
|
|
134
|
-
isTrezor,
|
|
135
|
-
isLedger,
|
|
136
|
-
}: {
|
|
137
|
-
psbt: any;
|
|
138
|
-
isTrezor?: boolean;
|
|
139
|
-
isLedger?: boolean;
|
|
140
|
-
}) => Promise<any>;
|
|
141
|
-
getNewChangeAddress: (
|
|
142
|
-
skipIncrement?: boolean,
|
|
143
|
-
bipNum?: number
|
|
144
|
-
) => Promise<string>;
|
|
145
|
-
restore: (password: string, bipNum?: number) => boolean;
|
|
146
|
-
mnemonicOrZprv: string;
|
|
147
|
-
setLatestIndexesFromXPubTokens: (tokens: any) => void;
|
|
148
|
-
// Made async
|
|
149
|
-
sign: (psbt: Psbt) => Promise<Psbt>;
|
|
150
|
-
// Made async
|
|
151
|
-
getMasterFingerprint: () => Buffer;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export type SyscoinMainSigner = {
|
|
155
|
-
Signer: SyscoinHDSigner;
|
|
156
|
-
blockbookURL: string;
|
|
157
|
-
network: BitcoinNetwork;
|
|
158
|
-
};
|