@helium/spl-utils 0.10.0-alpha.3 → 0.10.0-alpha.4

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.
@@ -0,0 +1,714 @@
1
+ {
2
+ "address": "stcfiqW3fwD9QCd8Bqr1NBLrs7dftZHBQe7RiMMA4aM",
3
+ "metadata": {
4
+ "name": "state_controller",
5
+ "version": "0.1.2",
6
+ "spec": "0.1.0",
7
+ "description": "Created with Anchor"
8
+ },
9
+ "instructions": [
10
+ {
11
+ "name": "initialize_resolution_settings_v0",
12
+ "discriminator": [
13
+ 87,
14
+ 126,
15
+ 140,
16
+ 66,
17
+ 245,
18
+ 25,
19
+ 95,
20
+ 181
21
+ ],
22
+ "accounts": [
23
+ {
24
+ "name": "payer",
25
+ "writable": true,
26
+ "signer": true
27
+ },
28
+ {
29
+ "name": "resolution_settings",
30
+ "writable": true,
31
+ "pda": {
32
+ "seeds": [
33
+ {
34
+ "kind": "const",
35
+ "value": [
36
+ 114,
37
+ 101,
38
+ 115,
39
+ 111,
40
+ 108,
41
+ 117,
42
+ 116,
43
+ 105,
44
+ 111,
45
+ 110,
46
+ 95,
47
+ 115,
48
+ 101,
49
+ 116,
50
+ 116,
51
+ 105,
52
+ 110,
53
+ 103,
54
+ 115
55
+ ]
56
+ },
57
+ {
58
+ "kind": "arg",
59
+ "path": "args.name"
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ "name": "system_program",
66
+ "address": "11111111111111111111111111111111"
67
+ }
68
+ ],
69
+ "args": [
70
+ {
71
+ "name": "args",
72
+ "type": {
73
+ "defined": {
74
+ "name": "InitializeResolutionSettingsArgsV0"
75
+ }
76
+ }
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "name": "on_vote_v0",
82
+ "discriminator": [
83
+ 140,
84
+ 62,
85
+ 3,
86
+ 226,
87
+ 87,
88
+ 248,
89
+ 128,
90
+ 33
91
+ ],
92
+ "accounts": [
93
+ {
94
+ "name": "voter"
95
+ },
96
+ {
97
+ "name": "vote_controller",
98
+ "signer": true,
99
+ "relations": [
100
+ "proposal_config"
101
+ ]
102
+ },
103
+ {
104
+ "name": "state_controller",
105
+ "writable": true,
106
+ "relations": [
107
+ "proposal_config"
108
+ ]
109
+ },
110
+ {
111
+ "name": "proposal"
112
+ },
113
+ {
114
+ "name": "proposal_config",
115
+ "relations": [
116
+ "proposal"
117
+ ]
118
+ }
119
+ ],
120
+ "args": [
121
+ {
122
+ "name": "args",
123
+ "type": {
124
+ "defined": {
125
+ "name": "VoteArgsV0"
126
+ }
127
+ }
128
+ }
129
+ ],
130
+ "returns": {
131
+ "option": {
132
+ "vec": "u16"
133
+ }
134
+ }
135
+ },
136
+ {
137
+ "name": "resolve_v0",
138
+ "discriminator": [
139
+ 245,
140
+ 242,
141
+ 15,
142
+ 52,
143
+ 90,
144
+ 76,
145
+ 188,
146
+ 125
147
+ ],
148
+ "accounts": [
149
+ {
150
+ "name": "state_controller",
151
+ "writable": true,
152
+ "relations": [
153
+ "proposal_config"
154
+ ]
155
+ },
156
+ {
157
+ "name": "proposal",
158
+ "writable": true
159
+ },
160
+ {
161
+ "name": "proposal_config",
162
+ "relations": [
163
+ "proposal"
164
+ ]
165
+ },
166
+ {
167
+ "name": "proposal_program"
168
+ }
169
+ ],
170
+ "args": []
171
+ },
172
+ {
173
+ "name": "update_state_v0",
174
+ "discriminator": [
175
+ 234,
176
+ 64,
177
+ 38,
178
+ 223,
179
+ 224,
180
+ 216,
181
+ 29,
182
+ 82
183
+ ],
184
+ "accounts": [
185
+ {
186
+ "name": "owner",
187
+ "signer": true,
188
+ "relations": [
189
+ "proposal"
190
+ ]
191
+ },
192
+ {
193
+ "name": "proposal",
194
+ "writable": true
195
+ },
196
+ {
197
+ "name": "proposal_config",
198
+ "relations": [
199
+ "proposal"
200
+ ]
201
+ },
202
+ {
203
+ "name": "state_controller",
204
+ "relations": [
205
+ "proposal_config"
206
+ ]
207
+ },
208
+ {
209
+ "name": "proposal_program"
210
+ }
211
+ ],
212
+ "args": [
213
+ {
214
+ "name": "args",
215
+ "type": {
216
+ "defined": {
217
+ "name": "UpdateStateArgsV0"
218
+ }
219
+ }
220
+ }
221
+ ]
222
+ }
223
+ ],
224
+ "accounts": [
225
+ {
226
+ "name": "ProposalConfigV0",
227
+ "discriminator": [
228
+ 162,
229
+ 41,
230
+ 210,
231
+ 200,
232
+ 205,
233
+ 177,
234
+ 228,
235
+ 11
236
+ ]
237
+ },
238
+ {
239
+ "name": "ProposalV0",
240
+ "discriminator": [
241
+ 254,
242
+ 194,
243
+ 16,
244
+ 171,
245
+ 214,
246
+ 20,
247
+ 192,
248
+ 81
249
+ ]
250
+ },
251
+ {
252
+ "name": "ResolutionSettingsV0",
253
+ "discriminator": [
254
+ 169,
255
+ 38,
256
+ 51,
257
+ 69,
258
+ 190,
259
+ 118,
260
+ 10,
261
+ 130
262
+ ]
263
+ }
264
+ ],
265
+ "errors": [
266
+ {
267
+ "code": 6000,
268
+ "name": "ProposalAlreadyResolved",
269
+ "msg": "Proposal was already resolved. Call resolve_v0"
270
+ },
271
+ {
272
+ "code": 6001,
273
+ "name": "ChoicesEmpty",
274
+ "msg": "Resolved choices must not be empty"
275
+ },
276
+ {
277
+ "code": 6002,
278
+ "name": "EndTimestampPassed",
279
+ "msg": "End timestamp has already passed"
280
+ },
281
+ {
282
+ "code": 6003,
283
+ "name": "InvalidOffset",
284
+ "msg": "Offset must be a positive integer"
285
+ },
286
+ {
287
+ "code": 6004,
288
+ "name": "InvalidPercentage",
289
+ "msg": "Percentage may not be less than 0 or greater than PERCENTAGE_DIVISOR"
290
+ },
291
+ {
292
+ "code": 6005,
293
+ "name": "InvalidTopN",
294
+ "msg": "Top n must be greater than 0"
295
+ }
296
+ ],
297
+ "types": [
298
+ {
299
+ "name": "Choice",
300
+ "type": {
301
+ "kind": "struct",
302
+ "fields": [
303
+ {
304
+ "name": "weight",
305
+ "docs": [
306
+ "Total vote weight behind this choice. u128 to support u64 tokens multiplied by a large multiplier (as in helium)"
307
+ ],
308
+ "type": "u128"
309
+ },
310
+ {
311
+ "name": "name",
312
+ "type": "string"
313
+ },
314
+ {
315
+ "name": "uri",
316
+ "docs": [
317
+ "Any other data that you may want to put in here"
318
+ ],
319
+ "type": {
320
+ "option": "string"
321
+ }
322
+ }
323
+ ]
324
+ }
325
+ },
326
+ {
327
+ "name": "InitializeResolutionSettingsArgsV0",
328
+ "type": {
329
+ "kind": "struct",
330
+ "fields": [
331
+ {
332
+ "name": "name",
333
+ "type": "string"
334
+ },
335
+ {
336
+ "name": "settings",
337
+ "type": {
338
+ "defined": {
339
+ "name": "ResolutionStrategy"
340
+ }
341
+ }
342
+ }
343
+ ]
344
+ }
345
+ },
346
+ {
347
+ "name": "ProposalConfigV0",
348
+ "type": {
349
+ "kind": "struct",
350
+ "fields": [
351
+ {
352
+ "name": "vote_controller",
353
+ "docs": [
354
+ "Signer that controls voting and vote weights"
355
+ ],
356
+ "type": "pubkey"
357
+ },
358
+ {
359
+ "name": "state_controller",
360
+ "docs": [
361
+ "Signer that controls the transitions of `ProposalState`",
362
+ "You can either use the default `state-controller` smart contract",
363
+ "Or you can implement a program that calls the `resolve_v0` method.",
364
+ "The vote can only be resolved when this `resolution_settings` PDA signs `resolve_v0`. This allows",
365
+ "you to trigger resolution on either (a) a vote, (b) a timestamp, or (c) some custom trigger with clockwork"
366
+ ],
367
+ "type": "pubkey"
368
+ },
369
+ {
370
+ "name": "on_vote_hook",
371
+ "docs": [
372
+ "Optional program that will be called with `on_vote_v0` after every vote. This allows you to resolve",
373
+ "the vote eagerly. For most use cases, this should just be the owner of the state controller.",
374
+ "WARNING: This program has full authority to set the outcome of votes, make sure you trust it"
375
+ ],
376
+ "type": "pubkey"
377
+ },
378
+ {
379
+ "name": "name",
380
+ "type": "string"
381
+ },
382
+ {
383
+ "name": "bump_seed",
384
+ "type": "u8"
385
+ },
386
+ {
387
+ "name": "authority",
388
+ "type": "pubkey"
389
+ }
390
+ ]
391
+ }
392
+ },
393
+ {
394
+ "name": "ProposalState",
395
+ "type": {
396
+ "kind": "enum",
397
+ "variants": [
398
+ {
399
+ "name": "Draft"
400
+ },
401
+ {
402
+ "name": "Cancelled"
403
+ },
404
+ {
405
+ "name": "Voting",
406
+ "fields": [
407
+ {
408
+ "name": "start_ts",
409
+ "type": "i64"
410
+ }
411
+ ]
412
+ },
413
+ {
414
+ "name": "Resolved",
415
+ "fields": [
416
+ {
417
+ "name": "choices",
418
+ "type": {
419
+ "vec": "u16"
420
+ }
421
+ },
422
+ {
423
+ "name": "end_ts",
424
+ "type": "i64"
425
+ }
426
+ ]
427
+ },
428
+ {
429
+ "name": "Custom",
430
+ "fields": [
431
+ {
432
+ "name": "name",
433
+ "type": "string"
434
+ },
435
+ {
436
+ "name": "bin",
437
+ "type": "bytes"
438
+ }
439
+ ]
440
+ }
441
+ ]
442
+ }
443
+ },
444
+ {
445
+ "name": "ProposalV0",
446
+ "type": {
447
+ "kind": "struct",
448
+ "fields": [
449
+ {
450
+ "name": "namespace",
451
+ "type": "pubkey"
452
+ },
453
+ {
454
+ "name": "owner",
455
+ "type": "pubkey"
456
+ },
457
+ {
458
+ "name": "state",
459
+ "type": {
460
+ "defined": {
461
+ "name": "ProposalState"
462
+ }
463
+ }
464
+ },
465
+ {
466
+ "name": "created_at",
467
+ "type": "i64"
468
+ },
469
+ {
470
+ "name": "proposal_config",
471
+ "type": "pubkey"
472
+ },
473
+ {
474
+ "name": "max_choices_per_voter",
475
+ "docs": [
476
+ "Allows for multiple selection votes"
477
+ ],
478
+ "type": "u16"
479
+ },
480
+ {
481
+ "name": "seed",
482
+ "type": "bytes"
483
+ },
484
+ {
485
+ "name": "name",
486
+ "type": "string"
487
+ },
488
+ {
489
+ "name": "uri",
490
+ "docs": [
491
+ "URI to json containing name, description, etc"
492
+ ],
493
+ "type": "string"
494
+ },
495
+ {
496
+ "name": "tags",
497
+ "type": {
498
+ "vec": "string"
499
+ }
500
+ },
501
+ {
502
+ "name": "choices",
503
+ "type": {
504
+ "vec": {
505
+ "defined": {
506
+ "name": "Choice"
507
+ }
508
+ }
509
+ }
510
+ },
511
+ {
512
+ "name": "bump_seed",
513
+ "type": "u8"
514
+ }
515
+ ]
516
+ }
517
+ },
518
+ {
519
+ "name": "ResolutionNode",
520
+ "docs": [
521
+ "Allow building complex operations to decide resolution."
522
+ ],
523
+ "type": {
524
+ "kind": "enum",
525
+ "variants": [
526
+ {
527
+ "name": "Resolved",
528
+ "fields": [
529
+ {
530
+ "name": "choices",
531
+ "type": {
532
+ "vec": "u16"
533
+ }
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "name": "EndTimestamp",
539
+ "fields": [
540
+ {
541
+ "name": "end_ts",
542
+ "type": "i64"
543
+ }
544
+ ]
545
+ },
546
+ {
547
+ "name": "OffsetFromStartTs",
548
+ "fields": [
549
+ {
550
+ "name": "offset",
551
+ "type": "i64"
552
+ }
553
+ ]
554
+ },
555
+ {
556
+ "name": "ChoiceVoteWeight",
557
+ "fields": [
558
+ {
559
+ "name": "weight_threshold",
560
+ "type": "u128"
561
+ }
562
+ ]
563
+ },
564
+ {
565
+ "name": "ChoicePercentage",
566
+ "fields": [
567
+ {
568
+ "name": "percentage",
569
+ "type": "i32"
570
+ }
571
+ ]
572
+ },
573
+ {
574
+ "name": "Top",
575
+ "fields": [
576
+ {
577
+ "name": "n",
578
+ "type": "u16"
579
+ }
580
+ ]
581
+ },
582
+ {
583
+ "name": "NumResolved",
584
+ "fields": [
585
+ {
586
+ "name": "n",
587
+ "type": "u16"
588
+ }
589
+ ]
590
+ },
591
+ {
592
+ "name": "And"
593
+ },
594
+ {
595
+ "name": "Or"
596
+ },
597
+ {
598
+ "name": "Not",
599
+ "fields": [
600
+ {
601
+ "name": "choice_name",
602
+ "type": "string"
603
+ }
604
+ ]
605
+ },
606
+ {
607
+ "name": "TotalWeight",
608
+ "fields": [
609
+ {
610
+ "name": "weight_threshold",
611
+ "type": "u128"
612
+ }
613
+ ]
614
+ },
615
+ {
616
+ "name": "ChoicePercentageOfCurrent",
617
+ "fields": [
618
+ {
619
+ "name": "percentage",
620
+ "type": "i32"
621
+ }
622
+ ]
623
+ }
624
+ ]
625
+ }
626
+ },
627
+ {
628
+ "name": "ResolutionSettingsV0",
629
+ "type": {
630
+ "kind": "struct",
631
+ "fields": [
632
+ {
633
+ "name": "name",
634
+ "type": "string"
635
+ },
636
+ {
637
+ "name": "settings",
638
+ "type": {
639
+ "defined": {
640
+ "name": "ResolutionStrategy"
641
+ }
642
+ }
643
+ },
644
+ {
645
+ "name": "bump_seed",
646
+ "type": "u8"
647
+ }
648
+ ]
649
+ }
650
+ },
651
+ {
652
+ "name": "ResolutionStrategy",
653
+ "docs": [
654
+ "Reverse polish notation calculator",
655
+ "https://en.wikipedia.org/wiki/Reverse_Polish_notation",
656
+ "Do this to have a flat structure since rust doesn't like unbounded nesting of types"
657
+ ],
658
+ "type": {
659
+ "kind": "struct",
660
+ "fields": [
661
+ {
662
+ "name": "nodes",
663
+ "type": {
664
+ "vec": {
665
+ "defined": {
666
+ "name": "ResolutionNode"
667
+ }
668
+ }
669
+ }
670
+ }
671
+ ]
672
+ }
673
+ },
674
+ {
675
+ "name": "UpdateStateArgsV0",
676
+ "type": {
677
+ "kind": "struct",
678
+ "fields": [
679
+ {
680
+ "name": "new_state",
681
+ "type": {
682
+ "defined": {
683
+ "name": "ProposalState"
684
+ }
685
+ }
686
+ }
687
+ ]
688
+ }
689
+ },
690
+ {
691
+ "name": "VoteArgsV0",
692
+ "type": {
693
+ "kind": "struct",
694
+ "fields": [
695
+ {
696
+ "name": "choice",
697
+ "type": "u16"
698
+ },
699
+ {
700
+ "name": "weight",
701
+ "type": "u128"
702
+ },
703
+ {
704
+ "name": "remove_vote",
705
+ "docs": [
706
+ "This is a remove operation"
707
+ ],
708
+ "type": "bool"
709
+ }
710
+ ]
711
+ }
712
+ }
713
+ ]
714
+ }