@drift-labs/sdk
Version:
SDK for Drift Protocol
193 lines (184 loc) • 4.55 kB
text/typescript
import type {
AccountMeta,
PublicKey,
TransactionInstruction,
} from '@solana/web3.js';
import type { DriftProgram } from '../../config';
export async function buildPlacePerpOrderInstruction(args: {
program: DriftProgram;
orderParams: any;
state: PublicKey;
user: PublicKey;
userStats: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await (args.program.instruction as any).placePerpOrder(
args.orderParams,
{
accounts: {
state: args.state,
user: args.user,
userStats: args.userStats,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
}
);
}
export async function buildPlaceAndTakePerpOrderInstruction(args: {
program: DriftProgram;
orderParams: any;
optionalParams: number | null;
state: PublicKey;
user: PublicKey;
userStats: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await args.program.instruction.placeAndTakePerpOrder(
args.orderParams,
args.optionalParams,
{
accounts: {
state: args.state,
user: args.user,
userStats: args.userStats,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
}
);
}
export async function buildPlaceAndMakePerpOrderInstruction(args: {
program: DriftProgram;
orderParams: any;
takerOrderId: number;
state: PublicKey;
user: PublicKey;
userStats: PublicKey;
taker: PublicKey;
takerStats: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await args.program.instruction.placeAndMakePerpOrder(
args.orderParams,
args.takerOrderId,
{
accounts: {
state: args.state,
user: args.user,
userStats: args.userStats,
taker: args.taker,
takerStats: args.takerStats,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
}
);
}
export async function buildCancelOrderInstruction(args: {
program: DriftProgram;
orderId: number | null;
state: PublicKey;
user: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await args.program.instruction.cancelOrder(args.orderId, {
accounts: {
state: args.state,
user: args.user,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
});
}
export async function buildCancelOrderByUserIdInstruction(args: {
program: DriftProgram;
userOrderId: number;
state: PublicKey;
user: PublicKey;
authority: PublicKey;
oracle: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await (args.program.instruction as any).cancelOrderByUserId(
args.userOrderId,
{
accounts: {
state: args.state,
user: args.user,
authority: args.authority,
oracle: args.oracle,
},
remainingAccounts: args.remainingAccounts,
}
);
}
export async function buildCancelOrdersByIdsInstruction(args: {
program: DriftProgram;
orderIds: number[] | undefined;
state: PublicKey;
user: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await args.program.instruction.cancelOrdersByIds(args.orderIds, {
accounts: {
state: args.state,
user: args.user,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
});
}
export async function buildModifyOrderInstruction(args: {
program: DriftProgram;
orderId: number;
modifyParams: any;
state: PublicKey;
user: PublicKey;
userStats: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await (args.program.instruction as any).modifyOrder(
args.orderId,
args.modifyParams,
{
accounts: {
state: args.state,
user: args.user,
userStats: args.userStats,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
}
);
}
export async function buildModifyOrderByUserIdInstruction(args: {
program: DriftProgram;
userOrderId: number;
modifyParams: any;
state: PublicKey;
user: PublicKey;
userStats: PublicKey;
authority: PublicKey;
remainingAccounts: AccountMeta[];
}): Promise<TransactionInstruction> {
return await (args.program.instruction as any).modifyOrderByUserId(
args.userOrderId,
args.modifyParams,
{
accounts: {
state: args.state,
user: args.user,
userStats: args.userStats,
authority: args.authority,
},
remainingAccounts: args.remainingAccounts,
}
);
}