Skip to content

Commit

Permalink
adding instruction authority withdraw instruction for redemption
Browse files Browse the repository at this point in the history
  • Loading branch information
hoakbuilds committed Sep 2, 2023
1 parent 6627fac commit 38ca9ee
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 22 deletions.
88 changes: 87 additions & 1 deletion cypher-client/idl.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,48 @@
{
"version": "3.0.7",
"version": "3.0.8",
"name": "cypher",
"instructions": [
{
"name": "authorityWithdraw",
"accounts": [
{
"name": "tokenPool",
"isMut": false,
"isSigner": false
},
{
"name": "tokenPoolNode",
"isMut": false,
"isSigner": false
},
{
"name": "tokenVault",
"isMut": true,
"isSigner": false
},
{
"name": "destinationTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "vaultSigner",
"isMut": false,
"isSigner": false
},
{
"name": "authority",
"isMut": false,
"isSigner": true
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
}
],
"args": []
},
{
"name": "cacheOraclePrices",
"accounts": [
Expand Down Expand Up @@ -1193,6 +1234,16 @@
{
"name": "editSubAccountMargining",
"accounts": [
{
"name": "clearing",
"isMut": false,
"isSigner": false
},
{
"name": "cacheAccount",
"isMut": false,
"isSigner": false
},
{
"name": "masterAccount",
"isMut": true,
Expand Down Expand Up @@ -8320,6 +8371,36 @@
}
]
},
{
"name": "TransferBetweenSubAccountsLog",
"fields": [
{
"name": "masterAccount",
"type": "publicKey",
"index": false
},
{
"name": "fromSubAccount",
"type": "publicKey",
"index": false
},
{
"name": "toSubAccount",
"type": "publicKey",
"index": false
},
{
"name": "assetMint",
"type": "publicKey",
"index": false
},
{
"name": "amount",
"type": "u64",
"index": false
}
]
},
{
"name": "OrderFillLog",
"fields": [
Expand Down Expand Up @@ -8841,6 +8922,11 @@
},
{
"code": 6090,
"name": "WouldExceedBorrowLimit",
"msg": "this operation would exceed borrow limits"
},
{
"code": 6091,
"name": "Default",
"msg": "Default"
}
Expand Down
67 changes: 46 additions & 21 deletions cypher-client/src/instructions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,59 @@ use anchor_spl::token;

use crate::{
accounts::{
CacheOraclePrices, CancelFuturesOrder, CancelFuturesOrders, CancelPerpOrder,
CancelPerpOrders, CancelSpotOrder, CancelSpotOrderDex, ClaimIdoProceeds, CloseAccount,
CloseCacheAccount, CloseClearing, CloseFuturesMarket, CloseOracleProducts, ClosePerpMarket,
ClosePool, ClosePoolNode, CloseSpotOpenOrders, CloseSubAccount, ConsumeFuturesEvents,
ConsumePerpEvents, CreateAccount, CreateFuturesMarket, CreateOracleProducts,
CreateOracleStub, CreateOrdersAccount, CreatePerpMarket, CreatePool, CreatePoolNode,
CreatePrivateClearing, CreatePublicClearing, CreateSubAccount, CreateWhitelist,
CreateWhitelistedAccount, DepositDeliverable, DepositFunds, InitCacheAccount,
InitSpotOpenOrders, LiquidateFuturesPosition, LiquidatePerpPosition, LiquidateSpotPosition,
MultipleNewFuturesOrders, MultipleNewPerpOrders, NewFuturesOrder, NewPerpOrder,
NewSpotOrder, NewSpotOrderDex, RollMarketExpiry, SetAccountDelegate, SetCacheAuthority,
SetClearingAuthority, SetClearingFeeMint, SetClearingFeeTiers, SetFuturesMarketAuthority,
SetFuturesMarketLiquidityMiningInfo, SetFuturesMarketParams, SetFuturesMarketStatus,
SetOracleProducts, SetOracleProductsV2, SetOracleStubPrice, SetPerpetualMarketAuthority,
SetPerpetualMarketLiquidityMiningInfo, SetPerpetualMarketParams, SetPerpetualMarketStatus,
SetPoolAuthority, SetPoolDexMarket, SetPoolNodeAuthority, SetPoolNodeStatus, SetPoolParams,
SetPoolStatus, SetSubAccountDelegate, SettleFunding, SettleFuturesFunds, SettlePerpFunds,
SettlePosition, SettlePositionWithDelivery, SettleSpotFunds, SettleSpotFundsDex,
SweepMarketFees, SweepPoolFees, TransferBetweenSubAccounts, UpdateAccountMargin,
UpdateFundingRate, UpdateMarketExpiration, UpdateTokenIndex, UpgradeOracleProducts,
WithdrawFunds,
AuthorityWithdraw, CacheOraclePrices, CancelFuturesOrder, CancelFuturesOrders,
CancelPerpOrder, CancelPerpOrders, CancelSpotOrder, CancelSpotOrderDex, ClaimIdoProceeds,
CloseAccount, CloseCacheAccount, CloseClearing, CloseFuturesMarket, CloseOracleProducts,
ClosePerpMarket, ClosePool, ClosePoolNode, CloseSpotOpenOrders, CloseSubAccount,
ConsumeFuturesEvents, ConsumePerpEvents, CreateAccount, CreateFuturesMarket,
CreateOracleProducts, CreateOracleStub, CreateOrdersAccount, CreatePerpMarket, CreatePool,
CreatePoolNode, CreatePrivateClearing, CreatePublicClearing, CreateSubAccount,
CreateWhitelist, CreateWhitelistedAccount, DepositDeliverable, DepositFunds,
InitCacheAccount, InitSpotOpenOrders, LiquidateFuturesPosition, LiquidatePerpPosition,
LiquidateSpotPosition, MultipleNewFuturesOrders, MultipleNewPerpOrders, NewFuturesOrder,
NewPerpOrder, NewSpotOrder, NewSpotOrderDex, RollMarketExpiry, SetAccountDelegate,
SetCacheAuthority, SetClearingAuthority, SetClearingFeeMint, SetClearingFeeTiers,
SetFuturesMarketAuthority, SetFuturesMarketLiquidityMiningInfo, SetFuturesMarketParams,
SetFuturesMarketStatus, SetOracleProducts, SetOracleProductsV2, SetOracleStubPrice,
SetPerpetualMarketAuthority, SetPerpetualMarketLiquidityMiningInfo,
SetPerpetualMarketParams, SetPerpetualMarketStatus, SetPoolAuthority, SetPoolDexMarket,
SetPoolNodeAuthority, SetPoolNodeStatus, SetPoolParams, SetPoolStatus,
SetSubAccountDelegate, SettleFunding, SettleFuturesFunds, SettlePerpFunds, SettlePosition,
SettlePositionWithDelivery, SettleSpotFunds, SettleSpotFundsDex, SweepMarketFees,
SweepPoolFees, TransferBetweenSubAccounts, UpdateAccountMargin, UpdateFundingRate,
UpdateMarketExpiration, UpdateTokenIndex, UpgradeOracleProducts, WithdrawFunds,
},
constants::SUB_ACCOUNT_ALIAS_LEN,
dex, quote_mint, CancelOrderArgs, CreateClearingArgs, CreateFuturesMarketArgs,
CreateOracleProductsArgs, CreatePerpetualMarketArgs, CreatePoolArgs, FeeTierArgs,
LiquidityMiningArgs, NewDerivativeOrderArgs, NewSpotOrderArgs, OperatingStatus, ProductsType,
};

pub fn authority_withdraw(
token_pool: &Pubkey,
token_pool_node: &Pubkey,
token_vault: &Pubkey,
destination_token_account: &Pubkey,
vault_signer: &Pubkey,
authority: &Pubkey,
) -> Instruction {
let accounts = AuthorityWithdraw {
token_pool: *token_pool,
token_pool_node: *token_pool_node,
token_vault: *token_vault,
destination_token_account: *destination_token_account,
vault_signer: *vault_signer,
authority: *authority,
token_program: token::ID,
};
let ix_data = crate::instruction::AuthorityWithdraw {};
Instruction {
program_id: crate::id(),
accounts: accounts.to_account_metas(None),
data: ix_data.data(),
}
}

pub fn create_public_clearing(
clearing: &Pubkey,
authority: &Pubkey,
Expand Down

0 comments on commit 38ca9ee

Please sign in to comment.