spl: Add init and close open orders instructions to the dex (#245)
This commit is contained in:
parent
d187dc5be9
commit
265eedc5a3
|
@ -2781,8 +2781,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serum_dex"
|
name = "serum_dex"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
source = "git+https://github.com/project-serum/serum-dex#66904088599c1a8d42623f6a6d157cec46c8da62"
|
source = "git+https://github.com/project-serum/serum-dex?tag=v0.3.1#7d1d41538417aa8721aabea9503bf9d99eab7cc4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayref",
|
"arrayref",
|
||||||
"bincode",
|
"bincode",
|
||||||
|
|
|
@ -12,6 +12,6 @@ devnet = []
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anchor-lang = { path = "../lang", version = "0.6.0", features = ["derive"] }
|
anchor-lang = { path = "../lang", version = "0.6.0", features = ["derive"] }
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
serum_dex = { git = "https://github.com/project-serum/serum-dex", version = "0.3.0", features = ["no-entrypoint"] }
|
serum_dex = { git = "https://github.com/project-serum/serum-dex", tag = "v0.3.1", version = "0.3.1", features = ["no-entrypoint"] }
|
||||||
solana-program = "1.6.6"
|
solana-program = "1.6.6"
|
||||||
spl-token = { version = "3.0.1", features = ["no-entrypoint"] }
|
spl-token = { version = "3.0.1", features = ["no-entrypoint"] }
|
||||||
|
|
|
@ -82,6 +82,41 @@ pub fn settle_funds<'info>(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn init_open_orders<'info>(
|
||||||
|
ctx: CpiContext<'_, '_, '_, 'info, InitOpenOrders<'info>>,
|
||||||
|
) -> ProgramResult {
|
||||||
|
let ix = serum_dex::instruction::init_open_orders(
|
||||||
|
&ID,
|
||||||
|
ctx.accounts.open_orders.key,
|
||||||
|
ctx.accounts.authority.key,
|
||||||
|
ctx.accounts.market.key,
|
||||||
|
)?;
|
||||||
|
solana_program::program::invoke_signed(
|
||||||
|
&ix,
|
||||||
|
&ToAccountInfos::to_account_infos(&ctx),
|
||||||
|
ctx.signer_seeds,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn close_open_orders<'info>(
|
||||||
|
ctx: CpiContext<'_, '_, '_, 'info, CloseOpenOrders<'info>>,
|
||||||
|
) -> ProgramResult {
|
||||||
|
let ix = serum_dex::instruction::close_open_orders(
|
||||||
|
&ID,
|
||||||
|
ctx.accounts.open_orders.key,
|
||||||
|
ctx.accounts.authority.key,
|
||||||
|
ctx.accounts.destination.key,
|
||||||
|
ctx.accounts.market.key,
|
||||||
|
)?;
|
||||||
|
solana_program::program::invoke_signed(
|
||||||
|
&ix,
|
||||||
|
&ToAccountInfos::to_account_infos(&ctx),
|
||||||
|
ctx.signer_seeds,
|
||||||
|
)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Accounts)]
|
#[derive(Accounts)]
|
||||||
pub struct NewOrderV3<'info> {
|
pub struct NewOrderV3<'info> {
|
||||||
pub market: AccountInfo<'info>,
|
pub market: AccountInfo<'info>,
|
||||||
|
@ -116,3 +151,19 @@ pub struct SettleFunds<'info> {
|
||||||
pub vault_signer: AccountInfo<'info>,
|
pub vault_signer: AccountInfo<'info>,
|
||||||
pub token_program: AccountInfo<'info>,
|
pub token_program: AccountInfo<'info>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Accounts)]
|
||||||
|
pub struct InitOpenOrders<'info> {
|
||||||
|
pub open_orders: AccountInfo<'info>,
|
||||||
|
pub authority: AccountInfo<'info>,
|
||||||
|
pub market: AccountInfo<'info>,
|
||||||
|
pub rent: AccountInfo<'info>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Accounts)]
|
||||||
|
pub struct CloseOpenOrders<'info> {
|
||||||
|
pub open_orders: AccountInfo<'info>,
|
||||||
|
pub authority: AccountInfo<'info>,
|
||||||
|
pub destination: AccountInfo<'info>,
|
||||||
|
pub market: AccountInfo<'info>,
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue