@sundaeswap/wallet-lite 0.0.14 → 0.0.16

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 (34) hide show
  1. package/dist/cjs/@types/observer.js.map +1 -1
  2. package/dist/cjs/classes/WalletObserver.class.js +73 -32
  3. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  4. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +30 -10
  5. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  6. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  7. package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
  8. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  9. package/dist/esm/@types/observer.js.map +1 -1
  10. package/dist/esm/classes/WalletObserver.class.js +26 -1
  11. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  12. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +12 -0
  13. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  14. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  15. package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
  16. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  17. package/dist/types/@types/observer.d.ts +3 -1
  18. package/dist/types/@types/observer.d.ts.map +1 -1
  19. package/dist/types/classes/WalletObserver.class.d.ts +7 -0
  20. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  21. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +3 -0
  22. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  23. package/dist/types/react-components/contexts/observer/types.d.ts +4 -1
  24. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  25. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  26. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +1 -1
  28. package/src/@types/observer.ts +12 -3
  29. package/src/__data__/eternl.ts +18 -0
  30. package/src/classes/WalletObserver.class.ts +35 -2
  31. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +15 -0
  32. package/src/react-components/__tests__/RenderWalletHandles.test.tsx +0 -7
  33. package/src/react-components/contexts/observer/types.ts +4 -0
  34. 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.14",
3
+ "version": "0.0.16",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -1,3 +1,4 @@
1
+ import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
1
2
  import type { Cip30WalletApi } from "@cardano-sdk/dapp-connector";
2
3
  import type { DAppPeerConnect } from "@fabianbormann/cardano-peer-connect";
3
4
  import type { DAppPeerConnectParameters } from "@fabianbormann/cardano-peer-connect/dist/src/types.js";
@@ -9,12 +10,19 @@ import { WalletBalanceMap } from "../classes/WalletBalanceMap.class.js";
9
10
  * A list of support CIP-30 wallet extensions in the browser.
10
11
  */
11
12
  export type TSupportedWalletExtensions =
13
+ | "nami"
12
14
  | "eternl"
13
- | "lace"
15
+ | "typhoncip30"
16
+ | "ccvault"
14
17
  | "typhon"
15
- | "sorbet"
18
+ | "yoroi"
16
19
  | "flint"
17
- | "nami";
20
+ | "gerowallet"
21
+ | "cardwallet"
22
+ | "nufi"
23
+ | "begin"
24
+ | "lace"
25
+ | "sorbet";
18
26
 
19
27
  /**
20
28
  * Interface to describe window extension.
@@ -92,5 +100,6 @@ export interface IWalletObserverSync<
92
100
  balanceMap: WalletBalanceMap<AssetMetadata>;
93
101
  usedAddresses: string[];
94
102
  unusedAddresses: string[];
103
+ utxos?: TransactionUnspentOutput[];
95
104
  network: number;
96
105
  }
@@ -133,3 +133,21 @@ export const balance =
133
133
  "821b00000004c09febb6b818581c06dd6a12db0a3eb41a9fa243dd53df588418d4819f245f36d8c45f49aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581c14e957a7799ee1feb0afe68a7abeb6f642832d28045e71fb0003b1cba1495454507265766965771b0000001878e4fd18581c2fe3c3364b443194b10954771c95819b8d6ed464033c21f03f8facb5a144695553441b0000000185d7560a581c4086577ed57c514f8e29b78f42ef4f379363355a3b65b9a032ee30c9a1446c70202d1a00bcd161581c44a1eb2d9f58add4eb1932bd0048e6a1947e85e3fe4f32956a110414a458200014df10035002e600d25a96003ecd1746007f59bac2788355687d18c79271191a00214ed558200014df102e74e6af9739616dd021f547bca1f68c937b566bb6ca2e4782e760011a0042f18658200014df10bd9437d9ec1a559d053f05dc38d337c32d1d0746952ea961f874c39a1abe4fb74958200014df10fe7606868521244f4a86d5e88ef483de7a441b286f4d751550518ff81a37c01cb3581c633a136877ed6ad0ab33e69a22611319673474c8bd0a79a4c76d9289a158200014df101750b21414d4198763ee4d442f5c03a295a13a6028def9be4a7854631a009ca627581c6c6011f808562c80d7d24b9462e3eec41bea9d96e3e7a51e620a061ea344425443621a97883a4d444a5059621b000019f16e3daf24464d41544943621b000000024dda5412581c8140c4b89428fc264e90b10c71c53a4c3f9ce52b676bf1d9b51eb9caa458200014df100ae1b3f34bfbf30e2fb38305f3a6c27aece138ba7febe13d5db3e1341a7960ea6b58200014df1034c2b9d553d3a74b3ac67cc8cefb423af0f77fc84664420090e099901a19c9dd1f58200014df105b3955db22793705b4e6f34871ef5429bace12e909fb1ccf862c60e91a0006d2ed58200014df108bf66e915c450ad94866abb02802821b599e32f43536a42470b21ea21a005bfec8581c824faecc3a7312f5cad0397dd9ffb96e15dd4cf6a3cf16e23d7352b3a1401b000000e8d4a51000581c919d4c2c9455016289341b1a14dedf697687af31751170d56a31466ea14874434c41524954591b000000cf898883f8581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15b14443484f431a01696cc444555344431a0bebc200465242455252591b000000ba8c6bfdef465342455252591b0000596460ffa1ed48544553545f4e4654014874526577617264731a203046184a546573744173736574311a009896804a546573744173736574321a009896804a546573744173736574331a009896804a546573744173736574341a009896804a546573744173736574351a009896804a546573744173736574361a009896804a546573744173736574371a009896804a546573744173736574381a009896804a546573744173736574391a009896804b54657374417373657431301a009884405153616c7361536f6c61726973233031343101581c99e7cd5c0aca25bc3e90be7e318326a188f913a07bbfe09b3bace0d4a1495454507265766965771b00000417d7b93b42581ca51963f936f00b0def70fc1196e70603cb95c85f18e836be6ba2ad8ba149446966667573696f6e1b000000016506cbcb581cb89bdcb78010912ce6e98c97d5ab38e8e62f3d0851cdca0811e4ae92aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cba0062b8f68bb8f80d4509e53d97a554381030b5e84832115376cb0aa148544553545f4e465401581ccaaaa4dd8b3b5c9dae65573cdb0bc2e989c43c3963d06b93d37687f1a150537461626c6520446966667573696f6e1a00273a8a581ccadd6bf1f7535eed785b01169b03fc800360b396ab5617b560fccd4ea448544553545f4e465401514e45574d5f566f74655f507265766965771b00002d794ca2a4225353616c7361536f6c61726973446973636f696e196d60554e45574d5f50726f706f73616c5f5072657669657702581cd35c752af635d9e9cb79aea44537a57a5ecd91e23133cd7f210f0070a1456d544f53491822581cd441227553a0f1a965fee7d60a0f724b368dd1bddbc208730fccebcfa1465242455252591a0167e3da581cd606298f0f892cce3f4df1585d3723f3817be8198abbc0c83bb89fadaa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cd805c13981d8b6b239ab4df3a3c6de653fcb426312b768e90304fa41a7581f46534e0f050513190d2dffcc8ea86a615c8cbb9690f367e439071e8d3a241c01581f46534e4bab725e4899fb4b628f8e4773fcdffcbd1b34666736d2a4d9935b6d01581f46534e6e12a1701cb5b4173e4e21bd8ffa98f4ccd2a9b90cc325f561d972f301581f46534e7ae7c9465ccc850e25cacec07820883be9e1a972931511d63d078d9401581f46534e7fa42f43b2d7e1a9d8e3276f68d37b9b8a0746991b3f7a420673aca001581f46534eb0158422435c0130845b3141353463420e28f42696c18cef305a7c3101581f46534efeae1e5d3310dab9193f315e3124e97fc462b0b523b545e235c4704b01581cd8906ca5c7ba124a0407a32dab37b2c82b13b3dcd9111e42940dcea4a1480014df105553444d1b00000037e11d5fff581cf99a0cc5bac393156aa088bbe28993679feb59de74ccdb0c8586213aa158200014df10fc2c4a6ae8048b0b5affc169dfd496a7ace7d08288c476d9d7a5804e1a000f4240581cfa3eff2047fdf9293c5feef4dc85ce58097ea1c6da4845a351535183a14574494e44591a0fbd2529";
134
134
 
135
135
  export const network = 0;
136
+
137
+ export const utxos = [
138
+ "828258202ffa2cb637456ddc2326ff71ca525cc3c066b74aa0e7251df708640280782a6f0082583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01ab2d05e00",
139
+ "82825820739753ecb91d7ca749748e789f114db73650d70ee3241fb937abe8dba37dcb920182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a1d56b205a1581c44a1eb2d9f58add4eb1932bd0048e6a1947e85e3fe4f32956a110414a158200014df10035002e600d25a96003ecd1746007f59bac2788355687d18c79271191a00214ed5",
140
+ "8282582068869e3b2181917a443240a11e865352010138b63b60fb28869779cdd459c07c0182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a1109e7c0a1581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15a1465242455252591a00603449",
141
+ "82825820e44e2b827ba57ea87f9b1ae58baec750043977b6df6c7723a012cb2c56518fe90282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01a071fdcc0",
142
+ "828258207726e613624ffd58855e14c5763ef878964e16271b77a778ceefd1ceedb0fcd20282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01a62d293a6",
143
+ "828258206ea2f82ee156e9106b1e47b766e2f61a1c19c8b61eeb24e91cce465655c5ec610282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01ac93d1fc5",
144
+ "828258207731bd825b2d67f41bf183711886036290d464a3653a7298fba2712f9dfc8b970182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a004efdeea1581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15a1465242455252591a2239d241",
145
+ "828258208be1eb6f5d2b8f9a5d3e507f9f63d99264072a12e2db165f4516d406a0c01dfc0282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01b0000000293c615e3",
146
+ "828258205b79717fb587c46c69d95e178867c6c5dd0e61212bbe5ee4a44b9eb097413f4d0282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01a0dcb3190",
147
+ "82825820626e9e5265e5c4ee3ced0041772a84cb53e531eda12f78908ff2cc4caf2ac7a40282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a00bb51faa1581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15a1465242455252591a092dfde0",
148
+ "82825820aa46ff8f84d0e49fe4a0dffaff29247c7fc7c53b96012e016accab016fb51d300182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a00b2c014b818581c06dd6a12db0a3eb41a9fa243dd53df588418d4819f245f36d8c45f49aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581c14e957a7799ee1feb0afe68a7abeb6f642832d28045e71fb0003b1cba1495454507265766965771b0000001878e4fd18581c2fe3c3364b443194b10954771c95819b8d6ed464033c21f03f8facb5a144695553441b0000000185d7560a581c4086577ed57c514f8e29b78f42ef4f379363355a3b65b9a032ee30c9a1446c70202d1a00bcd161581c44a1eb2d9f58add4eb1932bd0048e6a1947e85e3fe4f32956a110414a358200014df102e74e6af9739616dd021f547bca1f68c937b566bb6ca2e4782e760011a0042f18658200014df10bd9437d9ec1a559d053f05dc38d337c32d1d0746952ea961f874c39a1abe4fb74958200014df10fe7606868521244f4a86d5e88ef483de7a441b286f4d751550518ff81a37c01cb3581c633a136877ed6ad0ab33e69a22611319673474c8bd0a79a4c76d9289a158200014df101750b21414d4198763ee4d442f5c03a295a13a6028def9be4a7854631a009ca627581c6c6011f808562c80d7d24b9462e3eec41bea9d96e3e7a51e620a061ea344425443621a97883a4d444a5059621b000019f16e3daf24464d41544943621b000000024dda5412581c8140c4b89428fc264e90b10c71c53a4c3f9ce52b676bf1d9b51eb9caa458200014df100ae1b3f34bfbf30e2fb38305f3a6c27aece138ba7febe13d5db3e1341a7960ea6b58200014df1034c2b9d553d3a74b3ac67cc8cefb423af0f77fc84664420090e099901a19c9dd1f58200014df105b3955db22793705b4e6f34871ef5429bace12e909fb1ccf862c60e91a0006d2ed58200014df108bf66e915c450ad94866abb02802821b599e32f43536a42470b21ea21a005bfec8581c824faecc3a7312f5cad0397dd9ffb96e15dd4cf6a3cf16e23d7352b3a1401b000000e8d4a51000581c919d4c2c9455016289341b1a14dedf697687af31751170d56a31466ea14874434c41524954591b000000cf898883f8581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15b14443484f431a01696cc444555344431a0bebc200465242455252591b000000ba5b74e529465342455252591b0000596460ffa1ed48544553545f4e4654014874526577617264731a203046184a546573744173736574311a009896804a546573744173736574321a009896804a546573744173736574331a009896804a546573744173736574341a009896804a546573744173736574351a009896804a546573744173736574361a009896804a546573744173736574371a009896804a546573744173736574381a009896804a546573744173736574391a009896804b54657374417373657431301a009884405153616c7361536f6c61726973233031343101581c99e7cd5c0aca25bc3e90be7e318326a188f913a07bbfe09b3bace0d4a1495454507265766965771b00000417d7b93b42581ca51963f936f00b0def70fc1196e70603cb95c85f18e836be6ba2ad8ba149446966667573696f6e1b000000016506cbcb581cb89bdcb78010912ce6e98c97d5ab38e8e62f3d0851cdca0811e4ae92aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cba0062b8f68bb8f80d4509e53d97a554381030b5e84832115376cb0aa148544553545f4e465401581ccaaaa4dd8b3b5c9dae65573cdb0bc2e989c43c3963d06b93d37687f1a150537461626c6520446966667573696f6e1a00273a8a581ccadd6bf1f7535eed785b01169b03fc800360b396ab5617b560fccd4ea448544553545f4e465401514e45574d5f566f74655f507265766965771b00002d794ca2a4225353616c7361536f6c61726973446973636f696e196d60554e45574d5f50726f706f73616c5f5072657669657702581cd35c752af635d9e9cb79aea44537a57a5ecd91e23133cd7f210f0070a1456d544f53491822581cd441227553a0f1a965fee7d60a0f724b368dd1bddbc208730fccebcfa1465242455252591a0167e3da581cd606298f0f892cce3f4df1585d3723f3817be8198abbc0c83bb89fadaa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cd805c13981d8b6b239ab4df3a3c6de653fcb426312b768e90304fa41a7581f46534e0f050513190d2dffcc8ea86a615c8cbb9690f367e439071e8d3a241c01581f46534e4bab725e4899fb4b628f8e4773fcdffcbd1b34666736d2a4d9935b6d01581f46534e6e12a1701cb5b4173e4e21bd8ffa98f4ccd2a9b90cc325f561d972f301581f46534e7ae7c9465ccc850e25cacec07820883be9e1a972931511d63d078d9401581f46534e7fa42f43b2d7e1a9d8e3276f68d37b9b8a0746991b3f7a420673aca001581f46534eb0158422435c0130845b3141353463420e28f42696c18cef305a7c3101581f46534efeae1e5d3310dab9193f315e3124e97fc462b0b523b545e235c4704b01581cd8906ca5c7ba124a0407a32dab37b2c82b13b3dcd9111e42940dcea4a1480014df105553444d1b00000037e11d5fff581cf99a0cc5bac393156aa088bbe28993679feb59de74ccdb0c8586213aa158200014df10fc2c4a6ae8048b0b5affc169dfd496a7ace7d08288c476d9d7a5804e1a000f4240581cfa3eff2047fdf9293c5feef4dc85ce58097ea1c6da4845a351535183a14574494e44591a0fbd2529",
149
+ "82825820aa46ff8f84d0e49fe4a0dffaff29247c7fc7c53b96012e016accab016fb51d300282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01a012ec474",
150
+ "82825820babbe340a5ab0d5a9d7d7b68644e49cf807de321d87e9f21e47eff5d62ff03df0282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a00775e20a1581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15a1465242455252591a052f145c",
151
+ "82825820a2eea54d0d54c0bd120dfe28b28da6770938764ef6a9e421ff136e67720f72630182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01a05ac1642",
152
+ "82825820e0828e37187b0aace1aae10a207f4603efee98d31f9fb0335c211c510f55bb360282583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a001ef94aa1581c4086577ed57c514f8e29b78f42ef4f379363355a3b65b9a032ee30c9a1446c7020021a0043e171",
153
+ ];
@@ -1,7 +1,8 @@
1
+ import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
1
2
  import type { Cip30WalletApi } from "@cardano-sdk/dapp-connector";
2
3
  import { AssetAmount, type IAssetAmountMetadata } from "@sundaeswap/asset";
3
-
4
4
  import merge from "lodash/merge.js";
5
+
5
6
  import { EWalletObserverEvents } from "../@types/events.js";
6
7
  import type {
7
8
  IResolvedWalletObserverOptions,
@@ -153,17 +154,19 @@ export class WalletObserver<
153
154
  }
154
155
  }
155
156
 
156
- const [newBalanceMap, newUsedAddresses, newUnusedAddresses] =
157
+ const [newBalanceMap, newUsedAddresses, newUnusedAddresses, newOutputs] =
157
158
  await Promise.all([
158
159
  this.getBalanceMap(),
159
160
  this.getUsedAddresses(),
160
161
  this.getUnusedAddresses(),
162
+ this.getUtxos(),
161
163
  ]);
162
164
 
163
165
  const result = {
164
166
  balanceMap: newBalanceMap,
165
167
  usedAddresses: newUsedAddresses,
166
168
  unusedAddresses: newUnusedAddresses,
169
+ utxos: newOutputs,
167
170
  network: newNetwork,
168
171
  };
169
172
 
@@ -457,6 +460,36 @@ export class WalletObserver<
457
460
  return data;
458
461
  };
459
462
 
463
+ /**
464
+ * Gets a list of wallet UTXOs.
465
+ *
466
+ * @returns {Promise<TransactionUnspentOutput[]>} The list of TransactionUnspentOutputs.
467
+ */
468
+ getUtxos = async (): Promise<TransactionUnspentOutput[] | undefined> => {
469
+ if (!this.api) {
470
+ throw new Error("Attempted to query UTXOs without an API instance.");
471
+ }
472
+
473
+ const [cbor, { Serialization }, { typedHex }] = await Promise.all([
474
+ this.api.getUtxos(),
475
+ getCardanoCore(),
476
+ getCardanoUtil(),
477
+ ]);
478
+
479
+ const data = cbor?.map((val) => {
480
+ let txOutput = Serialization.TransactionUnspentOutput.fromCbor(
481
+ typedHex(val)
482
+ );
483
+
484
+ // These methods must be bound to their initial creation instance.
485
+ txOutput.input = txOutput.input.bind(txOutput);
486
+ txOutput.output = txOutput.output.bind(txOutput);
487
+ return txOutput;
488
+ });
489
+
490
+ return data;
491
+ };
492
+
460
493
  /**
461
494
  * Resolves metadata for the given asset IDs, using a cached version if available.
462
495
  *
@@ -1,3 +1,4 @@
1
+ import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
1
2
  import { AssetAmount } from "@sundaeswap/asset";
2
3
  import { useCallback, useRef, useState } from "react";
3
4
 
@@ -32,6 +33,7 @@ export const useWalletObserverState = (observer: WalletObserver) => {
32
33
  const [network, setNetwork] = useState<number | undefined>();
33
34
  const [usedAddresses, setUsedAddresses] = useState<string[]>([]);
34
35
  const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);
36
+ const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();
35
37
  const [ready, setReady] = useState(false);
36
38
  const [isCip45, setIsCip45] = useState(false);
37
39
 
@@ -49,6 +51,7 @@ export const useWalletObserverState = (observer: WalletObserver) => {
49
51
  setUnusedAddresses([]);
50
52
  setActiveWallet(undefined);
51
53
  setNetwork(undefined);
54
+ setUtxos(undefined);
52
55
  return;
53
56
  }
54
57
 
@@ -90,6 +93,16 @@ export const useWalletObserverState = (observer: WalletObserver) => {
90
93
  prevValue === freshData.network ? prevValue : freshData.network
91
94
  );
92
95
 
96
+ setUtxos((prevValue) => {
97
+ const prevValueRep = prevValue?.map((v) => v.toCbor());
98
+ const newValueRep = freshData.utxos?.map((v) => v.toCbor());
99
+ if (prevValueRep !== newValueRep) {
100
+ return freshData.utxos;
101
+ }
102
+
103
+ return prevValue;
104
+ });
105
+
93
106
  setReady(true);
94
107
  setIsCip45(newWallet.includes("p2p"));
95
108
  }, [observer]);
@@ -111,6 +124,8 @@ export const useWalletObserverState = (observer: WalletObserver) => {
111
124
  setUnusedAddresses,
112
125
  usedAddresses,
113
126
  setUsedAddresses,
127
+ utxos,
128
+ setUtxos,
114
129
  syncWallet,
115
130
  ready,
116
131
  setReady,
@@ -50,13 +50,6 @@ describe("RenderWalletHandles", () => {
50
50
  () => async () => mockHandleMetadata
51
51
  );
52
52
 
53
- // Necessary because we are mocking transitions and this will return false.
54
- // const spiedOnUseDerivedState = spyOn(derivedStateHook, "useDerivedState");
55
- // spiedOnUseDerivedState.mockImplementation(() => ({
56
- // mainAddress: "0c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d00",
57
- // stakeAddress: "",
58
- // }));
59
-
60
53
  const { container, getByTestId, queryByTestId, rerender } = render(
61
54
  <RenderWalletHandles render={TestComponent} />,
62
55
  {
@@ -1,3 +1,4 @@
1
+ import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
1
2
  import type { IHandle } from "@koralabs/adahandle-sdk";
2
3
  import type { AssetAmount, IAssetAmountMetadata } from "@sundaeswap/asset";
3
4
  import type { Dispatch, MutableRefObject, SetStateAction } from "react";
@@ -58,6 +59,8 @@ export interface IWalletObserverState<
58
59
  >;
59
60
  adaBalance: AssetAmount<AssetMetadata>;
60
61
  balance: WalletBalanceMap<AssetMetadata>;
62
+ utxos?: TransactionUnspentOutput[];
63
+ setUtxos: Dispatch<SetStateAction<TransactionUnspentOutput[] | undefined>>;
61
64
  setBalance: Dispatch<SetStateAction<WalletBalanceMap<AssetMetadata>>>;
62
65
  observer: WalletObserver;
63
66
  mainAddress?: string;
@@ -95,4 +98,5 @@ export type TUseWalletObserverState<
95
98
  | "setUsedAddresses"
96
99
  | "setReady"
97
100
  | "setIsCip45"
101
+ | "setUtxos"
98
102
  >;
@@ -26,6 +26,7 @@ export const useWalletObserver = <
26
26
  mainAddress: state.mainAddress,
27
27
  stakeAddress: state.stakeAddress,
28
28
  network: state.network,
29
+ utxos: state.utxos,
29
30
  observer: state.observer,
30
31
  syncWallet: state.syncWallet,
31
32
  unusedAddresses: state.unusedAddresses,
@@ -44,6 +45,7 @@ export const useWalletObserver = <
44
45
  state.syncWallet,
45
46
  state.unusedAddresses,
46
47
  state.usedAddresses,
48
+ state.utxos,
47
49
  state.ready,
48
50
  state.isCip45,
49
51
  ]);