@swiv-sdk/perpetual-swap-sdk
Version:
SDK for Swiv Perpetual Swap Protocol
1,778 lines (1,777 loc) • 50.9 kB
JSON
{
"address": "6UnAEvz8tLBLXM2uDmbYWYKZ6UuAgdxJHTss8HC9h3wf",
"metadata": {
"name": "contracts",
"version": "0.1.0",
"spec": "0.1.0",
"description": "Created with Anchor"
},
"instructions": [
{
"name": "close_market_order",
"discriminator": [
161,
211,
209,
73,
201,
237,
81,
146
],
"accounts": [
{
"name": "market",
"writable": true,
"relations": [
"position"
]
},
{
"name": "position",
"writable": true
},
{
"name": "margin_account",
"writable": true
},
{
"name": "trader",
"writable": true,
"signer": true,
"relations": [
"position"
]
},
{
"name": "price_update"
}
],
"args": []
},
{
"name": "create_margin_account",
"discriminator": [
98,
114,
213,
184,
129,
89,
90,
185
],
"accounts": [
{
"name": "owner",
"writable": true,
"signer": true
},
{
"name": "margin_account",
"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": "collateral_mint"
}
]
}
},
{
"name": "collateral_mint"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "margin_type",
"type": {
"defined": {
"name": "MarginType"
}
}
},
{
"name": "bump",
"type": "u8"
}
]
},
{
"name": "deposit_collateral",
"discriminator": [
156,
131,
142,
116,
146,
247,
162,
120
],
"accounts": [
{
"name": "owner",
"writable": true,
"signer": true
},
{
"name": "margin_account",
"writable": true
},
{
"name": "market"
},
{
"name": "user_token_account",
"writable": true
},
{
"name": "market_vault",
"writable": true
},
{
"name": "mint"
},
{
"name": "token_program",
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "amount",
"type": "u64"
}
]
},
{
"name": "initialize_market",
"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": "market_symbol"
}
]
}
},
{
"name": "authority",
"writable": true,
"signer": true
},
{
"name": "oracle_account"
},
{
"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": "token_program",
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "market_symbol",
"type": "string"
},
{
"name": "initial_funding_rate",
"type": "i64"
},
{
"name": "funding_interval",
"type": "i64"
},
{
"name": "maintenance_margin_ratio",
"type": "u64"
},
{
"name": "initial_margin_ratio",
"type": "u64"
},
{
"name": "max_leverage",
"type": "u64"
},
{
"name": "liquidation_fee_ratio",
"type": "u64"
},
{
"name": "bump",
"type": "u8"
}
]
},
{
"name": "liquidate_market_order",
"discriminator": [
53,
184,
12,
203,
182,
112,
199,
146
],
"accounts": [
{
"name": "market",
"writable": true,
"relations": [
"position"
]
},
{
"name": "position",
"writable": true
},
{
"name": "margin_account",
"writable": true
},
{
"name": "liquidator",
"writable": true,
"signer": true
},
{
"name": "price_update"
}
],
"args": []
},
{
"name": "pause_market",
"discriminator": [
216,
238,
4,
164,
65,
11,
162,
91
],
"accounts": [
{
"name": "market",
"writable": true
},
{
"name": "authority",
"signer": true,
"relations": [
"market"
]
}
],
"args": []
},
{
"name": "place_market_order",
"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": "margin_account",
"writable": true
},
{
"name": "trader",
"writable": true,
"signer": true
},
{
"name": "price_update"
},
{
"name": "system_program",
"address": "11111111111111111111111111111111"
}
],
"args": [
{
"name": "side",
"type": {
"defined": {
"name": "Side"
}
}
},
{
"name": "size",
"type": "u64"
},
{
"name": "leverage",
"type": "u64"
},
{
"name": "position_bump",
"type": "u8"
},
{
"name": "uid",
"type": "u64"
}
]
},
{
"name": "resume_market",
"discriminator": [
198,
120,
104,
87,
44,
103,
108,
143
],
"accounts": [
{
"name": "market",
"writable": true
},
{
"name": "authority",
"signer": true,
"relations": [
"market"
]
}
],
"args": []
},
{
"name": "update_market_params",
"discriminator": [
70,
117,
202,
191,
205,
174,
92,
82
],
"accounts": [
{
"name": "market",
"writable": true
},
{
"name": "authority",
"signer": true,
"relations": [
"market"
]
}
],
"args": [
{
"name": "maintenance_margin_ratio",
"type": {
"option": "u64"
}
},
{
"name": "initial_margin_ratio",
"type": {
"option": "u64"
}
},
{
"name": "funding_interval",
"type": {
"option": "i64"
}
},
{
"name": "max_leverage",
"type": {
"option": "u64"
}
}
]
},
{
"name": "withdraw_collateral",
"discriminator": [
115,
135,
168,
106,
139,
214,
138,
150
],
"accounts": [
{
"name": "owner",
"writable": true,
"signer": true
},
{
"name": "margin_account",
"writable": true
},
{
"name": "market"
},
{
"name": "user_token_account",
"writable": true
},
{
"name": "market_vault",
"writable": true
},
{
"name": "mint"
},
{
"name": "token_program",
"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": "margin_account",
"type": "pubkey"
},
{
"name": "amount",
"type": "u64"
},
{
"name": "timestamp",
"type": "i64"
}
]
}
},
{
"name": "CollateralWithdrawn",
"type": {
"kind": "struct",
"fields": [
{
"name": "owner",
"type": "pubkey"
},
{
"name": "margin_account",
"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": "old_funding_rate",
"type": "i64"
},
{
"name": "new_funding_rate",
"type": "i64"
}
]
}
},
{
"name": "FundingUpdatedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "market",
"type": "pubkey"
},
{
"name": "funding_rate",
"type": "i64"
},
{
"name": "intervals",
"type": "i64"
},
{
"name": "timestamp",
"type": "i64"
}
]
}
},
{
"name": "MarginAccount",
"type": {
"kind": "struct",
"fields": [
{
"name": "owner",
"type": "pubkey"
},
{
"name": "margin_type",
"type": {
"defined": {
"name": "MarginType"
}
}
},
{
"name": "collateral_mint",
"type": "pubkey"
},
{
"name": "collateral",
"type": "u64"
},
{
"name": "allocated_margin",
"type": "u64"
},
{
"name": "positions",
"type": {
"vec": "pubkey"
}
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "MarginAccountCreated",
"type": {
"kind": "struct",
"fields": [
{
"name": "owner",
"type": "pubkey"
},
{
"name": "margin_account",
"type": "pubkey"
},
{
"name": "margin_type",
"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": "margin_change",
"type": "i64"
},
{
"name": "new_collateral",
"type": "u64"
}
]
}
},
{
"name": "MarginType",
"type": {
"kind": "enum",
"variants": [
{
"name": "Isolated"
},
{
"name": "Cross"
}
]
}
},
{
"name": "Market",
"type": {
"kind": "struct",
"fields": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "market_symbol",
"type": "string"
},
{
"name": "base_asset_reserve",
"type": "u64"
},
{
"name": "quote_asset_reserve",
"type": "u64"
},
{
"name": "funding_rate",
"type": "i64"
},
{
"name": "last_funding_time",
"type": "i64"
},
{
"name": "funding_interval",
"type": "i64"
},
{
"name": "maintenance_margin_ratio",
"type": "u64"
},
{
"name": "initial_margin_ratio",
"type": "u64"
},
{
"name": "liquidation_fee_ratio",
"type": "u64"
},
{
"name": "fee_pool",
"type": "u64"
},
{
"name": "insurance_fund",
"type": "u64"
},
{
"name": "max_leverage",
"type": "u64"
},
{
"name": "oracle",
"type": "pubkey"
},
{
"name": "vault",
"type": "pubkey"
},
{
"name": "is_active",
"type": "bool"
},
{
"name": "bump",
"type": "u8"
}
]
}
},
{
"name": "MarketInitializedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "market",
"type": "pubkey"
},
{
"name": "authority",
"type": "pubkey"
},
{
"name": "market_symbol",
"type": "string"
},
{
"name": "funding_rate",
"type": "i64"
},
{
"name": "funding_interval",
"type": "i64"
},
{
"name": "maintenance_margin_ratio",
"type": "u64"
},
{
"name": "initial_margin_ratio",
"type": "u64"
},
{
"name": "max_leverage",
"type": "u64"
},
{
"name": "liquidation_fee_ratio",
"type": "u64"
}
]
}
},
{
"name": "MarketParamsUpdatedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "market",
"type": "pubkey"
},
{
"name": "authority",
"type": "pubkey"
},
{
"name": "maintenance_margin_ratio",
"type": "u64"
},
{
"name": "initial_margin_ratio",
"type": "u64"
},
{
"name": "funding_interval",
"type": "i64"
},
{
"name": "max_leverage",
"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": "filled_size",
"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": "order_type",
"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": "order_type",
"type": {
"defined": {
"name": "OrderType"
}
}
},
{
"name": "side",
"type": {
"defined": {
"name": "Side"
}
}
},
{
"name": "size",
"type": "u64"
},
{
"name": "filled_size",
"type": "u64"
},
{
"name": "price",
"type": "u64"
},
{
"name": "collateral",
"type": "u64"
},
{
"name": "entry_price",
"type": "u64"
},
{
"name": "entry_funding_rate",
"type": "i64"
},
{
"name": "leverage",
"type": "u64"
},
{
"name": "realized_pnl",
"type": "i64"
},
{
"name": "last_funding_payment_time",
"type": "i64"
},
{
"name": "last_cumulative_funding",
"type": "i64"
},
{
"name": "is_open",
"type": "bool"
},
{
"name": "created_at",
"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": "entry_price",
"type": "u64"
},
{
"name": "exit_price",
"type": "u64"
},
{
"name": "realized_pnl",
"type": "i64"
},
{
"name": "margin_type",
"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": "entry_price",
"type": "u64"
},
{
"name": "exit_price",
"type": "u64"
},
{
"name": "liquidator",
"type": "pubkey"
},
{
"name": "liquidation_fee",
"type": "u64"
},
{
"name": "liquidator_fee",
"type": "u64"
},
{
"name": "insurance_fund_fee",
"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"
}
}
},
{
"name": "size",
"type": "u64"
},
{
"name": "collateral",
"type": "u64"
},
{
"name": "entry_price",
"type": "u64"
},
{