@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.
- package/dist/AutocratClient.d.ts +17 -9
- package/dist/AutocratClient.js +48 -141
- package/dist/AutocratClient.js.map +1 -1
- package/dist/ConditionalVaultClient.d.ts +131 -94
- package/dist/ConditionalVaultClient.js +111 -144
- package/dist/ConditionalVaultClient.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/types/autocrat.d.ts +6 -10
- package/dist/types/autocrat.js +6 -10
- package/dist/types/autocrat.js.map +1 -1
- package/dist/types/conditional_vault.d.ts +177 -164
- package/dist/types/conditional_vault.js +175 -162
- package/dist/types/conditional_vault.js.map +1 -1
- package/dist/utils/cu.js +1 -1
- package/dist/utils/pda.d.ts +1 -3
- package/dist/utils/pda.js +3 -27
- package/dist/utils/pda.js.map +1 -1
- package/dist/utils/priceMath.js +10 -3
- package/dist/utils/priceMath.js.map +1 -1
- package/package.json +1 -2
|
@@ -1,93 +1,110 @@
|
|
|
1
1
|
export type ConditionalVault = {
|
|
2
|
-
version: "0.
|
|
2
|
+
version: "0.3.0";
|
|
3
3
|
name: "conditional_vault";
|
|
4
4
|
instructions: [
|
|
5
5
|
{
|
|
6
|
-
name: "
|
|
6
|
+
name: "initializeConditionalVault";
|
|
7
7
|
accounts: [
|
|
8
8
|
{
|
|
9
|
-
name: "
|
|
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: "
|
|
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: "
|
|
38
|
-
isMut:
|
|
44
|
+
name: "associatedTokenProgram";
|
|
45
|
+
isMut: false;
|
|
39
46
|
isSigner: false;
|
|
40
47
|
},
|
|
41
48
|
{
|
|
42
|
-
name: "
|
|
49
|
+
name: "systemProgram";
|
|
43
50
|
isMut: false;
|
|
44
|
-
isSigner:
|
|
51
|
+
isSigner: false;
|
|
45
52
|
}
|
|
46
53
|
];
|
|
47
54
|
args: [
|
|
48
55
|
{
|
|
49
56
|
name: "args";
|
|
50
57
|
type: {
|
|
51
|
-
defined: "
|
|
58
|
+
defined: "InitializeConditionalVaultArgs";
|
|
52
59
|
};
|
|
53
60
|
}
|
|
54
61
|
];
|
|
55
62
|
},
|
|
56
63
|
{
|
|
57
|
-
name: "
|
|
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: "
|
|
66
|
-
isMut:
|
|
77
|
+
name: "underlyingTokenMint";
|
|
78
|
+
isMut: true;
|
|
67
79
|
isSigner: false;
|
|
68
80
|
},
|
|
69
81
|
{
|
|
70
|
-
name: "
|
|
82
|
+
name: "underlyingTokenMetadata";
|
|
71
83
|
isMut: false;
|
|
72
84
|
isSigner: false;
|
|
73
85
|
},
|
|
74
86
|
{
|
|
75
|
-
name: "
|
|
76
|
-
isMut:
|
|
87
|
+
name: "conditionalOnFinalizeTokenMint";
|
|
88
|
+
isMut: true;
|
|
77
89
|
isSigner: false;
|
|
78
90
|
},
|
|
79
91
|
{
|
|
80
|
-
name: "
|
|
92
|
+
name: "conditionalOnRevertTokenMint";
|
|
81
93
|
isMut: true;
|
|
82
|
-
isSigner:
|
|
94
|
+
isSigner: false;
|
|
83
95
|
},
|
|
84
96
|
{
|
|
85
|
-
name: "
|
|
86
|
-
isMut:
|
|
97
|
+
name: "conditionalOnFinalizeTokenMetadata";
|
|
98
|
+
isMut: true;
|
|
87
99
|
isSigner: false;
|
|
88
100
|
},
|
|
89
101
|
{
|
|
90
|
-
name: "
|
|
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: "
|
|
132
|
+
name: "settleConditionalVault";
|
|
104
133
|
accounts: [
|
|
105
134
|
{
|
|
106
|
-
name: "
|
|
135
|
+
name: "settlementAuthority";
|
|
107
136
|
isMut: false;
|
|
108
|
-
isSigner:
|
|
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: "
|
|
211
|
+
name: "mintConditionalTokens";
|
|
145
212
|
accounts: [
|
|
146
213
|
{
|
|
147
|
-
name: "
|
|
214
|
+
name: "vault";
|
|
148
215
|
isMut: false;
|
|
149
216
|
isSigner: false;
|
|
150
217
|
},
|
|
151
218
|
{
|
|
152
|
-
name: "
|
|
153
|
-
isMut:
|
|
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: "
|
|
267
|
+
name: "redeemConditionalTokensForUnderlyingTokens";
|
|
186
268
|
accounts: [
|
|
187
269
|
{
|
|
188
|
-
name: "
|
|
270
|
+
name: "vault";
|
|
189
271
|
isMut: false;
|
|
190
272
|
isSigner: false;
|
|
191
273
|
},
|
|
192
274
|
{
|
|
193
|
-
name: "
|
|
194
|
-
isMut:
|
|
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: "
|
|
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: "
|
|
241
|
-
type:
|
|
242
|
-
|
|
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: "
|
|
371
|
+
name: "AddMetadataToConditionalTokensArgs";
|
|
310
372
|
type: {
|
|
311
373
|
kind: "struct";
|
|
312
374
|
fields: [
|
|
313
375
|
{
|
|
314
|
-
name: "
|
|
315
|
-
type:
|
|
316
|
-
array: ["u8", 32];
|
|
317
|
-
};
|
|
376
|
+
name: "proposalNumber";
|
|
377
|
+
type: "u64";
|
|
318
378
|
},
|
|
319
379
|
{
|
|
320
|
-
name: "
|
|
321
|
-
type: "
|
|
380
|
+
name: "onFinalizeUri";
|
|
381
|
+
type: "string";
|
|
322
382
|
},
|
|
323
383
|
{
|
|
324
|
-
name: "
|
|
325
|
-
type: "
|
|
384
|
+
name: "onRevertUri";
|
|
385
|
+
type: "string";
|
|
326
386
|
}
|
|
327
387
|
];
|
|
328
388
|
};
|
|
329
389
|
},
|
|
330
390
|
{
|
|
331
|
-
name: "
|
|
391
|
+
name: "InitializeConditionalVaultArgs";
|
|
332
392
|
type: {
|
|
333
393
|
kind: "struct";
|
|
334
394
|
fields: [
|
|
335
395
|
{
|
|
336
|
-
name: "
|
|
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:
|
|
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:
|
|
437
|
+
code: 6003;
|
|
385
438
|
name: "CantRedeemConditionalTokens";
|
|
386
|
-
msg: "
|
|
439
|
+
msg: "Vault needs to be settled as finalized before users can redeem conditional tokens for underlying tokens";
|
|
387
440
|
},
|
|
388
441
|
{
|
|
389
|
-
code:
|
|
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
|
};
|