@ledgerhq/coin-solana 0.7.6 → 0.7.7-next.0

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 (78) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/api/chain/account/index.d.ts +1 -1
  3. package/lib/api/chain/account/index.d.ts.map +1 -1
  4. package/lib/api/chain/account/index.js +3 -1
  5. package/lib/api/chain/account/index.js.map +1 -1
  6. package/lib/api/chain/account/parser.d.ts +7 -0
  7. package/lib/api/chain/account/parser.d.ts.map +1 -1
  8. package/lib/api/chain/account/parser.js +14 -1
  9. package/lib/api/chain/account/parser.js.map +1 -1
  10. package/lib/api/chain/account/stake.d.ts +60 -34
  11. package/lib/api/chain/account/stake.d.ts.map +1 -1
  12. package/lib/api/chain/account/stake.js +15 -8
  13. package/lib/api/chain/account/stake.js.map +1 -1
  14. package/lib/api/chain/account/token.d.ts +6 -6
  15. package/lib/api/chain/index.d.ts +2 -1
  16. package/lib/api/chain/index.d.ts.map +1 -1
  17. package/lib/api/chain/index.js +2 -1
  18. package/lib/api/chain/index.js.map +1 -1
  19. package/lib/api/chain/instruction/token/types.d.ts +21 -21
  20. package/lib/api/chain/stake-activation/delegation.d.ts +9 -0
  21. package/lib/api/chain/stake-activation/delegation.d.ts.map +1 -0
  22. package/lib/api/chain/stake-activation/delegation.js +139 -0
  23. package/lib/api/chain/stake-activation/delegation.js.map +1 -0
  24. package/lib/api/chain/stake-activation/index.d.ts +2 -0
  25. package/lib/api/chain/stake-activation/index.d.ts.map +1 -0
  26. package/lib/api/chain/stake-activation/index.js +6 -0
  27. package/lib/api/chain/stake-activation/index.js.map +1 -0
  28. package/lib/api/chain/stake-activation/rpc.d.ts +10 -0
  29. package/lib/api/chain/stake-activation/rpc.d.ts.map +1 -0
  30. package/lib/api/chain/stake-activation/rpc.js +79 -0
  31. package/lib/api/chain/stake-activation/rpc.js.map +1 -0
  32. package/lib/api/chain/validators/bignum.d.ts +1 -0
  33. package/lib/api/chain/validators/bignum.d.ts.map +1 -1
  34. package/lib/api/chain/validators/bignum.js +6 -1
  35. package/lib/api/chain/validators/bignum.js.map +1 -1
  36. package/lib-es/api/chain/account/index.d.ts +1 -1
  37. package/lib-es/api/chain/account/index.d.ts.map +1 -1
  38. package/lib-es/api/chain/account/index.js +1 -1
  39. package/lib-es/api/chain/account/index.js.map +1 -1
  40. package/lib-es/api/chain/account/parser.d.ts +7 -0
  41. package/lib-es/api/chain/account/parser.d.ts.map +1 -1
  42. package/lib-es/api/chain/account/parser.js +12 -1
  43. package/lib-es/api/chain/account/parser.js.map +1 -1
  44. package/lib-es/api/chain/account/stake.d.ts +60 -34
  45. package/lib-es/api/chain/account/stake.d.ts.map +1 -1
  46. package/lib-es/api/chain/account/stake.js +15 -8
  47. package/lib-es/api/chain/account/stake.js.map +1 -1
  48. package/lib-es/api/chain/account/token.d.ts +6 -6
  49. package/lib-es/api/chain/index.d.ts +2 -1
  50. package/lib-es/api/chain/index.d.ts.map +1 -1
  51. package/lib-es/api/chain/index.js +2 -1
  52. package/lib-es/api/chain/index.js.map +1 -1
  53. package/lib-es/api/chain/instruction/token/types.d.ts +21 -21
  54. package/lib-es/api/chain/stake-activation/delegation.d.ts +9 -0
  55. package/lib-es/api/chain/stake-activation/delegation.d.ts.map +1 -0
  56. package/lib-es/api/chain/stake-activation/delegation.js +132 -0
  57. package/lib-es/api/chain/stake-activation/delegation.js.map +1 -0
  58. package/lib-es/api/chain/stake-activation/index.d.ts +2 -0
  59. package/lib-es/api/chain/stake-activation/index.d.ts.map +1 -0
  60. package/lib-es/api/chain/stake-activation/index.js +2 -0
  61. package/lib-es/api/chain/stake-activation/index.js.map +1 -0
  62. package/lib-es/api/chain/stake-activation/rpc.d.ts +10 -0
  63. package/lib-es/api/chain/stake-activation/rpc.d.ts.map +1 -0
  64. package/lib-es/api/chain/stake-activation/rpc.js +75 -0
  65. package/lib-es/api/chain/stake-activation/rpc.js.map +1 -0
  66. package/lib-es/api/chain/validators/bignum.d.ts +1 -0
  67. package/lib-es/api/chain/validators/bignum.d.ts.map +1 -1
  68. package/lib-es/api/chain/validators/bignum.js +6 -1
  69. package/lib-es/api/chain/validators/bignum.js.map +1 -1
  70. package/package.json +5 -5
  71. package/src/api/chain/account/index.ts +7 -1
  72. package/src/api/chain/account/parser.ts +17 -1
  73. package/src/api/chain/account/stake.ts +19 -8
  74. package/src/api/chain/index.ts +3 -2
  75. package/src/api/chain/stake-activation/delegation.ts +169 -0
  76. package/src/api/chain/stake-activation/index.ts +1 -0
  77. package/src/api/chain/stake-activation/rpc.ts +90 -0
  78. package/src/api/chain/validators/bignum.ts +6 -1
@@ -2,9 +2,9 @@
2
2
  import { Infer } from "superstruct";
3
3
  export type TokenAmountUi = Infer<typeof TokenAmountUi>;
4
4
  export declare const TokenAmountUi: import("superstruct").Struct<{
5
- amount: string;
6
5
  decimals: number;
7
6
  uiAmountString: string;
7
+ amount: string;
8
8
  }, {
9
9
  amount: import("superstruct").Struct<string, null>;
10
10
  decimals: import("superstruct").Struct<number, null>;
@@ -30,9 +30,9 @@ export type TransferChecked = Infer<typeof TransferChecked>;
30
30
  export declare const TransferChecked: import("superstruct").Struct<{
31
31
  mint: import("@solana/web3.js").PublicKey;
32
32
  tokenAmount: {
33
- amount: string;
34
33
  decimals: number;
35
34
  uiAmountString: string;
35
+ amount: string;
36
36
  };
37
37
  source: import("@solana/web3.js").PublicKey;
38
38
  destination: import("@solana/web3.js").PublicKey;
@@ -47,9 +47,9 @@ export declare const TransferChecked: import("superstruct").Struct<{
47
47
  multisigAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
48
48
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
49
49
  tokenAmount: import("superstruct").Struct<{
50
- amount: string;
51
50
  decimals: number;
52
51
  uiAmountString: string;
52
+ amount: string;
53
53
  }, {
54
54
  amount: import("superstruct").Struct<string, null>;
55
55
  decimals: import("superstruct").Struct<number, null>;
@@ -180,8 +180,8 @@ export declare const IX_STRUCTS: {
180
180
  }>;
181
181
  mintTo: import("superstruct").Struct<{
182
182
  mint: import("@solana/web3.js").PublicKey;
183
- amount: string | number;
184
183
  account: import("@solana/web3.js").PublicKey;
184
+ amount: string | number;
185
185
  mintAuthority?: import("@solana/web3.js").PublicKey | undefined;
186
186
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
187
187
  multisigMintAuthority?: import("@solana/web3.js").PublicKey | undefined;
@@ -195,8 +195,8 @@ export declare const IX_STRUCTS: {
195
195
  }>;
196
196
  burn: import("superstruct").Struct<{
197
197
  mint: import("@solana/web3.js").PublicKey;
198
- amount: string | number;
199
198
  account: import("@solana/web3.js").PublicKey;
199
+ amount: string | number;
200
200
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
201
201
  authority?: import("@solana/web3.js").PublicKey | undefined;
202
202
  multisigAuthority?: import("@solana/web3.js").PublicKey | undefined;
@@ -250,9 +250,9 @@ export declare const IX_STRUCTS: {
250
250
  transfer2: import("superstruct").Struct<{
251
251
  mint: import("@solana/web3.js").PublicKey;
252
252
  tokenAmount: {
253
- amount: string;
254
253
  decimals: number;
255
254
  uiAmountString: string;
255
+ amount: string;
256
256
  };
257
257
  source: import("@solana/web3.js").PublicKey;
258
258
  destination: import("@solana/web3.js").PublicKey;
@@ -267,9 +267,9 @@ export declare const IX_STRUCTS: {
267
267
  multisigAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
268
268
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
269
269
  tokenAmount: import("superstruct").Struct<{
270
- amount: string;
271
270
  decimals: number;
272
271
  uiAmountString: string;
272
+ amount: string;
273
273
  }, {
274
274
  amount: import("superstruct").Struct<string, null>;
275
275
  decimals: import("superstruct").Struct<number, null>;
@@ -279,9 +279,9 @@ export declare const IX_STRUCTS: {
279
279
  approve2: import("superstruct").Struct<{
280
280
  mint: import("@solana/web3.js").PublicKey;
281
281
  tokenAmount: {
282
- amount: string;
283
282
  decimals: number;
284
283
  uiAmountString: string;
284
+ amount: string;
285
285
  };
286
286
  delegate: import("@solana/web3.js").PublicKey;
287
287
  source: import("@solana/web3.js").PublicKey;
@@ -296,9 +296,9 @@ export declare const IX_STRUCTS: {
296
296
  multisigOwner: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
297
297
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
298
298
  tokenAmount: import("superstruct").Struct<{
299
- amount: string;
300
299
  decimals: number;
301
300
  uiAmountString: string;
301
+ amount: string;
302
302
  }, {
303
303
  amount: import("superstruct").Struct<string, null>;
304
304
  decimals: import("superstruct").Struct<number, null>;
@@ -309,9 +309,9 @@ export declare const IX_STRUCTS: {
309
309
  mint: import("@solana/web3.js").PublicKey;
310
310
  account: import("@solana/web3.js").PublicKey;
311
311
  tokenAmount: {
312
- amount: string;
313
312
  decimals: number;
314
313
  uiAmountString: string;
314
+ amount: string;
315
315
  };
316
316
  mintAuthority?: import("@solana/web3.js").PublicKey | undefined;
317
317
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
@@ -323,9 +323,9 @@ export declare const IX_STRUCTS: {
323
323
  multisigMintAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
324
324
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
325
325
  tokenAmount: import("superstruct").Struct<{
326
- amount: string;
327
326
  decimals: number;
328
327
  uiAmountString: string;
328
+ amount: string;
329
329
  }, {
330
330
  amount: import("superstruct").Struct<string, null>;
331
331
  decimals: import("superstruct").Struct<number, null>;
@@ -336,9 +336,9 @@ export declare const IX_STRUCTS: {
336
336
  mint: import("@solana/web3.js").PublicKey;
337
337
  account: import("@solana/web3.js").PublicKey;
338
338
  tokenAmount: {
339
- amount: string;
340
339
  decimals: number;
341
340
  uiAmountString: string;
341
+ amount: string;
342
342
  };
343
343
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
344
344
  authority?: import("@solana/web3.js").PublicKey | undefined;
@@ -350,9 +350,9 @@ export declare const IX_STRUCTS: {
350
350
  multisigAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
351
351
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
352
352
  tokenAmount: import("superstruct").Struct<{
353
- amount: string;
354
353
  decimals: number;
355
354
  uiAmountString: string;
355
+ amount: string;
356
356
  }, {
357
357
  amount: import("superstruct").Struct<string, null>;
358
358
  decimals: import("superstruct").Struct<number, null>;
@@ -362,9 +362,9 @@ export declare const IX_STRUCTS: {
362
362
  transferChecked: import("superstruct").Struct<{
363
363
  mint: import("@solana/web3.js").PublicKey;
364
364
  tokenAmount: {
365
- amount: string;
366
365
  decimals: number;
367
366
  uiAmountString: string;
367
+ amount: string;
368
368
  };
369
369
  source: import("@solana/web3.js").PublicKey;
370
370
  destination: import("@solana/web3.js").PublicKey;
@@ -379,9 +379,9 @@ export declare const IX_STRUCTS: {
379
379
  multisigAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
380
380
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
381
381
  tokenAmount: import("superstruct").Struct<{
382
- amount: string;
383
382
  decimals: number;
384
383
  uiAmountString: string;
384
+ amount: string;
385
385
  }, {
386
386
  amount: import("superstruct").Struct<string, null>;
387
387
  decimals: import("superstruct").Struct<number, null>;
@@ -391,9 +391,9 @@ export declare const IX_STRUCTS: {
391
391
  approveChecked: import("superstruct").Struct<{
392
392
  mint: import("@solana/web3.js").PublicKey;
393
393
  tokenAmount: {
394
- amount: string;
395
394
  decimals: number;
396
395
  uiAmountString: string;
396
+ amount: string;
397
397
  };
398
398
  delegate: import("@solana/web3.js").PublicKey;
399
399
  source: import("@solana/web3.js").PublicKey;
@@ -408,9 +408,9 @@ export declare const IX_STRUCTS: {
408
408
  multisigOwner: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
409
409
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
410
410
  tokenAmount: import("superstruct").Struct<{
411
- amount: string;
412
411
  decimals: number;
413
412
  uiAmountString: string;
413
+ amount: string;
414
414
  }, {
415
415
  amount: import("superstruct").Struct<string, null>;
416
416
  decimals: import("superstruct").Struct<number, null>;
@@ -421,9 +421,9 @@ export declare const IX_STRUCTS: {
421
421
  mint: import("@solana/web3.js").PublicKey;
422
422
  account: import("@solana/web3.js").PublicKey;
423
423
  tokenAmount: {
424
- amount: string;
425
424
  decimals: number;
426
425
  uiAmountString: string;
426
+ amount: string;
427
427
  };
428
428
  mintAuthority?: import("@solana/web3.js").PublicKey | undefined;
429
429
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
@@ -435,9 +435,9 @@ export declare const IX_STRUCTS: {
435
435
  multisigMintAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
436
436
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
437
437
  tokenAmount: import("superstruct").Struct<{
438
- amount: string;
439
438
  decimals: number;
440
439
  uiAmountString: string;
440
+ amount: string;
441
441
  }, {
442
442
  amount: import("superstruct").Struct<string, null>;
443
443
  decimals: import("superstruct").Struct<number, null>;
@@ -448,9 +448,9 @@ export declare const IX_STRUCTS: {
448
448
  mint: import("@solana/web3.js").PublicKey;
449
449
  account: import("@solana/web3.js").PublicKey;
450
450
  tokenAmount: {
451
- amount: string;
452
451
  decimals: number;
453
452
  uiAmountString: string;
453
+ amount: string;
454
454
  };
455
455
  signers?: import("@solana/web3.js").PublicKey[] | undefined;
456
456
  authority?: import("@solana/web3.js").PublicKey | undefined;
@@ -462,9 +462,9 @@ export declare const IX_STRUCTS: {
462
462
  multisigAuthority: import("superstruct").Struct<import("@solana/web3.js").PublicKey | undefined, null>;
463
463
  signers: import("superstruct").Struct<import("@solana/web3.js").PublicKey[] | undefined, import("superstruct").Struct<import("@solana/web3.js").PublicKey, null>>;
464
464
  tokenAmount: import("superstruct").Struct<{
465
- amount: string;
466
465
  decimals: number;
467
466
  uiAmountString: string;
467
+ amount: string;
468
468
  }, {
469
469
  amount: import("superstruct").Struct<string, null>;
470
470
  decimals: import("superstruct").Struct<number, null>;
@@ -0,0 +1,9 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { Delegation, StakeHistoryEntry } from "../account/stake";
3
+ export interface StakeActivatingAndDeactivating {
4
+ effective: BigNumber;
5
+ activating: BigNumber;
6
+ deactivating: BigNumber;
7
+ }
8
+ export declare function getStakeActivatingAndDeactivating(delegation: Delegation, targetEpoch: BigNumber, stakeHistory: StakeHistoryEntry[]): StakeActivatingAndDeactivating;
9
+ //# sourceMappingURL=delegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/delegation.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,SAAS,CAAC;CACzB;AAwFD,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,iBAAiB,EAAE,GAChC,8BAA8B,CAqEhC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getStakeActivatingAndDeactivating = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ function getStakeHistoryEntry(epoch, stakeHistory) {
9
+ for (const entry of stakeHistory) {
10
+ if (entry.epoch.eq(epoch)) {
11
+ return entry;
12
+ }
13
+ }
14
+ return null;
15
+ }
16
+ const WARMUP_COOLDOWN_RATE = 0.09;
17
+ function getStakeAndActivating(delegation, targetEpoch, stakeHistory) {
18
+ if (delegation.activationEpoch.eq(delegation.deactivationEpoch)) {
19
+ // activated but instantly deactivated; no stake at all regardless of target_epoch
20
+ return {
21
+ effective: (0, bignumber_js_1.default)(0),
22
+ activating: (0, bignumber_js_1.default)(0),
23
+ };
24
+ }
25
+ else if (targetEpoch.eq(delegation.activationEpoch)) {
26
+ // all is activating
27
+ return {
28
+ effective: (0, bignumber_js_1.default)(0),
29
+ activating: delegation.stake,
30
+ };
31
+ }
32
+ else if (targetEpoch.lt(delegation.activationEpoch)) {
33
+ // not yet enabled
34
+ return {
35
+ effective: (0, bignumber_js_1.default)(0),
36
+ activating: (0, bignumber_js_1.default)(0),
37
+ };
38
+ }
39
+ let currentEpoch = delegation.activationEpoch;
40
+ let entry = getStakeHistoryEntry(currentEpoch, stakeHistory);
41
+ if (entry !== null) {
42
+ // target_epoch > self.activation_epoch
43
+ // loop from my activation epoch until the target epoch summing up my entitlement
44
+ // current effective stake is updated using its previous epoch's cluster stake
45
+ let currentEffectiveStake = (0, bignumber_js_1.default)(0);
46
+ while (entry !== null) {
47
+ currentEpoch = currentEpoch.plus(1);
48
+ const remaining = delegation.stake.minus(currentEffectiveStake);
49
+ const weight = remaining.div(entry.activating);
50
+ const newlyEffectiveClusterStake = entry.effective.multipliedBy(WARMUP_COOLDOWN_RATE);
51
+ const newlyEffectiveStake = bignumber_js_1.default.max((0, bignumber_js_1.default)(1), weight.multipliedBy(newlyEffectiveClusterStake).integerValue(bignumber_js_1.default.ROUND_HALF_CEIL));
52
+ currentEffectiveStake = currentEffectiveStake.plus(newlyEffectiveStake);
53
+ if (currentEffectiveStake.gte(delegation.stake)) {
54
+ currentEffectiveStake = delegation.stake;
55
+ break;
56
+ }
57
+ if (currentEpoch.gte(targetEpoch) || currentEpoch.gte(delegation.deactivationEpoch)) {
58
+ break;
59
+ }
60
+ entry = getStakeHistoryEntry(currentEpoch, stakeHistory);
61
+ }
62
+ return {
63
+ effective: currentEffectiveStake,
64
+ activating: delegation.stake.minus(currentEffectiveStake),
65
+ };
66
+ }
67
+ else {
68
+ // no history or I've dropped out of history, so assume fully effective
69
+ return {
70
+ effective: delegation.stake,
71
+ activating: (0, bignumber_js_1.default)(0),
72
+ };
73
+ }
74
+ }
75
+ function getStakeActivatingAndDeactivating(delegation, targetEpoch, stakeHistory) {
76
+ const { effective, activating } = getStakeAndActivating(delegation, targetEpoch, stakeHistory);
77
+ // then de-activate some portion if necessary
78
+ if (targetEpoch.lt(delegation.deactivationEpoch)) {
79
+ return {
80
+ effective,
81
+ activating,
82
+ deactivating: (0, bignumber_js_1.default)(0),
83
+ };
84
+ }
85
+ else if (targetEpoch.eq(delegation.deactivationEpoch)) {
86
+ // can only deactivate what's activated
87
+ return {
88
+ effective,
89
+ activating: (0, bignumber_js_1.default)(0),
90
+ deactivating: effective,
91
+ };
92
+ }
93
+ let currentEpoch = delegation.deactivationEpoch;
94
+ let entry = getStakeHistoryEntry(currentEpoch, stakeHistory);
95
+ if (entry !== null) {
96
+ // target_epoch > self.activation_epoch
97
+ // loop from my deactivation epoch until the target epoch
98
+ // current effective stake is updated using its previous epoch's cluster stake
99
+ let currentEffectiveStake = effective;
100
+ while (entry !== null) {
101
+ currentEpoch = currentEpoch.plus(1);
102
+ // if there is no deactivating stake at prev epoch, we should have been
103
+ // fully undelegated at this moment
104
+ if (entry.deactivating.eq(0)) {
105
+ break;
106
+ }
107
+ // I'm trying to get to zero, how much of the deactivation in stake
108
+ // this account is entitled to take
109
+ const weight = currentEffectiveStake.div(entry.deactivating);
110
+ // portion of newly not-effective cluster stake I'm entitled to at current epoch
111
+ const newlyNotEffectiveClusterStake = entry.effective.multipliedBy(WARMUP_COOLDOWN_RATE);
112
+ const newlyNotEffectiveStake = bignumber_js_1.default.max((0, bignumber_js_1.default)(1), weight.multipliedBy(newlyNotEffectiveClusterStake).integerValue(bignumber_js_1.default.ROUND_HALF_CEIL));
113
+ currentEffectiveStake = currentEffectiveStake.minus(newlyNotEffectiveStake);
114
+ if (currentEffectiveStake.lte(0)) {
115
+ currentEffectiveStake = (0, bignumber_js_1.default)(0);
116
+ break;
117
+ }
118
+ if (currentEpoch.gte(targetEpoch)) {
119
+ break;
120
+ }
121
+ entry = getStakeHistoryEntry(currentEpoch, stakeHistory);
122
+ }
123
+ // deactivating stake should equal to all of currently remaining effective stake
124
+ return {
125
+ effective: currentEffectiveStake,
126
+ deactivating: currentEffectiveStake,
127
+ activating: (0, bignumber_js_1.default)(0),
128
+ };
129
+ }
130
+ else {
131
+ return {
132
+ effective: (0, bignumber_js_1.default)(0),
133
+ activating: (0, bignumber_js_1.default)(0),
134
+ deactivating: (0, bignumber_js_1.default)(0),
135
+ };
136
+ }
137
+ }
138
+ exports.getStakeActivatingAndDeactivating = getStakeActivatingAndDeactivating;
139
+ //# sourceMappingURL=delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/delegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { getStakeActivation } from "./rpc";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStakeActivation = void 0;
4
+ var rpc_1 = require("./rpc");
5
+ Object.defineProperty(exports, "getStakeActivation", { enumerable: true, get: function () { return rpc_1.getStakeActivation; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/index.ts"],"names":[],"mappings":";;;AAAA,6BAA2C;AAAlC,yGAAA,kBAAkB,OAAA"}
@@ -0,0 +1,10 @@
1
+ import { Connection, PublicKey } from "@solana/web3.js";
2
+ type StakeActivationState = "active" | "inactive" | "activating" | "deactivating";
3
+ export interface StakeActivationData {
4
+ state: StakeActivationState;
5
+ active: number;
6
+ inactive: number;
7
+ }
8
+ export declare function getStakeActivation(connection: Connection, stakeAddress: PublicKey): Promise<StakeActivationData>;
9
+ export {};
10
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAA+B,MAAM,iBAAiB,CAAC;AAqBrF,KAAK,oBAAoB,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC;AAElF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAsD9B"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getStakeActivation = void 0;
13
+ const web3_js_1 = require("@solana/web3.js");
14
+ const bignumber_js_1 = require("bignumber.js");
15
+ const delegation_1 = require("./delegation");
16
+ const account_1 = require("../account");
17
+ function getStakeActivationState({ activating, deactivating, effective, }) {
18
+ if (deactivating.gt(0)) {
19
+ return "deactivating";
20
+ }
21
+ else if (activating.gt(0)) {
22
+ return "activating";
23
+ }
24
+ else if (effective.gt(0)) {
25
+ return "active";
26
+ }
27
+ else {
28
+ return "inactive";
29
+ }
30
+ }
31
+ // Replacement for outdated connection.getStakeActivation rpc endpoint.
32
+ // Based on example from Solana team https://github.com/solana-developers/solana-rpc-get-stake-activation
33
+ // TODO: Install solana-rpc-get-stake-activation via npm package when it's published.
34
+ function getStakeActivation(connection, stakeAddress) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const [epochInfo, { stakeAccountOrErr, stakeAccountLamports }, stakeHistory] = yield Promise.all([
37
+ connection.getEpochInfo(),
38
+ (() => __awaiter(this, void 0, void 0, function* () {
39
+ const stakeAccount = yield connection.getParsedAccountInfo(stakeAddress);
40
+ if (stakeAccount === null || stakeAccount.value === null) {
41
+ throw new Error("Account not found");
42
+ }
43
+ const stakeAccountOrErr = "parsed" in stakeAccount.value.data
44
+ ? (0, account_1.tryParseAsStakeAccount)(stakeAccount.value.data)
45
+ : undefined;
46
+ return { stakeAccountOrErr, stakeAccountLamports: stakeAccount.value.lamports };
47
+ }))(),
48
+ (() => __awaiter(this, void 0, void 0, function* () {
49
+ const stakeHistoryAccount = yield connection.getParsedAccountInfo(web3_js_1.SYSVAR_STAKE_HISTORY_PUBKEY);
50
+ if (stakeHistoryAccount.value === null || !("parsed" in stakeHistoryAccount.value.data)) {
51
+ throw new Error("StakeHistory not found");
52
+ }
53
+ return stakeHistoryAccount.value.data.parsed.info.map((entry) => {
54
+ return (0, account_1.parseStakeHistoryEntry)(Object.assign({ epoch: entry.epoch }, entry.stakeHistory));
55
+ });
56
+ }))(),
57
+ ]);
58
+ if (stakeAccountOrErr instanceof Error)
59
+ throw stakeAccountOrErr;
60
+ const { effective, activating, deactivating } = (stakeAccountOrErr === null || stakeAccountOrErr === void 0 ? void 0 : stakeAccountOrErr.stake)
61
+ ? (0, delegation_1.getStakeActivatingAndDeactivating)(stakeAccountOrErr.stake.delegation, (0, bignumber_js_1.BigNumber)(epochInfo.epoch), stakeHistory)
62
+ : {
63
+ effective: (0, bignumber_js_1.BigNumber)(0),
64
+ activating: (0, bignumber_js_1.BigNumber)(0),
65
+ deactivating: (0, bignumber_js_1.BigNumber)(0),
66
+ };
67
+ const state = getStakeActivationState({ effective, activating, deactivating });
68
+ const inactive = (0, bignumber_js_1.BigNumber)(stakeAccountLamports)
69
+ .minus(effective)
70
+ .minus((stakeAccountOrErr === null || stakeAccountOrErr === void 0 ? void 0 : stakeAccountOrErr.meta.rentExemptReserve) || 0);
71
+ return {
72
+ state,
73
+ active: effective.toNumber(),
74
+ inactive: inactive.toNumber(),
75
+ };
76
+ });
77
+ }
78
+ exports.getStakeActivation = getStakeActivation;
79
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../src/api/chain/stake-activation/rpc.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { BigNumber } from "bignumber.js";
2
2
  export declare const BigNumFromString: import("superstruct").Struct<BigNumber, null>;
3
+ export declare const BigNumFromNumber: import("superstruct").Struct<BigNumber, null>;
3
4
  //# sourceMappingURL=bignum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bignum.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/validators/bignum.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,+CAG3B,CAAC"}
1
+ {"version":3,"file":"bignum.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/validators/bignum.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,+CAG3B,CAAC;AAEH,eAAO,MAAM,gBAAgB,+CAG3B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BigNumFromString = void 0;
3
+ exports.BigNumFromNumber = exports.BigNumFromString = void 0;
4
4
  const superstruct_1 = require("superstruct");
5
5
  const bignumber_js_1 = require("bignumber.js");
6
6
  exports.BigNumFromString = (0, superstruct_1.coerce)((0, superstruct_1.instance)(bignumber_js_1.BigNumber), (0, superstruct_1.string)(), value => {
@@ -8,4 +8,9 @@ exports.BigNumFromString = (0, superstruct_1.coerce)((0, superstruct_1.instance)
8
8
  return new bignumber_js_1.BigNumber(value, 10);
9
9
  throw new Error("invalid big num");
10
10
  });
11
+ exports.BigNumFromNumber = (0, superstruct_1.coerce)((0, superstruct_1.instance)(bignumber_js_1.BigNumber), (0, superstruct_1.number)(), value => {
12
+ if (typeof value === "number")
13
+ return new bignumber_js_1.BigNumber(value, 10);
14
+ throw new Error("invalid big num");
15
+ });
11
16
  //# sourceMappingURL=bignum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bignum.js","sourceRoot":"","sources":["../../../../src/api/chain/validators/bignum.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AACvD,+CAAyC;AAE5B,QAAA,gBAAgB,GAAG,IAAA,oBAAM,EAAC,IAAA,sBAAQ,EAAC,wBAAS,CAAC,EAAE,IAAA,oBAAM,GAAE,EAAE,KAAK,CAAC,EAAE;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,wBAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bignum.js","sourceRoot":"","sources":["../../../../src/api/chain/validators/bignum.ts"],"names":[],"mappings":";;;AAAA,6CAA+D;AAC/D,+CAAyC;AAE5B,QAAA,gBAAgB,GAAG,IAAA,oBAAM,EAAC,IAAA,sBAAQ,EAAC,wBAAS,CAAC,EAAE,IAAA,oBAAM,GAAE,EAAE,KAAK,CAAC,EAAE;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,wBAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,IAAA,oBAAM,EAAC,IAAA,sBAAQ,EAAC,wBAAS,CAAC,EAAE,IAAA,oBAAM,GAAE,EAAE,KAAK,CAAC,EAAE;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,wBAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export { tryParseAsTokenAccount, parseTokenAccountInfo, tryParseAsVoteAccount } from "./parser";
1
+ export { tryParseAsTokenAccount, parseTokenAccountInfo, tryParseAsVoteAccount, tryParseAsStakeAccount, parseStakeHistoryEntry, } from "./parser";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/account/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/account/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,UAAU,CAAC"}
@@ -1,2 +1,2 @@
1
- export { tryParseAsTokenAccount, parseTokenAccountInfo, tryParseAsVoteAccount } from "./parser";
1
+ export { tryParseAsTokenAccount, parseTokenAccountInfo, tryParseAsVoteAccount, tryParseAsStakeAccount, parseStakeHistoryEntry, } from "./parser";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/chain/account/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/chain/account/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,UAAU,CAAC"}
@@ -7,4 +7,11 @@ export declare function tryParseAsTokenAccount(data: ParsedAccountData): TokenAc
7
7
  export declare function parseVoteAccountInfo(info: unknown): VoteAccountInfo;
8
8
  export declare function tryParseAsVoteAccount(data: ParsedAccountData): VoteAccountInfo | undefined | Error;
9
9
  export declare function parseStakeAccountInfo(info: unknown): StakeAccountInfo;
10
+ export declare function tryParseAsStakeAccount(data: ParsedAccountData): StakeAccountInfo | undefined | Error;
11
+ export declare function parseStakeHistoryEntry(entry: unknown): {
12
+ activating: import("bignumber.js").BigNumber;
13
+ deactivating: import("bignumber.js").BigNumber;
14
+ epoch: import("bignumber.js").BigNumber;
15
+ effective: import("bignumber.js").BigNumber;
16
+ };
10
17
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/account/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAe,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAErE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,GACtB,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAetC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEnE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,GACtB,eAAe,GAAG,SAAS,GAAG,KAAK,CAarC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAErE"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/api/chain/account/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAAgB,gBAAgB,EAAqB,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAgB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAe,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAErE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,GACtB,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAetC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEnE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,GACtB,eAAe,GAAG,SAAS,GAAG,KAAK,CAarC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAErE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,GACtB,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAQtC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO;;;;;EAEpD"}
@@ -1,7 +1,7 @@
1
1
  import { create } from "superstruct";
2
2
  import { PARSED_PROGRAMS } from "../program/constants";
3
3
  import { ParsedInfo } from "../validators";
4
- import { StakeAccountInfo } from "./stake";
4
+ import { StakeAccount, StakeAccountInfo, StakeHistoryEntry } from "./stake";
5
5
  import { TokenAccount, TokenAccountInfo } from "./token";
6
6
  import { VoteAccount, VoteAccountInfo } from "./vote";
7
7
  export function parseTokenAccountInfo(info) {
@@ -37,6 +37,17 @@ export function tryParseAsVoteAccount(data) {
37
37
  export function parseStakeAccountInfo(info) {
38
38
  return create(info, StakeAccountInfo);
39
39
  }
40
+ export function tryParseAsStakeAccount(data) {
41
+ const routine = () => {
42
+ const info = create(data.parsed, ParsedInfo);
43
+ const parsed = create(info, StakeAccount);
44
+ return parseStakeAccountInfo(parsed.info);
45
+ };
46
+ return onThrowReturnError(routine);
47
+ }
48
+ export function parseStakeHistoryEntry(entry) {
49
+ return create(entry, StakeHistoryEntry);
50
+ }
40
51
  function onThrowReturnError(fn) {
41
52
  try {
42
53
  return fn();
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/api/chain/account/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEtD,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,OAAO,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACzC,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAI,EAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/api/chain/account/parser.ts"],"names":[],"mappings":"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"}