@sundaeswap/wallet-lite 0.0.16 → 0.0.17

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 (27) hide show
  1. package/dist/cjs/classes/WalletObserver.class.js +73 -32
  2. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  3. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +30 -10
  4. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  5. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  6. package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
  7. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  8. package/dist/esm/classes/WalletObserver.class.js +26 -1
  9. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  10. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +12 -0
  11. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  12. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  13. package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
  14. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  15. package/dist/types/classes/WalletObserver.class.d.ts +6 -0
  16. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  17. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +2 -0
  18. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  19. package/dist/types/react-components/contexts/observer/types.d.ts +3 -1
  20. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  21. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  22. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  23. package/package.json +1 -1
  24. package/src/classes/WalletObserver.class.ts +44 -7
  25. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +14 -0
  26. package/src/react-components/contexts/observer/types.ts +5 -0
  27. package/src/react-components/hooks/useWalletObserver.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sundaeswap/wallet-lite",
3
- "version": "0.0.16",
3
+ "version": "0.0.17",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -154,19 +154,26 @@ export class WalletObserver<
154
154
  }
155
155
  }
156
156
 
157
- const [newBalanceMap, newUsedAddresses, newUnusedAddresses, newOutputs] =
158
- await Promise.all([
159
- this.getBalanceMap(),
160
- this.getUsedAddresses(),
161
- this.getUnusedAddresses(),
162
- this.getUtxos(),
163
- ]);
157
+ const [
158
+ newBalanceMap,
159
+ newUsedAddresses,
160
+ newUnusedAddresses,
161
+ newOutputs,
162
+ newCollateral,
163
+ ] = await Promise.all([
164
+ this.getBalanceMap(),
165
+ this.getUsedAddresses(),
166
+ this.getUnusedAddresses(),
167
+ this.getUtxos(),
168
+ this.getCollateral(),
169
+ ]);
164
170
 
165
171
  const result = {
166
172
  balanceMap: newBalanceMap,
167
173
  usedAddresses: newUsedAddresses,
168
174
  unusedAddresses: newUnusedAddresses,
169
175
  utxos: newOutputs,
176
+ collateral: newCollateral,
170
177
  network: newNetwork,
171
178
  };
172
179
 
@@ -490,6 +497,36 @@ export class WalletObserver<
490
497
  return data;
491
498
  };
492
499
 
500
+ /**
501
+ * Gets a list of wallet UTXOs suitable for collateral.
502
+ *
503
+ * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.
504
+ */
505
+ getCollateral = async (): Promise<TransactionUnspentOutput[] | undefined> => {
506
+ if (!this.api) {
507
+ throw new Error("Attempted to query UTXOs without an API instance.");
508
+ }
509
+
510
+ const [cbor, { Serialization }, { typedHex }] = await Promise.all([
511
+ this.api.getCollateral(),
512
+ getCardanoCore(),
513
+ getCardanoUtil(),
514
+ ]);
515
+
516
+ const data = cbor?.map((val) => {
517
+ let txOutput = Serialization.TransactionUnspentOutput.fromCbor(
518
+ typedHex(val)
519
+ );
520
+
521
+ // These methods must be bound to their initial creation instance.
522
+ txOutput.input = txOutput.input.bind(txOutput);
523
+ txOutput.output = txOutput.output.bind(txOutput);
524
+ return txOutput;
525
+ });
526
+
527
+ return data;
528
+ };
529
+
493
530
  /**
494
531
  * Resolves metadata for the given asset IDs, using a cached version if available.
495
532
  *
@@ -34,6 +34,7 @@ export const useWalletObserverState = (observer: WalletObserver) => {
34
34
  const [usedAddresses, setUsedAddresses] = useState<string[]>([]);
35
35
  const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);
36
36
  const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();
37
+ const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();
37
38
  const [ready, setReady] = useState(false);
38
39
  const [isCip45, setIsCip45] = useState(false);
39
40
 
@@ -52,6 +53,7 @@ export const useWalletObserverState = (observer: WalletObserver) => {
52
53
  setActiveWallet(undefined);
53
54
  setNetwork(undefined);
54
55
  setUtxos(undefined);
56
+ setCollateral(undefined);
55
57
  return;
56
58
  }
57
59
 
@@ -103,6 +105,16 @@ export const useWalletObserverState = (observer: WalletObserver) => {
103
105
  return prevValue;
104
106
  });
105
107
 
108
+ setCollateral((prevValue) => {
109
+ const prevValueRep = prevValue?.map((v) => v.toCbor());
110
+ const newValueRep = freshData.utxos?.map((v) => v.toCbor());
111
+ if (prevValueRep !== newValueRep) {
112
+ return freshData.utxos;
113
+ }
114
+
115
+ return prevValue;
116
+ });
117
+
106
118
  setReady(true);
107
119
  setIsCip45(newWallet.includes("p2p"));
108
120
  }, [observer]);
@@ -126,6 +138,8 @@ export const useWalletObserverState = (observer: WalletObserver) => {
126
138
  setUsedAddresses,
127
139
  utxos,
128
140
  setUtxos,
141
+ collateral,
142
+ setCollateral,
129
143
  syncWallet,
130
144
  ready,
131
145
  setReady,
@@ -61,6 +61,10 @@ export interface IWalletObserverState<
61
61
  balance: WalletBalanceMap<AssetMetadata>;
62
62
  utxos?: TransactionUnspentOutput[];
63
63
  setUtxos: Dispatch<SetStateAction<TransactionUnspentOutput[] | undefined>>;
64
+ collateral?: TransactionUnspentOutput[];
65
+ setCollateral: Dispatch<
66
+ SetStateAction<TransactionUnspentOutput[] | undefined>
67
+ >;
64
68
  setBalance: Dispatch<SetStateAction<WalletBalanceMap<AssetMetadata>>>;
65
69
  observer: WalletObserver;
66
70
  mainAddress?: string;
@@ -99,4 +103,5 @@ export type TUseWalletObserverState<
99
103
  | "setReady"
100
104
  | "setIsCip45"
101
105
  | "setUtxos"
106
+ | "setCollateral"
102
107
  >;
@@ -27,6 +27,7 @@ export const useWalletObserver = <
27
27
  stakeAddress: state.stakeAddress,
28
28
  network: state.network,
29
29
  utxos: state.utxos,
30
+ collateral: state.collateral,
30
31
  observer: state.observer,
31
32
  syncWallet: state.syncWallet,
32
33
  unusedAddresses: state.unusedAddresses,
@@ -46,6 +47,7 @@ export const useWalletObserver = <
46
47
  state.unusedAddresses,
47
48
  state.usedAddresses,
48
49
  state.utxos,
50
+ state.collateral,
49
51
  state.ready,
50
52
  state.isCip45,
51
53
  ]);