@drift-labs/sdk 2.87.0-beta.4 → 2.87.0-beta.6

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,3854 @@
1
+ {
2
+ "version": "0.1.0",
3
+ "name": "openbook_v2",
4
+ "instructions": [
5
+ {
6
+ "name": "createMarket",
7
+ "docs": [
8
+ "Create a [`Market`](crate::state::Market) for a given token pair."
9
+ ],
10
+ "accounts": [
11
+ {
12
+ "name": "market",
13
+ "isMut": true,
14
+ "isSigner": true
15
+ },
16
+ {
17
+ "name": "marketAuthority",
18
+ "isMut": false,
19
+ "isSigner": false
20
+ },
21
+ {
22
+ "name": "bids",
23
+ "isMut": true,
24
+ "isSigner": false,
25
+ "docs": [
26
+ "Accounts are initialized by client,",
27
+ "anchor discriminator is set first when ix exits,"
28
+ ]
29
+ },
30
+ {
31
+ "name": "asks",
32
+ "isMut": true,
33
+ "isSigner": false
34
+ },
35
+ {
36
+ "name": "eventHeap",
37
+ "isMut": true,
38
+ "isSigner": false
39
+ },
40
+ {
41
+ "name": "payer",
42
+ "isMut": true,
43
+ "isSigner": true
44
+ },
45
+ {
46
+ "name": "marketBaseVault",
47
+ "isMut": true,
48
+ "isSigner": false
49
+ },
50
+ {
51
+ "name": "marketQuoteVault",
52
+ "isMut": true,
53
+ "isSigner": false
54
+ },
55
+ {
56
+ "name": "baseMint",
57
+ "isMut": false,
58
+ "isSigner": false
59
+ },
60
+ {
61
+ "name": "quoteMint",
62
+ "isMut": false,
63
+ "isSigner": false
64
+ },
65
+ {
66
+ "name": "systemProgram",
67
+ "isMut": false,
68
+ "isSigner": false
69
+ },
70
+ {
71
+ "name": "tokenProgram",
72
+ "isMut": false,
73
+ "isSigner": false
74
+ },
75
+ {
76
+ "name": "associatedTokenProgram",
77
+ "isMut": false,
78
+ "isSigner": false
79
+ },
80
+ {
81
+ "name": "oracleA",
82
+ "isMut": false,
83
+ "isSigner": false,
84
+ "isOptional": true
85
+ },
86
+ {
87
+ "name": "oracleB",
88
+ "isMut": false,
89
+ "isSigner": false,
90
+ "isOptional": true
91
+ },
92
+ {
93
+ "name": "collectFeeAdmin",
94
+ "isMut": false,
95
+ "isSigner": false
96
+ },
97
+ {
98
+ "name": "openOrdersAdmin",
99
+ "isMut": false,
100
+ "isSigner": false,
101
+ "isOptional": true
102
+ },
103
+ {
104
+ "name": "consumeEventsAdmin",
105
+ "isMut": false,
106
+ "isSigner": false,
107
+ "isOptional": true
108
+ },
109
+ {
110
+ "name": "closeMarketAdmin",
111
+ "isMut": false,
112
+ "isSigner": false,
113
+ "isOptional": true
114
+ },
115
+ {
116
+ "name": "eventAuthority",
117
+ "isMut": false,
118
+ "isSigner": false
119
+ },
120
+ {
121
+ "name": "program",
122
+ "isMut": false,
123
+ "isSigner": false
124
+ }
125
+ ],
126
+ "args": [
127
+ {
128
+ "name": "name",
129
+ "type": "string"
130
+ },
131
+ {
132
+ "name": "oracleConfig",
133
+ "type": {
134
+ "defined": "OracleConfigParams"
135
+ }
136
+ },
137
+ {
138
+ "name": "quoteLotSize",
139
+ "type": "i64"
140
+ },
141
+ {
142
+ "name": "baseLotSize",
143
+ "type": "i64"
144
+ },
145
+ {
146
+ "name": "makerFee",
147
+ "type": "i64"
148
+ },
149
+ {
150
+ "name": "takerFee",
151
+ "type": "i64"
152
+ },
153
+ {
154
+ "name": "timeExpiry",
155
+ "type": "i64"
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "name": "closeMarket",
161
+ "docs": [
162
+ "Close a [`Market`](crate::state::Market) (only",
163
+ "[`close_market_admin`](crate::state::Market::close_market_admin))."
164
+ ],
165
+ "accounts": [
166
+ {
167
+ "name": "closeMarketAdmin",
168
+ "isMut": false,
169
+ "isSigner": true
170
+ },
171
+ {
172
+ "name": "market",
173
+ "isMut": true,
174
+ "isSigner": false
175
+ },
176
+ {
177
+ "name": "bids",
178
+ "isMut": true,
179
+ "isSigner": false
180
+ },
181
+ {
182
+ "name": "asks",
183
+ "isMut": true,
184
+ "isSigner": false
185
+ },
186
+ {
187
+ "name": "eventHeap",
188
+ "isMut": true,
189
+ "isSigner": false
190
+ },
191
+ {
192
+ "name": "solDestination",
193
+ "isMut": true,
194
+ "isSigner": false
195
+ },
196
+ {
197
+ "name": "tokenProgram",
198
+ "isMut": false,
199
+ "isSigner": false
200
+ }
201
+ ],
202
+ "args": []
203
+ },
204
+ {
205
+ "name": "createOpenOrdersIndexer",
206
+ "docs": [
207
+ "Create an [`OpenOrdersIndexer`](crate::state::OpenOrdersIndexer) account."
208
+ ],
209
+ "accounts": [
210
+ {
211
+ "name": "payer",
212
+ "isMut": true,
213
+ "isSigner": true
214
+ },
215
+ {
216
+ "name": "owner",
217
+ "isMut": false,
218
+ "isSigner": true
219
+ },
220
+ {
221
+ "name": "openOrdersIndexer",
222
+ "isMut": true,
223
+ "isSigner": false
224
+ },
225
+ {
226
+ "name": "systemProgram",
227
+ "isMut": false,
228
+ "isSigner": false
229
+ }
230
+ ],
231
+ "args": []
232
+ },
233
+ {
234
+ "name": "closeOpenOrdersIndexer",
235
+ "docs": [
236
+ "Close an [`OpenOrdersIndexer`](crate::state::OpenOrdersIndexer) account."
237
+ ],
238
+ "accounts": [
239
+ {
240
+ "name": "owner",
241
+ "isMut": false,
242
+ "isSigner": true
243
+ },
244
+ {
245
+ "name": "openOrdersIndexer",
246
+ "isMut": true,
247
+ "isSigner": false
248
+ },
249
+ {
250
+ "name": "solDestination",
251
+ "isMut": true,
252
+ "isSigner": false
253
+ },
254
+ {
255
+ "name": "tokenProgram",
256
+ "isMut": false,
257
+ "isSigner": false
258
+ }
259
+ ],
260
+ "args": []
261
+ },
262
+ {
263
+ "name": "createOpenOrdersAccount",
264
+ "docs": [
265
+ "Create an [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
266
+ ],
267
+ "accounts": [
268
+ {
269
+ "name": "payer",
270
+ "isMut": true,
271
+ "isSigner": true
272
+ },
273
+ {
274
+ "name": "owner",
275
+ "isMut": false,
276
+ "isSigner": true
277
+ },
278
+ {
279
+ "name": "delegateAccount",
280
+ "isMut": false,
281
+ "isSigner": false,
282
+ "isOptional": true
283
+ },
284
+ {
285
+ "name": "openOrdersIndexer",
286
+ "isMut": true,
287
+ "isSigner": false
288
+ },
289
+ {
290
+ "name": "openOrdersAccount",
291
+ "isMut": true,
292
+ "isSigner": false
293
+ },
294
+ {
295
+ "name": "market",
296
+ "isMut": false,
297
+ "isSigner": false
298
+ },
299
+ {
300
+ "name": "systemProgram",
301
+ "isMut": false,
302
+ "isSigner": false
303
+ }
304
+ ],
305
+ "args": [
306
+ {
307
+ "name": "name",
308
+ "type": "string"
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "name": "closeOpenOrdersAccount",
314
+ "docs": [
315
+ "Close an [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
316
+ ],
317
+ "accounts": [
318
+ {
319
+ "name": "owner",
320
+ "isMut": false,
321
+ "isSigner": true
322
+ },
323
+ {
324
+ "name": "openOrdersIndexer",
325
+ "isMut": true,
326
+ "isSigner": false
327
+ },
328
+ {
329
+ "name": "openOrdersAccount",
330
+ "isMut": true,
331
+ "isSigner": false
332
+ },
333
+ {
334
+ "name": "solDestination",
335
+ "isMut": true,
336
+ "isSigner": false
337
+ },
338
+ {
339
+ "name": "systemProgram",
340
+ "isMut": false,
341
+ "isSigner": false
342
+ }
343
+ ],
344
+ "args": []
345
+ },
346
+ {
347
+ "name": "placeOrder",
348
+ "docs": [
349
+ "Place an order.",
350
+ "",
351
+ "Different types of orders have different effects on the order book,",
352
+ "as described in [`PlaceOrderType`](crate::state::PlaceOrderType).",
353
+ "",
354
+ "`price_lots` refers to the price in lots: the number of quote lots",
355
+ "per base lot. It is ignored for `PlaceOrderType::Market` orders.",
356
+ "",
357
+ "`expiry_timestamp` is a unix timestamp for when this order should",
358
+ "expire. If 0 is passed in, the order will never expire. If the time",
359
+ "is in the past, the instruction is skipped. Timestamps in the future",
360
+ "are reduced to now + 65,535s.",
361
+ "",
362
+ "`limit` determines the maximum number of orders from the book to fill,",
363
+ "and can be used to limit CU spent. When the limit is reached, processing",
364
+ "stops and the instruction succeeds."
365
+ ],
366
+ "accounts": [
367
+ {
368
+ "name": "signer",
369
+ "isMut": false,
370
+ "isSigner": true
371
+ },
372
+ {
373
+ "name": "openOrdersAccount",
374
+ "isMut": true,
375
+ "isSigner": false
376
+ },
377
+ {
378
+ "name": "openOrdersAdmin",
379
+ "isMut": false,
380
+ "isSigner": true,
381
+ "isOptional": true
382
+ },
383
+ {
384
+ "name": "userTokenAccount",
385
+ "isMut": true,
386
+ "isSigner": false
387
+ },
388
+ {
389
+ "name": "market",
390
+ "isMut": true,
391
+ "isSigner": false
392
+ },
393
+ {
394
+ "name": "bids",
395
+ "isMut": true,
396
+ "isSigner": false
397
+ },
398
+ {
399
+ "name": "asks",
400
+ "isMut": true,
401
+ "isSigner": false
402
+ },
403
+ {
404
+ "name": "eventHeap",
405
+ "isMut": true,
406
+ "isSigner": false
407
+ },
408
+ {
409
+ "name": "marketVault",
410
+ "isMut": true,
411
+ "isSigner": false
412
+ },
413
+ {
414
+ "name": "oracleA",
415
+ "isMut": false,
416
+ "isSigner": false,
417
+ "isOptional": true
418
+ },
419
+ {
420
+ "name": "oracleB",
421
+ "isMut": false,
422
+ "isSigner": false,
423
+ "isOptional": true
424
+ },
425
+ {
426
+ "name": "tokenProgram",
427
+ "isMut": false,
428
+ "isSigner": false
429
+ }
430
+ ],
431
+ "args": [
432
+ {
433
+ "name": "args",
434
+ "type": {
435
+ "defined": "PlaceOrderArgs"
436
+ }
437
+ }
438
+ ],
439
+ "returns": {
440
+ "option": "u128"
441
+ }
442
+ },
443
+ {
444
+ "name": "editOrder",
445
+ "docs": [
446
+ "Edit an order."
447
+ ],
448
+ "accounts": [
449
+ {
450
+ "name": "signer",
451
+ "isMut": false,
452
+ "isSigner": true
453
+ },
454
+ {
455
+ "name": "openOrdersAccount",
456
+ "isMut": true,
457
+ "isSigner": false
458
+ },
459
+ {
460
+ "name": "openOrdersAdmin",
461
+ "isMut": false,
462
+ "isSigner": true,
463
+ "isOptional": true
464
+ },
465
+ {
466
+ "name": "userTokenAccount",
467
+ "isMut": true,
468
+ "isSigner": false
469
+ },
470
+ {
471
+ "name": "market",
472
+ "isMut": true,
473
+ "isSigner": false
474
+ },
475
+ {
476
+ "name": "bids",
477
+ "isMut": true,
478
+ "isSigner": false
479
+ },
480
+ {
481
+ "name": "asks",
482
+ "isMut": true,
483
+ "isSigner": false
484
+ },
485
+ {
486
+ "name": "eventHeap",
487
+ "isMut": true,
488
+ "isSigner": false
489
+ },
490
+ {
491
+ "name": "marketVault",
492
+ "isMut": true,
493
+ "isSigner": false
494
+ },
495
+ {
496
+ "name": "oracleA",
497
+ "isMut": false,
498
+ "isSigner": false,
499
+ "isOptional": true
500
+ },
501
+ {
502
+ "name": "oracleB",
503
+ "isMut": false,
504
+ "isSigner": false,
505
+ "isOptional": true
506
+ },
507
+ {
508
+ "name": "tokenProgram",
509
+ "isMut": false,
510
+ "isSigner": false
511
+ }
512
+ ],
513
+ "args": [
514
+ {
515
+ "name": "clientOrderId",
516
+ "type": "u64"
517
+ },
518
+ {
519
+ "name": "expectedCancelSize",
520
+ "type": "i64"
521
+ },
522
+ {
523
+ "name": "placeOrder",
524
+ "type": {
525
+ "defined": "PlaceOrderArgs"
526
+ }
527
+ }
528
+ ],
529
+ "returns": {
530
+ "option": "u128"
531
+ }
532
+ },
533
+ {
534
+ "name": "editOrderPegged",
535
+ "docs": [
536
+ "Edit an order pegged."
537
+ ],
538
+ "accounts": [
539
+ {
540
+ "name": "signer",
541
+ "isMut": false,
542
+ "isSigner": true
543
+ },
544
+ {
545
+ "name": "openOrdersAccount",
546
+ "isMut": true,
547
+ "isSigner": false
548
+ },
549
+ {
550
+ "name": "openOrdersAdmin",
551
+ "isMut": false,
552
+ "isSigner": true,
553
+ "isOptional": true
554
+ },
555
+ {
556
+ "name": "userTokenAccount",
557
+ "isMut": true,
558
+ "isSigner": false
559
+ },
560
+ {
561
+ "name": "market",
562
+ "isMut": true,
563
+ "isSigner": false
564
+ },
565
+ {
566
+ "name": "bids",
567
+ "isMut": true,
568
+ "isSigner": false
569
+ },
570
+ {
571
+ "name": "asks",
572
+ "isMut": true,
573
+ "isSigner": false
574
+ },
575
+ {
576
+ "name": "eventHeap",
577
+ "isMut": true,
578
+ "isSigner": false
579
+ },
580
+ {
581
+ "name": "marketVault",
582
+ "isMut": true,
583
+ "isSigner": false
584
+ },
585
+ {
586
+ "name": "oracleA",
587
+ "isMut": false,
588
+ "isSigner": false,
589
+ "isOptional": true
590
+ },
591
+ {
592
+ "name": "oracleB",
593
+ "isMut": false,
594
+ "isSigner": false,
595
+ "isOptional": true
596
+ },
597
+ {
598
+ "name": "tokenProgram",
599
+ "isMut": false,
600
+ "isSigner": false
601
+ }
602
+ ],
603
+ "args": [
604
+ {
605
+ "name": "clientOrderId",
606
+ "type": "u64"
607
+ },
608
+ {
609
+ "name": "expectedCancelSize",
610
+ "type": "i64"
611
+ },
612
+ {
613
+ "name": "placeOrder",
614
+ "type": {
615
+ "defined": "PlaceOrderPeggedArgs"
616
+ }
617
+ }
618
+ ],
619
+ "returns": {
620
+ "option": "u128"
621
+ }
622
+ },
623
+ {
624
+ "name": "placeOrders",
625
+ "docs": [
626
+ "Place multiple orders"
627
+ ],
628
+ "accounts": [
629
+ {
630
+ "name": "signer",
631
+ "isMut": false,
632
+ "isSigner": true
633
+ },
634
+ {
635
+ "name": "openOrdersAccount",
636
+ "isMut": true,
637
+ "isSigner": false
638
+ },
639
+ {
640
+ "name": "openOrdersAdmin",
641
+ "isMut": false,
642
+ "isSigner": true,
643
+ "isOptional": true
644
+ },
645
+ {
646
+ "name": "userQuoteAccount",
647
+ "isMut": true,
648
+ "isSigner": false
649
+ },
650
+ {
651
+ "name": "userBaseAccount",
652
+ "isMut": true,
653
+ "isSigner": false
654
+ },
655
+ {
656
+ "name": "market",
657
+ "isMut": true,
658
+ "isSigner": false
659
+ },
660
+ {
661
+ "name": "bids",
662
+ "isMut": true,
663
+ "isSigner": false
664
+ },
665
+ {
666
+ "name": "asks",
667
+ "isMut": true,
668
+ "isSigner": false
669
+ },
670
+ {
671
+ "name": "eventHeap",
672
+ "isMut": true,
673
+ "isSigner": false
674
+ },
675
+ {
676
+ "name": "marketQuoteVault",
677
+ "isMut": true,
678
+ "isSigner": false
679
+ },
680
+ {
681
+ "name": "marketBaseVault",
682
+ "isMut": true,
683
+ "isSigner": false
684
+ },
685
+ {
686
+ "name": "oracleA",
687
+ "isMut": false,
688
+ "isSigner": false,
689
+ "isOptional": true
690
+ },
691
+ {
692
+ "name": "oracleB",
693
+ "isMut": false,
694
+ "isSigner": false,
695
+ "isOptional": true
696
+ },
697
+ {
698
+ "name": "tokenProgram",
699
+ "isMut": false,
700
+ "isSigner": false
701
+ }
702
+ ],
703
+ "args": [
704
+ {
705
+ "name": "ordersType",
706
+ "type": {
707
+ "defined": "PlaceOrderType"
708
+ }
709
+ },
710
+ {
711
+ "name": "bids",
712
+ "type": {
713
+ "vec": {
714
+ "defined": "PlaceMultipleOrdersArgs"
715
+ }
716
+ }
717
+ },
718
+ {
719
+ "name": "asks",
720
+ "type": {
721
+ "vec": {
722
+ "defined": "PlaceMultipleOrdersArgs"
723
+ }
724
+ }
725
+ },
726
+ {
727
+ "name": "limit",
728
+ "type": "u8"
729
+ }
730
+ ],
731
+ "returns": {
732
+ "vec": {
733
+ "option": "u128"
734
+ }
735
+ }
736
+ },
737
+ {
738
+ "name": "cancelAllAndPlaceOrders",
739
+ "docs": [
740
+ "Cancel orders and place multiple orders."
741
+ ],
742
+ "accounts": [
743
+ {
744
+ "name": "signer",
745
+ "isMut": false,
746
+ "isSigner": true
747
+ },
748
+ {
749
+ "name": "openOrdersAccount",
750
+ "isMut": true,
751
+ "isSigner": false
752
+ },
753
+ {
754
+ "name": "openOrdersAdmin",
755
+ "isMut": false,
756
+ "isSigner": true,
757
+ "isOptional": true
758
+ },
759
+ {
760
+ "name": "userQuoteAccount",
761
+ "isMut": true,
762
+ "isSigner": false
763
+ },
764
+ {
765
+ "name": "userBaseAccount",
766
+ "isMut": true,
767
+ "isSigner": false
768
+ },
769
+ {
770
+ "name": "market",
771
+ "isMut": true,
772
+ "isSigner": false
773
+ },
774
+ {
775
+ "name": "bids",
776
+ "isMut": true,
777
+ "isSigner": false
778
+ },
779
+ {
780
+ "name": "asks",
781
+ "isMut": true,
782
+ "isSigner": false
783
+ },
784
+ {
785
+ "name": "eventHeap",
786
+ "isMut": true,
787
+ "isSigner": false
788
+ },
789
+ {
790
+ "name": "marketQuoteVault",
791
+ "isMut": true,
792
+ "isSigner": false
793
+ },
794
+ {
795
+ "name": "marketBaseVault",
796
+ "isMut": true,
797
+ "isSigner": false
798
+ },
799
+ {
800
+ "name": "oracleA",
801
+ "isMut": false,
802
+ "isSigner": false,
803
+ "isOptional": true
804
+ },
805
+ {
806
+ "name": "oracleB",
807
+ "isMut": false,
808
+ "isSigner": false,
809
+ "isOptional": true
810
+ },
811
+ {
812
+ "name": "tokenProgram",
813
+ "isMut": false,
814
+ "isSigner": false
815
+ }
816
+ ],
817
+ "args": [
818
+ {
819
+ "name": "ordersType",
820
+ "type": {
821
+ "defined": "PlaceOrderType"
822
+ }
823
+ },
824
+ {
825
+ "name": "bids",
826
+ "type": {
827
+ "vec": {
828
+ "defined": "PlaceMultipleOrdersArgs"
829
+ }
830
+ }
831
+ },
832
+ {
833
+ "name": "asks",
834
+ "type": {
835
+ "vec": {
836
+ "defined": "PlaceMultipleOrdersArgs"
837
+ }
838
+ }
839
+ },
840
+ {
841
+ "name": "limit",
842
+ "type": "u8"
843
+ }
844
+ ],
845
+ "returns": {
846
+ "vec": {
847
+ "option": "u128"
848
+ }
849
+ }
850
+ },
851
+ {
852
+ "name": "placeOrderPegged",
853
+ "docs": [
854
+ "Place an oracle-peg order."
855
+ ],
856
+ "accounts": [
857
+ {
858
+ "name": "signer",
859
+ "isMut": false,
860
+ "isSigner": true
861
+ },
862
+ {
863
+ "name": "openOrdersAccount",
864
+ "isMut": true,
865
+ "isSigner": false
866
+ },
867
+ {
868
+ "name": "openOrdersAdmin",
869
+ "isMut": false,
870
+ "isSigner": true,
871
+ "isOptional": true
872
+ },
873
+ {
874
+ "name": "userTokenAccount",
875
+ "isMut": true,
876
+ "isSigner": false
877
+ },
878
+ {
879
+ "name": "market",
880
+ "isMut": true,
881
+ "isSigner": false
882
+ },
883
+ {
884
+ "name": "bids",
885
+ "isMut": true,
886
+ "isSigner": false
887
+ },
888
+ {
889
+ "name": "asks",
890
+ "isMut": true,
891
+ "isSigner": false
892
+ },
893
+ {
894
+ "name": "eventHeap",
895
+ "isMut": true,
896
+ "isSigner": false
897
+ },
898
+ {
899
+ "name": "marketVault",
900
+ "isMut": true,
901
+ "isSigner": false
902
+ },
903
+ {
904
+ "name": "oracleA",
905
+ "isMut": false,
906
+ "isSigner": false,
907
+ "isOptional": true
908
+ },
909
+ {
910
+ "name": "oracleB",
911
+ "isMut": false,
912
+ "isSigner": false,
913
+ "isOptional": true
914
+ },
915
+ {
916
+ "name": "tokenProgram",
917
+ "isMut": false,
918
+ "isSigner": false
919
+ }
920
+ ],
921
+ "args": [
922
+ {
923
+ "name": "args",
924
+ "type": {
925
+ "defined": "PlaceOrderPeggedArgs"
926
+ }
927
+ }
928
+ ],
929
+ "returns": {
930
+ "option": "u128"
931
+ }
932
+ },
933
+ {
934
+ "name": "placeTakeOrder",
935
+ "docs": [
936
+ "Place an order that shall take existing liquidity off of the book, not",
937
+ "add a new order off the book.",
938
+ "",
939
+ "This type of order allows for instant token settlement for the taker."
940
+ ],
941
+ "accounts": [
942
+ {
943
+ "name": "signer",
944
+ "isMut": true,
945
+ "isSigner": true
946
+ },
947
+ {
948
+ "name": "penaltyPayer",
949
+ "isMut": true,
950
+ "isSigner": true
951
+ },
952
+ {
953
+ "name": "market",
954
+ "isMut": true,
955
+ "isSigner": false
956
+ },
957
+ {
958
+ "name": "marketAuthority",
959
+ "isMut": false,
960
+ "isSigner": false
961
+ },
962
+ {
963
+ "name": "bids",
964
+ "isMut": true,
965
+ "isSigner": false
966
+ },
967
+ {
968
+ "name": "asks",
969
+ "isMut": true,
970
+ "isSigner": false
971
+ },
972
+ {
973
+ "name": "marketBaseVault",
974
+ "isMut": true,
975
+ "isSigner": false
976
+ },
977
+ {
978
+ "name": "marketQuoteVault",
979
+ "isMut": true,
980
+ "isSigner": false
981
+ },
982
+ {
983
+ "name": "eventHeap",
984
+ "isMut": true,
985
+ "isSigner": false
986
+ },
987
+ {
988
+ "name": "userBaseAccount",
989
+ "isMut": true,
990
+ "isSigner": false
991
+ },
992
+ {
993
+ "name": "userQuoteAccount",
994
+ "isMut": true,
995
+ "isSigner": false
996
+ },
997
+ {
998
+ "name": "oracleA",
999
+ "isMut": false,
1000
+ "isSigner": false,
1001
+ "isOptional": true
1002
+ },
1003
+ {
1004
+ "name": "oracleB",
1005
+ "isMut": false,
1006
+ "isSigner": false,
1007
+ "isOptional": true
1008
+ },
1009
+ {
1010
+ "name": "tokenProgram",
1011
+ "isMut": false,
1012
+ "isSigner": false
1013
+ },
1014
+ {
1015
+ "name": "systemProgram",
1016
+ "isMut": false,
1017
+ "isSigner": false
1018
+ },
1019
+ {
1020
+ "name": "openOrdersAdmin",
1021
+ "isMut": false,
1022
+ "isSigner": true,
1023
+ "isOptional": true
1024
+ }
1025
+ ],
1026
+ "args": [
1027
+ {
1028
+ "name": "args",
1029
+ "type": {
1030
+ "defined": "PlaceTakeOrderArgs"
1031
+ }
1032
+ }
1033
+ ]
1034
+ },
1035
+ {
1036
+ "name": "consumeEvents",
1037
+ "docs": [
1038
+ "Process up to `limit` [events](crate::state::AnyEvent).",
1039
+ "",
1040
+ "When a user places a 'take' order, they do not know beforehand which",
1041
+ "market maker will have placed the 'make' order that they get executed",
1042
+ "against. This prevents them from passing in a market maker's",
1043
+ "[`OpenOrdersAccount`](crate::state::OpenOrdersAccount), which is needed",
1044
+ "to credit/debit the relevant tokens to/from the maker. As such, Openbook",
1045
+ "uses a 'crank' system, where `place_order` only emits events, and",
1046
+ "`consume_events` handles token settlement.",
1047
+ "",
1048
+ "Currently, there are two types of events: [`FillEvent`](crate::state::FillEvent)s",
1049
+ "and [`OutEvent`](crate::state::OutEvent)s.",
1050
+ "",
1051
+ "A `FillEvent` is emitted when an order is filled, and it is handled by",
1052
+ "debiting whatever the taker is selling from the taker and crediting",
1053
+ "it to the maker, and debiting whatever the taker is buying from the",
1054
+ "maker and crediting it to the taker. Note that *no tokens are moved*,",
1055
+ "these are just debits and credits to each party's [`Position`](crate::state::Position).",
1056
+ "",
1057
+ "An `OutEvent` is emitted when a limit order needs to be removed from",
1058
+ "the book during a `place_order` invocation, and it is handled by",
1059
+ "crediting whatever the maker would have sold (quote token in a bid,",
1060
+ "base token in an ask) back to the maker."
1061
+ ],
1062
+ "accounts": [
1063
+ {
1064
+ "name": "consumeEventsAdmin",
1065
+ "isMut": false,
1066
+ "isSigner": true,
1067
+ "isOptional": true
1068
+ },
1069
+ {
1070
+ "name": "market",
1071
+ "isMut": true,
1072
+ "isSigner": false
1073
+ },
1074
+ {
1075
+ "name": "eventHeap",
1076
+ "isMut": true,
1077
+ "isSigner": false
1078
+ }
1079
+ ],
1080
+ "args": [
1081
+ {
1082
+ "name": "limit",
1083
+ "type": "u64"
1084
+ }
1085
+ ]
1086
+ },
1087
+ {
1088
+ "name": "consumeGivenEvents",
1089
+ "docs": [
1090
+ "Process the [events](crate::state::AnyEvent) at the given positions."
1091
+ ],
1092
+ "accounts": [
1093
+ {
1094
+ "name": "consumeEventsAdmin",
1095
+ "isMut": false,
1096
+ "isSigner": true,
1097
+ "isOptional": true
1098
+ },
1099
+ {
1100
+ "name": "market",
1101
+ "isMut": true,
1102
+ "isSigner": false
1103
+ },
1104
+ {
1105
+ "name": "eventHeap",
1106
+ "isMut": true,
1107
+ "isSigner": false
1108
+ }
1109
+ ],
1110
+ "args": [
1111
+ {
1112
+ "name": "slots",
1113
+ "type": {
1114
+ "vec": "u64"
1115
+ }
1116
+ }
1117
+ ]
1118
+ },
1119
+ {
1120
+ "name": "cancelOrder",
1121
+ "docs": [
1122
+ "Cancel an order by its `order_id`.",
1123
+ "",
1124
+ "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a",
1125
+ "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
1126
+ ],
1127
+ "accounts": [
1128
+ {
1129
+ "name": "signer",
1130
+ "isMut": false,
1131
+ "isSigner": true
1132
+ },
1133
+ {
1134
+ "name": "openOrdersAccount",
1135
+ "isMut": true,
1136
+ "isSigner": false
1137
+ },
1138
+ {
1139
+ "name": "market",
1140
+ "isMut": false,
1141
+ "isSigner": false
1142
+ },
1143
+ {
1144
+ "name": "bids",
1145
+ "isMut": true,
1146
+ "isSigner": false
1147
+ },
1148
+ {
1149
+ "name": "asks",
1150
+ "isMut": true,
1151
+ "isSigner": false
1152
+ }
1153
+ ],
1154
+ "args": [
1155
+ {
1156
+ "name": "orderId",
1157
+ "type": "u128"
1158
+ }
1159
+ ]
1160
+ },
1161
+ {
1162
+ "name": "cancelOrderByClientOrderId",
1163
+ "docs": [
1164
+ "Cancel an order by its `client_order_id`.",
1165
+ "",
1166
+ "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a",
1167
+ "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)."
1168
+ ],
1169
+ "accounts": [
1170
+ {
1171
+ "name": "signer",
1172
+ "isMut": false,
1173
+ "isSigner": true
1174
+ },
1175
+ {
1176
+ "name": "openOrdersAccount",
1177
+ "isMut": true,
1178
+ "isSigner": false
1179
+ },
1180
+ {
1181
+ "name": "market",
1182
+ "isMut": false,
1183
+ "isSigner": false
1184
+ },
1185
+ {
1186
+ "name": "bids",
1187
+ "isMut": true,
1188
+ "isSigner": false
1189
+ },
1190
+ {
1191
+ "name": "asks",
1192
+ "isMut": true,
1193
+ "isSigner": false
1194
+ }
1195
+ ],
1196
+ "args": [
1197
+ {
1198
+ "name": "clientOrderId",
1199
+ "type": "u64"
1200
+ }
1201
+ ],
1202
+ "returns": "i64"
1203
+ },
1204
+ {
1205
+ "name": "cancelAllOrders",
1206
+ "docs": [
1207
+ "Cancel up to `limit` orders, optionally filtering by side"
1208
+ ],
1209
+ "accounts": [
1210
+ {
1211
+ "name": "signer",
1212
+ "isMut": false,
1213
+ "isSigner": true
1214
+ },
1215
+ {
1216
+ "name": "openOrdersAccount",
1217
+ "isMut": true,
1218
+ "isSigner": false
1219
+ },
1220
+ {
1221
+ "name": "market",
1222
+ "isMut": false,
1223
+ "isSigner": false
1224
+ },
1225
+ {
1226
+ "name": "bids",
1227
+ "isMut": true,
1228
+ "isSigner": false
1229
+ },
1230
+ {
1231
+ "name": "asks",
1232
+ "isMut": true,
1233
+ "isSigner": false
1234
+ }
1235
+ ],
1236
+ "args": [
1237
+ {
1238
+ "name": "sideOption",
1239
+ "type": {
1240
+ "option": {
1241
+ "defined": "Side"
1242
+ }
1243
+ }
1244
+ },
1245
+ {
1246
+ "name": "limit",
1247
+ "type": "u8"
1248
+ }
1249
+ ]
1250
+ },
1251
+ {
1252
+ "name": "deposit",
1253
+ "docs": [
1254
+ "Deposit a certain amount of `base` and `quote` lamports into one's",
1255
+ "[`Position`](crate::state::Position).",
1256
+ "",
1257
+ "Makers might wish to `deposit`, rather than have actual tokens moved for",
1258
+ "each trade, in order to reduce CUs."
1259
+ ],
1260
+ "accounts": [
1261
+ {
1262
+ "name": "owner",
1263
+ "isMut": false,
1264
+ "isSigner": true
1265
+ },
1266
+ {
1267
+ "name": "userBaseAccount",
1268
+ "isMut": true,
1269
+ "isSigner": false
1270
+ },
1271
+ {
1272
+ "name": "userQuoteAccount",
1273
+ "isMut": true,
1274
+ "isSigner": false
1275
+ },
1276
+ {
1277
+ "name": "openOrdersAccount",
1278
+ "isMut": true,
1279
+ "isSigner": false
1280
+ },
1281
+ {
1282
+ "name": "market",
1283
+ "isMut": true,
1284
+ "isSigner": false
1285
+ },
1286
+ {
1287
+ "name": "marketBaseVault",
1288
+ "isMut": true,
1289
+ "isSigner": false
1290
+ },
1291
+ {
1292
+ "name": "marketQuoteVault",
1293
+ "isMut": true,
1294
+ "isSigner": false
1295
+ },
1296
+ {
1297
+ "name": "tokenProgram",
1298
+ "isMut": false,
1299
+ "isSigner": false
1300
+ }
1301
+ ],
1302
+ "args": [
1303
+ {
1304
+ "name": "baseAmount",
1305
+ "type": "u64"
1306
+ },
1307
+ {
1308
+ "name": "quoteAmount",
1309
+ "type": "u64"
1310
+ }
1311
+ ]
1312
+ },
1313
+ {
1314
+ "name": "refill",
1315
+ "docs": [
1316
+ "Refill a certain amount of `base` and `quote` lamports. The amount being passed is the",
1317
+ "total lamports that the [`Position`](crate::state::Position) will have.",
1318
+ "",
1319
+ "Makers might wish to `refill`, rather than have actual tokens moved for",
1320
+ "each trade, in order to reduce CUs."
1321
+ ],
1322
+ "accounts": [
1323
+ {
1324
+ "name": "owner",
1325
+ "isMut": false,
1326
+ "isSigner": true
1327
+ },
1328
+ {
1329
+ "name": "userBaseAccount",
1330
+ "isMut": true,
1331
+ "isSigner": false
1332
+ },
1333
+ {
1334
+ "name": "userQuoteAccount",
1335
+ "isMut": true,
1336
+ "isSigner": false
1337
+ },
1338
+ {
1339
+ "name": "openOrdersAccount",
1340
+ "isMut": true,
1341
+ "isSigner": false
1342
+ },
1343
+ {
1344
+ "name": "market",
1345
+ "isMut": true,
1346
+ "isSigner": false
1347
+ },
1348
+ {
1349
+ "name": "marketBaseVault",
1350
+ "isMut": true,
1351
+ "isSigner": false
1352
+ },
1353
+ {
1354
+ "name": "marketQuoteVault",
1355
+ "isMut": true,
1356
+ "isSigner": false
1357
+ },
1358
+ {
1359
+ "name": "tokenProgram",
1360
+ "isMut": false,
1361
+ "isSigner": false
1362
+ }
1363
+ ],
1364
+ "args": [
1365
+ {
1366
+ "name": "baseAmount",
1367
+ "type": "u64"
1368
+ },
1369
+ {
1370
+ "name": "quoteAmount",
1371
+ "type": "u64"
1372
+ }
1373
+ ]
1374
+ },
1375
+ {
1376
+ "name": "settleFunds",
1377
+ "docs": [
1378
+ "Withdraw any available tokens."
1379
+ ],
1380
+ "accounts": [
1381
+ {
1382
+ "name": "owner",
1383
+ "isMut": true,
1384
+ "isSigner": true
1385
+ },
1386
+ {
1387
+ "name": "penaltyPayer",
1388
+ "isMut": true,
1389
+ "isSigner": true
1390
+ },
1391
+ {
1392
+ "name": "openOrdersAccount",
1393
+ "isMut": true,
1394
+ "isSigner": false
1395
+ },
1396
+ {
1397
+ "name": "market",
1398
+ "isMut": true,
1399
+ "isSigner": false
1400
+ },
1401
+ {
1402
+ "name": "marketAuthority",
1403
+ "isMut": false,
1404
+ "isSigner": false
1405
+ },
1406
+ {
1407
+ "name": "marketBaseVault",
1408
+ "isMut": true,
1409
+ "isSigner": false
1410
+ },
1411
+ {
1412
+ "name": "marketQuoteVault",
1413
+ "isMut": true,
1414
+ "isSigner": false
1415
+ },
1416
+ {
1417
+ "name": "userBaseAccount",
1418
+ "isMut": true,
1419
+ "isSigner": false
1420
+ },
1421
+ {
1422
+ "name": "userQuoteAccount",
1423
+ "isMut": true,
1424
+ "isSigner": false
1425
+ },
1426
+ {
1427
+ "name": "referrerAccount",
1428
+ "isMut": true,
1429
+ "isSigner": false,
1430
+ "isOptional": true
1431
+ },
1432
+ {
1433
+ "name": "tokenProgram",
1434
+ "isMut": false,
1435
+ "isSigner": false
1436
+ },
1437
+ {
1438
+ "name": "systemProgram",
1439
+ "isMut": false,
1440
+ "isSigner": false
1441
+ }
1442
+ ],
1443
+ "args": []
1444
+ },
1445
+ {
1446
+ "name": "settleFundsExpired",
1447
+ "docs": [
1448
+ "Withdraw any available tokens when the market is expired (only",
1449
+ "[`close_market_admin`](crate::state::Market::close_market_admin))."
1450
+ ],
1451
+ "accounts": [
1452
+ {
1453
+ "name": "closeMarketAdmin",
1454
+ "isMut": false,
1455
+ "isSigner": true
1456
+ },
1457
+ {
1458
+ "name": "owner",
1459
+ "isMut": true,
1460
+ "isSigner": true
1461
+ },
1462
+ {
1463
+ "name": "penaltyPayer",
1464
+ "isMut": true,
1465
+ "isSigner": true
1466
+ },
1467
+ {
1468
+ "name": "openOrdersAccount",
1469
+ "isMut": true,
1470
+ "isSigner": false
1471
+ },
1472
+ {
1473
+ "name": "market",
1474
+ "isMut": true,
1475
+ "isSigner": false
1476
+ },
1477
+ {
1478
+ "name": "marketAuthority",
1479
+ "isMut": false,
1480
+ "isSigner": false
1481
+ },
1482
+ {
1483
+ "name": "marketBaseVault",
1484
+ "isMut": true,
1485
+ "isSigner": false
1486
+ },
1487
+ {
1488
+ "name": "marketQuoteVault",
1489
+ "isMut": true,
1490
+ "isSigner": false
1491
+ },
1492
+ {
1493
+ "name": "userBaseAccount",
1494
+ "isMut": true,
1495
+ "isSigner": false
1496
+ },
1497
+ {
1498
+ "name": "userQuoteAccount",
1499
+ "isMut": true,
1500
+ "isSigner": false
1501
+ },
1502
+ {
1503
+ "name": "referrerAccount",
1504
+ "isMut": true,
1505
+ "isSigner": false,
1506
+ "isOptional": true
1507
+ },
1508
+ {
1509
+ "name": "tokenProgram",
1510
+ "isMut": false,
1511
+ "isSigner": false
1512
+ },
1513
+ {
1514
+ "name": "systemProgram",
1515
+ "isMut": false,
1516
+ "isSigner": false
1517
+ }
1518
+ ],
1519
+ "args": []
1520
+ },
1521
+ {
1522
+ "name": "sweepFees",
1523
+ "docs": [
1524
+ "Sweep fees, as a [`Market`](crate::state::Market)'s admin."
1525
+ ],
1526
+ "accounts": [
1527
+ {
1528
+ "name": "collectFeeAdmin",
1529
+ "isMut": false,
1530
+ "isSigner": true
1531
+ },
1532
+ {
1533
+ "name": "market",
1534
+ "isMut": true,
1535
+ "isSigner": false
1536
+ },
1537
+ {
1538
+ "name": "marketAuthority",
1539
+ "isMut": false,
1540
+ "isSigner": false
1541
+ },
1542
+ {
1543
+ "name": "marketQuoteVault",
1544
+ "isMut": true,
1545
+ "isSigner": false
1546
+ },
1547
+ {
1548
+ "name": "tokenReceiverAccount",
1549
+ "isMut": true,
1550
+ "isSigner": false
1551
+ },
1552
+ {
1553
+ "name": "tokenProgram",
1554
+ "isMut": false,
1555
+ "isSigner": false
1556
+ }
1557
+ ],
1558
+ "args": []
1559
+ },
1560
+ {
1561
+ "name": "setDelegate",
1562
+ "docs": [
1563
+ "Update the [`delegate`](crate::state::OpenOrdersAccount::delegate) of an open orders account."
1564
+ ],
1565
+ "accounts": [
1566
+ {
1567
+ "name": "owner",
1568
+ "isMut": true,
1569
+ "isSigner": true
1570
+ },
1571
+ {
1572
+ "name": "openOrdersAccount",
1573
+ "isMut": true,
1574
+ "isSigner": false
1575
+ },
1576
+ {
1577
+ "name": "delegateAccount",
1578
+ "isMut": false,
1579
+ "isSigner": false,
1580
+ "isOptional": true
1581
+ }
1582
+ ],
1583
+ "args": []
1584
+ },
1585
+ {
1586
+ "name": "setMarketExpired",
1587
+ "docs": [
1588
+ "Set market to expired before pruning orders and closing the market (only",
1589
+ "[`close_market_admin`](crate::state::Market::close_market_admin))."
1590
+ ],
1591
+ "accounts": [
1592
+ {
1593
+ "name": "closeMarketAdmin",
1594
+ "isMut": false,
1595
+ "isSigner": true
1596
+ },
1597
+ {
1598
+ "name": "market",
1599
+ "isMut": true,
1600
+ "isSigner": false
1601
+ }
1602
+ ],
1603
+ "args": []
1604
+ },
1605
+ {
1606
+ "name": "pruneOrders",
1607
+ "docs": [
1608
+ "Remove orders from the book when the market is expired (only",
1609
+ "[`close_market_admin`](crate::state::Market::close_market_admin))."
1610
+ ],
1611
+ "accounts": [
1612
+ {
1613
+ "name": "closeMarketAdmin",
1614
+ "isMut": false,
1615
+ "isSigner": true
1616
+ },
1617
+ {
1618
+ "name": "openOrdersAccount",
1619
+ "isMut": true,
1620
+ "isSigner": false
1621
+ },
1622
+ {
1623
+ "name": "market",
1624
+ "isMut": false,
1625
+ "isSigner": false
1626
+ },
1627
+ {
1628
+ "name": "bids",
1629
+ "isMut": true,
1630
+ "isSigner": false
1631
+ },
1632
+ {
1633
+ "name": "asks",
1634
+ "isMut": true,
1635
+ "isSigner": false
1636
+ }
1637
+ ],
1638
+ "args": [
1639
+ {
1640
+ "name": "limit",
1641
+ "type": "u8"
1642
+ }
1643
+ ]
1644
+ },
1645
+ {
1646
+ "name": "stubOracleCreate",
1647
+ "accounts": [
1648
+ {
1649
+ "name": "payer",
1650
+ "isMut": true,
1651
+ "isSigner": true
1652
+ },
1653
+ {
1654
+ "name": "owner",
1655
+ "isMut": false,
1656
+ "isSigner": true
1657
+ },
1658
+ {
1659
+ "name": "oracle",
1660
+ "isMut": true,
1661
+ "isSigner": false
1662
+ },
1663
+ {
1664
+ "name": "mint",
1665
+ "isMut": false,
1666
+ "isSigner": false
1667
+ },
1668
+ {
1669
+ "name": "systemProgram",
1670
+ "isMut": false,
1671
+ "isSigner": false
1672
+ }
1673
+ ],
1674
+ "args": [
1675
+ {
1676
+ "name": "price",
1677
+ "type": "f64"
1678
+ }
1679
+ ]
1680
+ },
1681
+ {
1682
+ "name": "stubOracleClose",
1683
+ "accounts": [
1684
+ {
1685
+ "name": "owner",
1686
+ "isMut": false,
1687
+ "isSigner": true
1688
+ },
1689
+ {
1690
+ "name": "oracle",
1691
+ "isMut": true,
1692
+ "isSigner": false
1693
+ },
1694
+ {
1695
+ "name": "solDestination",
1696
+ "isMut": true,
1697
+ "isSigner": false
1698
+ },
1699
+ {
1700
+ "name": "tokenProgram",
1701
+ "isMut": false,
1702
+ "isSigner": false
1703
+ }
1704
+ ],
1705
+ "args": []
1706
+ },
1707
+ {
1708
+ "name": "stubOracleSet",
1709
+ "accounts": [
1710
+ {
1711
+ "name": "owner",
1712
+ "isMut": false,
1713
+ "isSigner": true
1714
+ },
1715
+ {
1716
+ "name": "oracle",
1717
+ "isMut": true,
1718
+ "isSigner": false
1719
+ }
1720
+ ],
1721
+ "args": [
1722
+ {
1723
+ "name": "price",
1724
+ "type": "f64"
1725
+ }
1726
+ ]
1727
+ }
1728
+ ],
1729
+ "accounts": [
1730
+ {
1731
+ "name": "Market",
1732
+ "type": {
1733
+ "kind": "struct",
1734
+ "fields": [
1735
+ {
1736
+ "name": "bump",
1737
+ "docs": [
1738
+ "PDA bump"
1739
+ ],
1740
+ "type": "u8"
1741
+ },
1742
+ {
1743
+ "name": "baseDecimals",
1744
+ "docs": [
1745
+ "Number of decimals used for the base token.",
1746
+ "",
1747
+ "Used to convert the oracle's price into a native/native price."
1748
+ ],
1749
+ "type": "u8"
1750
+ },
1751
+ {
1752
+ "name": "quoteDecimals",
1753
+ "type": "u8"
1754
+ },
1755
+ {
1756
+ "name": "padding1",
1757
+ "type": {
1758
+ "array": [
1759
+ "u8",
1760
+ 5
1761
+ ]
1762
+ }
1763
+ },
1764
+ {
1765
+ "name": "marketAuthority",
1766
+ "type": "publicKey"
1767
+ },
1768
+ {
1769
+ "name": "timeExpiry",
1770
+ "docs": [
1771
+ "No expiry = 0. Market will expire and no trading allowed after time_expiry"
1772
+ ],
1773
+ "type": "i64"
1774
+ },
1775
+ {
1776
+ "name": "collectFeeAdmin",
1777
+ "docs": [
1778
+ "Admin who can collect fees from the market"
1779
+ ],
1780
+ "type": "publicKey"
1781
+ },
1782
+ {
1783
+ "name": "openOrdersAdmin",
1784
+ "docs": [
1785
+ "Admin who must sign off on all order creations"
1786
+ ],
1787
+ "type": {
1788
+ "defined": "NonZeroPubkeyOption"
1789
+ }
1790
+ },
1791
+ {
1792
+ "name": "consumeEventsAdmin",
1793
+ "docs": [
1794
+ "Admin who must sign off on all event consumptions"
1795
+ ],
1796
+ "type": {
1797
+ "defined": "NonZeroPubkeyOption"
1798
+ }
1799
+ },
1800
+ {
1801
+ "name": "closeMarketAdmin",
1802
+ "docs": [
1803
+ "Admin who can set market expired, prune orders and close the market"
1804
+ ],
1805
+ "type": {
1806
+ "defined": "NonZeroPubkeyOption"
1807
+ }
1808
+ },
1809
+ {
1810
+ "name": "name",
1811
+ "docs": [
1812
+ "Name. Trailing zero bytes are ignored."
1813
+ ],
1814
+ "type": {
1815
+ "array": [
1816
+ "u8",
1817
+ 16
1818
+ ]
1819
+ }
1820
+ },
1821
+ {
1822
+ "name": "bids",
1823
+ "docs": [
1824
+ "Address of the BookSide account for bids"
1825
+ ],
1826
+ "type": "publicKey"
1827
+ },
1828
+ {
1829
+ "name": "asks",
1830
+ "docs": [
1831
+ "Address of the BookSide account for asks"
1832
+ ],
1833
+ "type": "publicKey"
1834
+ },
1835
+ {
1836
+ "name": "eventHeap",
1837
+ "docs": [
1838
+ "Address of the EventHeap account"
1839
+ ],
1840
+ "type": "publicKey"
1841
+ },
1842
+ {
1843
+ "name": "oracleA",
1844
+ "docs": [
1845
+ "Oracles account address"
1846
+ ],
1847
+ "type": {
1848
+ "defined": "NonZeroPubkeyOption"
1849
+ }
1850
+ },
1851
+ {
1852
+ "name": "oracleB",
1853
+ "type": {
1854
+ "defined": "NonZeroPubkeyOption"
1855
+ }
1856
+ },
1857
+ {
1858
+ "name": "oracleConfig",
1859
+ "docs": [
1860
+ "Oracle configuration"
1861
+ ],
1862
+ "type": {
1863
+ "defined": "OracleConfig"
1864
+ }
1865
+ },
1866
+ {
1867
+ "name": "quoteLotSize",
1868
+ "docs": [
1869
+ "Number of quote native in a quote lot. Must be a power of 10.",
1870
+ "",
1871
+ "Primarily useful for increasing the tick size on the market: A lot price",
1872
+ "of 1 becomes a native price of quote_lot_size/base_lot_size becomes a",
1873
+ "ui price of quote_lot_size*base_decimals/base_lot_size/quote_decimals."
1874
+ ],
1875
+ "type": "i64"
1876
+ },
1877
+ {
1878
+ "name": "baseLotSize",
1879
+ "docs": [
1880
+ "Number of base native in a base lot. Must be a power of 10.",
1881
+ "",
1882
+ "Example: If base decimals for the underlying asset is 6, base lot size",
1883
+ "is 100 and and base position lots is 10_000 then base position native is",
1884
+ "1_000_000 and base position ui is 1."
1885
+ ],
1886
+ "type": "i64"
1887
+ },
1888
+ {
1889
+ "name": "seqNum",
1890
+ "docs": [
1891
+ "Total number of orders seen"
1892
+ ],
1893
+ "type": "u64"
1894
+ },
1895
+ {
1896
+ "name": "registrationTime",
1897
+ "docs": [
1898
+ "Timestamp in seconds that the market was registered at."
1899
+ ],
1900
+ "type": "i64"
1901
+ },
1902
+ {
1903
+ "name": "makerFee",
1904
+ "docs": [
1905
+ "Fees",
1906
+ "",
1907
+ "Fee (in 10^-6) when matching maker orders.",
1908
+ "maker_fee < 0 it means some of the taker_fees goes to the maker",
1909
+ "maker_fee > 0, it means no taker_fee to the maker, and maker fee goes to the referral"
1910
+ ],
1911
+ "type": "i64"
1912
+ },
1913
+ {
1914
+ "name": "takerFee",
1915
+ "docs": [
1916
+ "Fee (in 10^-6) for taker orders, always >= 0."
1917
+ ],
1918
+ "type": "i64"
1919
+ },
1920
+ {
1921
+ "name": "feesAccrued",
1922
+ "docs": [
1923
+ "Total fees accrued in native quote"
1924
+ ],
1925
+ "type": "u128"
1926
+ },
1927
+ {
1928
+ "name": "feesToReferrers",
1929
+ "docs": [
1930
+ "Total fees settled in native quote"
1931
+ ],
1932
+ "type": "u128"
1933
+ },
1934
+ {
1935
+ "name": "referrerRebatesAccrued",
1936
+ "docs": [
1937
+ "Referrer rebates to be distributed"
1938
+ ],
1939
+ "type": "u64"
1940
+ },
1941
+ {
1942
+ "name": "feesAvailable",
1943
+ "docs": [
1944
+ "Fees generated and available to withdraw via sweep_fees"
1945
+ ],
1946
+ "type": "u64"
1947
+ },
1948
+ {
1949
+ "name": "makerVolume",
1950
+ "docs": [
1951
+ "Cumulative maker volume (same as taker volume) in quote native units"
1952
+ ],
1953
+ "type": "u128"
1954
+ },
1955
+ {
1956
+ "name": "takerVolumeWoOo",
1957
+ "docs": [
1958
+ "Cumulative taker volume in quote native units due to place take orders"
1959
+ ],
1960
+ "type": "u128"
1961
+ },
1962
+ {
1963
+ "name": "baseMint",
1964
+ "type": "publicKey"
1965
+ },
1966
+ {
1967
+ "name": "quoteMint",
1968
+ "type": "publicKey"
1969
+ },
1970
+ {
1971
+ "name": "marketBaseVault",
1972
+ "type": "publicKey"
1973
+ },
1974
+ {
1975
+ "name": "baseDepositTotal",
1976
+ "type": "u64"
1977
+ },
1978
+ {
1979
+ "name": "marketQuoteVault",
1980
+ "type": "publicKey"
1981
+ },
1982
+ {
1983
+ "name": "quoteDepositTotal",
1984
+ "type": "u64"
1985
+ },
1986
+ {
1987
+ "name": "reserved",
1988
+ "type": {
1989
+ "array": [
1990
+ "u8",
1991
+ 128
1992
+ ]
1993
+ }
1994
+ }
1995
+ ]
1996
+ }
1997
+ },
1998
+ {
1999
+ "name": "OpenOrdersAccount",
2000
+ "type": {
2001
+ "kind": "struct",
2002
+ "fields": [
2003
+ {
2004
+ "name": "owner",
2005
+ "type": "publicKey"
2006
+ },
2007
+ {
2008
+ "name": "market",
2009
+ "type": "publicKey"
2010
+ },
2011
+ {
2012
+ "name": "name",
2013
+ "type": {
2014
+ "array": [
2015
+ "u8",
2016
+ 32
2017
+ ]
2018
+ }
2019
+ },
2020
+ {
2021
+ "name": "delegate",
2022
+ "type": {
2023
+ "defined": "NonZeroPubkeyOption"
2024
+ }
2025
+ },
2026
+ {
2027
+ "name": "accountNum",
2028
+ "type": "u32"
2029
+ },
2030
+ {
2031
+ "name": "bump",
2032
+ "type": "u8"
2033
+ },
2034
+ {
2035
+ "name": "version",
2036
+ "type": "u8"
2037
+ },
2038
+ {
2039
+ "name": "padding",
2040
+ "type": {
2041
+ "array": [
2042
+ "u8",
2043
+ 2
2044
+ ]
2045
+ }
2046
+ },
2047
+ {
2048
+ "name": "position",
2049
+ "type": {
2050
+ "defined": "Position"
2051
+ }
2052
+ },
2053
+ {
2054
+ "name": "openOrders",
2055
+ "type": {
2056
+ "array": [
2057
+ {
2058
+ "defined": "OpenOrder"
2059
+ },
2060
+ 24
2061
+ ]
2062
+ }
2063
+ }
2064
+ ]
2065
+ }
2066
+ },
2067
+ {
2068
+ "name": "OpenOrdersIndexer",
2069
+ "type": {
2070
+ "kind": "struct",
2071
+ "fields": [
2072
+ {
2073
+ "name": "bump",
2074
+ "type": "u8"
2075
+ },
2076
+ {
2077
+ "name": "createdCounter",
2078
+ "type": "u32"
2079
+ },
2080
+ {
2081
+ "name": "addresses",
2082
+ "type": {
2083
+ "vec": "publicKey"
2084
+ }
2085
+ }
2086
+ ]
2087
+ }
2088
+ },
2089
+ {
2090
+ "name": "StubOracle",
2091
+ "type": {
2092
+ "kind": "struct",
2093
+ "fields": [
2094
+ {
2095
+ "name": "owner",
2096
+ "type": "publicKey"
2097
+ },
2098
+ {
2099
+ "name": "mint",
2100
+ "type": "publicKey"
2101
+ },
2102
+ {
2103
+ "name": "price",
2104
+ "type": "f64"
2105
+ },
2106
+ {
2107
+ "name": "lastUpdateTs",
2108
+ "type": "i64"
2109
+ },
2110
+ {
2111
+ "name": "lastUpdateSlot",
2112
+ "type": "u64"
2113
+ },
2114
+ {
2115
+ "name": "deviation",
2116
+ "type": "f64"
2117
+ },
2118
+ {
2119
+ "name": "reserved",
2120
+ "type": {
2121
+ "array": [
2122
+ "u8",
2123
+ 104
2124
+ ]
2125
+ }
2126
+ }
2127
+ ]
2128
+ }
2129
+ },
2130
+ {
2131
+ "name": "BookSide",
2132
+ "type": {
2133
+ "kind": "struct",
2134
+ "fields": [
2135
+ {
2136
+ "name": "roots",
2137
+ "type": {
2138
+ "array": [
2139
+ {
2140
+ "defined": "OrderTreeRoot"
2141
+ },
2142
+ 2
2143
+ ]
2144
+ }
2145
+ },
2146
+ {
2147
+ "name": "reservedRoots",
2148
+ "type": {
2149
+ "array": [
2150
+ {
2151
+ "defined": "OrderTreeRoot"
2152
+ },
2153
+ 4
2154
+ ]
2155
+ }
2156
+ },
2157
+ {
2158
+ "name": "reserved",
2159
+ "type": {
2160
+ "array": [
2161
+ "u8",
2162
+ 256
2163
+ ]
2164
+ }
2165
+ },
2166
+ {
2167
+ "name": "nodes",
2168
+ "type": {
2169
+ "defined": "OrderTreeNodes"
2170
+ }
2171
+ }
2172
+ ]
2173
+ }
2174
+ },
2175
+ {
2176
+ "name": "EventHeap",
2177
+ "docs": [
2178
+ "Container for the different EventTypes.",
2179
+ "",
2180
+ "Events are stored in a fixed-array of nodes. Free nodes are connected by a single-linked list",
2181
+ "starting at free_head while used nodes form a circular doubly-linked list starting at",
2182
+ "used_head."
2183
+ ],
2184
+ "type": {
2185
+ "kind": "struct",
2186
+ "fields": [
2187
+ {
2188
+ "name": "header",
2189
+ "type": {
2190
+ "defined": "EventHeapHeader"
2191
+ }
2192
+ },
2193
+ {
2194
+ "name": "nodes",
2195
+ "type": {
2196
+ "array": [
2197
+ {
2198
+ "defined": "EventNode"
2199
+ },
2200
+ 600
2201
+ ]
2202
+ }
2203
+ },
2204
+ {
2205
+ "name": "reserved",
2206
+ "type": {
2207
+ "array": [
2208
+ "u8",
2209
+ 64
2210
+ ]
2211
+ }
2212
+ }
2213
+ ]
2214
+ }
2215
+ }
2216
+ ],
2217
+ "types": [
2218
+ {
2219
+ "name": "NonZeroPubkeyOption",
2220
+ "docs": [
2221
+ "Like `Option`, but implemented for `Pubkey` to be used with `zero_copy`"
2222
+ ],
2223
+ "type": {
2224
+ "kind": "struct",
2225
+ "fields": [
2226
+ {
2227
+ "name": "key",
2228
+ "type": "publicKey"
2229
+ }
2230
+ ]
2231
+ }
2232
+ },
2233
+ {
2234
+ "name": "Position",
2235
+ "type": {
2236
+ "kind": "struct",
2237
+ "fields": [
2238
+ {
2239
+ "name": "bidsBaseLots",
2240
+ "docs": [
2241
+ "Base lots in open bids"
2242
+ ],
2243
+ "type": "i64"
2244
+ },
2245
+ {
2246
+ "name": "asksBaseLots",
2247
+ "docs": [
2248
+ "Base lots in open asks"
2249
+ ],
2250
+ "type": "i64"
2251
+ },
2252
+ {
2253
+ "name": "baseFreeNative",
2254
+ "type": "u64"
2255
+ },
2256
+ {
2257
+ "name": "quoteFreeNative",
2258
+ "type": "u64"
2259
+ },
2260
+ {
2261
+ "name": "lockedMakerFees",
2262
+ "type": "u64"
2263
+ },
2264
+ {
2265
+ "name": "referrerRebatesAvailable",
2266
+ "type": "u64"
2267
+ },
2268
+ {
2269
+ "name": "penaltyHeapCount",
2270
+ "docs": [
2271
+ "Count of ixs when events are added to the heap",
2272
+ "To avoid this, send remaining accounts in order to process the events"
2273
+ ],
2274
+ "type": "u64"
2275
+ },
2276
+ {
2277
+ "name": "makerVolume",
2278
+ "docs": [
2279
+ "Cumulative maker volume in quote native units (display only)"
2280
+ ],
2281
+ "type": "u128"
2282
+ },
2283
+ {
2284
+ "name": "takerVolume",
2285
+ "docs": [
2286
+ "Cumulative taker volume in quote native units (display only)"
2287
+ ],
2288
+ "type": "u128"
2289
+ },
2290
+ {
2291
+ "name": "bidsQuoteLots",
2292
+ "docs": [
2293
+ "Quote lots in open bids"
2294
+ ],
2295
+ "type": "i64"
2296
+ },
2297
+ {
2298
+ "name": "reserved",
2299
+ "type": {
2300
+ "array": [
2301
+ "u8",
2302
+ 64
2303
+ ]
2304
+ }
2305
+ }
2306
+ ]
2307
+ }
2308
+ },
2309
+ {
2310
+ "name": "OpenOrder",
2311
+ "type": {
2312
+ "kind": "struct",
2313
+ "fields": [
2314
+ {
2315
+ "name": "id",
2316
+ "type": "u128"
2317
+ },
2318
+ {
2319
+ "name": "clientId",
2320
+ "type": "u64"
2321
+ },
2322
+ {
2323
+ "name": "lockedPrice",
2324
+ "docs": [
2325
+ "Price at which user's assets were locked"
2326
+ ],
2327
+ "type": "i64"
2328
+ },
2329
+ {
2330
+ "name": "isFree",
2331
+ "type": "u8"
2332
+ },
2333
+ {
2334
+ "name": "sideAndTree",
2335
+ "type": "u8"
2336
+ },
2337
+ {
2338
+ "name": "padding",
2339
+ "type": {
2340
+ "array": [
2341
+ "u8",
2342
+ 6
2343
+ ]
2344
+ }
2345
+ }
2346
+ ]
2347
+ }
2348
+ },
2349
+ {
2350
+ "name": "OracleConfig",
2351
+ "type": {
2352
+ "kind": "struct",
2353
+ "fields": [
2354
+ {
2355
+ "name": "confFilter",
2356
+ "type": "f64"
2357
+ },
2358
+ {
2359
+ "name": "maxStalenessSlots",
2360
+ "type": "i64"
2361
+ },
2362
+ {
2363
+ "name": "reserved",
2364
+ "type": {
2365
+ "array": [
2366
+ "u8",
2367
+ 72
2368
+ ]
2369
+ }
2370
+ }
2371
+ ]
2372
+ }
2373
+ },
2374
+ {
2375
+ "name": "OracleConfigParams",
2376
+ "type": {
2377
+ "kind": "struct",
2378
+ "fields": [
2379
+ {
2380
+ "name": "confFilter",
2381
+ "type": "f32"
2382
+ },
2383
+ {
2384
+ "name": "maxStalenessSlots",
2385
+ "type": {
2386
+ "option": "u32"
2387
+ }
2388
+ }
2389
+ ]
2390
+ }
2391
+ },
2392
+ {
2393
+ "name": "EventHeapHeader",
2394
+ "type": {
2395
+ "kind": "struct",
2396
+ "fields": [
2397
+ {
2398
+ "name": "freeHead",
2399
+ "type": "u16"
2400
+ },
2401
+ {
2402
+ "name": "usedHead",
2403
+ "type": "u16"
2404
+ },
2405
+ {
2406
+ "name": "count",
2407
+ "type": "u16"
2408
+ },
2409
+ {
2410
+ "name": "padd",
2411
+ "type": "u16"
2412
+ },
2413
+ {
2414
+ "name": "seqNum",
2415
+ "type": "u64"
2416
+ }
2417
+ ]
2418
+ }
2419
+ },
2420
+ {
2421
+ "name": "EventNode",
2422
+ "type": {
2423
+ "kind": "struct",
2424
+ "fields": [
2425
+ {
2426
+ "name": "next",
2427
+ "type": "u16"
2428
+ },
2429
+ {
2430
+ "name": "prev",
2431
+ "type": "u16"
2432
+ },
2433
+ {
2434
+ "name": "pad",
2435
+ "type": {
2436
+ "array": [
2437
+ "u8",
2438
+ 4
2439
+ ]
2440
+ }
2441
+ },
2442
+ {
2443
+ "name": "event",
2444
+ "type": {
2445
+ "defined": "AnyEvent"
2446
+ }
2447
+ }
2448
+ ]
2449
+ }
2450
+ },
2451
+ {
2452
+ "name": "AnyEvent",
2453
+ "type": {
2454
+ "kind": "struct",
2455
+ "fields": [
2456
+ {
2457
+ "name": "eventType",
2458
+ "type": "u8"
2459
+ },
2460
+ {
2461
+ "name": "padding",
2462
+ "type": {
2463
+ "array": [
2464
+ "u8",
2465
+ 143
2466
+ ]
2467
+ }
2468
+ }
2469
+ ]
2470
+ }
2471
+ },
2472
+ {
2473
+ "name": "FillEvent",
2474
+ "type": {
2475
+ "kind": "struct",
2476
+ "fields": [
2477
+ {
2478
+ "name": "eventType",
2479
+ "type": "u8"
2480
+ },
2481
+ {
2482
+ "name": "takerSide",
2483
+ "type": "u8"
2484
+ },
2485
+ {
2486
+ "name": "makerOut",
2487
+ "type": "u8"
2488
+ },
2489
+ {
2490
+ "name": "makerSlot",
2491
+ "type": "u8"
2492
+ },
2493
+ {
2494
+ "name": "padding",
2495
+ "type": {
2496
+ "array": [
2497
+ "u8",
2498
+ 4
2499
+ ]
2500
+ }
2501
+ },
2502
+ {
2503
+ "name": "timestamp",
2504
+ "type": "u64"
2505
+ },
2506
+ {
2507
+ "name": "seqNum",
2508
+ "type": "u64"
2509
+ },
2510
+ {
2511
+ "name": "maker",
2512
+ "type": "publicKey"
2513
+ },
2514
+ {
2515
+ "name": "makerTimestamp",
2516
+ "type": "u64"
2517
+ },
2518
+ {
2519
+ "name": "taker",
2520
+ "type": "publicKey"
2521
+ },
2522
+ {
2523
+ "name": "takerClientOrderId",
2524
+ "type": "u64"
2525
+ },
2526
+ {
2527
+ "name": "price",
2528
+ "type": "i64"
2529
+ },
2530
+ {
2531
+ "name": "pegLimit",
2532
+ "type": "i64"
2533
+ },
2534
+ {
2535
+ "name": "quantity",
2536
+ "type": "i64"
2537
+ },
2538
+ {
2539
+ "name": "makerClientOrderId",
2540
+ "type": "u64"
2541
+ },
2542
+ {
2543
+ "name": "reserved",
2544
+ "type": {
2545
+ "array": [
2546
+ "u8",
2547
+ 8
2548
+ ]
2549
+ }
2550
+ }
2551
+ ]
2552
+ }
2553
+ },
2554
+ {
2555
+ "name": "OutEvent",
2556
+ "type": {
2557
+ "kind": "struct",
2558
+ "fields": [
2559
+ {
2560
+ "name": "eventType",
2561
+ "type": "u8"
2562
+ },
2563
+ {
2564
+ "name": "side",
2565
+ "type": "u8"
2566
+ },
2567
+ {
2568
+ "name": "ownerSlot",
2569
+ "type": "u8"
2570
+ },
2571
+ {
2572
+ "name": "padding0",
2573
+ "type": {
2574
+ "array": [
2575
+ "u8",
2576
+ 5
2577
+ ]
2578
+ }
2579
+ },
2580
+ {
2581
+ "name": "timestamp",
2582
+ "type": "u64"
2583
+ },
2584
+ {
2585
+ "name": "seqNum",
2586
+ "type": "u64"
2587
+ },
2588
+ {
2589
+ "name": "owner",
2590
+ "type": "publicKey"
2591
+ },
2592
+ {
2593
+ "name": "quantity",
2594
+ "type": "i64"
2595
+ },
2596
+ {
2597
+ "name": "padding1",
2598
+ "type": {
2599
+ "array": [
2600
+ "u8",
2601
+ 80
2602
+ ]
2603
+ }
2604
+ }
2605
+ ]
2606
+ }
2607
+ },
2608
+ {
2609
+ "name": "InnerNode",
2610
+ "docs": [
2611
+ "InnerNodes and LeafNodes compose the binary tree of orders.",
2612
+ "",
2613
+ "Each InnerNode has exactly two children, which are either InnerNodes themselves,",
2614
+ "or LeafNodes. The children share the top `prefix_len` bits of `key`. The left",
2615
+ "child has a 0 in the next bit, and the right a 1."
2616
+ ],
2617
+ "type": {
2618
+ "kind": "struct",
2619
+ "fields": [
2620
+ {
2621
+ "name": "tag",
2622
+ "type": "u8"
2623
+ },
2624
+ {
2625
+ "name": "padding",
2626
+ "type": {
2627
+ "array": [
2628
+ "u8",
2629
+ 3
2630
+ ]
2631
+ }
2632
+ },
2633
+ {
2634
+ "name": "prefixLen",
2635
+ "docs": [
2636
+ "number of highest `key` bits that all children share",
2637
+ "e.g. if it's 2, the two highest bits of `key` will be the same on all children"
2638
+ ],
2639
+ "type": "u32"
2640
+ },
2641
+ {
2642
+ "name": "key",
2643
+ "docs": [
2644
+ "only the top `prefix_len` bits of `key` are relevant"
2645
+ ],
2646
+ "type": "u128"
2647
+ },
2648
+ {
2649
+ "name": "children",
2650
+ "docs": [
2651
+ "indexes into `BookSide::nodes`"
2652
+ ],
2653
+ "type": {
2654
+ "array": [
2655
+ "u32",
2656
+ 2
2657
+ ]
2658
+ }
2659
+ },
2660
+ {
2661
+ "name": "childEarliestExpiry",
2662
+ "docs": [
2663
+ "The earliest expiry timestamp for the left and right subtrees.",
2664
+ "",
2665
+ "Needed to be able to find and remove expired orders without having to",
2666
+ "iterate through the whole bookside."
2667
+ ],
2668
+ "type": {
2669
+ "array": [
2670
+ "u64",
2671
+ 2
2672
+ ]
2673
+ }
2674
+ },
2675
+ {
2676
+ "name": "reserved",
2677
+ "type": {
2678
+ "array": [
2679
+ "u8",
2680
+ 40
2681
+ ]
2682
+ }
2683
+ }
2684
+ ]
2685
+ }
2686
+ },
2687
+ {
2688
+ "name": "LeafNode",
2689
+ "docs": [
2690
+ "LeafNodes represent an order in the binary tree"
2691
+ ],
2692
+ "type": {
2693
+ "kind": "struct",
2694
+ "fields": [
2695
+ {
2696
+ "name": "tag",
2697
+ "docs": [
2698
+ "NodeTag"
2699
+ ],
2700
+ "type": "u8"
2701
+ },
2702
+ {
2703
+ "name": "ownerSlot",
2704
+ "docs": [
2705
+ "Index into the owning OpenOrdersAccount's OpenOrders"
2706
+ ],
2707
+ "type": "u8"
2708
+ },
2709
+ {
2710
+ "name": "timeInForce",
2711
+ "docs": [
2712
+ "Time in seconds after `timestamp` at which the order expires.",
2713
+ "A value of 0 means no expiry."
2714
+ ],
2715
+ "type": "u16"
2716
+ },
2717
+ {
2718
+ "name": "padding",
2719
+ "type": {
2720
+ "array": [
2721
+ "u8",
2722
+ 4
2723
+ ]
2724
+ }
2725
+ },
2726
+ {
2727
+ "name": "key",
2728
+ "docs": [
2729
+ "The binary tree key, see new_node_key()"
2730
+ ],
2731
+ "type": "u128"
2732
+ },
2733
+ {
2734
+ "name": "owner",
2735
+ "docs": [
2736
+ "Address of the owning OpenOrdersAccount"
2737
+ ],
2738
+ "type": "publicKey"
2739
+ },
2740
+ {
2741
+ "name": "quantity",
2742
+ "docs": [
2743
+ "Number of base lots to buy or sell, always >=1"
2744
+ ],
2745
+ "type": "i64"
2746
+ },
2747
+ {
2748
+ "name": "timestamp",
2749
+ "docs": [
2750
+ "The time the order was placed"
2751
+ ],
2752
+ "type": "u64"
2753
+ },
2754
+ {
2755
+ "name": "pegLimit",
2756
+ "docs": [
2757
+ "If the effective price of an oracle pegged order exceeds this limit,",
2758
+ "it will be considered invalid and may be removed.",
2759
+ "",
2760
+ "Only applicable in the oracle_pegged OrderTree"
2761
+ ],
2762
+ "type": "i64"
2763
+ },
2764
+ {
2765
+ "name": "clientOrderId",
2766
+ "docs": [
2767
+ "User defined id for this order, used in FillEvents"
2768
+ ],
2769
+ "type": "u64"
2770
+ }
2771
+ ]
2772
+ }
2773
+ },
2774
+ {
2775
+ "name": "AnyNode",
2776
+ "type": {
2777
+ "kind": "struct",
2778
+ "fields": [
2779
+ {
2780
+ "name": "tag",
2781
+ "type": "u8"
2782
+ },
2783
+ {
2784
+ "name": "data",
2785
+ "type": {
2786
+ "array": [
2787
+ "u8",
2788
+ 87
2789
+ ]
2790
+ }
2791
+ }
2792
+ ]
2793
+ }
2794
+ },
2795
+ {
2796
+ "name": "OrderTreeRoot",
2797
+ "type": {
2798
+ "kind": "struct",
2799
+ "fields": [
2800
+ {
2801
+ "name": "maybeNode",
2802
+ "type": "u32"
2803
+ },
2804
+ {
2805
+ "name": "leafCount",
2806
+ "type": "u32"
2807
+ }
2808
+ ]
2809
+ }
2810
+ },
2811
+ {
2812
+ "name": "OrderTreeNodes",
2813
+ "docs": [
2814
+ "A binary tree on AnyNode::key()",
2815
+ "",
2816
+ "The key encodes the price in the top 64 bits."
2817
+ ],
2818
+ "type": {
2819
+ "kind": "struct",
2820
+ "fields": [
2821
+ {
2822
+ "name": "orderTreeType",
2823
+ "type": "u8"
2824
+ },
2825
+ {
2826
+ "name": "padding",
2827
+ "type": {
2828
+ "array": [
2829
+ "u8",
2830
+ 3
2831
+ ]
2832
+ }
2833
+ },
2834
+ {
2835
+ "name": "bumpIndex",
2836
+ "type": "u32"
2837
+ },
2838
+ {
2839
+ "name": "freeListLen",
2840
+ "type": "u32"
2841
+ },
2842
+ {
2843
+ "name": "freeListHead",
2844
+ "type": "u32"
2845
+ },
2846
+ {
2847
+ "name": "reserved",
2848
+ "type": {
2849
+ "array": [
2850
+ "u8",
2851
+ 512
2852
+ ]
2853
+ }
2854
+ },
2855
+ {
2856
+ "name": "nodes",
2857
+ "type": {
2858
+ "array": [
2859
+ {
2860
+ "defined": "AnyNode"
2861
+ },
2862
+ 1024
2863
+ ]
2864
+ }
2865
+ }
2866
+ ]
2867
+ }
2868
+ },
2869
+ {
2870
+ "name": "I80F48",
2871
+ "docs": [
2872
+ "Nothing in Rust shall use these types. They only exist so that the Anchor IDL",
2873
+ "knows about them and typescript can deserialize it."
2874
+ ],
2875
+ "type": {
2876
+ "kind": "struct",
2877
+ "fields": [
2878
+ {
2879
+ "name": "val",
2880
+ "type": "i128"
2881
+ }
2882
+ ]
2883
+ }
2884
+ },
2885
+ {
2886
+ "name": "PlaceOrderArgs",
2887
+ "type": {
2888
+ "kind": "struct",
2889
+ "fields": [
2890
+ {
2891
+ "name": "side",
2892
+ "type": {
2893
+ "defined": "Side"
2894
+ }
2895
+ },
2896
+ {
2897
+ "name": "priceLots",
2898
+ "type": "i64"
2899
+ },
2900
+ {
2901
+ "name": "maxBaseLots",
2902
+ "type": "i64"
2903
+ },
2904
+ {
2905
+ "name": "maxQuoteLotsIncludingFees",
2906
+ "type": "i64"
2907
+ },
2908
+ {
2909
+ "name": "clientOrderId",
2910
+ "type": "u64"
2911
+ },
2912
+ {
2913
+ "name": "orderType",
2914
+ "type": {
2915
+ "defined": "PlaceOrderType"
2916
+ }
2917
+ },
2918
+ {
2919
+ "name": "expiryTimestamp",
2920
+ "type": "u64"
2921
+ },
2922
+ {
2923
+ "name": "selfTradeBehavior",
2924
+ "type": {
2925
+ "defined": "SelfTradeBehavior"
2926
+ }
2927
+ },
2928
+ {
2929
+ "name": "limit",
2930
+ "type": "u8"
2931
+ }
2932
+ ]
2933
+ }
2934
+ },
2935
+ {
2936
+ "name": "PlaceMultipleOrdersArgs",
2937
+ "type": {
2938
+ "kind": "struct",
2939
+ "fields": [
2940
+ {
2941
+ "name": "priceLots",
2942
+ "type": "i64"
2943
+ },
2944
+ {
2945
+ "name": "maxQuoteLotsIncludingFees",
2946
+ "type": "i64"
2947
+ },
2948
+ {
2949
+ "name": "expiryTimestamp",
2950
+ "type": "u64"
2951
+ }
2952
+ ]
2953
+ }
2954
+ },
2955
+ {
2956
+ "name": "PlaceOrderPeggedArgs",
2957
+ "type": {
2958
+ "kind": "struct",
2959
+ "fields": [
2960
+ {
2961
+ "name": "side",
2962
+ "type": {
2963
+ "defined": "Side"
2964
+ }
2965
+ },
2966
+ {
2967
+ "name": "priceOffsetLots",
2968
+ "type": "i64"
2969
+ },
2970
+ {
2971
+ "name": "pegLimit",
2972
+ "type": "i64"
2973
+ },
2974
+ {
2975
+ "name": "maxBaseLots",
2976
+ "type": "i64"
2977
+ },
2978
+ {
2979
+ "name": "maxQuoteLotsIncludingFees",
2980
+ "type": "i64"
2981
+ },
2982
+ {
2983
+ "name": "clientOrderId",
2984
+ "type": "u64"
2985
+ },
2986
+ {
2987
+ "name": "orderType",
2988
+ "type": {
2989
+ "defined": "PlaceOrderType"
2990
+ }
2991
+ },
2992
+ {
2993
+ "name": "expiryTimestamp",
2994
+ "type": "u64"
2995
+ },
2996
+ {
2997
+ "name": "selfTradeBehavior",
2998
+ "type": {
2999
+ "defined": "SelfTradeBehavior"
3000
+ }
3001
+ },
3002
+ {
3003
+ "name": "limit",
3004
+ "type": "u8"
3005
+ }
3006
+ ]
3007
+ }
3008
+ },
3009
+ {
3010
+ "name": "PlaceTakeOrderArgs",
3011
+ "type": {
3012
+ "kind": "struct",
3013
+ "fields": [
3014
+ {
3015
+ "name": "side",
3016
+ "type": {
3017
+ "defined": "Side"
3018
+ }
3019
+ },
3020
+ {
3021
+ "name": "priceLots",
3022
+ "type": "i64"
3023
+ },
3024
+ {
3025
+ "name": "maxBaseLots",
3026
+ "type": "i64"
3027
+ },
3028
+ {
3029
+ "name": "maxQuoteLotsIncludingFees",
3030
+ "type": "i64"
3031
+ },
3032
+ {
3033
+ "name": "orderType",
3034
+ "type": {
3035
+ "defined": "PlaceOrderType"
3036
+ }
3037
+ },
3038
+ {
3039
+ "name": "limit",
3040
+ "type": "u8"
3041
+ }
3042
+ ]
3043
+ }
3044
+ },
3045
+ {
3046
+ "name": "OracleType",
3047
+ "type": {
3048
+ "kind": "enum",
3049
+ "variants": [
3050
+ {
3051
+ "name": "Pyth"
3052
+ },
3053
+ {
3054
+ "name": "Stub"
3055
+ },
3056
+ {
3057
+ "name": "SwitchboardV1"
3058
+ },
3059
+ {
3060
+ "name": "SwitchboardV2"
3061
+ },
3062
+ {
3063
+ "name": "RaydiumCLMM"
3064
+ }
3065
+ ]
3066
+ }
3067
+ },
3068
+ {
3069
+ "name": "OrderState",
3070
+ "type": {
3071
+ "kind": "enum",
3072
+ "variants": [
3073
+ {
3074
+ "name": "Valid"
3075
+ },
3076
+ {
3077
+ "name": "Invalid"
3078
+ },
3079
+ {
3080
+ "name": "Skipped"
3081
+ }
3082
+ ]
3083
+ }
3084
+ },
3085
+ {
3086
+ "name": "BookSideOrderTree",
3087
+ "type": {
3088
+ "kind": "enum",
3089
+ "variants": [
3090
+ {
3091
+ "name": "Fixed"
3092
+ },
3093
+ {
3094
+ "name": "OraclePegged"
3095
+ }
3096
+ ]
3097
+ }
3098
+ },
3099
+ {
3100
+ "name": "EventType",
3101
+ "type": {
3102
+ "kind": "enum",
3103
+ "variants": [
3104
+ {
3105
+ "name": "Fill"
3106
+ },
3107
+ {
3108
+ "name": "Out"
3109
+ }
3110
+ ]
3111
+ }
3112
+ },
3113
+ {
3114
+ "name": "NodeTag",
3115
+ "type": {
3116
+ "kind": "enum",
3117
+ "variants": [
3118
+ {
3119
+ "name": "Uninitialized"
3120
+ },
3121
+ {
3122
+ "name": "InnerNode"
3123
+ },
3124
+ {
3125
+ "name": "LeafNode"
3126
+ },
3127
+ {
3128
+ "name": "FreeNode"
3129
+ },
3130
+ {
3131
+ "name": "LastFreeNode"
3132
+ }
3133
+ ]
3134
+ }
3135
+ },
3136
+ {
3137
+ "name": "PlaceOrderType",
3138
+ "type": {
3139
+ "kind": "enum",
3140
+ "variants": [
3141
+ {
3142
+ "name": "Limit"
3143
+ },
3144
+ {
3145
+ "name": "ImmediateOrCancel"
3146
+ },
3147
+ {
3148
+ "name": "PostOnly"
3149
+ },
3150
+ {
3151
+ "name": "Market"
3152
+ },
3153
+ {
3154
+ "name": "PostOnlySlide"
3155
+ },
3156
+ {
3157
+ "name": "FillOrKill"
3158
+ }
3159
+ ]
3160
+ }
3161
+ },
3162
+ {
3163
+ "name": "PostOrderType",
3164
+ "type": {
3165
+ "kind": "enum",
3166
+ "variants": [
3167
+ {
3168
+ "name": "Limit"
3169
+ },
3170
+ {
3171
+ "name": "PostOnly"
3172
+ },
3173
+ {
3174
+ "name": "PostOnlySlide"
3175
+ }
3176
+ ]
3177
+ }
3178
+ },
3179
+ {
3180
+ "name": "SelfTradeBehavior",
3181
+ "docs": [
3182
+ "Self trade behavior controls how taker orders interact with resting limit orders of the same account.",
3183
+ "This setting has no influence on placing a resting or oracle pegged limit order that does not match",
3184
+ "immediately, instead it's the responsibility of the user to correctly configure his taker orders."
3185
+ ],
3186
+ "type": {
3187
+ "kind": "enum",
3188
+ "variants": [
3189
+ {
3190
+ "name": "DecrementTake"
3191
+ },
3192
+ {
3193
+ "name": "CancelProvide"
3194
+ },
3195
+ {
3196
+ "name": "AbortTransaction"
3197
+ }
3198
+ ]
3199
+ }
3200
+ },
3201
+ {
3202
+ "name": "Side",
3203
+ "type": {
3204
+ "kind": "enum",
3205
+ "variants": [
3206
+ {
3207
+ "name": "Bid"
3208
+ },
3209
+ {
3210
+ "name": "Ask"
3211
+ }
3212
+ ]
3213
+ }
3214
+ },
3215
+ {
3216
+ "name": "SideAndOrderTree",
3217
+ "docs": [
3218
+ "SideAndOrderTree is a storage optimization, so we don't need two bytes for the data"
3219
+ ],
3220
+ "type": {
3221
+ "kind": "enum",
3222
+ "variants": [
3223
+ {
3224
+ "name": "BidFixed"
3225
+ },
3226
+ {
3227
+ "name": "AskFixed"
3228
+ },
3229
+ {
3230
+ "name": "BidOraclePegged"
3231
+ },
3232
+ {
3233
+ "name": "AskOraclePegged"
3234
+ }
3235
+ ]
3236
+ }
3237
+ },
3238
+ {
3239
+ "name": "OrderParams",
3240
+ "type": {
3241
+ "kind": "enum",
3242
+ "variants": [
3243
+ {
3244
+ "name": "Market"
3245
+ },
3246
+ {
3247
+ "name": "ImmediateOrCancel",
3248
+ "fields": [
3249
+ {
3250
+ "name": "price_lots",
3251
+ "type": "i64"
3252
+ }
3253
+ ]
3254
+ },
3255
+ {
3256
+ "name": "Fixed",
3257
+ "fields": [
3258
+ {
3259
+ "name": "price_lots",
3260
+ "type": "i64"
3261
+ },
3262
+ {
3263
+ "name": "order_type",
3264
+ "type": {
3265
+ "defined": "PostOrderType"
3266
+ }
3267
+ }
3268
+ ]
3269
+ },
3270
+ {
3271
+ "name": "OraclePegged",
3272
+ "fields": [
3273
+ {
3274
+ "name": "price_offset_lots",
3275
+ "type": "i64"
3276
+ },
3277
+ {
3278
+ "name": "order_type",
3279
+ "type": {
3280
+ "defined": "PostOrderType"
3281
+ }
3282
+ },
3283
+ {
3284
+ "name": "peg_limit",
3285
+ "type": "i64"
3286
+ }
3287
+ ]
3288
+ },
3289
+ {
3290
+ "name": "FillOrKill",
3291
+ "fields": [
3292
+ {
3293
+ "name": "price_lots",
3294
+ "type": "i64"
3295
+ }
3296
+ ]
3297
+ }
3298
+ ]
3299
+ }
3300
+ },
3301
+ {
3302
+ "name": "OrderTreeType",
3303
+ "type": {
3304
+ "kind": "enum",
3305
+ "variants": [
3306
+ {
3307
+ "name": "Bids"
3308
+ },
3309
+ {
3310
+ "name": "Asks"
3311
+ }
3312
+ ]
3313
+ }
3314
+ }
3315
+ ],
3316
+ "events": [
3317
+ {
3318
+ "name": "DepositLog",
3319
+ "fields": [
3320
+ {
3321
+ "name": "openOrdersAccount",
3322
+ "type": "publicKey",
3323
+ "index": false
3324
+ },
3325
+ {
3326
+ "name": "signer",
3327
+ "type": "publicKey",
3328
+ "index": false
3329
+ },
3330
+ {
3331
+ "name": "baseAmount",
3332
+ "type": "u64",
3333
+ "index": false
3334
+ },
3335
+ {
3336
+ "name": "quoteAmount",
3337
+ "type": "u64",
3338
+ "index": false
3339
+ }
3340
+ ]
3341
+ },
3342
+ {
3343
+ "name": "FillLog",
3344
+ "fields": [
3345
+ {
3346
+ "name": "market",
3347
+ "type": "publicKey",
3348
+ "index": false
3349
+ },
3350
+ {
3351
+ "name": "takerSide",
3352
+ "type": "u8",
3353
+ "index": false
3354
+ },
3355
+ {
3356
+ "name": "makerSlot",
3357
+ "type": "u8",
3358
+ "index": false
3359
+ },
3360
+ {
3361
+ "name": "makerOut",
3362
+ "type": "bool",
3363
+ "index": false
3364
+ },
3365
+ {
3366
+ "name": "timestamp",
3367
+ "type": "u64",
3368
+ "index": false
3369
+ },
3370
+ {
3371
+ "name": "seqNum",
3372
+ "type": "u64",
3373
+ "index": false
3374
+ },
3375
+ {
3376
+ "name": "maker",
3377
+ "type": "publicKey",
3378
+ "index": false
3379
+ },
3380
+ {
3381
+ "name": "makerClientOrderId",
3382
+ "type": "u64",
3383
+ "index": false
3384
+ },
3385
+ {
3386
+ "name": "makerFee",
3387
+ "type": "u64",
3388
+ "index": false
3389
+ },
3390
+ {
3391
+ "name": "makerTimestamp",
3392
+ "type": "u64",
3393
+ "index": false
3394
+ },
3395
+ {
3396
+ "name": "taker",
3397
+ "type": "publicKey",
3398
+ "index": false
3399
+ },
3400
+ {
3401
+ "name": "takerClientOrderId",
3402
+ "type": "u64",
3403
+ "index": false
3404
+ },
3405
+ {
3406
+ "name": "takerFeeCeil",
3407
+ "type": "u64",
3408
+ "index": false
3409
+ },
3410
+ {
3411
+ "name": "price",
3412
+ "type": "i64",
3413
+ "index": false
3414
+ },
3415
+ {
3416
+ "name": "quantity",
3417
+ "type": "i64",
3418
+ "index": false
3419
+ }
3420
+ ]
3421
+ },
3422
+ {
3423
+ "name": "MarketMetaDataLog",
3424
+ "fields": [
3425
+ {
3426
+ "name": "market",
3427
+ "type": "publicKey",
3428
+ "index": false
3429
+ },
3430
+ {
3431
+ "name": "name",
3432
+ "type": "string",
3433
+ "index": false
3434
+ },
3435
+ {
3436
+ "name": "baseMint",
3437
+ "type": "publicKey",
3438
+ "index": false
3439
+ },
3440
+ {
3441
+ "name": "quoteMint",
3442
+ "type": "publicKey",
3443
+ "index": false
3444
+ },
3445
+ {
3446
+ "name": "baseDecimals",
3447
+ "type": "u8",
3448
+ "index": false
3449
+ },
3450
+ {
3451
+ "name": "quoteDecimals",
3452
+ "type": "u8",
3453
+ "index": false
3454
+ },
3455
+ {
3456
+ "name": "baseLotSize",
3457
+ "type": "i64",
3458
+ "index": false
3459
+ },
3460
+ {
3461
+ "name": "quoteLotSize",
3462
+ "type": "i64",
3463
+ "index": false
3464
+ }
3465
+ ]
3466
+ },
3467
+ {
3468
+ "name": "TotalOrderFillEvent",
3469
+ "fields": [
3470
+ {
3471
+ "name": "side",
3472
+ "type": "u8",
3473
+ "index": false
3474
+ },
3475
+ {
3476
+ "name": "taker",
3477
+ "type": "publicKey",
3478
+ "index": false
3479
+ },
3480
+ {
3481
+ "name": "totalQuantityPaid",
3482
+ "type": "u64",
3483
+ "index": false
3484
+ },
3485
+ {
3486
+ "name": "totalQuantityReceived",
3487
+ "type": "u64",
3488
+ "index": false
3489
+ },
3490
+ {
3491
+ "name": "fees",
3492
+ "type": "u64",
3493
+ "index": false
3494
+ }
3495
+ ]
3496
+ },
3497
+ {
3498
+ "name": "SetDelegateLog",
3499
+ "fields": [
3500
+ {
3501
+ "name": "openOrdersAccount",
3502
+ "type": "publicKey",
3503
+ "index": false
3504
+ },
3505
+ {
3506
+ "name": "delegate",
3507
+ "type": {
3508
+ "option": "publicKey"
3509
+ },
3510
+ "index": false
3511
+ }
3512
+ ]
3513
+ },
3514
+ {
3515
+ "name": "SettleFundsLog",
3516
+ "fields": [
3517
+ {
3518
+ "name": "openOrdersAccount",
3519
+ "type": "publicKey",
3520
+ "index": false
3521
+ },
3522
+ {
3523
+ "name": "baseNative",
3524
+ "type": "u64",
3525
+ "index": false
3526
+ },
3527
+ {
3528
+ "name": "quoteNative",
3529
+ "type": "u64",
3530
+ "index": false
3531
+ },
3532
+ {
3533
+ "name": "referrerRebate",
3534
+ "type": "u64",
3535
+ "index": false
3536
+ },
3537
+ {
3538
+ "name": "referrer",
3539
+ "type": {
3540
+ "option": "publicKey"
3541
+ },
3542
+ "index": false
3543
+ }
3544
+ ]
3545
+ },
3546
+ {
3547
+ "name": "SweepFeesLog",
3548
+ "fields": [
3549
+ {
3550
+ "name": "market",
3551
+ "type": "publicKey",
3552
+ "index": false
3553
+ },
3554
+ {
3555
+ "name": "amount",
3556
+ "type": "u64",
3557
+ "index": false
3558
+ },
3559
+ {
3560
+ "name": "receiver",
3561
+ "type": "publicKey",
3562
+ "index": false
3563
+ }
3564
+ ]
3565
+ },
3566
+ {
3567
+ "name": "OpenOrdersPositionLog",
3568
+ "fields": [
3569
+ {
3570
+ "name": "owner",
3571
+ "type": "publicKey",
3572
+ "index": false
3573
+ },
3574
+ {
3575
+ "name": "openOrdersAccountNum",
3576
+ "type": "u32",
3577
+ "index": false
3578
+ },
3579
+ {
3580
+ "name": "market",
3581
+ "type": "publicKey",
3582
+ "index": false
3583
+ },
3584
+ {
3585
+ "name": "bidsBaseLots",
3586
+ "type": "i64",
3587
+ "index": false
3588
+ },
3589
+ {
3590
+ "name": "bidsQuoteLots",
3591
+ "type": "i64",
3592
+ "index": false
3593
+ },
3594
+ {
3595
+ "name": "asksBaseLots",
3596
+ "type": "i64",
3597
+ "index": false
3598
+ },
3599
+ {
3600
+ "name": "baseFreeNative",
3601
+ "type": "u64",
3602
+ "index": false
3603
+ },
3604
+ {
3605
+ "name": "quoteFreeNative",
3606
+ "type": "u64",
3607
+ "index": false
3608
+ },
3609
+ {
3610
+ "name": "lockedMakerFees",
3611
+ "type": "u64",
3612
+ "index": false
3613
+ },
3614
+ {
3615
+ "name": "referrerRebatesAvailable",
3616
+ "type": "u64",
3617
+ "index": false
3618
+ },
3619
+ {
3620
+ "name": "makerVolume",
3621
+ "type": "u128",
3622
+ "index": false
3623
+ },
3624
+ {
3625
+ "name": "takerVolume",
3626
+ "type": "u128",
3627
+ "index": false
3628
+ }
3629
+ ]
3630
+ }
3631
+ ],
3632
+ "errors": [
3633
+ {
3634
+ "code": 6000,
3635
+ "name": "SomeError",
3636
+ "msg": ""
3637
+ },
3638
+ {
3639
+ "code": 6001,
3640
+ "name": "InvalidInputNameLength",
3641
+ "msg": "Name lenght above limit"
3642
+ },
3643
+ {
3644
+ "code": 6002,
3645
+ "name": "InvalidInputMarketExpired",
3646
+ "msg": "Market cannot be created as expired"
3647
+ },
3648
+ {
3649
+ "code": 6003,
3650
+ "name": "InvalidInputMarketFees",
3651
+ "msg": "Taker fees should be positive and if maker fees are negative, greater or equal to their abs value"
3652
+ },
3653
+ {
3654
+ "code": 6004,
3655
+ "name": "InvalidInputLots",
3656
+ "msg": "Lots cannot be negative"
3657
+ },
3658
+ {
3659
+ "code": 6005,
3660
+ "name": "InvalidInputLotsSize",
3661
+ "msg": "Lots size above market limits"
3662
+ },
3663
+ {
3664
+ "code": 6006,
3665
+ "name": "InvalidInputOrdersAmounts",
3666
+ "msg": "Input amounts above limits"
3667
+ },
3668
+ {
3669
+ "code": 6007,
3670
+ "name": "InvalidInputCancelSize",
3671
+ "msg": "Price lots should be greater than zero"
3672
+ },
3673
+ {
3674
+ "code": 6008,
3675
+ "name": "InvalidInputPriceLots",
3676
+ "msg": "Expected cancel size should be greater than zero"
3677
+ },
3678
+ {
3679
+ "code": 6009,
3680
+ "name": "InvalidInputPegLimit",
3681
+ "msg": "Peg limit should be greater than zero"
3682
+ },
3683
+ {
3684
+ "code": 6010,
3685
+ "name": "InvalidInputOrderType",
3686
+ "msg": "The order type is invalid. A taker order must be Market or ImmediateOrCancel"
3687
+ },
3688
+ {
3689
+ "code": 6011,
3690
+ "name": "InvalidInputOrderId",
3691
+ "msg": "Order id cannot be zero"
3692
+ },
3693
+ {
3694
+ "code": 6012,
3695
+ "name": "InvalidInputHeapSlots",
3696
+ "msg": "Slot above heap limit"
3697
+ },
3698
+ {
3699
+ "code": 6013,
3700
+ "name": "InvalidOracleTypes",
3701
+ "msg": "Cannot combine two oracles of different providers"
3702
+ },
3703
+ {
3704
+ "code": 6014,
3705
+ "name": "InvalidSecondOracle",
3706
+ "msg": "Cannot configure secondary oracle without primary"
3707
+ },
3708
+ {
3709
+ "code": 6015,
3710
+ "name": "NoCloseMarketAdmin",
3711
+ "msg": "This market does not have a `close_market_admin` and thus cannot be closed."
3712
+ },
3713
+ {
3714
+ "code": 6016,
3715
+ "name": "InvalidCloseMarketAdmin",
3716
+ "msg": "The signer of this transaction is not this market's `close_market_admin`."
3717
+ },
3718
+ {
3719
+ "code": 6017,
3720
+ "name": "InvalidOpenOrdersAdmin",
3721
+ "msg": "The `open_orders_admin` required by this market to sign all instructions that creates orders is missing or is not valid"
3722
+ },
3723
+ {
3724
+ "code": 6018,
3725
+ "name": "InvalidConsumeEventsAdmin",
3726
+ "msg": "The `consume_events_admin` required by this market to sign all instructions that consume events is missing or is not valid"
3727
+ },
3728
+ {
3729
+ "code": 6019,
3730
+ "name": "InvalidMarketVault",
3731
+ "msg": "Provided `market_vault` is invalid"
3732
+ },
3733
+ {
3734
+ "code": 6020,
3735
+ "name": "IndexerActiveOO",
3736
+ "msg": "Cannot be closed due to the existence of open orders accounts"
3737
+ },
3738
+ {
3739
+ "code": 6021,
3740
+ "name": "OraclePegInvalidOracleState",
3741
+ "msg": "Cannot place a peg order due to invalid oracle state"
3742
+ },
3743
+ {
3744
+ "code": 6022,
3745
+ "name": "UnknownOracleType",
3746
+ "msg": "oracle type cannot be determined"
3747
+ },
3748
+ {
3749
+ "code": 6023,
3750
+ "name": "OracleConfidence",
3751
+ "msg": "an oracle does not reach the confidence threshold"
3752
+ },
3753
+ {
3754
+ "code": 6024,
3755
+ "name": "OracleStale",
3756
+ "msg": "an oracle is stale"
3757
+ },
3758
+ {
3759
+ "code": 6025,
3760
+ "name": "OrderIdNotFound",
3761
+ "msg": "Order id not found on the orderbook"
3762
+ },
3763
+ {
3764
+ "code": 6026,
3765
+ "name": "EventHeapContainsElements",
3766
+ "msg": "Event heap contains elements and market can't be closed"
3767
+ },
3768
+ {
3769
+ "code": 6027,
3770
+ "name": "InvalidOrderPostIOC",
3771
+ "msg": "ImmediateOrCancel is not a PostOrderType"
3772
+ },
3773
+ {
3774
+ "code": 6028,
3775
+ "name": "InvalidOrderPostMarket",
3776
+ "msg": "Market is not a PostOrderType"
3777
+ },
3778
+ {
3779
+ "code": 6029,
3780
+ "name": "WouldSelfTrade",
3781
+ "msg": "would self trade"
3782
+ },
3783
+ {
3784
+ "code": 6030,
3785
+ "name": "MarketHasExpired",
3786
+ "msg": "The Market has already expired."
3787
+ },
3788
+ {
3789
+ "code": 6031,
3790
+ "name": "InvalidPriceLots",
3791
+ "msg": "Price lots should be greater than zero"
3792
+ },
3793
+ {
3794
+ "code": 6032,
3795
+ "name": "InvalidOraclePrice",
3796
+ "msg": "Oracle price above market limits"
3797
+ },
3798
+ {
3799
+ "code": 6033,
3800
+ "name": "MarketHasNotExpired",
3801
+ "msg": "The Market has not expired yet."
3802
+ },
3803
+ {
3804
+ "code": 6034,
3805
+ "name": "NoOwnerOrDelegate",
3806
+ "msg": "No correct owner or delegate."
3807
+ },
3808
+ {
3809
+ "code": 6035,
3810
+ "name": "NoOwner",
3811
+ "msg": "No correct owner"
3812
+ },
3813
+ {
3814
+ "code": 6036,
3815
+ "name": "OpenOrdersFull",
3816
+ "msg": "No free order index in open orders account"
3817
+ },
3818
+ {
3819
+ "code": 6037,
3820
+ "name": "BookContainsElements",
3821
+ "msg": "Book contains elements"
3822
+ },
3823
+ {
3824
+ "code": 6038,
3825
+ "name": "OpenOrdersOrderNotFound",
3826
+ "msg": "Could not find order in user account"
3827
+ },
3828
+ {
3829
+ "code": 6039,
3830
+ "name": "InvalidPostAmount",
3831
+ "msg": "Amount to post above book limits"
3832
+ },
3833
+ {
3834
+ "code": 6040,
3835
+ "name": "DisabledOraclePeg",
3836
+ "msg": "Oracle peg orders are not enabled for this market"
3837
+ },
3838
+ {
3839
+ "code": 6041,
3840
+ "name": "NonEmptyMarket",
3841
+ "msg": "Cannot close a non-empty market"
3842
+ },
3843
+ {
3844
+ "code": 6042,
3845
+ "name": "NonEmptyOpenOrdersPosition",
3846
+ "msg": "Cannot close a non-empty open orders account"
3847
+ },
3848
+ {
3849
+ "code": 6043,
3850
+ "name": "WouldExecutePartially",
3851
+ "msg": "Fill-Or-Kill order would generate a partial execution"
3852
+ }
3853
+ ]
3854
+ }