From 273773f6f65dc2dda12f2cc96928b1e5f233cd65 Mon Sep 17 00:00:00 2001 From: kelvinlau20100 <53942902+kelvinlau20100@users.noreply.github.com> Date: Tue, 26 Mar 2024 06:35:13 +0800 Subject: [PATCH] close oo fix (#372) * close oo fix * changelog * merge --- CHANGELOG.md | 1 + src/cross-client.ts | 2 +- src/idl/zeta.json | 77 ++++++++++++++++++ src/program-instructions.ts | 32 ++++++++ src/types/zeta.ts | 154 ++++++++++++++++++++++++++++++++++++ 5 files changed, 265 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebe3c725e..1ce18acd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Version changes are pinned to SDK releases. - Improve error handling for RPC errors ([#363](https://github.com/zetamarkets/sdk/pull/363)) - Improve tx confirmation to use blockheight and add new Exchange.skipRpcConfirmation option ([#363](https://github.com/zetamarkets/sdk/pull/363)) - Fix risk utils to use getFeeBps() ([#363](https://github.com/zetamarkets/sdk/pull/363)) +- Update to closeOpenOrdersV4. ([#372](https://github.com/zetamarkets/sdk/pull/372)) ## [1.24.1] diff --git a/src/cross-client.ts b/src/cross-client.ts index da6234a4c..d41b47cb4 100644 --- a/src/cross-client.ts +++ b/src/cross-client.ts @@ -2572,7 +2572,7 @@ export class CrossClient { ); tx.add( - instructions.closeOpenOrdersV3Ix( + instructions.closeOpenOrdersV4Ix( asset, this._provider.wallet.publicKey, this.accountAddress, diff --git a/src/idl/zeta.json b/src/idl/zeta.json index 67edf4f4f..07405805e 100644 --- a/src/idl/zeta.json +++ b/src/idl/zeta.json @@ -2655,6 +2655,73 @@ } ] }, + { + "name": "closeOpenOrdersV4", + "accounts": [ + { + "name": "state", + "isMut": false, + "isSigner": false + }, + { + "name": "pricing", + "isMut": false, + "isSigner": false + }, + { + "name": "dexProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrders", + "isMut": true, + "isSigner": false + }, + { + "name": "crossMarginAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "authority", + "isMut": true, + "isSigner": true + }, + { + "name": "market", + "isMut": false, + "isSigner": false + }, + { + "name": "serumAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrdersMap", + "isMut": true, + "isSigner": false + }, + { + "name": "eventQueue", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "mapNonce", + "type": "u8" + }, + { + "name": "asset", + "type": { + "defined": "Asset" + } + } + ] + }, { "name": "initializeWhitelistDepositAccount", "accounts": [ @@ -11075,6 +11142,16 @@ "code": 6164, "name": "PostOnlyForMulti", "msg": "Post only order types only for multi orders" + }, + { + "code": 6165, + "name": "ErrTickWide", + "msg": "ErrTickWide" + }, + { + "code": 6166, + "name": "OORemainingEvents", + "msg": "Open orders has remaining events" } ] } \ No newline at end of file diff --git a/src/program-instructions.ts b/src/program-instructions.ts index 4136cd61e..82ae3860e 100644 --- a/src/program-instructions.ts +++ b/src/program-instructions.ts @@ -453,6 +453,38 @@ export function initializeOpenOrdersV3Ix( ]; } +export function closeOpenOrdersV4Ix( + asset: Asset, + userKey: PublicKey, + crossMarginAccount: PublicKey, + openOrders: PublicKey +): TransactionInstruction { + const [openOrdersMap, openOrdersMapNonce] = utils.getCrossOpenOrdersMap( + Exchange.programId, + openOrders + ); + let market = Exchange.getPerpMarket(asset); + + return Exchange.program.instruction.closeOpenOrdersV4( + openOrdersMapNonce, + toProgramAsset(asset), + { + accounts: { + state: Exchange.stateAddress, + pricing: Exchange.pricingAddress, + dexProgram: constants.DEX_PID[Exchange.network], + openOrders, + crossMarginAccount: crossMarginAccount, + authority: userKey, + market: market.address, + serumAuthority: Exchange.serumAuthority, + openOrdersMap, + eventQueue: market.serumMarket.eventQueueAddress, + }, + } + ); +} + export function closeOpenOrdersV3Ix( asset: Asset, userKey: PublicKey, diff --git a/src/types/zeta.ts b/src/types/zeta.ts index 1b2ed0e39..67527fd05 100644 --- a/src/types/zeta.ts +++ b/src/types/zeta.ts @@ -2655,6 +2655,73 @@ export type Zeta = { } ] }, + { + "name": "closeOpenOrdersV4", + "accounts": [ + { + "name": "state", + "isMut": false, + "isSigner": false + }, + { + "name": "pricing", + "isMut": false, + "isSigner": false + }, + { + "name": "dexProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrders", + "isMut": true, + "isSigner": false + }, + { + "name": "crossMarginAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "authority", + "isMut": true, + "isSigner": true + }, + { + "name": "market", + "isMut": false, + "isSigner": false + }, + { + "name": "serumAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrdersMap", + "isMut": true, + "isSigner": false + }, + { + "name": "eventQueue", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "mapNonce", + "type": "u8" + }, + { + "name": "asset", + "type": { + "defined": "Asset" + } + } + ] + }, { "name": "initializeWhitelistDepositAccount", "accounts": [ @@ -11075,6 +11142,16 @@ export type Zeta = { "code": 6164, "name": "PostOnlyForMulti", "msg": "Post only order types only for multi orders" + }, + { + "code": 6165, + "name": "ErrTickWide", + "msg": "ErrTickWide" + }, + { + "code": 6166, + "name": "OORemainingEvents", + "msg": "Open orders has remaining events" } ] }; @@ -13736,6 +13813,73 @@ export const IDL: Zeta = { } ] }, + { + "name": "closeOpenOrdersV4", + "accounts": [ + { + "name": "state", + "isMut": false, + "isSigner": false + }, + { + "name": "pricing", + "isMut": false, + "isSigner": false + }, + { + "name": "dexProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrders", + "isMut": true, + "isSigner": false + }, + { + "name": "crossMarginAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "authority", + "isMut": true, + "isSigner": true + }, + { + "name": "market", + "isMut": false, + "isSigner": false + }, + { + "name": "serumAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "openOrdersMap", + "isMut": true, + "isSigner": false + }, + { + "name": "eventQueue", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "mapNonce", + "type": "u8" + }, + { + "name": "asset", + "type": { + "defined": "Asset" + } + } + ] + }, { "name": "initializeWhitelistDepositAccount", "accounts": [ @@ -22156,6 +22300,16 @@ export const IDL: Zeta = { "code": 6164, "name": "PostOnlyForMulti", "msg": "Post only order types only for multi orders" + }, + { + "code": 6165, + "name": "ErrTickWide", + "msg": "ErrTickWide" + }, + { + "code": 6166, + "name": "OORemainingEvents", + "msg": "Open orders has remaining events" } ] };