11import "./main" ;
22import { autocratProgram } from "./main" ;
33
4+ import {
5+ OpenBookV2Client ,
6+ PlaceOrderArgs ,
7+ Side ,
8+ OrderType ,
9+ SelfTradeBehavior ,
10+ } from "@openbook-dex/openbook-v2" ;
11+
412// Put your own proposal number here
513const PROPOSAL_NUMBER = 1 ;
14+ // If false, it will do the fail market obviously.
15+ const PASS_MARKET = true ;
616
717async function placeOrder ( ) {
818 let proposals = await autocratProgram . account . proposal . all ( ) ;
919
1020 let proposal = proposals . filter ( ( proposal ) => proposal . account . number == PROPOSAL_NUMBER ) [ 0 ] . account ;
11- console . log ( proposal ) ;
21+
22+ let twapMarket = PASS_MARKET ? proposal . openbookTwapPassMarket : proposal . openbookTwapFailMarket ;
23+ let market = PASS_MARKET ? proposal . openbookPassMarket : proposal . openbookFailMarket ;
24+
25+ // let market = (await openbookTwap.account.twapMarket.fetch(twapMarket)).market;
26+
27+ let buyArgs : PlaceOrderArgs = {
28+ side : Side . Bid ,
29+ priceLots : new BN ( 9_000 ) , // 1 USDC for 1 META
30+ maxBaseLots : new BN ( 10 ) ,
31+ maxQuoteLotsIncludingFees : new BN ( 10 * 1000_000 ) , // 10 USDC
32+ clientOrderId : new BN ( 1 ) ,
33+ orderType : OrderType . Limit ,
34+ expiryTimestamp : new BN ( 0 ) ,
35+ selfTradeBehavior : SelfTradeBehavior . DecrementTake ,
36+ limit : 255 ,
37+ } ;
38+
39+ let sellArgs : PlaceOrderArgs = {
40+ side : Side . Ask ,
41+ priceLots : new BN ( 12_000 ) , // 1.2 USDC for 1 META
42+ maxBaseLots : new BN ( 10 ) ,
43+ maxQuoteLotsIncludingFees : new BN ( 10 * 12_000 ) ,
44+ clientOrderId : new BN ( 2 ) ,
45+ orderType : OrderType . Limit ,
46+ expiryTimestamp : new BN ( 0 ) ,
47+ selfTradeBehavior : SelfTradeBehavior . DecrementTake ,
48+ limit : 255 ,
49+ } ;
50+
51+ const storedMarket = await openbook . getMarketAccount ( market ) ;
52+ let openOrdersAccount = new anchor . web3 . PublicKey ( "CxDQ5RSYebF6mRLDrXYn1An7bawe6S3iyaU5rZBjz4Xs" ) ;
53+ // let openOrdersAccount = await openbook.createOpenOrders(
54+ // payer,
55+ // market,
56+ // new BN(1),
57+ // "oo"
58+ // );
59+ // console.log(openOrdersAccount);
60+ // let openOrdersAccount = await openbook.createOpenOrders(market, new BN(4), "oo2");
61+
62+ const userBaseAccount = await token . getOrCreateAssociatedTokenAccount (
63+ provider . connection ,
64+ payer ,
65+ storedMarket . baseMint ,
66+ payer . publicKey
67+ ) ;
68+ const userQuoteAccount = await token . getOrCreateAssociatedTokenAccount (
69+ provider . connection ,
70+ payer ,
71+ storedMarket . quoteMint ,
72+ payer . publicKey
73+ ) ;
74+
75+ await openbookTwap . methods
76+ . placeOrder ( buyArgs )
77+ . accounts ( {
78+ asks : storedMarket . asks ,
79+ bids : storedMarket . bids ,
80+ marketVault : storedMarket . marketQuoteVault ,
81+ eventHeap : storedMarket . eventHeap ,
82+ market,
83+ openOrdersAccount,
84+ userTokenAccount : userQuoteAccount . address ,
85+ twapMarket,
86+ openbookProgram : OPENBOOK_PROGRAM_ID ,
87+ } )
88+ . rpc ( ) ;
89+
90+ await openbookTwap . methods
91+ . placeOrder ( sellArgs )
92+ . accounts ( {
93+ asks : storedMarket . asks ,
94+ bids : storedMarket . bids ,
95+ marketVault : storedMarket . marketBaseVault ,
96+ eventHeap : storedMarket . eventHeap ,
97+ market,
98+ openOrdersAccount,
99+ userTokenAccount : userBaseAccount . address ,
100+ twapMarket,
101+ openbookProgram : OPENBOOK_PROGRAM_ID ,
102+ } )
103+ . rpc ( ) ;
12104}
13105
14106placeOrder ( ) ;
0 commit comments