@swapkit/toolboxes 4.3.9 → 4.13.1

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.
Files changed (266) hide show
  1. package/dist/LICENSE +246 -0
  2. package/dist/src/aptos/index.cjs +1 -0
  3. package/dist/src/aptos/index.js +1 -0
  4. package/dist/src/cardano/index.cjs +1 -4
  5. package/dist/src/cardano/index.js +1 -4
  6. package/dist/src/cosmos/index.cjs +1 -4
  7. package/dist/src/cosmos/index.js +1 -4
  8. package/dist/src/evm/index.cjs +1 -4
  9. package/dist/src/evm/index.js +1 -4
  10. package/dist/src/index.cjs +1 -5
  11. package/dist/src/index.js +1 -5
  12. package/dist/src/near/index.cjs +1 -4
  13. package/dist/src/near/index.js +1 -4
  14. package/dist/src/radix/index.cjs +1 -4
  15. package/dist/src/radix/index.js +1 -4
  16. package/dist/src/ripple/index.cjs +1 -4
  17. package/dist/src/ripple/index.js +1 -4
  18. package/dist/src/solana/index.cjs +1 -4
  19. package/dist/src/solana/index.js +1 -4
  20. package/dist/src/starknet/index.cjs +1 -0
  21. package/dist/src/starknet/index.js +1 -0
  22. package/dist/src/stellar/index.cjs +1 -0
  23. package/dist/src/stellar/index.js +1 -0
  24. package/dist/src/substrate/index.cjs +1 -4
  25. package/dist/src/substrate/index.js +1 -4
  26. package/dist/src/sui/index.cjs +1 -4
  27. package/dist/src/sui/index.js +1 -4
  28. package/dist/src/ton/index.cjs +1 -4
  29. package/dist/src/ton/index.js +1 -4
  30. package/dist/src/tron/index.cjs +1 -4
  31. package/dist/src/tron/index.js +1 -4
  32. package/dist/src/utxo/index.cjs +1 -5
  33. package/dist/src/utxo/index.js +1 -5
  34. package/dist/types/aptos/index.d.ts +3 -0
  35. package/dist/types/aptos/index.d.ts.map +1 -0
  36. package/dist/types/aptos/toolbox.d.ts +21 -0
  37. package/dist/types/aptos/toolbox.d.ts.map +1 -0
  38. package/dist/types/aptos/types.d.ts +27 -0
  39. package/dist/types/aptos/types.d.ts.map +1 -0
  40. package/dist/types/cardano/toolbox.d.ts +19 -22
  41. package/dist/types/cardano/toolbox.d.ts.map +1 -1
  42. package/dist/types/cardano/types.d.ts +8 -3
  43. package/dist/types/cardano/types.d.ts.map +1 -1
  44. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
  45. package/dist/types/cosmos/thorchainUtils/messages.d.ts +3 -3
  46. package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
  47. package/dist/types/cosmos/toolbox/cosmos.d.ts +11 -9
  48. package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
  49. package/dist/types/cosmos/toolbox/thorchain.d.ts +6 -51
  50. package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
  51. package/dist/types/cosmos/types.d.ts +2 -2
  52. package/dist/types/cosmos/types.d.ts.map +1 -1
  53. package/dist/types/evm/helpers.d.ts +34 -1
  54. package/dist/types/evm/helpers.d.ts.map +1 -1
  55. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +14 -7
  56. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
  57. package/dist/types/evm/toolbox/evm.d.ts +236 -96
  58. package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
  59. package/dist/types/evm/toolbox/index.d.ts +3 -2
  60. package/dist/types/evm/toolbox/index.d.ts.map +1 -1
  61. package/dist/types/evm/toolbox/op.d.ts +13 -8
  62. package/dist/types/evm/toolbox/op.d.ts.map +1 -1
  63. package/dist/types/evm/types.d.ts +49 -27
  64. package/dist/types/evm/types.d.ts.map +1 -1
  65. package/dist/types/index.d.ts +31 -25
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/near/helpers/core.d.ts +1 -1
  68. package/dist/types/near/helpers/core.d.ts.map +1 -1
  69. package/dist/types/near/index.d.ts +1 -1
  70. package/dist/types/near/index.d.ts.map +1 -1
  71. package/dist/types/near/toolbox.d.ts +13 -10
  72. package/dist/types/near/toolbox.d.ts.map +1 -1
  73. package/dist/types/near/types/index.d.ts +4 -0
  74. package/dist/types/near/types/index.d.ts.map +1 -0
  75. package/dist/types/near/types/toolbox.d.ts +2 -0
  76. package/dist/types/near/types/toolbox.d.ts.map +1 -1
  77. package/dist/types/radix/index.d.ts +7 -7
  78. package/dist/types/radix/index.d.ts.map +1 -1
  79. package/dist/types/ripple/currency.d.ts +5 -0
  80. package/dist/types/ripple/currency.d.ts.map +1 -0
  81. package/dist/types/ripple/index.d.ts +60 -17
  82. package/dist/types/ripple/index.d.ts.map +1 -1
  83. package/dist/types/ripple/tokens.d.ts +15 -0
  84. package/dist/types/ripple/tokens.d.ts.map +1 -0
  85. package/dist/types/solana/index.d.ts +1 -1
  86. package/dist/types/solana/index.d.ts.map +1 -1
  87. package/dist/types/solana/toolbox.d.ts +12 -10
  88. package/dist/types/solana/toolbox.d.ts.map +1 -1
  89. package/dist/types/starknet/index.d.ts +5 -0
  90. package/dist/types/starknet/index.d.ts.map +1 -0
  91. package/dist/types/starknet/toolbox.d.ts +34 -0
  92. package/dist/types/starknet/toolbox.d.ts.map +1 -0
  93. package/dist/types/starknet/types.d.ts +26 -0
  94. package/dist/types/starknet/types.d.ts.map +1 -0
  95. package/dist/types/stellar/index.d.ts +3 -0
  96. package/dist/types/stellar/index.d.ts.map +1 -0
  97. package/dist/types/stellar/toolbox.d.ts +21 -0
  98. package/dist/types/stellar/toolbox.d.ts.map +1 -0
  99. package/dist/types/stellar/types.d.ts +10 -0
  100. package/dist/types/stellar/types.d.ts.map +1 -0
  101. package/dist/types/substrate/balance.d.ts +3 -3
  102. package/dist/types/substrate/balance.d.ts.map +1 -1
  103. package/dist/types/substrate/substrate.d.ts +22 -97
  104. package/dist/types/substrate/substrate.d.ts.map +1 -1
  105. package/dist/types/substrate/types.d.ts +2 -2
  106. package/dist/types/substrate/types.d.ts.map +1 -1
  107. package/dist/types/sui/toolbox.d.ts +17 -8
  108. package/dist/types/sui/toolbox.d.ts.map +1 -1
  109. package/dist/types/sui/types.d.ts +11 -3
  110. package/dist/types/sui/types.d.ts.map +1 -1
  111. package/dist/types/ton/toolbox.d.ts +23 -13
  112. package/dist/types/ton/toolbox.d.ts.map +1 -1
  113. package/dist/types/ton/types.d.ts +9 -8
  114. package/dist/types/ton/types.d.ts.map +1 -1
  115. package/dist/types/tron/helpers/proto.d.ts +9 -0
  116. package/dist/types/tron/helpers/proto.d.ts.map +1 -0
  117. package/dist/types/tron/helpers/trongrid.d.ts +43 -3
  118. package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
  119. package/dist/types/tron/helpers/utils.d.ts +17 -0
  120. package/dist/types/tron/helpers/utils.d.ts.map +1 -0
  121. package/dist/types/tron/index.d.ts +4 -5
  122. package/dist/types/tron/index.d.ts.map +1 -1
  123. package/dist/types/tron/toolbox.d.ts +20 -18
  124. package/dist/types/tron/toolbox.d.ts.map +1 -1
  125. package/dist/types/tron/types.d.ts +31 -57
  126. package/dist/types/tron/types.d.ts.map +1 -1
  127. package/dist/types/types.d.ts +6 -0
  128. package/dist/types/types.d.ts.map +1 -1
  129. package/dist/types/utxo/hdWallet.d.ts +33 -0
  130. package/dist/types/utxo/hdWallet.d.ts.map +1 -0
  131. package/dist/types/utxo/helpers/api.d.ts +49 -1
  132. package/dist/types/utxo/helpers/api.d.ts.map +1 -1
  133. package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
  134. package/dist/types/utxo/helpers/cashaddr.d.ts +13 -0
  135. package/dist/types/utxo/helpers/cashaddr.d.ts.map +1 -0
  136. package/dist/types/utxo/helpers/coinselect.d.ts +9 -5
  137. package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
  138. package/dist/types/utxo/helpers/txSize.d.ts +4 -3
  139. package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
  140. package/dist/types/utxo/index.d.ts +2 -1
  141. package/dist/types/utxo/index.d.ts.map +1 -1
  142. package/dist/types/utxo/toolbox/bitcoinCash.d.ts +75 -15
  143. package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
  144. package/dist/types/utxo/toolbox/index.d.ts +6 -5
  145. package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
  146. package/dist/types/utxo/toolbox/params.d.ts +8 -16
  147. package/dist/types/utxo/toolbox/params.d.ts.map +1 -1
  148. package/dist/types/utxo/toolbox/utxo.d.ts +135 -46
  149. package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
  150. package/dist/types/utxo/toolbox/validators.d.ts +1 -1
  151. package/dist/types/utxo/toolbox/validators.d.ts.map +1 -1
  152. package/dist/types/utxo/toolbox/zcash.d.ts +63 -10
  153. package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
  154. package/dist/types/utxo/types.d.ts +78 -15
  155. package/dist/types/utxo/types.d.ts.map +1 -1
  156. package/package.json +43 -53
  157. package/dist/src/cardano/index.cjs.map +0 -11
  158. package/dist/src/cardano/index.js.map +0 -11
  159. package/dist/src/cosmos/index.cjs.map +0 -20
  160. package/dist/src/cosmos/index.js.map +0 -20
  161. package/dist/src/evm/index.cjs.map +0 -20
  162. package/dist/src/evm/index.js.map +0 -20
  163. package/dist/src/index.cjs.map +0 -67
  164. package/dist/src/index.js.map +0 -67
  165. package/dist/src/near/index.cjs.map +0 -16
  166. package/dist/src/near/index.js.map +0 -16
  167. package/dist/src/radix/index.cjs.map +0 -10
  168. package/dist/src/radix/index.js.map +0 -10
  169. package/dist/src/ripple/index.cjs.map +0 -10
  170. package/dist/src/ripple/index.js.map +0 -10
  171. package/dist/src/solana/index.cjs.map +0 -11
  172. package/dist/src/solana/index.js.map +0 -11
  173. package/dist/src/substrate/index.cjs.map +0 -13
  174. package/dist/src/substrate/index.js.map +0 -13
  175. package/dist/src/sui/index.cjs.map +0 -11
  176. package/dist/src/sui/index.js.map +0 -11
  177. package/dist/src/ton/index.cjs.map +0 -11
  178. package/dist/src/ton/index.js.map +0 -11
  179. package/dist/src/tron/index.cjs.map +0 -13
  180. package/dist/src/tron/index.js.map +0 -13
  181. package/dist/src/utxo/index.cjs.map +0 -21
  182. package/dist/src/utxo/index.js.map +0 -21
  183. package/dist/types/tron/helpers/trc20.abi.d.ts +0 -156
  184. package/dist/types/tron/helpers/trc20.abi.d.ts.map +0 -1
  185. package/src/__tests__/address-validation-all-chains.test.ts +0 -162
  186. package/src/__tests__/addressValidator.test.ts +0 -162
  187. package/src/cardano/__tests__/toolbox.test.ts +0 -48
  188. package/src/cardano/index.ts +0 -2
  189. package/src/cardano/toolbox.ts +0 -168
  190. package/src/cardano/types.ts +0 -10
  191. package/src/cosmos/__tests__/toolbox.test.ts +0 -95
  192. package/src/cosmos/index.ts +0 -4
  193. package/src/cosmos/thorchainUtils/addressFormat.ts +0 -22
  194. package/src/cosmos/thorchainUtils/index.ts +0 -4
  195. package/src/cosmos/thorchainUtils/messages.ts +0 -212
  196. package/src/cosmos/thorchainUtils/registry.ts +0 -43
  197. package/src/cosmos/thorchainUtils/types/MsgCompiled.ts +0 -2800
  198. package/src/cosmos/thorchainUtils/types/client-types.ts +0 -54
  199. package/src/cosmos/thorchainUtils/types/index.ts +0 -1
  200. package/src/cosmos/toolbox/cosmos.ts +0 -345
  201. package/src/cosmos/toolbox/index.ts +0 -35
  202. package/src/cosmos/toolbox/thorchain.ts +0 -249
  203. package/src/cosmos/types.ts +0 -48
  204. package/src/cosmos/util.ts +0 -214
  205. package/src/evm/__tests__/address-validation.test.ts +0 -84
  206. package/src/evm/__tests__/ethereum.test.ts +0 -137
  207. package/src/evm/__tests__/signMessage.test.ts +0 -60
  208. package/src/evm/api.ts +0 -10
  209. package/src/evm/contracts/eth/multicall.ts +0 -165
  210. package/src/evm/contracts/op/gasOracle.ts +0 -145
  211. package/src/evm/helpers.ts +0 -71
  212. package/src/evm/index.ts +0 -4
  213. package/src/evm/toolbox/baseEVMToolbox.ts +0 -698
  214. package/src/evm/toolbox/evm.ts +0 -66
  215. package/src/evm/toolbox/index.ts +0 -44
  216. package/src/evm/toolbox/op.ts +0 -143
  217. package/src/evm/types.ts +0 -146
  218. package/src/index.ts +0 -260
  219. package/src/near/__tests__/core.test.ts +0 -70
  220. package/src/near/helpers/core.ts +0 -85
  221. package/src/near/helpers/gasEstimation.ts +0 -96
  222. package/src/near/helpers/nep141.ts +0 -50
  223. package/src/near/index.ts +0 -21
  224. package/src/near/toolbox.ts +0 -421
  225. package/src/near/types/contract.ts +0 -32
  226. package/src/near/types/nep141.ts +0 -34
  227. package/src/near/types/toolbox.ts +0 -55
  228. package/src/near/types.ts +0 -44
  229. package/src/radix/index.ts +0 -138
  230. package/src/ripple/index.ts +0 -179
  231. package/src/solana/index.ts +0 -36
  232. package/src/solana/toolbox.ts +0 -409
  233. package/src/substrate/balance.ts +0 -88
  234. package/src/substrate/index.ts +0 -2
  235. package/src/substrate/substrate.ts +0 -281
  236. package/src/substrate/types.ts +0 -115
  237. package/src/sui/__tests__/toolbox.test.ts +0 -86
  238. package/src/sui/index.ts +0 -2
  239. package/src/sui/toolbox.ts +0 -166
  240. package/src/sui/types.ts +0 -11
  241. package/src/ton/__tests__/toolbox.test.ts +0 -67
  242. package/src/ton/index.ts +0 -2
  243. package/src/ton/toolbox.ts +0 -136
  244. package/src/ton/types.ts +0 -13
  245. package/src/tron/__tests__/toolbox.test.ts +0 -221
  246. package/src/tron/helpers/trc20.abi.ts +0 -107
  247. package/src/tron/helpers/trongrid.ts +0 -53
  248. package/src/tron/index.ts +0 -21
  249. package/src/tron/toolbox.ts +0 -585
  250. package/src/tron/types.ts +0 -83
  251. package/src/types.ts +0 -28
  252. package/src/utils.ts +0 -34
  253. package/src/utxo/__tests__/zcash-integration.test.ts +0 -97
  254. package/src/utxo/helpers/api.ts +0 -471
  255. package/src/utxo/helpers/bchaddrjs.ts +0 -166
  256. package/src/utxo/helpers/coinselect.ts +0 -92
  257. package/src/utxo/helpers/index.ts +0 -4
  258. package/src/utxo/helpers/txSize.ts +0 -137
  259. package/src/utxo/index.ts +0 -6
  260. package/src/utxo/toolbox/bitcoinCash.ts +0 -243
  261. package/src/utxo/toolbox/index.ts +0 -59
  262. package/src/utxo/toolbox/params.ts +0 -18
  263. package/src/utxo/toolbox/utxo.ts +0 -439
  264. package/src/utxo/toolbox/validators.ts +0 -36
  265. package/src/utxo/toolbox/zcash.ts +0 -242
  266. package/src/utxo/types.ts +0 -39
@@ -1,242 +0,0 @@
1
- import { bitgo, crypto, ECPair, networks, address as zcashAddress } from "@bitgo/utxo-lib";
2
- import type { ZcashPsbt } from "@bitgo/utxo-lib/dist/src/bitgo";
3
- import { HDKey } from "@scure/bip32";
4
- import { mnemonicToSeedSync } from "@scure/bip39";
5
- import {
6
- Chain,
7
- type ChainSigner,
8
- type DerivationPathArray,
9
- derivationPathToString,
10
- FeeOption,
11
- NetworkDerivationPath,
12
- SKConfig,
13
- SwapKitError,
14
- updateDerivationPath,
15
- } from "@swapkit/helpers";
16
- import bs58check from "bs58check";
17
- import { match, P } from "ts-pattern";
18
- import { accumulative, compileMemo, getUtxoApi } from "../helpers";
19
- import type { TargetOutput, UTXOBuildTxParams, UTXOTransferParams, UTXOType } from "../types";
20
- import { createUTXOToolbox } from "./utxo";
21
- import { validateZcashAddress } from "./validators";
22
-
23
- function getZcashNetwork() {
24
- return networks.zcash;
25
- }
26
-
27
- function getECPairNetwork() {
28
- return {
29
- bech32: undefined,
30
- bip32: { private: 0x0488ade4, public: 0x0488b21e },
31
- messagePrefix: "\x18ZCash Signed Message:\n",
32
- pubKeyHash: 0x1c,
33
- scriptHash: 0x1c,
34
- wif: 0x80,
35
- };
36
- }
37
-
38
- type ZcashSigner = ChainSigner<ZcashPsbt, ZcashPsbt>;
39
-
40
- function createZcashSignerFromPhrase({
41
- phrase,
42
- derivationPath,
43
- }: {
44
- phrase: string;
45
- derivationPath: string;
46
- }): ZcashSigner {
47
- const seed = mnemonicToSeedSync(phrase);
48
- const root = HDKey.fromMasterSeed(seed);
49
- const node = root.derive(derivationPath);
50
-
51
- if (!node.privateKey) {
52
- throw new SwapKitError("toolbox_utxo_invalid_params");
53
- }
54
-
55
- // Create key pair using BitGo's ECPair with ECPair-compatible network
56
- const ecpairNetwork = getECPairNetwork();
57
- const keyPair = ECPair.fromPrivateKey(Buffer.from(node.privateKey), { network: ecpairNetwork });
58
-
59
- const pubKeyHash = crypto.hash160(keyPair.publicKey);
60
- const { isStagenet } = SKConfig.get("envs");
61
-
62
- const prefix = isStagenet
63
- ? Buffer.from([0x1d, 0x25]) // testnet prefix (results in tm... addresses)
64
- : Buffer.from([0x1c, 0xb8]); // mainnet prefix (results in t1... addresses)
65
-
66
- const payload = Buffer.concat([prefix, pubKeyHash]);
67
-
68
- const address = bs58check.encode(payload);
69
-
70
- return {
71
- getAddress: () => Promise.resolve(address),
72
-
73
- signTransaction: (psbt) => {
74
- const signedPsbt = psbt.signAllInputs(keyPair);
75
-
76
- return Promise.resolve(signedPsbt);
77
- },
78
- };
79
- }
80
-
81
- function addInputsAndOutputs({
82
- inputs,
83
- outputs,
84
- psbt,
85
- sender,
86
- compiledMemo,
87
- }: {
88
- inputs: UTXOType[];
89
- outputs: TargetOutput[];
90
- psbt: ZcashPsbt;
91
- sender: string;
92
- compiledMemo: Buffer<ArrayBufferLike> | null;
93
- }) {
94
- for (const utxo of inputs) {
95
- const witnessInfo = !!utxo.witnessUtxo && { witnessUtxo: { ...utxo.witnessUtxo, value: BigInt(utxo.value) } };
96
-
97
- const nonWitnessInfo = !utxo.witnessUtxo && {
98
- nonWitnessUtxo: utxo.txHex ? Buffer.from(utxo.txHex, "hex") : undefined,
99
- };
100
-
101
- psbt.addInput({ hash: utxo.hash, index: utxo.index, ...witnessInfo, ...nonWitnessInfo });
102
- }
103
-
104
- for (const output of outputs) {
105
- const address = "address" in output && output.address ? output.address : sender;
106
- const hasOutputScript = output.script;
107
-
108
- if (hasOutputScript && !compiledMemo) {
109
- continue;
110
- }
111
-
112
- const mappedOutput = hasOutputScript
113
- ? { script: compiledMemo as Buffer<ArrayBufferLike>, value: 0n }
114
- : { script: zcashAddress.toOutputScript(address, getZcashNetwork()), value: BigInt(output.value) };
115
-
116
- psbt.addOutput(mappedOutput);
117
- }
118
-
119
- return { inputs, psbt };
120
- }
121
-
122
- async function createTransaction(buildTxParams: UTXOBuildTxParams) {
123
- const { assetValue, recipient, memo, feeRate, sender, fetchTxHex } = buildTxParams;
124
-
125
- const compiledMemo = memo ? compileMemo(memo) : null;
126
-
127
- const utxos = await getUtxoApi(Chain.Zcash).getUtxos({ address: sender, fetchTxHex: fetchTxHex !== false });
128
-
129
- const targetOutputs = [
130
- { address: recipient, value: Number(assetValue.getBaseValue("string")) },
131
- ...(compiledMemo ? [{ script: compiledMemo, value: 0 }] : []),
132
- ];
133
-
134
- const { inputs, outputs } = accumulative({
135
- chain: Chain.Zcash,
136
- changeAddress: sender, // Overwrite change address to sender
137
- feeRate,
138
- inputs: utxos,
139
- outputs: targetOutputs,
140
- });
141
-
142
- if (!(inputs && outputs)) {
143
- throw new SwapKitError("toolbox_utxo_insufficient_balance", { assetValue, sender });
144
- }
145
-
146
- const psbt = bitgo.createPsbtForNetwork({ network: getZcashNetwork() }, { version: 455 }) as ZcashPsbt;
147
-
148
- const branchId = 0x4dec4df0;
149
-
150
- const CONSENSUS_BRANCH_ID_KEY = Buffer.concat([Buffer.of(0xfc), Buffer.of(0x05), Buffer.from("BITGO"), Buffer.of(0)]);
151
-
152
- // PSBT value must be 4-byte little-endian
153
- const value = Buffer.allocUnsafe(4);
154
- value.writeUInt32LE(branchId >>> 0, 0);
155
-
156
- psbt.addUnknownKeyValToGlobal({ key: CONSENSUS_BRANCH_ID_KEY, value });
157
-
158
- const { psbt: mappedPsbt, inputs: mappedInputs } = await addInputsAndOutputs({
159
- compiledMemo,
160
- inputs,
161
- outputs,
162
- psbt,
163
- sender,
164
- });
165
-
166
- return { inputs: mappedInputs, outputs, psbt: mappedPsbt };
167
- }
168
-
169
- export async function createZcashToolbox(
170
- toolboxParams: { signer?: ZcashSigner } | { phrase?: string; derivationPath?: DerivationPathArray; index?: number },
171
- ) {
172
- const signer = await match(toolboxParams)
173
- .with({ signer: P.not(P.nullish) }, ({ signer }) => Promise.resolve(signer))
174
- .with({ phrase: P.string }, ({ phrase, derivationPath, index = 0 }) => {
175
- const baseDerivationPath = derivationPath || NetworkDerivationPath[Chain.Zcash] || [44, 133, 0, 0, 0];
176
- const updatedPath = updateDerivationPath(baseDerivationPath, { index });
177
- const pathString = derivationPathToString(updatedPath);
178
-
179
- return createZcashSignerFromPhrase({ derivationPath: pathString, phrase });
180
- })
181
- .otherwise(() => Promise.resolve(undefined));
182
-
183
- const baseToolbox = await createUTXOToolbox({ chain: Chain.Zcash, signer });
184
-
185
- async function transfer({ recipient, assetValue, feeOptionKey = FeeOption.Fast, ...rest }: UTXOTransferParams) {
186
- const from = await signer?.getAddress();
187
- if (!(signer && from)) {
188
- throw new SwapKitError("toolbox_utxo_no_signer");
189
- }
190
-
191
- const feeRate = rest.feeRate || (await baseToolbox.getFeeRates())[feeOptionKey];
192
-
193
- const { psbt } = await createTransaction({ ...rest, assetValue, feeRate, recipient, sender: from });
194
-
195
- const signedPsbt = await signer.signTransaction(psbt);
196
-
197
- signedPsbt.finalizeAllInputs();
198
-
199
- return baseToolbox.broadcastTx(signedPsbt.extractTransaction().toHex());
200
- }
201
-
202
- function createKeysForPath({
203
- phrase,
204
- derivationPath = "m/44'/133'/0'/0/0",
205
- }: {
206
- phrase: string;
207
- derivationPath?: string;
208
- }) {
209
- const seed = mnemonicToSeedSync(phrase);
210
- const root = HDKey.fromMasterSeed(seed);
211
- const node = root.derive(derivationPath);
212
-
213
- if (!node.privateKey) {
214
- throw new SwapKitError("toolbox_utxo_invalid_params");
215
- }
216
-
217
- const ecpairNetwork = getECPairNetwork();
218
- const keyPair = ECPair.fromPrivateKey(Buffer.from(node.privateKey), { network: ecpairNetwork });
219
-
220
- return keyPair;
221
- }
222
-
223
- function getPrivateKeyFromMnemonic({
224
- phrase,
225
- derivationPath = "m/44'/133'/0'/0/0",
226
- }: {
227
- phrase: string;
228
- derivationPath: string;
229
- }) {
230
- const keys = createKeysForPath({ derivationPath, phrase });
231
- return keys.toWIF();
232
- }
233
-
234
- return {
235
- ...baseToolbox,
236
- createKeysForPath,
237
- createTransaction,
238
- getPrivateKeyFromMnemonic,
239
- transfer,
240
- validateAddress: validateZcashAddress,
241
- };
242
- }
package/src/utxo/types.ts DELETED
@@ -1,39 +0,0 @@
1
- import type { GenericCreateTransactionParams, GenericTransferParams, Witness } from "@swapkit/helpers";
2
-
3
- import type { UTXOScriptType } from "./helpers";
4
-
5
- export type TransactionType = { toHex(): string };
6
-
7
- export type TargetOutput = { address: string; script?: Buffer; value: number } | { script: Buffer; value: number };
8
-
9
- export type UTXOType = { hash: string; index: number; value: number; txHex?: string; witnessUtxo?: Witness };
10
-
11
- export type UTXOInputWithScriptType = UTXOType & { type: UTXOScriptType; address: string };
12
-
13
- export type UTXOCalculateTxSizeParams = {
14
- inputs: (UTXOInputWithScriptType | UTXOType)[];
15
- outputs?: TargetOutput[];
16
- feeRate: number;
17
- };
18
-
19
- export type UTXOBuildTxParams = GenericCreateTransactionParams & { fetchTxHex?: boolean };
20
-
21
- export type UTXOTransferParams = GenericTransferParams;
22
-
23
- export type BchECPair = { getAddress: (index?: number) => string; publicKey: Buffer; toWIF: () => string };
24
-
25
- export type TransactionBuilderType = {
26
- inputs: any[];
27
- sign(
28
- vin: number,
29
- keyPair: BchECPair,
30
- redeemScript?: Buffer,
31
- hashType?: number,
32
- witnessValue?: number,
33
- witnessScript?: Buffer,
34
- signatureAlgorithm?: string,
35
- ): void;
36
- build(): TransactionType;
37
- addOutput(addressOrScriptBuffer: string | Buffer, value: number): void;
38
- addInput(txHash: string | Buffer, vout: number, sequence?: number, prevOutScript?: Buffer): void;
39
- };