Skip to content

Commit

Permalink
sdk: add managerMarginTradingEnable
Browse files Browse the repository at this point in the history
  • Loading branch information
wphan committed Sep 12, 2023
1 parent 1bc7c4d commit c1ecf3c
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 4 deletions.
7 changes: 7 additions & 0 deletions ts/sdk/cli/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
requestWithdraw,
withdraw,
listDepositorsForVault,
managerUpdateMarginTradingEnabled
} from "./commands";

import { Command, Option } from 'commander';
Expand Down Expand Up @@ -62,6 +63,12 @@ program
.description("Update vault params for a manager")
.addOption(new Option("--vault-address <address>", "Address of the vault to view").makeOptionMandatory(true))
.action((opts) => managerUpdateVault(program, opts));
program
.command("manager-update-margin-trading-enabled")
.description("Update vault margin trading permissiones a manager")
.addOption(new Option("--vault-address <address>", "Address of the vault to view").makeOptionMandatory(true))
.addOption(new Option("--enabled <enabled>", "true to enable, false to disable").makeOptionMandatory(true))
.action((opts) => managerUpdateMarginTradingEnabled(program, opts));
program
.command("manager-withdraw")
.description("Make a withdraw from your vault")
Expand Down
3 changes: 2 additions & 1 deletion ts/sdk/cli/commands/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ export * from './initVaultDepositor';
export * from './deposit';
export * from './requestWithdraw';
export * from './withdraw';
export * from './listDepositorsForVault';
export * from './listDepositorsForVault';
export * from './managerUpdateMarginTradingEnabled';
27 changes: 27 additions & 0 deletions ts/sdk/cli/commands/managerUpdateMarginTradingEnabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { PublicKey } from "@solana/web3.js";
import {
OptionValues,
Command
} from "commander";
import { getCommandContext } from "../utils";

export const managerUpdateMarginTradingEnabled= async (program: Command, cmdOpts: OptionValues) => {

let vaultAddress: PublicKey;
try {
vaultAddress = new PublicKey(cmdOpts.vaultAddress as string);
} catch (err) {
console.error("Invalid vault address");
process.exit(1);
}

const {
driftVault
} = await getCommandContext(program, true);

const enabled = cmdOpts.enabled ? (cmdOpts.enabled as string).toLowerCase() === "true" : false;

const tx = await driftVault.updateMarginTradingEnabled(vaultAddress, enabled);
console.log(`Updated margin trading vault manager: https://solscan.io/tx/${tx}`);
console.log("Done!");
};
6 changes: 3 additions & 3 deletions ts/sdk/cli/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DriftClient, PublicKey, Wallet, loadKeypair } from "@drift-labs/sdk";
import { Vault, VaultClient, decodeName } from "../src";
import { DriftClient, Wallet, loadKeypair } from "@drift-labs/sdk";
import { VAULT_PROGRAM_ID, Vault, VaultClient, decodeName } from "../src";
import { Command } from "commander";
import { Connection, Keypair } from "@solana/web3.js";
import { AnchorProvider } from "@coral-xyz/anchor";
Expand Down Expand Up @@ -103,7 +103,7 @@ export async function getCommandContext(program: Command, needToSign: boolean):

const provider = new AnchorProvider(connection, wallet, {});
anchor.setProvider(provider);
const vaultProgramId = new PublicKey("vAuLTsyrvSfZRuRB3XgvkPwNGgYSs9YRYymVebLKoxR");
const vaultProgramId = VAULT_PROGRAM_ID;
const vaultProgram = new anchor.Program(IDL, vaultProgramId, provider);

const driftVault = new VaultClient({
Expand Down
21 changes: 21 additions & 0 deletions ts/sdk/src/vaultClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,27 @@ export class VaultClient {
.rpc();
}

/**
* Updates the vault margin trading status.
* @param vault vault address to update
* @param enabeld whether to enable margin trading
* @returns
*/
public async updateMarginTradingEnabled(
vault: PublicKey,
enabled: boolean
): Promise<TransactionSignature> {
const vaultAccount = await this.program.account.vault.fetch(vault);
return await this.program.methods
.updateMarginTradingEnabled(enabled)
.accounts({
vault: vault,
driftUser: vaultAccount.user,
driftProgram: this.driftClient.program.programId,
})
.rpc();
}

/**
*
* @param vault vault address to deposit to
Expand Down

0 comments on commit c1ecf3c

Please sign in to comment.