@cardano-sdk/wallet 0.1.4 → 0.1.5

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 (118) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +5 -0
  3. package/dist/Address.d.ts +11 -0
  4. package/dist/Address.d.ts.map +1 -0
  5. package/dist/Address.js +9 -0
  6. package/dist/Address.js.map +1 -0
  7. package/dist/BalanceTracker.d.ts +23 -0
  8. package/dist/BalanceTracker.d.ts.map +1 -0
  9. package/dist/BalanceTracker.js +48 -0
  10. package/dist/BalanceTracker.js.map +1 -0
  11. package/dist/InMemoryTransactionTracker.d.ts +16 -0
  12. package/dist/InMemoryTransactionTracker.d.ts.map +1 -0
  13. package/dist/InMemoryTransactionTracker.js +84 -0
  14. package/dist/InMemoryTransactionTracker.js.map +1 -0
  15. package/dist/InMemoryUtxoRepository.d.ts +25 -0
  16. package/dist/InMemoryUtxoRepository.d.ts.map +1 -0
  17. package/dist/InMemoryUtxoRepository.js +154 -0
  18. package/dist/InMemoryUtxoRepository.js.map +1 -0
  19. package/dist/KeyManagement/InMemoryKeyManager.d.ts +9 -0
  20. package/dist/KeyManagement/InMemoryKeyManager.d.ts.map +1 -0
  21. package/dist/KeyManagement/InMemoryKeyManager.js +68 -0
  22. package/dist/KeyManagement/InMemoryKeyManager.js.map +1 -0
  23. package/dist/KeyManagement/errors/InvalidMnemonic.d.ts +5 -0
  24. package/dist/KeyManagement/errors/InvalidMnemonic.d.ts.map +1 -0
  25. package/dist/KeyManagement/errors/InvalidMnemonic.js +13 -0
  26. package/dist/KeyManagement/errors/InvalidMnemonic.js.map +1 -0
  27. package/{src/KeyManagement/errors/index.ts → dist/KeyManagement/errors/index.d.ts} +1 -0
  28. package/dist/KeyManagement/errors/index.d.ts.map +1 -0
  29. package/dist/KeyManagement/errors/index.js +6 -0
  30. package/dist/KeyManagement/errors/index.js.map +1 -0
  31. package/{src/KeyManagement/index.ts → dist/KeyManagement/index.d.ts} +1 -0
  32. package/dist/KeyManagement/index.d.ts.map +1 -0
  33. package/dist/KeyManagement/index.js +30 -0
  34. package/dist/KeyManagement/index.js.map +1 -0
  35. package/dist/KeyManagement/types.d.ts +14 -0
  36. package/dist/KeyManagement/types.d.ts.map +1 -0
  37. package/dist/KeyManagement/types.js +3 -0
  38. package/dist/KeyManagement/types.js.map +1 -0
  39. package/dist/KeyManagement/util.d.ts +6 -0
  40. package/dist/KeyManagement/util.d.ts.map +1 -0
  41. package/dist/KeyManagement/util.js +31 -0
  42. package/dist/KeyManagement/util.js.map +1 -0
  43. package/dist/SingleAddressWallet.d.ts +30 -0
  44. package/dist/SingleAddressWallet.d.ts.map +1 -0
  45. package/dist/SingleAddressWallet.js +62 -0
  46. package/dist/SingleAddressWallet.js.map +1 -0
  47. package/dist/Transaction/CertificateFactory.d.ts +50 -0
  48. package/dist/Transaction/CertificateFactory.d.ts.map +1 -0
  49. package/dist/Transaction/CertificateFactory.js +72 -0
  50. package/dist/Transaction/CertificateFactory.js.map +1 -0
  51. package/dist/Transaction/computeImplicitCoin.d.ts +4 -0
  52. package/dist/Transaction/computeImplicitCoin.d.ts.map +1 -0
  53. package/dist/Transaction/computeImplicitCoin.js +21 -0
  54. package/dist/Transaction/computeImplicitCoin.js.map +1 -0
  55. package/dist/Transaction/createTransactionInternals.d.ts +16 -0
  56. package/dist/Transaction/createTransactionInternals.d.ts.map +1 -0
  57. package/dist/Transaction/createTransactionInternals.js +41 -0
  58. package/dist/Transaction/createTransactionInternals.js.map +1 -0
  59. package/{src/Transaction/index.ts → dist/Transaction/index.d.ts} +1 -0
  60. package/dist/Transaction/index.d.ts.map +1 -0
  61. package/dist/Transaction/index.js +18 -0
  62. package/dist/Transaction/index.js.map +1 -0
  63. package/dist/Transaction/types.d.ts +11 -0
  64. package/dist/Transaction/types.d.ts.map +1 -0
  65. package/dist/Transaction/types.js +3 -0
  66. package/dist/Transaction/types.js.map +1 -0
  67. package/dist/Transaction/withdrawal.d.ts +8 -0
  68. package/dist/Transaction/withdrawal.d.ts.map +1 -0
  69. package/dist/Transaction/withdrawal.js +10 -0
  70. package/dist/Transaction/withdrawal.js.map +1 -0
  71. package/dist/TransactionError.d.ts +15 -0
  72. package/dist/TransactionError.d.ts.map +1 -0
  73. package/dist/TransactionError.js +23 -0
  74. package/dist/TransactionError.js.map +1 -0
  75. package/{src/index.ts → dist/index.d.ts} +1 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +35 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/types.d.ts +37 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +13 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +13 -8
  84. package/jest.config.js +0 -1
  85. package/src/Address.ts +0 -12
  86. package/src/BalanceTracker.ts +0 -62
  87. package/src/InMemoryTransactionTracker.ts +0 -87
  88. package/src/InMemoryUtxoRepository.ts +0 -192
  89. package/src/KeyManagement/InMemoryKeyManager.ts +0 -67
  90. package/src/KeyManagement/errors/InvalidMnemonic.ts +0 -9
  91. package/src/KeyManagement/types.ts +0 -15
  92. package/src/KeyManagement/util.ts +0 -14
  93. package/src/SingleAddressWallet.ts +0 -120
  94. package/src/Transaction/CertificateFactory.ts +0 -154
  95. package/src/Transaction/computeImplicitCoin.ts +0 -36
  96. package/src/Transaction/createTransactionInternals.ts +0 -60
  97. package/src/Transaction/types.ts +0 -12
  98. package/src/Transaction/withdrawal.ts +0 -17
  99. package/src/TransactionError.ts +0 -17
  100. package/src/tsconfig.json +0 -11
  101. package/src/types.ts +0 -56
  102. package/test/.eslintrc.js +0 -7
  103. package/test/BalanceTracker.test.ts +0 -44
  104. package/test/InMemoryTransactionTracker.test.ts +0 -108
  105. package/test/InMemoryUtxoRepository.test.ts +0 -242
  106. package/test/KeyManagement/InMemoryKeyManager.test.ts +0 -39
  107. package/test/SingleAddressWallet.test.ts +0 -87
  108. package/test/Transaction/CertificateFactory.test.ts +0 -89
  109. package/test/Transaction/computeImplicitCoin.test.ts +0 -26
  110. package/test/Transaction/createTransactionInternals.test.ts +0 -84
  111. package/test/Transaction/withdrawal.test.ts +0 -13
  112. package/test/integration/withdrawal.test.ts +0 -108
  113. package/test/mocks/MockTransactionTracker.ts +0 -8
  114. package/test/mocks/MockUtxoRepository.ts +0 -13
  115. package/test/mocks/ProviderStub.ts +0 -151
  116. package/test/mocks/index.ts +0 -4
  117. package/test/mocks/testKeyManager.ts +0 -10
  118. package/test/tsconfig.json +0 -12
@@ -1,13 +0,0 @@
1
- import { loadCardanoSerializationLib } from '@cardano-sdk/core';
2
- import { testKeyManager } from '../mocks';
3
- import { Transaction } from '../../src';
4
-
5
- describe('Transaction.withdrawal', () => {
6
- it('creates objects of correct types', async () => {
7
- const csl = await loadCardanoSerializationLib();
8
- const keyManager = await testKeyManager(csl);
9
- const withdrawal = Transaction.withdrawal(csl, keyManager, 5000n);
10
- expect(withdrawal.address).toBeInstanceOf(csl.RewardAddress);
11
- expect(withdrawal.quantity).toBeInstanceOf(csl.BigNum);
12
- });
13
- });
@@ -1,108 +0,0 @@
1
- /* eslint-disable no-fallthrough */
2
- import { roundRobinRandomImprove } from '@cardano-sdk/cip2';
3
- import { Cardano, CardanoSerializationLib, loadCardanoSerializationLib } from '@cardano-sdk/core';
4
- import {
5
- BalanceTrackerEvent,
6
- createSingleAddressWallet,
7
- InMemoryTransactionTracker,
8
- InMemoryUtxoRepository,
9
- KeyManagement,
10
- SingleAddressWallet,
11
- SingleAddressWalletProps,
12
- Transaction,
13
- TransactionError,
14
- TransactionFailure,
15
- TransactionTracker,
16
- UtxoRepository,
17
- UtxoRepositoryEvent
18
- } from '@cardano-sdk/wallet';
19
- // Not testing with a real provider
20
- import { providerStub } from '../mocks';
21
-
22
- const walletProps: SingleAddressWalletProps = { name: 'some-wallet' };
23
- const networkId = Cardano.NetworkId.mainnet;
24
- const mnemonicWords = KeyManagement.util.generateMnemonicWords();
25
- const password = 'your_password';
26
-
27
- describe('integration/withdrawal', () => {
28
- let csl: CardanoSerializationLib;
29
- let keyManager: KeyManagement.KeyManager;
30
- let txTracker: TransactionTracker;
31
- let utxoRepository: UtxoRepository;
32
- let wallet: SingleAddressWallet;
33
-
34
- beforeAll(async () => {
35
- csl = await loadCardanoSerializationLib();
36
- keyManager = KeyManagement.createInMemoryKeyManager({ csl, mnemonicWords, password, networkId });
37
- const provider = providerStub();
38
- const inputSelector = roundRobinRandomImprove(csl);
39
- txTracker = new InMemoryTransactionTracker({ csl, provider, pollInterval: 1 });
40
- utxoRepository = new InMemoryUtxoRepository({ csl, provider, txTracker, inputSelector, keyManager });
41
- wallet = await createSingleAddressWallet(walletProps, {
42
- csl,
43
- keyManager,
44
- provider,
45
- utxoRepository,
46
- txTracker
47
- });
48
-
49
- // Call this to sync available balance
50
- await utxoRepository.sync();
51
- });
52
-
53
- it('has balance', () => {
54
- expect(wallet.balance.total).toBeTruthy();
55
- expect(wallet.balance.available).toBeTruthy();
56
- });
57
-
58
- it('has events', () => {
59
- wallet.balance.on(BalanceTrackerEvent.Changed, ({ total, available }) => {
60
- expect(total).toBeTruthy();
61
- expect(available).toBeTruthy();
62
- // This is emitted after transaction is submitted and balance is locked before confirmation
63
- // And after UtxoRepository.sync()
64
- });
65
- utxoRepository.on(UtxoRepositoryEvent.OutOfSync, () => {
66
- // This is emitted when cardano-js-sdk calls sync() internally and it fails.
67
- // User should attempt to resync using utxoRepository.sync()
68
- });
69
- });
70
-
71
- it('can submit transaction', async () => {
72
- const certFactory = new Transaction.CertificateFactory(csl, keyManager);
73
-
74
- const { body, hash } = await wallet.initializeTx({
75
- certificates: [certFactory.stakeKeyDeregistration()],
76
- withdrawals: [Transaction.withdrawal(csl, keyManager, utxoRepository.availableRewards || 0n)],
77
- outputs: new Set() // In a real transaction you would probably want to have some outputs
78
- });
79
- // Calculated fee is returned by invoking body.fee()
80
- const tx = await wallet.signTx(body, hash);
81
-
82
- const { submitted, confirmed } = wallet.submitTx(tx);
83
- try {
84
- // Transaction is submitting. UTxO is locked.
85
- await submitted;
86
- // Transaction is successfully submitted, but not confirmed yet
87
- await confirmed;
88
- } catch (error) {
89
- if (error instanceof TransactionError) {
90
- switch (error.reason) {
91
- case TransactionFailure.InvalidTransaction:
92
- // Invalid transaction, probably no validity interval set
93
- case TransactionFailure.Timeout:
94
- // Transaction has expired and will not be confirmed. Therefore it's safe to spend the UTxO again.
95
- case TransactionFailure.FailedToSubmit:
96
- // Probably attempt to resubmit
97
- case TransactionFailure.CannotTrack:
98
- // Failed when attempting to track transaction confirmation.
99
- // Probably just attempt to track it again by calling txTracker.track(tx)
100
- case TransactionFailure.Unknown:
101
- // Most likely a bug in cardano-js-sdk
102
- }
103
- } else {
104
- // Most likely a bug in cardano-js-sdk
105
- }
106
- }
107
- });
108
- });
@@ -1,8 +0,0 @@
1
- import Emittery from 'emittery';
2
- import { TransactionTrackerEvents } from '../../src';
3
-
4
- export class MockTransactionTracker extends Emittery<TransactionTrackerEvents> {
5
- track = jest.fn();
6
- }
7
-
8
- export const txTracker = new MockTransactionTracker();
@@ -1,13 +0,0 @@
1
- import Emittery from 'emittery';
2
- import { delegate, rewards, utxo } from './ProviderStub';
3
- import { UtxoRepository, UtxoRepositoryEvents } from '../../src';
4
-
5
- export class MockUtxoRepository extends Emittery<UtxoRepositoryEvents> implements UtxoRepository {
6
- sync = jest.fn().mockResolvedValue(void 0);
7
- selectInputs = jest.fn();
8
- allUtxos = utxo;
9
- availableUtxos = utxo;
10
- allRewards = rewards;
11
- availableRewards = rewards;
12
- delegation = delegate;
13
- }
@@ -1,151 +0,0 @@
1
- /* eslint-disable max-len */
2
- import * as Schema from '@cardano-ogmios/schema';
3
- import { PXL, TSLA } from '@cardano-sdk/util-dev/src/assetId';
4
-
5
- export const stakeKeyHash = 'stake_test1up7pvfq8zn4quy45r2g572290p9vf99mr9tn7r9xrgy2l2qdsf58d';
6
-
7
- export const utxo: Schema.Utxo = [
8
- [
9
- {
10
- txId: 'bb217abaca60fc0ca68c1555eca6a96d2478547818ae76ce6836133f3cc546e0',
11
- index: 1
12
- },
13
- {
14
- address:
15
- 'addr_test1qzs0umu0s2ammmpw0hea0w2crtcymdjvvlqngpgqy76gpfnuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qp3y3vz',
16
- value: {
17
- coins: 4_027_026_465,
18
- assets: {
19
- [TSLA]: 10n,
20
- [PXL]: 5n
21
- }
22
- },
23
- datum: null
24
- }
25
- ],
26
- [
27
- {
28
- txId: 'c7c0973c6bbf1a04a9f306da7814b4fa564db649bf48b0bd93c273bd03143547',
29
- index: 0
30
- },
31
- {
32
- address:
33
- 'addr_test1qq585l3hyxgj3nas2v3xymd23vvartfhceme6gv98aaeg9muzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475q2g7k3g',
34
- value: {
35
- coins: 3_289_566,
36
- assets: {
37
- [TSLA]: 15n
38
- }
39
- },
40
- datum: null
41
- }
42
- ],
43
- [
44
- {
45
- txId: 'ea1517b8c36fea3148df9aa1f49bbee66ff59a5092331a67bd8b3c427e1d79d7',
46
- index: 2
47
- },
48
- {
49
- address:
50
- 'addr_test1qqydn46r6mhge0kfpqmt36m6q43knzsd9ga32n96m89px3nuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qypp3m9',
51
- value: {
52
- coins: 9_825_963
53
- },
54
- datum: null
55
- }
56
- ]
57
- ];
58
-
59
- export const delegate = 'pool185g59xpqzt7gf0ljr8v8f3akl95qnmardf2f8auwr3ffx7atjj5';
60
- export const rewards = 33_333n;
61
- export const delegationAndRewards = { delegate, rewards };
62
-
63
- export const queryTransactionsResult = [
64
- {
65
- hash: 'ea1517b8c36fea3148df9aa1f49bbee66ff59a5092331a67bd8b3c427e1d79d7',
66
- inputs: [
67
- {
68
- txId: 'bb217abaca60fc0ca68c1555eca6a96d2478547818ae76ce6836133f3cc546e0',
69
- index: 0
70
- }
71
- ],
72
- outputs: [
73
- {
74
- address:
75
- 'addr_test1qpfhhfy2qgls50r9u4yh0l7z67xpg0a5rrhkmvzcuqrd0znuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475q9gw0lz',
76
- value: { coins: 5_000_000 }
77
- },
78
- {
79
- address:
80
- 'addr_test1qplfzem2xsc29wxysf8wkdqrm4s4mmncd40qnjq9sk84l3tuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475q52ukj5',
81
- value: { coins: 5_000_000 }
82
- },
83
- {
84
- address:
85
- 'addr_test1qqydn46r6mhge0kfpqmt36m6q43knzsd9ga32n96m89px3nuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qypp3m9',
86
- value: { coins: 9_825_963 }
87
- }
88
- ]
89
- }
90
- ];
91
- const queryTransactions = () => jest.fn().mockResolvedValue(queryTransactionsResult);
92
-
93
- export const ledgerTip = {
94
- blockNo: 1_111_111,
95
- hash: '10d64cc11e9b20e15b6c46aa7b1fed11246f437e62225655a30ea47bf8cc22d0',
96
- slot: 37_834_496
97
- };
98
-
99
- /**
100
- * Provider stub for testing
101
- *
102
- * returns CardanoProvider-compatible object
103
- */
104
- export const providerStub = () => ({
105
- ledgerTip: jest.fn().mockResolvedValue(ledgerTip),
106
- networkInfo: async () => ({
107
- currentEpoch: {
108
- number: 158,
109
- start: {
110
- date: new Date(1_632_255_616)
111
- },
112
- end: {
113
- date: new Date(1_632_687_616)
114
- }
115
- },
116
- lovelaceSupply: {
117
- circulating: 42_064_399_450_423_723n,
118
- max: 45_000_000_000_000_000n,
119
- total: 40_267_211_394_073_980n
120
- },
121
- stake: {
122
- active: 1_060_378_314_781_343n,
123
- live: 15_001_884_895_856_815n
124
- }
125
- }),
126
- submitTx: jest.fn().mockResolvedValue(void 0),
127
- stakePoolStats: async () => ({
128
- qty: {
129
- active: 1000,
130
- retired: 500,
131
- retiring: 5
132
- }
133
- }),
134
- utxoDelegationAndRewards: jest.fn().mockResolvedValue({ utxo, delegationAndRewards }),
135
- queryTransactionsByAddresses: queryTransactions(),
136
- queryTransactionsByHashes: queryTransactions(),
137
- currentWalletProtocolParameters: async () => ({
138
- minFeeCoefficient: 44,
139
- minFeeConstant: 155_381,
140
- stakeKeyDeposit: 2_000_000,
141
- poolDeposit: 500_000_000,
142
- protocolVersion: { major: 5, minor: 0 },
143
- minPoolCost: 340_000_000,
144
- maxTxSize: 16_384,
145
- maxValueSize: 1000,
146
- maxCollateralInputs: 1,
147
- coinsPerUtxoWord: 34_482
148
- })
149
- });
150
-
151
- export type ProviderStub = ReturnType<typeof providerStub>;
@@ -1,4 +0,0 @@
1
- export * from './ProviderStub';
2
- export * from './MockUtxoRepository';
3
- export * from './MockTransactionTracker';
4
- export * from './testKeyManager';
@@ -1,10 +0,0 @@
1
- import { Cardano, CardanoSerializationLib } from '@cardano-sdk/core';
2
- import { KeyManagement } from '../../src';
3
-
4
- export const testKeyManager = (csl: CardanoSerializationLib) =>
5
- KeyManagement.createInMemoryKeyManager({
6
- csl,
7
- mnemonicWords: KeyManagement.util.generateMnemonicWords(),
8
- password: '',
9
- networkId: Cardano.NetworkId.testnet
10
- });
@@ -1,12 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.json",
3
- "compilerOptions": {
4
- "baseUrl": "."
5
- },
6
- "references": [
7
- { "path": "../src" },
8
- { "path": "../../util-dev/src" },
9
- { "path": "../../cip2/src" },
10
- { "path": "../../core/src" }
11
- ]
12
- }