@triadxyz/triad-protocol
Version:
<div align="center"> <h1>Triad Protocol</h1> </div>
292 lines (291 loc) • 6.09 kB
TypeScript
import { Commitment, PublicKey } from '@solana/web3.js';
export type RpcOptions = {
skipPreflight?: boolean;
microLamports?: number;
computeBudget?: number;
commitment?: Commitment;
};
export type Pool = {
address: string;
id: number;
question: string;
authority: string;
isFast: boolean;
isFastMarketActive: boolean;
};
export type Market = {
address: string;
bump: number;
authority: string;
marketId: string;
hypePrice: string;
flopPrice: string;
hypeLiquidity: string;
flopLiquidity: string;
hypeShares: string;
flopShares: string;
volume: string;
mint: string;
updateTs: string;
resolvedTs: string;
nextOrderId: string;
feeBps: number;
isAllowedToPayout: boolean;
payoutFeeAvailable: string;
payoutFeeClaimed: string;
marketFeeAvailable: string;
marketFeeClaimed: string;
marketStart: string;
marketEnd: string;
question: string;
winningDirection: WinningDirection;
marketLiquidityAtStart: string;
payoutFee: number;
customer: string;
poolId: number;
feeRecipient: string;
};
export type UserTrade = {
user: string;
totalDeposits: string;
totalWithdraws: string;
orders: Order[];
nonce: string;
poseidon: string;
isSubUser: boolean;
};
export type Order = {
ts: string;
orderId: string;
marketId: string;
orderStatus: OrderStatus;
price: string;
totalShares: string;
filledShares: string;
orderType: OrderType;
orderDirection: OrderDirection;
orderSide: OrderSide;
userNonce: string;
authority: string;
createdAt: string;
isTrdPayout: boolean;
};
export type BookOrder = {
id: string;
price: string;
totalShares: string;
filledShares: string;
authority: string;
orderDirection: OrderDirection;
orderSide: OrderSide;
userNonce: string;
linkedBookOrderId: string;
};
export declare enum WinningDirection {
HYPE = "Hype",
DRAW = "Draw",
FLOP = "Flop",
NONE = "None"
}
export declare enum OrderDirection {
HYPE = "hype",
FLOP = "flop"
}
export declare enum OrderStatus {
INIT = "init",
OPEN = "open",
CLOSED = "closed",
CLAIMED = "claimed",
LIQUIDATED = "liquidated",
WAITING = "waiting"
}
export declare enum OrderType {
LIMIT = "limit",
MARKET = "market"
}
export declare enum OrderSide {
BID = "bid",
ASK = "ask"
}
export type OrderDirectionEncoded = {
hype: {};
} | {
flop: {};
};
export type OrderTypeEncoded = {
limit: {};
} | {
market: {};
};
export type OrderSideEncoded = {
bid: {};
} | {
ask: {};
};
export type OrderStatusEncoded = {
init: {};
} | {
open: {};
} | {
closed: {};
} | {
claimed: {};
} | {
liquidated: {};
} | {
waiting: {};
};
export type WinningDirectionEncoded = {
hype: {};
} | {
flop: {};
} | {
draw: {};
} | {
none: {};
};
export type PlaceBidOrderArgs = {
marketId: number;
orders: {
amount: number;
price: number;
orderDirection: OrderDirectionEncoded;
}[];
isTrdPayout: boolean;
};
export type PlaceAskOrderArgs = {
marketId: number;
orders: {
amount: number;
price: number;
bidOrderId: number;
userNonce: number;
}[];
};
export type InitializeMarketArgs = {
marketId: number;
startTime: number;
endTime: number;
question: string;
feeBps: number;
customer: PublicKey | null;
};
export type CreateCustomerArgs = {
id: number;
name: string;
authority: PublicKey;
feeRecipient: PublicKey;
};
export type OpenOrderArgs = {
marketId: number;
amount: number;
token: string;
direction: OrderDirectionEncoded;
mint: PublicKey;
};
export type CreateMarketArgs = {
markets: {
marketId: number;
startTime: number;
endTime: number;
question: string;
feeBps: number;
payoutFee: number;
}[];
customer: PublicKey;
poolId?: number;
};
export type CreatePoolArgs = {
poolId: number;
question?: string;
startTime: number;
endTime: number;
feeBps: number;
payoutFee: number;
customer: PublicKey;
markets: {
marketId: number;
question: string;
}[];
isFast?: boolean;
};
export type CancelBidOrderArgs = {
marketId: number;
orders: {
orderId: number;
userNonce: number;
orderDirection: OrderDirectionEncoded;
}[];
};
export type CancelAskOrderArgs = {
marketId: number;
orders: {
orderId: number;
userNonce: number;
orderDirection: OrderDirectionEncoded;
}[];
};
export type MarketBidOrderArgs = {
marketId: number;
amount: number;
orderDirection: OrderDirectionEncoded;
feeBps: number;
isTrdPayout: boolean;
};
export type MarketAskOrderArgs = {
marketId: number;
orders: {
shares: number;
bidOrderId: number;
userNonce: number;
}[];
orderDirection: OrderDirectionEncoded;
isTrdPayout: boolean;
feeBps: number;
};
export type CollectMarketFeeArgs = {
markets: {
marketAddress: PublicKey;
customerId: number;
customerFeeRecipient: PublicKey;
}[];
};
export type Customer = {
id: number;
authority: string;
name: string;
feeRecipient: string;
feeBps: number;
isVerified: boolean;
address: string;
};
export type StakeVault = {
name: string;
collection: string;
authority: string;
slots: number;
amount: number;
isLocked: boolean;
tokenMint: string;
amountPaid: number;
nftStaked: number;
tokenDecimals: number;
tokenStaked: number;
week: number;
initTs: number;
endTs: number;
};
export type Stake = {
authority: string;
initTs: number;
checkedTs: number;
claimed: number;
available: number;
amount: number;
};
export type Unstake = {
address: string;
authority: string;
amount: number;
withdrawTs: number;
};