diff --git a/README.md b/README.md index ab753f3..1602b85 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # OpenBook V2 scripts -Different script with examples showcasing @openbook-dex/openbook-v2 \ No newline at end of file +Different script with examples showcasing @openbook-dex/openbook-v2 diff --git a/cancelAndPost.ts b/cancelAndPost.ts index d4d0735..fdab848 100644 --- a/cancelAndPost.ts +++ b/cancelAndPost.ts @@ -6,9 +6,8 @@ import { OpenBookV2Client, PlaceOrderArgs, Side, - OrderType, - SelfTradeBehavior, PlaceMultipleOrdersArgs, + Market, } from "@openbook-dex/openbook-v2"; import { MintUtils } from "./mint_utils"; @@ -32,7 +31,7 @@ async function main() { } const openOrdersPublicKey = ooa[0]; - const market = await client.deserializeMarketAccount(marketPublicKey); + const market = await Market.load(client, marketPublicKey); if (!market) { throw "No market"; } @@ -40,13 +39,13 @@ async function main() { let mintUtils = new MintUtils(provider.connection, authority); const userQuoteAcc = await mintUtils.getOrCreateTokenAccount( - market?.quoteMint, + market?.account.quoteMint, authority, client.walletPk ); const userBaseAcc = await mintUtils.getOrCreateTokenAccount( - market?.baseMint, + market?.account.baseMint, authority, client.walletPk ); @@ -69,17 +68,20 @@ async function main() { }); } + let ImmediateOrCancel = { decrementTake: {} }; + const [ix, signers] = await client.cancelAllAndPlaceOrdersIx( openOrdersPublicKey, marketPublicKey, - market, + market.account, userBaseAcc.address, userQuoteAcc.address, null, - OrderType.ImmediateOrCancel, + ImmediateOrCancel, bids, asks ); + const tx = await client.sendAndConfirmTransaction([ix], { additionalSigners: [signers], }); @@ -87,4 +89,4 @@ async function main() { console.log("Cancel and place order ", tx); } -main(); +main().catch((err) => console.error(err)); diff --git a/close_market.ts b/closeMarket.ts similarity index 82% rename from close_market.ts rename to closeMarket.ts index df2942a..8d9f1f7 100644 --- a/close_market.ts +++ b/closeMarket.ts @@ -6,6 +6,7 @@ import { OpenBookV2Client, PlaceOrderArgs, Side, + Market, } from "@openbook-dex/openbook-v2"; import { MintUtils } from "./mint_utils"; @@ -19,25 +20,27 @@ async function main() { const marketPublicKey = new PublicKey( "BLr5UmvkfoVC4yth5CX2jBT5X75Z61gkLPMbJRNxiRqa" ); - const market = await client.deserializeMarketAccount(marketPublicKey); + const market = await Market.load(client, marketPublicKey); if (!market) { throw "No market"; } - const eventHeap = await client.deserializeEventHeapAccount(market.eventHeap); + const eventHeap = await client.deserializeEventHeapAccount( + market.account.eventHeap + ); if (!eventHeap) { throw "No event heap"; } console.log("event heap length", eventHeap.header.count); if (eventHeap.header.count > 0) { - const accounts = await client.getAccountsToConsume(market); + const accounts = await client.getAccountsToConsume(market.account); if (accounts) { console.log("accounts lenght", accounts.length); const ix = await client.consumeEventsIx( marketPublicKey, - market, + market.account, new BN(8), accounts ); @@ -52,7 +55,7 @@ async function main() { const [ix, signers] = await client.closeMarketIx( marketPublicKey, - market, + market.account, wallet.publicKey, wallet.payer ); @@ -62,4 +65,4 @@ async function main() { console.log("Closed market ", tx); } -main(); +main().catch((err) => console.error(err)); diff --git a/closeOpenOrdersAcc.ts b/closeOpenOrdersAcc.ts index c165b21..cb995f5 100644 --- a/closeOpenOrdersAcc.ts +++ b/closeOpenOrdersAcc.ts @@ -25,4 +25,4 @@ async function main() { }); console.log("close open orders acc", tx); } -main(); +main().catch((err) => console.error(err)); diff --git a/create_ltu.ts b/createLtu.ts similarity index 97% rename from create_ltu.ts rename to createLtu.ts index db1cc4c..11f6aaf 100644 --- a/create_ltu.ts +++ b/createLtu.ts @@ -57,4 +57,4 @@ async function main() { ); } -main(); +main().catch((err) => console.error(err)); diff --git a/createMarket.ts b/createMarket.ts index 6b996e0..5cacbb2 100644 --- a/createMarket.ts +++ b/createMarket.ts @@ -165,4 +165,4 @@ async function main() { ); } -main(); +main().catch((err) => console.error(err)); diff --git a/createOpenOrders.ts b/createOpenOrders.ts index a6f7f6f..5713716 100644 --- a/createOpenOrders.ts +++ b/createOpenOrders.ts @@ -24,6 +24,7 @@ async function main() { ); const tx = await client.createOpenOrders(wallet.payer, market, "name"); - console.log("created open orders acc", tx); + console.log("created open orders acc", tx.toBase58()); } -main(); + +main().catch((err) => console.error(err)); diff --git a/createPermissionedMarket.ts b/createPermissionedMarket.ts index 8dd7e95..17a823e 100644 --- a/createPermissionedMarket.ts +++ b/createPermissionedMarket.ts @@ -90,4 +90,4 @@ async function main() { ); } -main(); +main().catch((err) => console.error(err)); diff --git a/getMarkets.ts b/getMarkets.ts index 357fa1c..db29099 100644 --- a/getMarkets.ts +++ b/getMarkets.ts @@ -17,4 +17,4 @@ async function main() { console.log(markets); } -main(); +main().catch((err) => console.error(err)); diff --git a/getTotalAmounts.ts b/getTotalAmounts.ts index c95094a..5ef6cb5 100644 --- a/getTotalAmounts.ts +++ b/getTotalAmounts.ts @@ -8,6 +8,7 @@ import { PlaceOrderArgs, Side, IDL, + Market, } from "@openbook-dex/openbook-v2"; import { toUiDecimals } from "@openbook-dex/openbook-v2"; import { quoteLotsToUi } from "@openbook-dex/openbook-v2"; @@ -24,7 +25,7 @@ async function main() { ); const owner = new PublicKey("J9zjCmmGBfv6wDSwmRW43vVJ6vooCftXjQYtc7uhETdr"); - const market = await client.deserializeMarketAccount(marketPubkey); + const market = await Market.load(client, marketPubkey); if (market === null) { throw "No market"; @@ -36,8 +37,8 @@ async function main() { const openOrder = await client.deserializeOpenOrderAccount(openOrderPubkey); if (openOrder) { - if (openOrder.version != 1){ - throw "using an old open orders account, please close it" + if (openOrder.version != 1) { + throw "using an old open orders account, please close it"; } console.log("bidsQuoteLots", openOrder.position.bidsQuoteLots.toNumber()); console.log("asksBaseLots", openOrder.position.asksBaseLots.toNumber()); @@ -52,4 +53,4 @@ function priceData(key: BN) { return shiftedValue.toNumber(); // Convert BN to a regular number } -main(); +main().catch((err) => console.error(err)); diff --git a/package-lock.json b/package-lock.json index ce4e4ee..528b787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { - "name": "yolodolo", + "name": "the-holy-book-services", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "yolodolo", + "name": "the-holy-book-services", "version": "1.0.0", "license": "ISC", "dependencies": { - "@coral-xyz/anchor": "^0.28.1-beta.1", - "@openbook-dex/openbook-v2": "^0.1.5", - "@solana/spl-token": "^0.3.8", - "@solana/web3.js": "^1.78.3" + "@coral-xyz/anchor": "^0.29.0", + "@openbook-dex/openbook-v2": "^0.2.10", + "@solana/spl-token": "^0.4.6", + "@solana/web3.js": "^1.93.1" }, "devDependencies": { "@types/node": "^20.5.0", @@ -21,25 +21,24 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@coral-xyz/anchor": { - "version": "0.28.1-beta.2", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.28.1-beta.2.tgz", - "integrity": "sha512-xreUcOFF8+IQKWOBUrDKJbIw2ftpRVybFlEPVrbSlOBCbreCWrQ5754Gt9cHIcuBDAzearCDiBqzsGQdNgPJiw==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", "dependencies": { - "@coral-xyz/borsh": "^0.28.0", + "@coral-xyz/borsh": "^0.29.0", "@noble/hashes": "^1.3.1", "@solana/web3.js": "^1.68.0", - "base64-js": "^1.5.1", "bn.js": "^5.1.2", "bs58": "^4.0.1", "buffer-layout": "^1.2.2", @@ -56,15 +55,10 @@ "node": ">=11" } }, - "node_modules/@coral-xyz/anchor/node_modules/superstruct": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", - "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" - }, "node_modules/@coral-xyz/borsh": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.28.0.tgz", - "integrity": "sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", "dependencies": { "bn.js": "^5.1.2", "buffer-layout": "^1.2.0" @@ -89,9 +83,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -114,20 +108,20 @@ } }, "node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "dependencies": { - "@noble/hashes": "1.3.1" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -136,12 +130,12 @@ } }, "node_modules/@openbook-dex/openbook-v2": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@openbook-dex/openbook-v2/-/openbook-v2-0.1.5.tgz", - "integrity": "sha512-ndeWAUETtxDdAjptUJKcI4w+ZLPjF7ehfbYj4twTTz+St3i/sZV3te4R5CWRGH6nqRU4jyAWuuNYebcx+w+WSw==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@openbook-dex/openbook-v2/-/openbook-v2-0.2.10.tgz", + "integrity": "sha512-JOroVQHeia+RbghpluDJB5psUIhdhYRPLu0zWoG0h5vgDU4SjXwlcC+LJiIa2HVPasvZjWuCtlKWFyrOS75lOA==", "dependencies": { - "@coral-xyz/anchor": "^0.28.1-beta.2", - "@solana/spl-token": "0.3.8", + "@coral-xyz/anchor": "^0.29.0", + "@solana/spl-token": "^0.4.0", "@solana/web3.js": "^1.77.3", "big.js": "^6.2.1" } @@ -171,32 +165,148 @@ "node": ">= 10" } }, + "node_modules/@solana/codecs": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", + "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-data-structures": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/codecs-strings": "2.0.0-preview.2", + "@solana/options": "2.0.0-preview.2" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", + "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", + "dependencies": { + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@solana/codecs-data-structures": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", + "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", + "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@solana/codecs-strings": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", + "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22" + } + }, + "node_modules/@solana/errors": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", + "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", + "dependencies": { + "chalk": "^5.3.0", + "commander": "^12.0.0" + }, + "bin": { + "errors": "bin/cli.js" + } + }, + "node_modules/@solana/options": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", + "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2" + } + }, "node_modules/@solana/spl-token": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.8.tgz", - "integrity": "sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", + "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", "dependencies": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-group": "^0.0.4", + "@solana/spl-token-metadata": "^0.1.4", "buffer": "^6.0.3" }, "engines": { "node": ">=16" }, "peerDependencies": { - "@solana/web3.js": "^1.47.4" + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@solana/spl-token-group": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", + "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", + "dependencies": { + "@solana/codecs": "2.0.0-preview.2", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@solana/spl-token-metadata": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz", + "integrity": "sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ==", + "dependencies": { + "@solana/codecs": "2.0.0-preview.2", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@solana/spl-type-length-value": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", + "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", + "dependencies": { + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" } }, "node_modules/@solana/web3.js": { - "version": "1.78.3", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.78.3.tgz", - "integrity": "sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==", + "version": "1.93.1", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.93.1.tgz", + "integrity": "sha512-3TzngqyzukYbuuweL1ejJJEPXmSRoOjaUsfBcfdx9RyDZtyP9av/GerV52mF6Lj2zEVkE7ZczpEP4tKJ8anxVQ==", "dependencies": { - "@babel/runtime": "^7.22.6", - "@noble/curves": "^1.0.0", - "@noble/hashes": "^1.3.0", - "@solana/buffer-layout": "^4.0.0", - "agentkeepalive": "^4.3.0", + "@babel/runtime": "^7.24.7", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", "bn.js": "^5.2.1", "borsh": "^0.7.0", @@ -204,15 +314,31 @@ "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", "jayson": "^4.1.0", - "node-fetch": "^2.6.12", - "rpc-websockets": "^7.5.1", - "superstruct": "^0.14.2" + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^1.0.4" + } + }, + "node_modules/@solana/web3.js/node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -234,17 +360,25 @@ "dev": true }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", - "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" }, "node_modules/@types/ws": { "version": "7.4.7", @@ -255,9 +389,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -267,10 +401,13 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -344,9 +481,9 @@ } }, "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "engines": { "node": "*" } @@ -414,9 +551,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -437,10 +574,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } }, "node_modules/create-require": { "version": "1.1.1", @@ -527,6 +678,12 @@ "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" }, + "node_modules/fastestsmallesttextencoderdecoder": { + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", + "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", + "peer": true + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -597,6 +754,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -654,9 +816,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -673,9 +835,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -689,17 +851,20 @@ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/rpc-websockets": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", - "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.2.tgz", + "integrity": "sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw==", "dependencies": { - "@babel/runtime": "^7.17.2", - "eventemitter3": "^4.0.7", + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", "uuid": "^8.3.2", "ws": "^8.5.0" }, @@ -712,10 +877,23 @@ "utf-8-validate": "^5.0.2" } }, + "node_modules/rpc-websockets/node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node_modules/rpc-websockets/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, @@ -761,9 +939,9 @@ } }, "node_modules/superstruct": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" }, "node_modules/text-encoding-utf-8": { "version": "1.0.2", @@ -786,9 +964,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -829,14 +1007,14 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -846,6 +1024,11 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/utf-8-validate": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", @@ -888,9 +1071,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, diff --git a/package.json b/package.json index c4789f4..339534f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "yolodolo", + "name": "the-holy-book-services", "version": "1.0.0", "description": "", "main": "index.js", @@ -10,10 +10,10 @@ "author": "", "license": "ISC", "dependencies": { - "@coral-xyz/anchor": "^0.28.1-beta.1", - "@openbook-dex/openbook-v2": "^0.1.5", - "@solana/spl-token": "^0.3.8", - "@solana/web3.js": "^1.78.3" + "@coral-xyz/anchor": "^0.29.0", + "@openbook-dex/openbook-v2": "^0.2.10", + "@solana/spl-token": "^0.4.6", + "@solana/web3.js": "^1.93.1" }, "devDependencies": { "@types/node": "^20.5.0", diff --git a/parseEvent.ts b/parseEvent.ts index 56ee828..57f3bab 100644 --- a/parseEvent.ts +++ b/parseEvent.ts @@ -1,10 +1,5 @@ import { PublicKey, Connection } from "@solana/web3.js"; -import { - AnchorProvider, - BN, - Wallet, - BorshCoder, -} from "@coral-xyz/anchor"; +import { AnchorProvider, BN, Wallet, BorshCoder } from "@coral-xyz/anchor"; import { RPC, programId } from "./utils"; import { authority } from "./utils"; @@ -49,4 +44,4 @@ function extractEventData(input: string): string | null { return null; } -main(); +main().catch((err) => console.error(err)); diff --git a/postOrder.ts b/postOrder.ts index b71b0ce..8e223b5 100644 --- a/postOrder.ts +++ b/postOrder.ts @@ -6,6 +6,7 @@ import { OpenBookV2Client, PlaceOrderArgs, Side, + Market, } from "@openbook-dex/openbook-v2"; import { MintUtils } from "./mint_utils"; @@ -22,27 +23,28 @@ async function main() { const marketPublicKey = new PublicKey( "CwHc9CZ9UCZFayz4eBekuhhKsHapLDPYfX4tGFJrnTRt" ); - const market = await client.deserializeMarketAccount(marketPublicKey); + const market = await Market.load(client, marketPublicKey); if (!market) { throw "No market"; } let mintUtils = new MintUtils(provider.connection, authority); const userQuoteAcc = await mintUtils.getOrCreateTokenAccount( - market?.quoteMint, + market?.account.quoteMint, authority, client.walletPk ); const userBaseAcc = await mintUtils.getOrCreateTokenAccount( - market?.baseMint, + market?.account.baseMint, authority, client.walletPk ); - mintUtils.mintTo(market?.quoteMint, userQuoteAcc.address); - mintUtils.mintTo(market?.baseMint, userBaseAcc.address); + mintUtils.mintTo(market?.account.quoteMint, userQuoteAcc.address); + mintUtils.mintTo(market?.account.baseMint, userBaseAcc.address); const nbOrders: number = 10; for (let i = 0; i < nbOrders; ++i) { + // @ts-ignore let side = Side.Bid; let placeOrder = { limit: {} }; let selfTradeBehavior = { decrementTake: {} }; @@ -62,10 +64,11 @@ async function main() { const [ix, signers] = await client.placeOrderIx( openOrdersPublicKey, marketPublicKey, - market, + market.account, userQuoteAcc.address, null, args, + // @ts-ignore [] ); const tx = await client.sendAndConfirmTransaction([ix], { @@ -75,6 +78,7 @@ async function main() { } for (let i = 0; i < nbOrders; ++i) { + // @ts-ignore let side = Side.Ask; let placeOrder = { limit: {} }; let selfTradeBehavior = { decrementTake: {} }; @@ -90,15 +94,17 @@ async function main() { selfTradeBehavior: selfTradeBehavior, limit: 255, }; + // @ts-ignore let remainings = new Array(); const [ix, signers] = await client.placeOrderIx( openOrdersPublicKey, marketPublicKey, - market, + market.account, userBaseAcc.address, null, args, + // @ts-ignore remainings ); const tx = await client.sendAndConfirmTransaction([ix], { @@ -108,4 +114,4 @@ async function main() { } } -main(); +main().catch((err) => console.error(err)); diff --git a/postOrderUI.ts b/postOrderUI.ts index 038e0ba..95ac42f 100644 --- a/postOrderUI.ts +++ b/postOrderUI.ts @@ -9,6 +9,7 @@ import { uiBaseToLots, uiPriceToLots, uiQuoteToLots, + Market, } from "@openbook-dex/openbook-v2"; import { MintUtils } from "./mint_utils"; @@ -25,35 +26,36 @@ async function main() { const marketPublicKey = new PublicKey( "CwHc9CZ9UCZFayz4eBekuhhKsHapLDPYfX4tGFJrnTRt" ); - const market = await client.deserializeMarketAccount(marketPublicKey); + const market = await Market.load(client, marketPublicKey); if (!market) { throw "No market"; } let mintUtils = new MintUtils(provider.connection, authority); const userQuoteAcc = await mintUtils.getOrCreateTokenAccount( - market?.quoteMint, + market?.account.quoteMint, authority, client.walletPk ); const userBaseAcc = await mintUtils.getOrCreateTokenAccount( - market?.baseMint, + market?.account.baseMint, authority, client.walletPk ); - mintUtils.mintTo(market?.quoteMint, userQuoteAcc.address); - mintUtils.mintTo(market?.baseMint, userBaseAcc.address); + mintUtils.mintTo(market?.account.quoteMint, userQuoteAcc.address); + mintUtils.mintTo(market?.account.baseMint, userBaseAcc.address); + // @ts-ignore let side = Side.Bid; let placeOrder = { limit: {} }; let selfTradeBehavior = { decrementTake: {} }; // Buy Sol at $20 with $100. Remember SBF was buying all at $3 // We set the maxBaseLots to maximum or big number to not restrict - const priceLots = uiPriceToLots(market, 20); - const maxQuoteLotsIncludingFees = uiQuoteToLots(market, 100); + const priceLots = uiPriceToLots(market?.account, 20); + const maxQuoteLotsIncludingFees = uiQuoteToLots(market?.account, 100); - const maxBaseLots = uiBaseToLots(market, 1000000); + const maxBaseLots = uiBaseToLots(market?.account, 1000000); let args: PlaceOrderArgs = { side, @@ -70,10 +72,11 @@ async function main() { const [ix, signers] = await client.placeOrderIx( openOrdersPublicKey, marketPublicKey, - market, + market.account, userQuoteAcc.address, null, args, + // @ts-ignore [] ); const tx = await client.sendAndConfirmTransaction([ix], signers); @@ -81,4 +84,4 @@ async function main() { console.log("Placed order ", tx); } -main(); +main().catch((err) => console.error(err)); diff --git a/takeOrder.ts b/takeOrder.ts index d9b10ca..735947a 100644 --- a/takeOrder.ts +++ b/takeOrder.ts @@ -6,8 +6,8 @@ import { OpenBookV2Client, PlaceOrderArgs, Side, - OrderType, SelfTradeBehavior, + Market, } from "@openbook-dex/openbook-v2"; import { MintUtils } from "./mint_utils"; @@ -22,7 +22,7 @@ async function main() { "2Hj72s8LRTs532YBDSU7R95DgHw2bSSN5nmwzeYwgJr3" ); - const market = await client.deserializeMarketAccount(marketPublicKey); + const market = await Market.load(client, marketPublicKey); if (!market) { throw "No market"; } @@ -30,34 +30,37 @@ async function main() { let mintUtils = new MintUtils(provider.connection, authority); const userQuoteAcc = await mintUtils.getOrCreateTokenAccount( - market?.quoteMint, + market?.account.quoteMint, authority, client.walletPk ); const userBaseAcc = await mintUtils.getOrCreateTokenAccount( - market?.baseMint, + market?.account.baseMint, authority, client.walletPk ); - mintUtils.mintTo(market?.quoteMint, userQuoteAcc.address); - mintUtils.mintTo(market?.baseMint, userBaseAcc.address); + mintUtils.mintTo(market?.account.quoteMint, userQuoteAcc.address); + mintUtils.mintTo(market?.account.baseMint, userBaseAcc.address); + let selfTradeBehavior = { decrementTake: {} }; + let placeOrder = { limit: {} }; let args: PlaceOrderArgs = { + // @ts-ignore side: Side.Bid, priceLots: new BN(1000 + 1000), maxBaseLots: new BN(1000), maxQuoteLotsIncludingFees: new BN(100000000), clientOrderId: new BN(105), - orderType: OrderType.Market, + placeOrder, expiryTimestamp: new BN(0), - selfTradeBehavior: SelfTradeBehavior.DecrementTake, + selfTradeBehavior, limit: 255, }; let remainings = new Array(); const [ix, signers] = await client.placeTakeOrderIx( marketPublicKey, - market, + market.account, userBaseAcc.address, userQuoteAcc.address, null, @@ -70,4 +73,4 @@ async function main() { console.log("Take order ", tx); } -main(); +main().catch((err) => console.error(err)); diff --git a/tsconfig.json b/tsconfig.json index 3a7a3fd..2cc95b5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,14 @@ { "compilerOptions": { - "target": "es5", - "module": "commonjs", - "lib": ["es6"], + "target": "es6", + "module": "commonjs", + "lib": ["es6"], "allowJs": true, - "outDir": "build", + "outDir": "build", "rootDir": "./", - "strict": true, + "strict": true, "noImplicitAny": true, "esModuleInterop": true, "resolveJsonModule": true } -} \ No newline at end of file +} diff --git a/update_ltu.ts b/update_ltu.ts index b05211b..29dc09f 100644 --- a/update_ltu.ts +++ b/update_ltu.ts @@ -10,7 +10,9 @@ import { authority } from "./utils"; import { RPC } from "./utils"; import { OpenBookV2Client } from "@openbook-dex/openbook-v2"; -const LOOKUP_TABLE_ADDRESS = new PublicKey("89PiVrPT2LRdQncErZxPSAKfB6WXqZdX9Hx8UBTzbfN8"); +const LOOKUP_TABLE_ADDRESS = new PublicKey( + "89PiVrPT2LRdQncErZxPSAKfB6WXqZdX9Hx8UBTzbfN8" +); const addressesToAdd = [new PublicKey("")]; diff --git a/utils.ts b/utils.ts index 4128a35..bfcdd9f 100644 --- a/utils.ts +++ b/utils.ts @@ -21,7 +21,7 @@ import { MintUtils } from "./mint_utils"; // export const RPC = "http://127.0.0.1:8899"; // export const RPC = "https://api.devnet.solana.com"; // export const RPC= "https://api.testnet.solana.com"; -export const RPC= "https://api.mainnet-beta.solana.com"; +export const RPC = "https://api.mainnet-beta.solana.com"; export const programId = new PublicKey( "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb"