@metadaoproject/futarchy 0.3.0-alpha.15 → 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,93 +1,110 @@
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: [
66
+ {
67
+ name: "payer";
68
+ isMut: true;
69
+ isSigner: true;
70
+ },
59
71
  {
60
72
  name: "vault";
61
73
  isMut: true;
62
74
  isSigner: false;
63
75
  },
64
76
  {
65
- name: "question";
66
- isMut: false;
77
+ name: "underlyingTokenMint";
78
+ isMut: true;
67
79
  isSigner: false;
68
80
  },
69
81
  {
70
- name: "underlyingTokenMint";
82
+ name: "underlyingTokenMetadata";
71
83
  isMut: false;
72
84
  isSigner: false;
73
85
  },
74
86
  {
75
- name: "vaultUnderlyingTokenAccount";
76
- isMut: false;
87
+ name: "conditionalOnFinalizeTokenMint";
88
+ isMut: true;
77
89
  isSigner: false;
78
90
  },
79
91
  {
80
- name: "payer";
92
+ name: "conditionalOnRevertTokenMint";
81
93
  isMut: true;
82
- isSigner: true;
94
+ isSigner: false;
83
95
  },
84
96
  {
85
- name: "tokenProgram";
86
- isMut: false;
97
+ name: "conditionalOnFinalizeTokenMetadata";
98
+ isMut: true;
87
99
  isSigner: false;
88
100
  },
89
101
  {
90
- name: "associatedTokenProgram";
102
+ name: "conditionalOnRevertTokenMetadata";
103
+ isMut: true;
104
+ isSigner: false;
105
+ },
106
+ {
107
+ name: "tokenMetadataProgram";
91
108
  isMut: false;
92
109
  isSigner: false;
93
110
  },
@@ -95,23 +112,63 @@ export type ConditionalVault = {
95
112
  name: "systemProgram";
96
113
  isMut: false;
97
114
  isSigner: false;
115
+ },
116
+ {
117
+ name: "rent";
118
+ isMut: false;
119
+ isSigner: false;
120
+ }
121
+ ];
122
+ args: [
123
+ {
124
+ name: "args";
125
+ type: {
126
+ defined: "AddMetadataToConditionalTokensArgs";
127
+ };
98
128
  }
99
129
  ];
100
- args: [];
101
130
  },
102
131
  {
103
- name: "splitTokens";
132
+ name: "settleConditionalVault";
104
133
  accounts: [
105
134
  {
106
- name: "question";
135
+ name: "settlementAuthority";
107
136
  isMut: false;
108
- isSigner: false;
137
+ isSigner: true;
109
138
  },
139
+ {
140
+ name: "vault";
141
+ isMut: true;
142
+ isSigner: false;
143
+ }
144
+ ];
145
+ args: [
146
+ {
147
+ name: "newStatus";
148
+ type: {
149
+ defined: "VaultStatus";
150
+ };
151
+ }
152
+ ];
153
+ },
154
+ {
155
+ name: "mergeConditionalTokensForUnderlyingTokens";
156
+ accounts: [
110
157
  {
111
158
  name: "vault";
112
159
  isMut: false;
113
160
  isSigner: false;
114
161
  },
162
+ {
163
+ name: "conditionalOnFinalizeTokenMint";
164
+ isMut: true;
165
+ isSigner: false;
166
+ },
167
+ {
168
+ name: "conditionalOnRevertTokenMint";
169
+ isMut: true;
170
+ isSigner: false;
171
+ },
115
172
  {
116
173
  name: "vaultUnderlyingTokenAccount";
117
174
  isMut: true;
@@ -122,6 +179,16 @@ export type ConditionalVault = {
122
179
  isMut: false;
123
180
  isSigner: true;
124
181
  },
182
+ {
183
+ name: "userConditionalOnFinalizeTokenAccount";
184
+ isMut: true;
185
+ isSigner: false;
186
+ },
187
+ {
188
+ name: "userConditionalOnRevertTokenAccount";
189
+ isMut: true;
190
+ isSigner: false;
191
+ },
125
192
  {
126
193
  name: "userUnderlyingTokenAccount";
127
194
  isMut: true;
@@ -141,16 +208,21 @@ export type ConditionalVault = {
141
208
  ];
142
209
  },
143
210
  {
144
- name: "mergeTokens";
211
+ name: "mintConditionalTokens";
145
212
  accounts: [
146
213
  {
147
- name: "question";
214
+ name: "vault";
148
215
  isMut: false;
149
216
  isSigner: false;
150
217
  },
151
218
  {
152
- name: "vault";
153
- isMut: false;
219
+ name: "conditionalOnFinalizeTokenMint";
220
+ isMut: true;
221
+ isSigner: false;
222
+ },
223
+ {
224
+ name: "conditionalOnRevertTokenMint";
225
+ isMut: true;
154
226
  isSigner: false;
155
227
  },
156
228
  {
@@ -163,6 +235,16 @@ export type ConditionalVault = {
163
235
  isMut: false;
164
236
  isSigner: true;
165
237
  },
238
+ {
239
+ name: "userConditionalOnFinalizeTokenAccount";
240
+ isMut: true;
241
+ isSigner: false;
242
+ },
243
+ {
244
+ name: "userConditionalOnRevertTokenAccount";
245
+ isMut: true;
246
+ isSigner: false;
247
+ },
166
248
  {
167
249
  name: "userUnderlyingTokenAccount";
168
250
  isMut: true;
@@ -182,16 +264,21 @@ export type ConditionalVault = {
182
264
  ];
183
265
  },
184
266
  {
185
- name: "redeemTokens";
267
+ name: "redeemConditionalTokensForUnderlyingTokens";
186
268
  accounts: [
187
269
  {
188
- name: "question";
270
+ name: "vault";
189
271
  isMut: false;
190
272
  isSigner: false;
191
273
  },
192
274
  {
193
- name: "vault";
194
- isMut: false;
275
+ name: "conditionalOnFinalizeTokenMint";
276
+ isMut: true;
277
+ isSigner: false;
278
+ },
279
+ {
280
+ name: "conditionalOnRevertTokenMint";
281
+ isMut: true;
195
282
  isSigner: false;
196
283
  },
197
284
  {
@@ -204,6 +291,16 @@ export type ConditionalVault = {
204
291
  isMut: false;
205
292
  isSigner: true;
206
293
  },
294
+ {
295
+ name: "userConditionalOnFinalizeTokenAccount";
296
+ isMut: true;
297
+ isSigner: false;
298
+ },
299
+ {
300
+ name: "userConditionalOnRevertTokenAccount";
301
+ isMut: true;
302
+ isSigner: false;
303
+ },
207
304
  {
208
305
  name: "userUnderlyingTokenAccount";
209
306
  isMut: true;
@@ -225,22 +322,37 @@ export type ConditionalVault = {
225
322
  kind: "struct";
226
323
  fields: [
227
324
  {
228
- 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
+ ];
229
337
  type: "publicKey";
230
338
  },
231
339
  {
232
340
  name: "underlyingTokenMint";
341
+ docs: ["The mint of the tokens that are deposited into the vault."];
233
342
  type: "publicKey";
234
343
  },
235
344
  {
236
345
  name: "underlyingTokenAccount";
346
+ docs: ["The vault's storage account for deposited funds."];
237
347
  type: "publicKey";
238
348
  },
239
349
  {
240
- name: "conditionalTokenMints";
241
- type: {
242
- vec: "publicKey";
243
- };
350
+ name: "conditionalOnFinalizeTokenMint";
351
+ type: "publicKey";
352
+ },
353
+ {
354
+ name: "conditionalOnRevertTokenMint";
355
+ type: "publicKey";
244
356
  },
245
357
  {
246
358
  name: "pdaBump";
@@ -252,91 +364,37 @@ export type ConditionalVault = {
252
364
  }
253
365
  ];
254
366
  };
255
- },
256
- {
257
- name: "question";
258
- docs: [
259
- "Questions represent statements about future events.",
260
- "",
261
- "These statements include:",
262
- '- "Will this proposal pass?"',
263
- '- "Who, if anyone, will be hired?"',
264
- '- "How effective will the grant committee deem this grant?"',
265
- "",
266
- 'Questions have 2 or more possible outcomes. For a question like "will this',
267
- 'proposal pass," the outcomes are "yes" and "no." For a question like "who',
268
- 'will be hired," the outcomes could be "Alice," "Bob," and "neither."',
269
- "",
270
- 'Outcomes resolve to a number between 0 and 1. Binary questions like "will',
271
- 'this proposal pass" have outcomes that resolve to exactly 0 or 1. You can',
272
- 'also have questions with scalar outcomes. For example, the question "how',
273
- 'effective will the grant committee deem this grant" could have two outcomes:',
274
- '"ineffective" and "effective." If the grant committee deems the grant 70%',
275
- 'effective, the "effective" outcome would resolve to 0.7 and the "ineffective"',
276
- "outcome would resolve to 0.3.",
277
- "",
278
- "Once resolved, the sum of all outcome resolutions is exactly 1."
279
- ];
280
- type: {
281
- kind: "struct";
282
- fields: [
283
- {
284
- name: "questionId";
285
- type: {
286
- array: ["u8", 32];
287
- };
288
- },
289
- {
290
- name: "oracle";
291
- type: "publicKey";
292
- },
293
- {
294
- name: "payoutNumerators";
295
- type: {
296
- vec: "u32";
297
- };
298
- },
299
- {
300
- name: "payoutDenominator";
301
- type: "u32";
302
- }
303
- ];
304
- };
305
367
  }
306
368
  ];
307
369
  types: [
308
370
  {
309
- name: "InitializeQuestionArgs";
371
+ name: "AddMetadataToConditionalTokensArgs";
310
372
  type: {
311
373
  kind: "struct";
312
374
  fields: [
313
375
  {
314
- name: "questionId";
315
- type: {
316
- array: ["u8", 32];
317
- };
376
+ name: "proposalNumber";
377
+ type: "u64";
318
378
  },
319
379
  {
320
- name: "oracle";
321
- type: "publicKey";
380
+ name: "onFinalizeUri";
381
+ type: "string";
322
382
  },
323
383
  {
324
- name: "numConditions";
325
- type: "u8";
384
+ name: "onRevertUri";
385
+ type: "string";
326
386
  }
327
387
  ];
328
388
  };
329
389
  },
330
390
  {
331
- name: "ResolveQuestionArgs";
391
+ name: "InitializeConditionalVaultArgs";
332
392
  type: {
333
393
  kind: "struct";
334
394
  fields: [
335
395
  {
336
- name: "payoutNumerators";
337
- type: {
338
- vec: "u32";
339
- };
396
+ name: "settlementAuthority";
397
+ type: "publicKey";
340
398
  }
341
399
  ];
342
400
  };
@@ -367,68 +425,23 @@ export type ConditionalVault = {
367
425
  },
368
426
  {
369
427
  code: 6001;
370
- name: "InsufficientConditionalTokens";
371
- msg: "Insufficient conditional token balance to merge this `amount`";
372
- },
373
- {
374
- code: 6002;
375
428
  name: "InvalidVaultUnderlyingTokenAccount";
376
429
  msg: "This `vault_underlying_token_account` is not this vault's `underlying_token_account`";
377
430
  },
378
431
  {
379
- code: 6003;
432
+ code: 6002;
380
433
  name: "InvalidConditionalTokenMint";
381
434
  msg: "This conditional token mint is not this vault's conditional token mint";
382
435
  },
383
436
  {
384
- code: 6004;
437
+ code: 6003;
385
438
  name: "CantRedeemConditionalTokens";
386
- 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";
387
440
  },
388
441
  {
389
- code: 6005;
442
+ code: 6004;
390
443
  name: "VaultAlreadySettled";
391
444
  msg: "Once a vault has been settled, its status as either finalized or reverted cannot be changed";
392
- },
393
- {
394
- code: 6006;
395
- name: "InsufficientNumConditions";
396
- msg: "Questions need 2 or more conditions";
397
- },
398
- {
399
- code: 6007;
400
- name: "InvalidNumPayoutNumerators";
401
- msg: "Invalid number of payout numerators";
402
- },
403
- {
404
- code: 6008;
405
- name: "InvalidConditionals";
406
- msg: "Client needs to pass in the list of conditional mints for a vault followed by the user's token accounts for those tokens";
407
- },
408
- {
409
- code: 6009;
410
- name: "ConditionalMintMismatch";
411
- msg: "Conditional mint not in vault";
412
- },
413
- {
414
- code: 6010;
415
- name: "BadConditionalMint";
416
- msg: "Unable to deserialize a conditional token mint";
417
- },
418
- {
419
- code: 6011;
420
- name: "BadConditionalTokenAccount";
421
- msg: "Unable to deserialize a conditional token account";
422
- },
423
- {
424
- code: 6012;
425
- name: "ConditionalTokenMintMismatch";
426
- msg: "User conditional token account mint does not match conditional mint";
427
- },
428
- {
429
- code: 6013;
430
- name: "PayoutZero";
431
- msg: "Payouts must sum to 1 or more";
432
445
  }
433
446
  ];
434
447
  };