@metadaoproject/futarchy 0.3.0-alpha.16 → 0.3.0-alpha.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,156 +1,172 @@
1
1
  export type ConditionalVault = {
2
- version: "0.4.0";
2
+ version: "0.3.0";
3
3
  name: "conditional_vault";
4
4
  instructions: [
5
5
  {
6
- name: "initializeQuestion";
6
+ name: "initializeConditionalVault";
7
7
  accounts: [
8
8
  {
9
- name: "question";
9
+ name: "vault";
10
+ isMut: true;
11
+ isSigner: false;
12
+ },
13
+ {
14
+ name: "underlyingTokenMint";
15
+ isMut: false;
16
+ isSigner: false;
17
+ },
18
+ {
19
+ name: "conditionalOnFinalizeTokenMint";
20
+ isMut: true;
21
+ isSigner: false;
22
+ },
23
+ {
24
+ name: "conditionalOnRevertTokenMint";
10
25
  isMut: true;
11
26
  isSigner: false;
12
27
  },
28
+ {
29
+ name: "vaultUnderlyingTokenAccount";
30
+ isMut: false;
31
+ isSigner: false;
32
+ },
13
33
  {
14
34
  name: "payer";
15
35
  isMut: true;
16
36
  isSigner: true;
17
37
  },
18
38
  {
19
- name: "systemProgram";
39
+ name: "tokenProgram";
20
40
  isMut: false;
21
41
  isSigner: false;
22
- }
23
- ];
24
- args: [
25
- {
26
- name: "args";
27
- type: {
28
- defined: "InitializeQuestionArgs";
29
- };
30
- }
31
- ];
32
- },
33
- {
34
- name: "resolveQuestion";
35
- accounts: [
42
+ },
36
43
  {
37
- name: "question";
38
- isMut: true;
44
+ name: "associatedTokenProgram";
45
+ isMut: false;
39
46
  isSigner: false;
40
47
  },
41
48
  {
42
- name: "oracle";
49
+ name: "systemProgram";
43
50
  isMut: false;
44
- isSigner: true;
51
+ isSigner: false;
45
52
  }
46
53
  ];
47
54
  args: [
48
55
  {
49
56
  name: "args";
50
57
  type: {
51
- defined: "ResolveQuestionArgs";
58
+ defined: "InitializeConditionalVaultArgs";
52
59
  };
53
60
  }
54
61
  ];
55
62
  },
56
63
  {
57
- name: "initializeConditionalVault";
64
+ name: "addMetadataToConditionalTokens";
58
65
  accounts: [
59
66
  {
60
- name: "vault";
67
+ name: "payer";
61
68
  isMut: true;
62
- isSigner: false;
69
+ isSigner: true;
63
70
  },
64
71
  {
65
- name: "question";
66
- isMut: false;
72
+ name: "vault";
73
+ isMut: true;
67
74
  isSigner: false;
68
75
  },
69
76
  {
70
77
  name: "underlyingTokenMint";
71
- isMut: false;
78
+ isMut: true;
72
79
  isSigner: false;
73
80
  },
74
81
  {
75
- name: "vaultUnderlyingTokenAccount";
82
+ name: "underlyingTokenMetadata";
76
83
  isMut: false;
77
84
  isSigner: false;
78
85
  },
79
86
  {
80
- name: "payer";
87
+ name: "conditionalOnFinalizeTokenMint";
81
88
  isMut: true;
82
- isSigner: true;
89
+ isSigner: false;
83
90
  },
84
91
  {
85
- name: "tokenProgram";
86
- isMut: false;
92
+ name: "conditionalOnRevertTokenMint";
93
+ isMut: true;
87
94
  isSigner: false;
88
95
  },
89
96
  {
90
- name: "associatedTokenProgram";
91
- isMut: false;
97
+ name: "conditionalOnFinalizeTokenMetadata";
98
+ isMut: true;
92
99
  isSigner: false;
93
100
  },
94
101
  {
95
- name: "systemProgram";
96
- isMut: false;
102
+ name: "conditionalOnRevertTokenMetadata";
103
+ isMut: true;
97
104
  isSigner: false;
98
- }
99
- ];
100
- args: [];
101
- },
102
- {
103
- name: "splitTokens";
104
- accounts: [
105
+ },
105
106
  {
106
- name: "question";
107
+ name: "tokenMetadataProgram";
107
108
  isMut: false;
108
109
  isSigner: false;
109
110
  },
110
111
  {
111
- name: "vault";
112
+ name: "systemProgram";
112
113
  isMut: false;
113
114
  isSigner: false;
114
115
  },
115
116
  {
116
- name: "vaultUnderlyingTokenAccount";
117
- isMut: true;
117
+ name: "rent";
118
+ isMut: false;
118
119
  isSigner: false;
119
- },
120
+ }
121
+ ];
122
+ args: [
120
123
  {
121
- name: "authority";
124
+ name: "args";
125
+ type: {
126
+ defined: "AddMetadataToConditionalTokensArgs";
127
+ };
128
+ }
129
+ ];
130
+ },
131
+ {
132
+ name: "settleConditionalVault";
133
+ accounts: [
134
+ {
135
+ name: "settlementAuthority";
122
136
  isMut: false;
123
137
  isSigner: true;
124
138
  },
125
139
  {
126
- name: "userUnderlyingTokenAccount";
140
+ name: "vault";
127
141
  isMut: true;
128
142
  isSigner: false;
129
- },
130
- {
131
- name: "tokenProgram";
132
- isMut: false;
133
- isSigner: false;
134
143
  }
135
144
  ];
136
145
  args: [
137
146
  {
138
- name: "amount";
139
- type: "u64";
147
+ name: "newStatus";
148
+ type: {
149
+ defined: "VaultStatus";
150
+ };
140
151
  }
141
152
  ];
142
153
  },
143
154
  {
144
- name: "mergeTokens";
155
+ name: "mergeConditionalTokensForUnderlyingTokens";
145
156
  accounts: [
146
157
  {
147
- name: "question";
158
+ name: "vault";
148
159
  isMut: false;
149
160
  isSigner: false;
150
161
  },
151
162
  {
152
- name: "vault";
153
- isMut: false;
163
+ name: "conditionalOnFinalizeTokenMint";
164
+ isMut: true;
165
+ isSigner: false;
166
+ },
167
+ {
168
+ name: "conditionalOnRevertTokenMint";
169
+ isMut: true;
154
170
  isSigner: false;
155
171
  },
156
172
  {
@@ -163,6 +179,16 @@ export type ConditionalVault = {
163
179
  isMut: false;
164
180
  isSigner: true;
165
181
  },
182
+ {
183
+ name: "userConditionalOnFinalizeTokenAccount";
184
+ isMut: true;
185
+ isSigner: false;
186
+ },
187
+ {
188
+ name: "userConditionalOnRevertTokenAccount";
189
+ isMut: true;
190
+ isSigner: false;
191
+ },
166
192
  {
167
193
  name: "userUnderlyingTokenAccount";
168
194
  isMut: true;
@@ -182,16 +208,21 @@ export type ConditionalVault = {
182
208
  ];
183
209
  },
184
210
  {
185
- name: "redeemTokens";
211
+ name: "mintConditionalTokens";
186
212
  accounts: [
187
213
  {
188
- name: "question";
214
+ name: "vault";
189
215
  isMut: false;
190
216
  isSigner: false;
191
217
  },
192
218
  {
193
- name: "vault";
194
- isMut: false;
219
+ name: "conditionalOnFinalizeTokenMint";
220
+ isMut: true;
221
+ isSigner: false;
222
+ },
223
+ {
224
+ name: "conditionalOnRevertTokenMint";
225
+ isMut: true;
195
226
  isSigner: false;
196
227
  },
197
228
  {
@@ -204,6 +235,16 @@ export type ConditionalVault = {
204
235
  isMut: false;
205
236
  isSigner: true;
206
237
  },
238
+ {
239
+ name: "userConditionalOnFinalizeTokenAccount";
240
+ isMut: true;
241
+ isSigner: false;
242
+ },
243
+ {
244
+ name: "userConditionalOnRevertTokenAccount";
245
+ isMut: true;
246
+ isSigner: false;
247
+ },
207
248
  {
208
249
  name: "userUnderlyingTokenAccount";
209
250
  isMut: true;
@@ -215,55 +256,63 @@ export type ConditionalVault = {
215
256
  isSigner: false;
216
257
  }
217
258
  ];
218
- args: [];
259
+ args: [
260
+ {
261
+ name: "amount";
262
+ type: "u64";
263
+ }
264
+ ];
219
265
  },
220
266
  {
221
- name: "addMetadataToConditionalTokens";
267
+ name: "redeemConditionalTokensForUnderlyingTokens";
222
268
  accounts: [
223
269
  {
224
- name: "payer";
225
- isMut: true;
226
- isSigner: true;
270
+ name: "vault";
271
+ isMut: false;
272
+ isSigner: false;
227
273
  },
228
274
  {
229
- name: "vault";
275
+ name: "conditionalOnFinalizeTokenMint";
230
276
  isMut: true;
231
277
  isSigner: false;
232
278
  },
233
279
  {
234
- name: "conditionalTokenMint";
280
+ name: "conditionalOnRevertTokenMint";
235
281
  isMut: true;
236
282
  isSigner: false;
237
283
  },
238
284
  {
239
- name: "conditionalTokenMetadata";
285
+ name: "vaultUnderlyingTokenAccount";
240
286
  isMut: true;
241
287
  isSigner: false;
242
288
  },
243
289
  {
244
- name: "tokenMetadataProgram";
290
+ name: "authority";
245
291
  isMut: false;
292
+ isSigner: true;
293
+ },
294
+ {
295
+ name: "userConditionalOnFinalizeTokenAccount";
296
+ isMut: true;
246
297
  isSigner: false;
247
298
  },
248
299
  {
249
- name: "systemProgram";
250
- isMut: false;
300
+ name: "userConditionalOnRevertTokenAccount";
301
+ isMut: true;
251
302
  isSigner: false;
252
303
  },
253
304
  {
254
- name: "rent";
255
- isMut: false;
305
+ name: "userUnderlyingTokenAccount";
306
+ isMut: true;
256
307
  isSigner: false;
257
- }
258
- ];
259
- args: [
308
+ },
260
309
  {
261
- name: "args";
262
- type: {
263
- defined: "AddMetadataToConditionalTokensArgs";
264
- };
310
+ name: "tokenProgram";
311
+ isMut: false;
312
+ isSigner: false;
265
313
  }
266
314
  ];
315
+ args: [];
267
316
  }
268
317
  ];
269
318
  accounts: [
@@ -273,22 +322,37 @@ export type ConditionalVault = {
273
322
  kind: "struct";
274
323
  fields: [
275
324
  {
276
- name: "question";
325
+ name: "status";
326
+ type: {
327
+ defined: "VaultStatus";
328
+ };
329
+ },
330
+ {
331
+ name: "settlementAuthority";
332
+ docs: [
333
+ "The account that can either finalize the vault to make conditional tokens",
334
+ "redeemable for underlying tokens or revert the vault to make deposit",
335
+ "slips redeemable for underlying tokens."
336
+ ];
277
337
  type: "publicKey";
278
338
  },
279
339
  {
280
340
  name: "underlyingTokenMint";
341
+ docs: ["The mint of the tokens that are deposited into the vault."];
281
342
  type: "publicKey";
282
343
  },
283
344
  {
284
345
  name: "underlyingTokenAccount";
346
+ docs: ["The vault's storage account for deposited funds."];
285
347
  type: "publicKey";
286
348
  },
287
349
  {
288
- name: "conditionalTokenMints";
289
- type: {
290
- vec: "publicKey";
291
- };
350
+ name: "conditionalOnFinalizeTokenMint";
351
+ type: "publicKey";
352
+ },
353
+ {
354
+ name: "conditionalOnRevertTokenMint";
355
+ type: "publicKey";
292
356
  },
293
357
  {
294
358
  name: "pdaBump";
@@ -300,56 +364,6 @@ export type ConditionalVault = {
300
364
  }
301
365
  ];
302
366
  };
303
- },
304
- {
305
- name: "question";
306
- docs: [
307
- "Questions represent statements about future events.",
308
- "",
309
- "These statements include:",
310
- '- "Will this proposal pass?"',
311
- '- "Who, if anyone, will be hired?"',
312
- '- "How effective will the grant committee deem this grant?"',
313
- "",
314
- 'Questions have 2 or more possible outcomes. For a question like "will this',
315
- 'proposal pass," the outcomes are "yes" and "no." For a question like "who',
316
- 'will be hired," the outcomes could be "Alice," "Bob," and "neither."',
317
- "",
318
- 'Outcomes resolve to a number between 0 and 1. Binary questions like "will',
319
- 'this proposal pass" have outcomes that resolve to exactly 0 or 1. You can',
320
- 'also have questions with scalar outcomes. For example, the question "how',
321
- 'effective will the grant committee deem this grant" could have two outcomes:',
322
- '"ineffective" and "effective." If the grant committee deems the grant 70%',
323
- 'effective, the "effective" outcome would resolve to 0.7 and the "ineffective"',
324
- "outcome would resolve to 0.3.",
325
- "",
326
- "Once resolved, the sum of all outcome resolutions is exactly 1."
327
- ];
328
- type: {
329
- kind: "struct";
330
- fields: [
331
- {
332
- name: "questionId";
333
- type: {
334
- array: ["u8", 32];
335
- };
336
- },
337
- {
338
- name: "oracle";
339
- type: "publicKey";
340
- },
341
- {
342
- name: "payoutNumerators";
343
- type: {
344
- vec: "u32";
345
- };
346
- },
347
- {
348
- name: "payoutDenominator";
349
- type: "u32";
350
- }
351
- ];
352
- };
353
367
  }
354
368
  ];
355
369
  types: [
@@ -359,52 +373,28 @@ export type ConditionalVault = {
359
373
  kind: "struct";
360
374
  fields: [
361
375
  {
362
- name: "name";
363
- type: "string";
376
+ name: "proposalNumber";
377
+ type: "u64";
364
378
  },
365
379
  {
366
- name: "symbol";
380
+ name: "onFinalizeUri";
367
381
  type: "string";
368
382
  },
369
383
  {
370
- name: "image";
384
+ name: "onRevertUri";
371
385
  type: "string";
372
386
  }
373
387
  ];
374
388
  };
375
389
  },
376
390
  {
377
- name: "InitializeQuestionArgs";
391
+ name: "InitializeConditionalVaultArgs";
378
392
  type: {
379
393
  kind: "struct";
380
394
  fields: [
381
395
  {
382
- name: "questionId";
383
- type: {
384
- array: ["u8", 32];
385
- };
386
- },
387
- {
388
- name: "oracle";
396
+ name: "settlementAuthority";
389
397
  type: "publicKey";
390
- },
391
- {
392
- name: "numConditions";
393
- type: "u8";
394
- }
395
- ];
396
- };
397
- },
398
- {
399
- name: "ResolveQuestionArgs";
400
- type: {
401
- kind: "struct";
402
- fields: [
403
- {
404
- name: "payoutNumerators";
405
- type: {
406
- vec: "u32";
407
- };
408
398
  }
409
399
  ];
410
400
  };
@@ -435,73 +425,23 @@ export type ConditionalVault = {
435
425
  },
436
426
  {
437
427
  code: 6001;
438
- name: "InsufficientConditionalTokens";
439
- msg: "Insufficient conditional token balance to merge this `amount`";
440
- },
441
- {
442
- code: 6002;
443
428
  name: "InvalidVaultUnderlyingTokenAccount";
444
429
  msg: "This `vault_underlying_token_account` is not this vault's `underlying_token_account`";
445
430
  },
446
431
  {
447
- code: 6003;
432
+ code: 6002;
448
433
  name: "InvalidConditionalTokenMint";
449
434
  msg: "This conditional token mint is not this vault's conditional token mint";
450
435
  },
451
436
  {
452
- code: 6004;
437
+ code: 6003;
453
438
  name: "CantRedeemConditionalTokens";
454
- msg: "Question needs to be resolved before users can redeem conditional tokens for underlying tokens";
439
+ msg: "Vault needs to be settled as finalized before users can redeem conditional tokens for underlying tokens";
455
440
  },
456
441
  {
457
- code: 6005;
442
+ code: 6004;
458
443
  name: "VaultAlreadySettled";
459
444
  msg: "Once a vault has been settled, its status as either finalized or reverted cannot be changed";
460
- },
461
- {
462
- code: 6006;
463
- name: "InsufficientNumConditions";
464
- msg: "Questions need 2 or more conditions";
465
- },
466
- {
467
- code: 6007;
468
- name: "InvalidNumPayoutNumerators";
469
- msg: "Invalid number of payout numerators";
470
- },
471
- {
472
- code: 6008;
473
- name: "InvalidConditionals";
474
- msg: "Client needs to pass in the list of conditional mints for a vault followed by the user's token accounts for those tokens";
475
- },
476
- {
477
- code: 6009;
478
- name: "ConditionalMintMismatch";
479
- msg: "Conditional mint not in vault";
480
- },
481
- {
482
- code: 6010;
483
- name: "BadConditionalMint";
484
- msg: "Unable to deserialize a conditional token mint";
485
- },
486
- {
487
- code: 6011;
488
- name: "BadConditionalTokenAccount";
489
- msg: "Unable to deserialize a conditional token account";
490
- },
491
- {
492
- code: 6012;
493
- name: "ConditionalTokenMintMismatch";
494
- msg: "User conditional token account mint does not match conditional mint";
495
- },
496
- {
497
- code: 6013;
498
- name: "PayoutZero";
499
- msg: "Payouts must sum to 1 or more";
500
- },
501
- {
502
- code: 6014;
503
- name: "ConditionalTokenMetadataAlreadySet";
504
- msg: "Conditional token metadata already set";
505
445
  }
506
446
  ];
507
447
  };