@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.
- package/dist/cjs/classes/WalletObserver.class.js +73 -32
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +30 -10
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/esm/classes/WalletObserver.class.js +26 -1
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +12 -0
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/types/classes/WalletObserver.class.d.ts +6 -0
- package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +2 -0
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
- package/dist/types/react-components/contexts/observer/types.d.ts +3 -1
- package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/classes/WalletObserver.class.ts +44 -7
- package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +14 -0
- package/src/react-components/contexts/observer/types.ts +5 -0
- package/src/react-components/hooks/useWalletObserver.ts +2 -0
package/package.json
CHANGED
|
@@ -154,19 +154,26 @@ export class WalletObserver<
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
const [
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
]);
|