@swiv-sdk/perpetual-swap-sdk
Version:
SDK for Swiv Perpetual Swap Protocol
1,769 lines (1,768 loc) • 51.4 kB
TypeScript
/**
* Program IDL in camelCase format in order to be used in JS/TS.
*
* Note that this is only a type helper and is not the actual IDL. The original
* IDL can be found at `target/idl/contracts.json`.
*/
export type Contracts = {
"address": "6UnAEvz8tLBLXM2uDmbYWYKZ6UuAgdxJHTss8HC9h3wf";
"metadata": {
"name": "contracts";
"version": "0.1.0";
"spec": "0.1.0";
"description": "Created with Anchor";
};
"instructions": [
{
"name": "closeMarketOrder";
"discriminator": [
161,
211,
209,
73,
201,
237,
81,
146
];
"accounts": [
{
"name": "market";
"writable": true;
"relations": [
"position"
];
},
{
"name": "position";
"writable": true;
},
{
"name": "marginAccount";
"writable": true;
},
{
"name": "trader";
"writable": true;
"signer": true;
"relations": [
"position"
];
},
{
"name": "priceUpdate";
}
];
"args": [];
},
{
"name": "createMarginAccount";
"discriminator": [
98,
114,
213,
184,
129,
89,
90,
185
];
"accounts": [
{
"name": "owner";
"writable": true;
"signer": true;
},
{
"name": "marginAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "const";
"value": [
109,
97,
114,
103,
105,
110,
95,
97,
99,
99,
111,
117,
110,
116
];
},
{
"kind": "account";
"path": "owner";
},
{
"kind": "account";
"path": "collateralMint";
}
];
};
},
{
"name": "collateralMint";
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "marginType";
"type": {
"defined": {
"name": "marginType";
};
};
},
{
"name": "bump";
"type": "u8";
}
];
},
{
"name": "depositCollateral";
"discriminator": [
156,
131,
142,
116,
146,
247,
162,
120
];
"accounts": [
{
"name": "owner";
"writable": true;
"signer": true;
},
{
"name": "marginAccount";
"writable": true;
},
{
"name": "market";
},
{
"name": "userTokenAccount";
"writable": true;
},
{
"name": "marketVault";
"writable": true;
},
{
"name": "mint";
},
{
"name": "tokenProgram";
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "amount";
"type": "u64";
}
];
},
{
"name": "initializeMarket";
"discriminator": [
35,
35,
189,
193,
155,
48,
170,
203
];
"accounts": [
{
"name": "market";
"writable": true;
"pda": {
"seeds": [
{
"kind": "const";
"value": [
109,
97,
114,
107,
101,
116
];
},
{
"kind": "arg";
"path": "marketSymbol";
}
];
};
},
{
"name": "authority";
"writable": true;
"signer": true;
},
{
"name": "oracleAccount";
},
{
"name": "mint";
"docs": [
"The token mint for the market's collateral"
];
},
{
"name": "vault";
"writable": true;
"pda": {
"seeds": [
{
"kind": "const";
"value": [
118,
97,
117,
108,
116
];
},
{
"kind": "account";
"path": "market";
}
];
};
},
{
"name": "tokenProgram";
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "marketSymbol";
"type": "string";
},
{
"name": "initialFundingRate";
"type": "i64";
},
{
"name": "fundingInterval";
"type": "i64";
},
{
"name": "maintenanceMarginRatio";
"type": "u64";
},
{
"name": "initialMarginRatio";
"type": "u64";
},
{
"name": "maxLeverage";
"type": "u64";
},
{
"name": "liquidationFeeRatio";
"type": "u64";
},
{
"name": "bump";
"type": "u8";
}
];
},
{
"name": "liquidateMarketOrder";
"discriminator": [
53,
184,
12,
203,
182,
112,
199,
146
];
"accounts": [
{
"name": "market";
"writable": true;
"relations": [
"position"
];
},
{
"name": "position";
"writable": true;
},
{
"name": "marginAccount";
"writable": true;
},
{
"name": "liquidator";
"writable": true;
"signer": true;
},
{
"name": "priceUpdate";
}
];
"args": [];
},
{
"name": "pauseMarket";
"discriminator": [
216,
238,
4,
164,
65,
11,
162,
91
];
"accounts": [
{
"name": "market";
"writable": true;
},
{
"name": "authority";
"signer": true;
"relations": [
"market"
];
}
];
"args": [];
},
{
"name": "placeMarketOrder";
"discriminator": [
90,
118,
192,
252,
192,
99,
39,
145
];
"accounts": [
{
"name": "market";
"writable": true;
},
{
"name": "position";
"writable": true;
"pda": {
"seeds": [
{
"kind": "const";
"value": [
112,
111,
115,
105,
116,
105,
111,
110
];
},
{
"kind": "account";
"path": "market";
},
{
"kind": "account";
"path": "trader";
},
{
"kind": "arg";
"path": "uid";
}
];
};
},
{
"name": "marginAccount";
"writable": true;
},
{
"name": "trader";
"writable": true;
"signer": true;
},
{
"name": "priceUpdate";
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "size";
"type": "u64";
},
{
"name": "leverage";
"type": "u64";
},
{
"name": "positionBump";
"type": "u8";
},
{
"name": "uid";
"type": "u64";
}
];
},
{
"name": "resumeMarket";
"discriminator": [
198,
120,
104,
87,
44,
103,
108,
143
];
"accounts": [
{
"name": "market";
"writable": true;
},
{
"name": "authority";
"signer": true;
"relations": [
"market"
];
}
];
"args": [];
},
{
"name": "updateMarketParams";
"discriminator": [
70,
117,
202,
191,
205,
174,
92,
82
];
"accounts": [
{
"name": "market";
"writable": true;
},
{
"name": "authority";
"signer": true;
"relations": [
"market"
];
}
];
"args": [
{
"name": "maintenanceMarginRatio";
"type": {
"option": "u64";
};
},
{
"name": "initialMarginRatio";
"type": {
"option": "u64";
};
},
{
"name": "fundingInterval";
"type": {
"option": "i64";
};
},
{
"name": "maxLeverage";
"type": {
"option": "u64";
};
}
];
},
{
"name": "withdrawCollateral";
"discriminator": [
115,
135,
168,
106,
139,
214,
138,
150
];
"accounts": [
{
"name": "owner";
"writable": true;
"signer": true;
},
{
"name": "marginAccount";
"writable": true;
},
{
"name": "market";
},
{
"name": "userTokenAccount";
"writable": true;
},
{
"name": "marketVault";
"writable": true;
},
{
"name": "mint";
},
{
"name": "tokenProgram";
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
}
];
"args": [
{
"name": "amount";
"type": "u64";
}
];
}
];
"accounts": [
{
"name": "marginAccount";
"discriminator": [
133,
220,
173,
213,
179,
211,
43,
238
];
},
{
"name": "market";
"discriminator": [
219,
190,
213,
55,
0,
227,
198,
154
];
},
{
"name": "position";
"discriminator": [
170,
188,
143,
228,
122,
64,
247,
208
];
}
];
"events": [
{
"name": "collateralDeposited";
"discriminator": [
244,
62,
77,
11,
135,
112,
61,
96
];
},
{
"name": "collateralWithdrawn";
"discriminator": [
51,
224,
133,
106,
74,
173,
72,
82
];
},
{
"name": "fundingRateUpdatedEvent";
"discriminator": [
223,
34,
205,
106,
34,
251,
158,
76
];
},
{
"name": "fundingUpdatedEvent";
"discriminator": [
30,
80,
188,
77,
115,
123,
191,
126
];
},
{
"name": "marginAccountCreated";
"discriminator": [
157,
214,
66,
63,
149,
164,
160,
119
];
},
{
"name": "marginAdjustedEvent";
"discriminator": [
215,
144,
150,
101,
181,
168,
194,
93
];
},
{
"name": "marketInitializedEvent";
"discriminator": [
70,
173,
96,
202,
100,
143,
45,
25
];
},
{
"name": "marketParamsUpdatedEvent";
"discriminator": [
159,
73,
27,
179,
194,
219,
7,
230
];
},
{
"name": "marketPausedEvent";
"discriminator": [
188,
195,
34,
16,
53,
37,
64,
100
];
},
{
"name": "marketResumedEvent";
"discriminator": [
34,
56,
120,
78,
71,
228,
93,
131
];
},
{
"name": "orderCancelledEvent";
"discriminator": [
200,
73,
179,
145,
247,
176,
10,
101
];
},
{
"name": "orderFilledEvent";
"discriminator": [
218,
97,
153,
209,
56,
56,
251,
133
];
},
{
"name": "orderPlacedEvent";
"discriminator": [
245,
198,
202,
247,
110,
231,
254,
156
];
},
{
"name": "positionClosedEvent";
"discriminator": [
76,
129,
10,
225,
238,
51,
158,
126
];
},
{
"name": "positionLiquidatedEvent";
"discriminator": [
70,
153,
226,
254,
176,
139,
225,
72
];
},
{
"name": "positionOpenedEvent";
"discriminator": [
163,
1,
92,
149,
138,
188,
177,
23
];
}
];
"errors": [
{
"code": 6000;
"name": "mathOverflow";
"msg": "Math overflow occurred";
},
{
"code": 6001;
"name": "unauthorized";
"msg": "Operation not authorized";
},
{
"code": 6002;
"name": "marketInactive";
"msg": "Market is currently inactive";
},
{
"code": 6003;
"name": "positionClosed";
"msg": "Position is already closed";
},
{
"code": 6004;
"name": "invalidOracleAccount";
"msg": "Provided oracle account is invalid";
},
{
"code": 6005;
"name": "staleOraclePrice";
"msg": "Oracle price is too old";
},
{
"code": 6006;
"name": "priceConfidenceTooLow";
"msg": "Price confidence interval exceeds acceptable threshold";
},
{
"code": 6007;
"name": "positionNotLiquidatable";
"msg": "Position does not meet liquidation criteria";
},
{
"code": 6008;
"name": "invalidOrderSize";
"msg": "Order size is invalid";
},
{
"code": 6009;
"name": "invalidOrderPrice";
"msg": "Order price is invalid";
},
{
"code": 6010;
"name": "leverageTooHigh";
"msg": "Leverage exceeds maximum allowed";
},
{
"code": 6011;
"name": "insufficientMargin";
"msg": "Insufficient margin provided";
},
{
"code": 6012;
"name": "invalidParameter";
"msg": "Invalid parameter supplied";
},
{
"code": 6013;
"name": "marketAlreadyPaused";
"msg": "Market is already paused";
},
{
"code": 6014;
"name": "marketAlreadyActive";
"msg": "Market is already active";
},
{
"code": 6015;
"name": "orderNotActive";
"msg": "Order is not active";
},
{
"code": 6016;
"name": "invalidMarketSymbol";
"msg": "Invalid market symbol";
},
{
"code": 6017;
"name": "invalidFundingRate";
"msg": "Invalid funding rate";
},
{
"code": 6018;
"name": "invalidFundingInterval";
"msg": "Invalid funding interval";
},
{
"code": 6019;
"name": "invalidMarginRatio";
"msg": "Invalid margin ratio";
},
{
"code": 6020;
"name": "invalidLeverage";
"msg": "Invalid leverage value";
},
{
"code": 6021;
"name": "insufficientLiquidity";
"msg": "Insufficient liquidity in market";
},
{
"code": 6022;
"name": "positionSizeTooSmall";
"msg": "Position size is below minimum";
},
{
"code": 6023;
"name": "positionSizeTooLarge";
"msg": "Position size exceeds maximum";
},
{
"code": 6024;
"name": "insufficientCollateral";
"msg": "Insufficient collateral for this operation";
},
{
"code": 6025;
"name": "invalidLeverageRange";
"msg": "Leverage is outside allowed range";
},
{
"code": 6026;
"name": "orderNotFound";
"msg": "Order not found";
},
{
"code": 6027;
"name": "positionLiquidated";
"msg": "Position has been liquidated";
},
{
"code": 6028;
"name": "marginCallRequired";
"msg": "Margin call required before further operations";
},
{
"code": 6029;
"name": "withdrawalBelowMaintenanceMargin";
"msg": "Withdrawal would put account below maintenance margin";
},
{
"code": 6030;
"name": "depositTooSmall";
"msg": "Deposit amount is too small";
},
{
"code": 6031;
"name": "withdrawalTooSmall";
"msg": "Withdrawal amount is too small";
},
{
"code": 6032;
"name": "invalidPosition";
"msg": "Invalid position provided";
},
{
"code": 6033;
"name": "withdrawalExceedsAvailableMargin";
"msg": "Withdrawal exceeds available margin";
},
{
"code": 6034;
"name": "invalidVault";
"msg": "Invalid vault provided";
},
{
"code": 6035;
"name": "invalidCollateralMint";
"msg": "Collateral mint does not match margin account";
}
];
"types": [
{
"name": "collateralDeposited";
"type": {
"kind": "struct";
"fields": [
{
"name": "owner";
"type": "pubkey";
},
{
"name": "marginAccount";
"type": "pubkey";
},
{
"name": "amount";
"type": "u64";
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "collateralWithdrawn";
"type": {
"kind": "struct";
"fields": [
{
"name": "owner";
"type": "pubkey";
},
{
"name": "marginAccount";
"type": "pubkey";
},
{
"name": "amount";
"type": "u64";
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "fundingRateUpdatedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "authority";
"type": "pubkey";
},
{
"name": "oldFundingRate";
"type": "i64";
},
{
"name": "newFundingRate";
"type": "i64";
}
];
};
},
{
"name": "fundingUpdatedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "fundingRate";
"type": "i64";
},
{
"name": "intervals";
"type": "i64";
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "marginAccount";
"type": {
"kind": "struct";
"fields": [
{
"name": "owner";
"type": "pubkey";
},
{
"name": "marginType";
"type": {
"defined": {
"name": "marginType";
};
};
},
{
"name": "collateralMint";
"type": "pubkey";
},
{
"name": "collateral";
"type": "u64";
},
{
"name": "allocatedMargin";
"type": "u64";
},
{
"name": "positions";
"type": {
"vec": "pubkey";
};
},
{
"name": "bump";
"type": "u8";
}
];
};
},
{
"name": "marginAccountCreated";
"type": {
"kind": "struct";
"fields": [
{
"name": "owner";
"type": "pubkey";
},
{
"name": "marginAccount";
"type": "pubkey";
},
{
"name": "marginType";
"type": {
"defined": {
"name": "marginType";
};
};
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "marginAdjustedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "marginChange";
"type": "i64";
},
{
"name": "newCollateral";
"type": "u64";
}
];
};
},
{
"name": "marginType";
"type": {
"kind": "enum";
"variants": [
{
"name": "isolated";
},
{
"name": "cross";
}
];
};
},
{
"name": "market";
"type": {
"kind": "struct";
"fields": [
{
"name": "authority";
"type": "pubkey";
},
{
"name": "marketSymbol";
"type": "string";
},
{
"name": "baseAssetReserve";
"type": "u64";
},
{
"name": "quoteAssetReserve";
"type": "u64";
},
{
"name": "fundingRate";
"type": "i64";
},
{
"name": "lastFundingTime";
"type": "i64";
},
{
"name": "fundingInterval";
"type": "i64";
},
{
"name": "maintenanceMarginRatio";
"type": "u64";
},
{
"name": "initialMarginRatio";
"type": "u64";
},
{
"name": "liquidationFeeRatio";
"type": "u64";
},
{
"name": "feePool";
"type": "u64";
},
{
"name": "insuranceFund";
"type": "u64";
},
{
"name": "maxLeverage";
"type": "u64";
},
{
"name": "oracle";
"type": "pubkey";
},
{
"name": "vault";
"type": "pubkey";
},
{
"name": "isActive";
"type": "bool";
},
{
"name": "bump";
"type": "u8";
}
];
};
},
{
"name": "marketInitializedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "authority";
"type": "pubkey";
},
{
"name": "marketSymbol";
"type": "string";
},
{
"name": "fundingRate";
"type": "i64";
},
{
"name": "fundingInterval";
"type": "i64";
},
{
"name": "maintenanceMarginRatio";
"type": "u64";
},
{
"name": "initialMarginRatio";
"type": "u64";
},
{
"name": "maxLeverage";
"type": "u64";
},
{
"name": "liquidationFeeRatio";
"type": "u64";
}
];
};
},
{
"name": "marketParamsUpdatedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "authority";
"type": "pubkey";
},
{
"name": "maintenanceMarginRatio";
"type": "u64";
},
{
"name": "initialMarginRatio";
"type": "u64";
},
{
"name": "fundingInterval";
"type": "i64";
},
{
"name": "maxLeverage";
"type": "u64";
}
];
};
},
{
"name": "marketPausedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "authority";
"type": "pubkey";
}
];
};
},
{
"name": "marketResumedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "authority";
"type": "pubkey";
}
];
};
},
{
"name": "orderCancelledEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "order";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
}
];
};
},
{
"name": "orderFilledEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "price";
"type": "u64";
},
{
"name": "size";
"type": "u64";
},
{
"name": "filledSize";
"type": "u64";
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "orderPlacedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "orderType";
"type": {
"defined": {
"name": "orderType";
};
};
},
{
"name": "price";
"type": "u64";
},
{
"name": "size";
"type": "u64";
},
{
"name": "leverage";
"type": "u64";
},
{
"name": "timestamp";
"type": "i64";
}
];
};
},
{
"name": "orderType";
"type": {
"kind": "enum";
"variants": [
{
"name": "market";
},
{
"name": "limit";
}
];
};
},
{
"name": "position";
"type": {
"kind": "struct";
"fields": [
{
"name": "trader";
"type": "pubkey";
},
{
"name": "market";
"type": "pubkey";
},
{
"name": "orderType";
"type": {
"defined": {
"name": "orderType";
};
};
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "size";
"type": "u64";
},
{
"name": "filledSize";
"type": "u64";
},
{
"name": "price";
"type": "u64";
},
{
"name": "collateral";
"type": "u64";
},
{
"name": "entryPrice";
"type": "u64";
},
{
"name": "entryFundingRate";
"type": "i64";
},
{
"name": "leverage";
"type": "u64";
},
{
"name": "realizedPnl";
"type": "i64";
},
{
"name": "lastFundingPaymentTime";
"type": "i64";
},
{
"name": "lastCumulativeFunding";
"type": "i64";
},
{
"name": "isOpen";
"type": "bool";
},
{
"name": "createdAt";
"type": "i64";
},
{
"name": "bump";
"type": "u8";
}
];
};
},
{
"name": "positionClosedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "size";
"type": "u64";
},
{
"name": "collateral";
"type": "u64";
},
{
"name": "entryPrice";
"type": "u64";
},
{
"name": "exitPrice";
"type": "u64";
},
{
"name": "realizedPnl";
"type": "i64";
},
{
"name": "marginType";
"type": {
"defined": {
"name": "marginType";
};
};
}
];
};
},
{
"name": "positionLiquidatedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};
};
},
{
"name": "size";
"type": "u64";
},
{
"name": "collateral";
"type": "u64";
},
{
"name": "entryPrice";
"type": "u64";
},
{
"name": "exitPrice";
"type": "u64";
},
{
"name": "liquidator";
"type": "pubkey";
},
{
"name": "liquidationFee";
"type": "u64";
},
{
"name": "liquidatorFee";
"type": "u64";
},
{
"name": "insuranceFundFee";
"type": "u64";
}
];
};
},
{
"name": "positionOpenedEvent";
"type": {
"kind": "struct";
"fields": [
{
"name": "market";
"type": "pubkey";
},
{
"name": "position";
"type": "pubkey";
},
{
"name": "trader";
"type": "pubkey";
},
{
"name": "side";
"type": {
"defined": {
"name": "side";
};