1use std::collections::HashMap;
5
6use serde::{Deserialize, Serialize};
7use serde_with::{IfIsHumanReadable, serde_as};
8use sui_sdk_types::{Address, Digest, EpochId, Version};
9
10use super::Page;
11use crate::serde::BigInt;
12
13pub type CoinPage = Page<Coin, String>;
14
15#[serde_as]
16#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
17#[serde(rename_all = "camelCase")]
18pub struct Balance {
19 pub coin_type: String,
20 pub coin_object_count: usize,
21 #[serde_as(as = "BigInt<u128>")]
22 pub total_balance: u128,
23 #[serde_as(as = "HashMap<BigInt<u64>, BigInt<u128>>")]
24 pub locked_balance: HashMap<EpochId, u128>,
25}
26
27impl Balance {
28 pub fn zero(coin_type: String) -> Self {
29 Self {
30 coin_type,
31 coin_object_count: 0,
32 total_balance: 0,
33 locked_balance: HashMap::new(),
34 }
35 }
36}
37
38#[serde_as]
39#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
40#[serde(rename_all = "camelCase")]
41pub struct Coin {
42 pub coin_type: String,
43 pub coin_object_id: Address,
44 #[serde_as(as = "BigInt<u64>")]
45 pub version: Version,
46 pub digest: Digest,
47 #[serde_as(as = "BigInt<u64>")]
48 pub balance: u64,
49 pub previous_transaction: Digest,
50}
51
52impl Coin {
53 pub fn object_ref(&self) -> (Address, Version, Digest) {
54 (self.coin_object_id, self.version, self.digest)
55 }
56}
57
58#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
59#[serde(rename_all = "camelCase")]
60pub struct SuiCoinMetadata {
61 pub decimals: u8,
63 pub name: String,
65 pub symbol: String,
67 pub description: String,
69 pub icon_url: Option<String>,
71 pub id: Option<Address>,
73}
74
75#[serde_as]
77#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq)]
78pub struct Supply {
79 #[serde_as(as = "IfIsHumanReadable<BigInt<u64>, _>")]
80 pub value: u64,
81}
82
83#[cfg(test)]
84mod tests {
85 use super::CoinPage;
86
87 #[test]
88 fn coin_page_json() {
89 let value = serde_json::json!({
90 "data": [
91 {
92 "coinType": "0x2::sui::SUI",
93 "coinObjectId": "0x778e75c813cc7bf615a3477b5c2e5cc4364cde735b80c43597ec8175fd943671",
94 "version": "364688977",
95 "digest": "7yc3F75UbHU9Qshf951zmbkQ7rgQmE8r1YRKGTbmLJ2f",
96 "balance": "9998727478293",
97 "previousTransaction": "CQHxo6mn7zNQX11guHTUPNa5PMhCvodhmoz982PFnErX"
98 },
99 {
100 "coinType": "0x2::sui::SUI",
101 "coinObjectId": "0x15be68e1baa31868d463e0676fa46e1fb6b0f51063d804e857f0113d2920c67a",
102 "version": "204442968",
103 "digest": "4YBFFvLDMhuQPsLtENqfGsvAcV4mDqzaiZBvhJ7KdjiH",
104 "balance": "996650164",
105 "previousTransaction": "HsstpwxjrXBJCf5eqSzV7asXnE2e2JVDYQxCNtzEiDHG"
106 },
107 {
108 "coinType": "0x2::sui::SUI",
109 "coinObjectId": "0x4aca24029ffb5583adc4e9a298244ced3faf6827412269aa1ea0feb89038f0be",
110 "version": "281343209",
111 "digest": "5zSTxMKJABvj31nw5ZYrffwU6Adeiu5vcNsP2h55JNFU",
112 "balance": "995220764",
113 "previousTransaction": "HLY1QY8okXbXmPGKvdpYSgTvZyjgJECpiXjQNQTnBiQj"
114 },
115 {
116 "coinType": "0x2::sui::SUI",
117 "coinObjectId": "0xbe02f79a382915959c457880f12f03b1ec475d3084795fc014c4f43e50e5afe6",
118 "version": "169438719",
119 "digest": "ApvnC81FCi71JhMnZjBn1y1NN6Lw279j2NiG1ehvtDhM",
120 "balance": "993603580",
121 "previousTransaction": "F9u1PgGAyaBkKYGs8r7L8zjTJxa6SwamuzpTxEjUyizy"
122 },
123 {
124 "coinType": "0x2::sui::SUI",
125 "coinObjectId": "0x89f6504590d43becf58fd949772e609731bffbd72e6ac5521357b12a0b2fc2d2",
126 "version": "204443012",
127 "digest": "2soVvf43GDoEUvNy2sSYxbmwketGdS6fU65H1Ze4BqJD",
128 "balance": "320804480",
129 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
130 },
131 {
132 "coinType": "0x2::sui::SUI",
133 "coinObjectId": "0x00c4eaac095d54118eba1ba78c1f7e59b42620e070baeb6b7ff2ee481ccda314",
134 "version": "204443010",
135 "digest": "7H3SutEWwU5uJSx6AB2vAUCRz9QdrAvfJU2f4DXVUQiX",
136 "balance": "100000000",
137 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
138 },
139 {
140 "coinType": "0x2::sui::SUI",
141 "coinObjectId": "0x00d3f6aa6e02253f6f8f128af2772be4922d28b38909746bc3aee9528fd02c1f",
142 "version": "204443012",
143 "digest": "mBS7PgFZ3kEWXdEjf9H87zLXAXusUm33zP4hvf2c6PN",
144 "balance": "100000000",
145 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
146 },
147 {
148 "coinType": "0x2::sui::SUI",
149 "coinObjectId": "0x01180d0165e367f8cae862e2f8bb31db099de3127cac2e015f482a330ad53f0c",
150 "version": "204443011",
151 "digest": "9o9fNdXkgQ1Q9obzPXnRykrADrfvXYEVkpHihBh3bkAW",
152 "balance": "100000000",
153 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
154 },
155 {
156 "coinType": "0x2::sui::SUI",
157 "coinObjectId": "0x011bf3b329893627c875da9136af03dd4c80a0b50df80b620317d72f867a57a5",
158 "version": "204443011",
159 "digest": "HbGQS5rvjrZ7Kb5rGtuqqhyQzDwzQca7ZwTqqXejWgny",
160 "balance": "100000000",
161 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
162 },
163 {
164 "coinType": "0x2::sui::SUI",
165 "coinObjectId": "0x0137cbf95c63ad3f5eebcb3ce00eddb2469c033b84aa652853fa3f8ab1673e91",
166 "version": "204443009",
167 "digest": "BrrqeYcBhYXXQTNVb93fD5XBMT8qkLKzMjcWnhc6HQxF",
168 "balance": "100000000",
169 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
170 },
171 {
172 "coinType": "0x2::sui::SUI",
173 "coinObjectId": "0x0142b2b7a38fbbe2be62c367d475960ec59d4a1f270d51d575ff477ac833e331",
174 "version": "204443009",
175 "digest": "E2JFhJuutsVYp6AfcWnLT6UBydfHc7fQQA6t3AMJ1YEV",
176 "balance": "100000000",
177 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
178 },
179 {
180 "coinType": "0x2::sui::SUI",
181 "coinObjectId": "0x014a72c032016a3e735b1b3c87ac63b7b56ece83a70074d69ffd334a5b890dbb",
182 "version": "204443009",
183 "digest": "5nLWKmLfbBZZJ54UFV3FUgWycLj5VSvno7oYsM5xcn5r",
184 "balance": "100000000",
185 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
186 },
187 {
188 "coinType": "0x2::sui::SUI",
189 "coinObjectId": "0x01ee86bd47d7e193b22f63475b62bb7b4c86dcbd245ad835116d450fc5002d0c",
190 "version": "204443009",
191 "digest": "59iohfduZsQMUXiNZgY36y5kyaZqTYoEPpRHvJXqCyMA",
192 "balance": "100000000",
193 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
194 },
195 {
196 "coinType": "0x2::sui::SUI",
197 "coinObjectId": "0x01fb41a94580b9815ab5b64f909b5c76e57648dffa17a46902e854735c7b2664",
198 "version": "204443009",
199 "digest": "A9f9GxA4ceAhRetrDDg9gQEdt6yBJKr1CAikYHChcbUv",
200 "balance": "100000000",
201 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
202 },
203 {
204 "coinType": "0x2::sui::SUI",
205 "coinObjectId": "0x020c674a7dfe642fab957ae1781a72e220b7e4e161dac134be3ee21c67397659",
206 "version": "204443010",
207 "digest": "3jFHQm2pUcZvFdRmBrQiqfPQtUi2oyAbRUHNHXRTiWRp",
208 "balance": "100000000",
209 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
210 },
211 {
212 "coinType": "0x2::sui::SUI",
213 "coinObjectId": "0x0302b7bfeb5523014f9293d86ad63da8a4e85d7397b58c9488c7279b571608e8",
214 "version": "204443009",
215 "digest": "C1V1zxgv42UdkUEMxQy3aSeE7CqWpw1RHZaswW377Bco",
216 "balance": "100000000",
217 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
218 },
219 {
220 "coinType": "0x2::sui::SUI",
221 "coinObjectId": "0x035d124b3577893985e3def4f7822178ffce315b010250148cb4d9fe4eb26fbd",
222 "version": "204443012",
223 "digest": "C7L7hhpNavzyrEHSFa3vMd84dPomMmA27nT5mQoj7wC7",
224 "balance": "100000000",
225 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
226 },
227 {
228 "coinType": "0x2::sui::SUI",
229 "coinObjectId": "0x037c3b0c4604963cf7e5b96b9e692045961d1871c8ebbc0eb5e06cb3c5641239",
230 "version": "204443011",
231 "digest": "6a36ybzpPogNRfcdJ8CSeEwUFBjEpZPBEmZUwXgHxgdQ",
232 "balance": "100000000",
233 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
234 },
235 {
236 "coinType": "0x2::sui::SUI",
237 "coinObjectId": "0x039783a068009f91dcd4ef048626834b9a0fbb9d75ec6c3aefde2e4a68940340",
238 "version": "204443012",
239 "digest": "31b4YUjmo25h4SHP4hc5JhMRZ2Lpak1AjfNmLQJFxDhc",
240 "balance": "100000000",
241 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
242 },
243 {
244 "coinType": "0x2::sui::SUI",
245 "coinObjectId": "0x03bb15c8b1efb827c0f05a8ca90c4629bcf7eac577f021d3be26356543664e7d",
246 "version": "204443010",
247 "digest": "HVWRpHFmmqaPXvPcZ4bcEyCV6hJ5pCgqnZX3ZANfsiPP",
248 "balance": "100000000",
249 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
250 },
251 {
252 "coinType": "0x2::sui::SUI",
253 "coinObjectId": "0x03c9ab723d12ed8096e5e9bbfa171ae79de975bc1519d054b52e50f93566519c",
254 "version": "204443011",
255 "digest": "7A17g6F3XSdBPuZ6UPJmepQdJBovmmcS4PETH8pusHDt",
256 "balance": "100000000",
257 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
258 },
259 {
260 "coinType": "0x2::sui::SUI",
261 "coinObjectId": "0x03ce6f9849e55f20699b32df05d2b31bb69affe67c74a1e655d287430d08b86a",
262 "version": "204443011",
263 "digest": "FWaFBi4tEMEV2ca54KYpBCGd7xoYqNcyzWmjZbrcD5mW",
264 "balance": "100000000",
265 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
266 },
267 {
268 "coinType": "0x2::sui::SUI",
269 "coinObjectId": "0x040363647d1f837eedd65712144ec12b0d08d3f9843fe88260c738dea483c191",
270 "version": "204443009",
271 "digest": "AyQAViL6gkkg2bUojgP2tNcSxtUe1HhSvvAyqvmYdgvk",
272 "balance": "100000000",
273 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
274 },
275 {
276 "coinType": "0x2::sui::SUI",
277 "coinObjectId": "0x04078b551cc46943c62e138ee84a5b74c4572afc2a7ceadce2db87362d7d3fbd",
278 "version": "204443010",
279 "digest": "HtahaMU1PShZU52dnnte9wz6wjym2JrUdQe94H363g3V",
280 "balance": "100000000",
281 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
282 },
283 {
284 "coinType": "0x2::sui::SUI",
285 "coinObjectId": "0x04223a97a52778a930caeac1095064c9992145bf6c736acd67c215c3b749dc85",
286 "version": "204443009",
287 "digest": "9Wis1StoPER6VQKF4niT2Et5AWFKrQCC1xF4vBuwTZiY",
288 "balance": "100000000",
289 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
290 },
291 {
292 "coinType": "0x2::sui::SUI",
293 "coinObjectId": "0x043527fbcd0a98dfcd24a553c16c2e424a6c0eb511cd28c7a0fd0dcc0cae7db5",
294 "version": "204443009",
295 "digest": "7WMkbHnFRqyu6bh7j9aC87sZT7dv3v5fN7rt9tSx3RFD",
296 "balance": "100000000",
297 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
298 },
299 {
300 "coinType": "0x2::sui::SUI",
301 "coinObjectId": "0x043d85bc1fd4e22da944c2aadb079c42baa8f412cb2ada9495768b2760000dbf",
302 "version": "204443011",
303 "digest": "6TfSFvfyAbrP86xB18YY3DSoy2KqHxj2gg8Dg4XWrqfK",
304 "balance": "100000000",
305 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
306 },
307 {
308 "coinType": "0x2::sui::SUI",
309 "coinObjectId": "0x046a3e3af89ac4787770aa5528b1e920812a1ec012aefba05799f1f45cede1d7",
310 "version": "204443009",
311 "digest": "8DSbVPCKABx7P5cY8LxNWiXyZhcKju5vUbTRRgqh49NL",
312 "balance": "100000000",
313 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
314 },
315 {
316 "coinType": "0x2::sui::SUI",
317 "coinObjectId": "0x04f907b30aa0fe2168d887c7e8971944a48bee5fb810d6a07ff4c944665d964c",
318 "version": "204443012",
319 "digest": "Ge4ZBwXFyfMXj1Fe9GurS5RTHwY29a3jo6Fu7AB3QEtX",
320 "balance": "100000000",
321 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
322 },
323 {
324 "coinType": "0x2::sui::SUI",
325 "coinObjectId": "0x05001d2eb977205bdb6e928a374adaa67049b0f2e42b1c8ca51649fba7ec8c2a",
326 "version": "204443009",
327 "digest": "8ScwnnePv1A6Gjw2CKs6VDuvDSEtyfWcJyDLCk8a2SiY",
328 "balance": "100000000",
329 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
330 },
331 {
332 "coinType": "0x2::sui::SUI",
333 "coinObjectId": "0x050ac19b018586da46bbb980d2a60d5cc1e34059a9da7b1a8365bb4129d98b8f",
334 "version": "204443009",
335 "digest": "GUnP1FZ89C8gMCz864SyqeUnFEAAAUXfcWTZUw8bBrrG",
336 "balance": "100000000",
337 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
338 },
339 {
340 "coinType": "0x2::sui::SUI",
341 "coinObjectId": "0x051fe3a93a08feaa0321702eda9c17484cc33f139be93b19fba6ec0e386b2e7b",
342 "version": "204443009",
343 "digest": "43mCkekG6meCs1srwrCnQkSm5zyH9MaUUyHPMD4u2GN4",
344 "balance": "100000000",
345 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
346 },
347 {
348 "coinType": "0x2::sui::SUI",
349 "coinObjectId": "0x052078a0212f3589d0b7a605377edbdd35c8728c7ec1dfe5ac68020bbd213e74",
350 "version": "204443011",
351 "digest": "9Av7girBZB9nRMidT485NtbihgALzjnQ2KVk9XGKG3PJ",
352 "balance": "100000000",
353 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
354 },
355 {
356 "coinType": "0x2::sui::SUI",
357 "coinObjectId": "0x05314165d8133f713f95164af7566e4d21a25bca64d0dea55355f66ed5913ee4",
358 "version": "204443009",
359 "digest": "4hn3chb1uXvYqYDMAtrQLPyPMxE7fQA3ceQTYjiaVF3D",
360 "balance": "100000000",
361 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
362 },
363 {
364 "coinType": "0x2::sui::SUI",
365 "coinObjectId": "0x054c752dcc8ecd01c57c0f6238d923a343be7f4b5caff289b3b18aa828e94c2e",
366 "version": "204443010",
367 "digest": "4ZyXKGvoVrgRt8MXzFoLV2Lo6Cau4f9JVaV2HKvQ5am8",
368 "balance": "100000000",
369 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
370 },
371 {
372 "coinType": "0x2::sui::SUI",
373 "coinObjectId": "0x0571b0dc38a486690c350b00a4fa1d3715de639eaea44da358abb3cbf6bfdff3",
374 "version": "204443010",
375 "digest": "3n1pvJgv71Rm7KndZHEdrF3WhdfTdMkzMEYsqTrvqeuJ",
376 "balance": "100000000",
377 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
378 },
379 {
380 "coinType": "0x2::sui::SUI",
381 "coinObjectId": "0x057b88851b9e39d0f718ddb93213c59195104266d40ee403861097de67cadd12",
382 "version": "204443009",
383 "digest": "8ov5nQehtR7X85hmw7jmyc2qvFB8jM9BgXQGXa1Ht1z5",
384 "balance": "100000000",
385 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
386 },
387 {
388 "coinType": "0x2::sui::SUI",
389 "coinObjectId": "0x05a0295f2e2b20131537040d84a03057b044cb8fc35d9e2707e827daaa103e43",
390 "version": "204443009",
391 "digest": "8h94mavAQ3PD3N2XT2RqzPNdZhid4tYcnbg2RGDMJoFc",
392 "balance": "100000000",
393 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
394 },
395 {
396 "coinType": "0x2::sui::SUI",
397 "coinObjectId": "0x060106721f9a27d742b4d6dfe8cf240d1088807ac884f81297e80db07933b72e",
398 "version": "204443009",
399 "digest": "95MZwBssgeR4Ap2LsuqxM798XxrTXZNRftL9V45fCfbL",
400 "balance": "100000000",
401 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
402 },
403 {
404 "coinType": "0x2::sui::SUI",
405 "coinObjectId": "0x074964684593b5db26c7bedd364eb04358e031533264e37fa4630ad84b72c4db",
406 "version": "204443009",
407 "digest": "A1dsMg84rTkPuGy35eYvfQPMwHyhWKD5MajhGHyDTeV7",
408 "balance": "100000000",
409 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
410 },
411 {
412 "coinType": "0x2::sui::SUI",
413 "coinObjectId": "0x07912db60cc3872aa8e5d72442fd1a5bf716d56fe49e35656f5f671ddadda32f",
414 "version": "204443010",
415 "digest": "Hb6vHTUm7zWE7BadXDfebGwiA4qZx2XUWct57BTWZWpE",
416 "balance": "100000000",
417 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
418 },
419 {
420 "coinType": "0x2::sui::SUI",
421 "coinObjectId": "0x07f5770a3a77bb38ac14a047eed5eef48b17e6a215f803e3b55a5b85185f8df3",
422 "version": "204443009",
423 "digest": "HVVyCc5cmthowwiy1yqoRLbHb9gaZXzNdTebYXu6DEYa",
424 "balance": "100000000",
425 "previousTransaction": "ErMm3QXPzdk6hnWDnm4ikvzGqEoLptGNRbXxf4hetxfZ"
426 },
427 {
428 "coinType": "0x2::sui::SUI",
429 "coinObjectId": "0x07fa317c23168c9323c6cac95f25ef56a3c99aa05c641934601d24a09553e647",
430 "version": "204443012",
431 "digest": "9oH5MfTXX7ofLpLQFvUbPTgAVt5uk731WiHJMsXPX7fT",
432 "balance": "100000000",
433 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
434 },
435 {
436 "coinType": "0x2::sui::SUI",
437 "coinObjectId": "0x08331c331296daeedf0db448ab5ea214208c1b5c325fe2a6f3fd3a97515d93a4",
438 "version": "204443009",
439 "digest": "CqbRHiAyxMuzbf8jpGEQa781628mY3KDY4eU1EnHWYha",
440 "balance": "100000000",
441 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
442 },
443 {
444 "coinType": "0x2::sui::SUI",
445 "coinObjectId": "0x0843c7b6884aa474e5293ccc2859fb3d1728692f53ede91755440f3d9fcdef3c",
446 "version": "204443009",
447 "digest": "4eN8p8PQxDjdc9ckqH2stjG8VeyicgQnM857GjgQ93Aj",
448 "balance": "100000000",
449 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
450 },
451 {
452 "coinType": "0x2::sui::SUI",
453 "coinObjectId": "0x084714e3ecf41f41699abe128053f469851a9bd4021a4ca4eb39fa794e42fd97",
454 "version": "204443010",
455 "digest": "372tDbWkUc4jEdnosLNYWUfJda4JvgE2tS9TNfwsm7AR",
456 "balance": "100000000",
457 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
458 },
459 {
460 "coinType": "0x2::sui::SUI",
461 "coinObjectId": "0x0847e6d0f41de20ce3dde0d7ca3bae0e6367a3da6858c60b46b15e651e092883",
462 "version": "204443009",
463 "digest": "3wXmPuCgDXBHJstTEosuEggCkSaHXoy6ZhD9YS1huVbB",
464 "balance": "100000000",
465 "previousTransaction": "5odsa6V4gKA8w1ZQN9RjyBfjX1qPVd1LTu1DnnbpF7At"
466 },
467 {
468 "coinType": "0x2::sui::SUI",
469 "coinObjectId": "0x084c775207a1cd82d2c2f4c9224f03c0c5a75d275c788cf60c1a0d3eb6e6cd33",
470 "version": "204443011",
471 "digest": "3jyRrKtMo2aCaANGwDCDCDNCy5JRHhsV7v4iWJJJcPFp",
472 "balance": "100000000",
473 "previousTransaction": "C8reWy1j85aBxeKRweoeW1amkiWBdLmHpdajzFzAh9vN"
474 },
475 {
476 "coinType": "0x2::sui::SUI",
477 "coinObjectId": "0x08c21fe0fc06e0646a08e0f45249cdd2ffe2db352b6a5593a5246a0a38377485",
478 "version": "204443010",
479 "digest": "ArwKyA8rFg1MTgmTUFDC45KUNunUB8QskPd1k1hJFSX9",
480 "balance": "100000000",
481 "previousTransaction": "67YwHzL7hY1E6CC3WQ7a9M3neAGQpPK56MnLGYHC63Lc"
482 },
483 {
484 "coinType": "0x2::sui::SUI",
485 "coinObjectId": "0x091b13426217f690598ba2f86fa16d71b054bce516f0d8d73369b19dd5fd3114",
486 "version": "204443012",
487 "digest": "5YgtXfLYeqPaSsHsAggdwL9CkENZNCs2am2Wo4sGKf9v",
488 "balance": "100000000",
489 "previousTransaction": "37skCQJmUCn5sPJJShi8sk1EhvKMuxjAuN7pT9nEydvi"
490 }
491 ],
492 "nextCursor": "eyJjb2luX3R5cGUiOiIweDI6OnN1aTo6U1VJIiwiaW52ZXJ0ZWRfYmFsYW5jZSI6MTg0NDY3NDQwNzM2MDk1NTE2MTUsIm9iamVjdF9pZCI6IjB4MDkxYjEzNDI2MjE3ZjY5MDU5OGJhMmY4NmZhMTZkNzFiMDU0YmNlNTE2ZjBkOGQ3MzM2OWIxOWRkNWZkMzExNCJ9",
493 "hasNextPage": true
494 });
495 let _: CoinPage = serde_json::from_value(value).unwrap();
496 }
497}