@lightconexyz/lightcone-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +232 -0
- package/dist/api/client.d.ts +225 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +452 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/error.d.ts +58 -0
- package/dist/api/error.d.ts.map +1 -0
- package/dist/api/error.js +98 -0
- package/dist/api/error.js.map +1 -0
- package/dist/api/index.d.ts +23 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +51 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types/admin.d.ts +49 -0
- package/dist/api/types/admin.d.ts.map +1 -0
- package/dist/api/types/admin.js +13 -0
- package/dist/api/types/admin.js.map +1 -0
- package/dist/api/types/index.d.ts +14 -0
- package/dist/api/types/index.d.ts.map +1 -0
- package/dist/api/types/index.js +13 -0
- package/dist/api/types/index.js.map +1 -0
- package/dist/api/types/market.d.ts +186 -0
- package/dist/api/types/market.d.ts.map +1 -0
- package/dist/api/types/market.js +6 -0
- package/dist/api/types/market.js.map +1 -0
- package/dist/api/types/order.d.ts +190 -0
- package/dist/api/types/order.d.ts.map +1 -0
- package/dist/api/types/order.js +6 -0
- package/dist/api/types/order.js.map +1 -0
- package/dist/api/types/orderbook.d.ts +36 -0
- package/dist/api/types/orderbook.d.ts.map +1 -0
- package/dist/api/types/orderbook.js +6 -0
- package/dist/api/types/orderbook.js.map +1 -0
- package/dist/api/types/position.d.ts +60 -0
- package/dist/api/types/position.d.ts.map +1 -0
- package/dist/api/types/position.js +6 -0
- package/dist/api/types/position.js.map +1 -0
- package/dist/api/types/price_history.d.ts +68 -0
- package/dist/api/types/price_history.d.ts.map +1 -0
- package/dist/api/types/price_history.js +13 -0
- package/dist/api/types/price_history.js.map +1 -0
- package/dist/api/types/trade.d.ts +67 -0
- package/dist/api/types/trade.d.ts.map +1 -0
- package/dist/api/types/trade.js +13 -0
- package/dist/api/types/trade.js.map +1 -0
- package/dist/api/validation.d.ts +24 -0
- package/dist/api/validation.d.ts.map +1 -0
- package/dist/api/validation.js +53 -0
- package/dist/api/validation.js.map +1 -0
- package/dist/auth.d.ts +80 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +149 -0
- package/dist/auth.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/network.d.ts +5 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +8 -0
- package/dist/network.js.map +1 -0
- package/dist/program/accounts.d.ts +98 -0
- package/dist/program/accounts.d.ts.map +1 -0
- package/dist/program/accounts.js +319 -0
- package/dist/program/accounts.js.map +1 -0
- package/dist/program/builder.d.ts +94 -0
- package/dist/program/builder.d.ts.map +1 -0
- package/dist/program/builder.js +175 -0
- package/dist/program/builder.js.map +1 -0
- package/dist/program/client.d.ts +56 -0
- package/dist/program/client.d.ts.map +1 -0
- package/dist/program/client.js +288 -0
- package/dist/program/client.js.map +1 -0
- package/dist/program/constants.d.ts +108 -0
- package/dist/program/constants.d.ts.map +1 -0
- package/dist/program/constants.js +112 -0
- package/dist/program/constants.js.map +1 -0
- package/dist/program/index.d.ts +14 -0
- package/dist/program/index.d.ts.map +1 -0
- package/dist/program/index.js +149 -0
- package/dist/program/index.js.map +1 -0
- package/dist/program/instructions.d.ts +248 -0
- package/dist/program/instructions.d.ts.map +1 -0
- package/dist/program/instructions.js +692 -0
- package/dist/program/instructions.js.map +1 -0
- package/dist/program/orders.d.ts +151 -0
- package/dist/program/orders.d.ts.map +1 -0
- package/dist/program/orders.js +417 -0
- package/dist/program/orders.js.map +1 -0
- package/dist/program/pda.d.ts +73 -0
- package/dist/program/pda.d.ts.map +1 -0
- package/dist/program/pda.js +131 -0
- package/dist/program/pda.js.map +1 -0
- package/dist/program/types.d.ts +380 -0
- package/dist/program/types.d.ts.map +1 -0
- package/dist/program/types.js +27 -0
- package/dist/program/types.js.map +1 -0
- package/dist/program/utils.d.ts +91 -0
- package/dist/program/utils.d.ts.map +1 -0
- package/dist/program/utils.js +219 -0
- package/dist/program/utils.js.map +1 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +18 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/price.d.ts +41 -0
- package/dist/shared/price.d.ts.map +1 -0
- package/dist/shared/price.js +57 -0
- package/dist/shared/price.js.map +1 -0
- package/dist/shared/scaling.d.ts +45 -0
- package/dist/shared/scaling.d.ts.map +1 -0
- package/dist/shared/scaling.js +84 -0
- package/dist/shared/scaling.js.map +1 -0
- package/dist/shared/types.d.ts +19 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +23 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/websocket/client.d.ts +238 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +580 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/error.d.ts +47 -0
- package/dist/websocket/error.d.ts.map +1 -0
- package/dist/websocket/error.js +83 -0
- package/dist/websocket/error.js.map +1 -0
- package/dist/websocket/handlers.d.ts +97 -0
- package/dist/websocket/handlers.d.ts.map +1 -0
- package/dist/websocket/handlers.js +277 -0
- package/dist/websocket/handlers.js.map +1 -0
- package/dist/websocket/index.d.ts +38 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +75 -0
- package/dist/websocket/index.js.map +1 -0
- package/dist/websocket/state/index.d.ts +7 -0
- package/dist/websocket/state/index.d.ts.map +1 -0
- package/dist/websocket/state/index.js +14 -0
- package/dist/websocket/state/index.js.map +1 -0
- package/dist/websocket/state/orderbook.d.ts +107 -0
- package/dist/websocket/state/orderbook.d.ts.map +1 -0
- package/dist/websocket/state/orderbook.js +293 -0
- package/dist/websocket/state/orderbook.js.map +1 -0
- package/dist/websocket/state/price.d.ts +108 -0
- package/dist/websocket/state/price.d.ts.map +1 -0
- package/dist/websocket/state/price.js +243 -0
- package/dist/websocket/state/price.js.map +1 -0
- package/dist/websocket/state/user.d.ts +83 -0
- package/dist/websocket/state/user.d.ts.map +1 -0
- package/dist/websocket/state/user.js +228 -0
- package/dist/websocket/state/user.js.map +1 -0
- package/dist/websocket/subscriptions.d.ts +143 -0
- package/dist/websocket/subscriptions.d.ts.map +1 -0
- package/dist/websocket/subscriptions.js +244 -0
- package/dist/websocket/subscriptions.js.map +1 -0
- package/dist/websocket/types.d.ts +417 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +195 -0
- package/dist/websocket/types.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Keypair } from \"@solana/web3.js\";\nimport { sign } from \"tweetnacl\";\nimport {\n SignedOrder,\n Order,\n OrderSide,\n BidOrderParams,\n AskOrderParams,\n} from \"./types\";\nimport { ORDER_SIZE } from \"./constants\";\nimport { keccak256, toU64Le, toI64Le, toU8, toU32Le, fromLeBytes, fromI64Le } from \"./utils\";\n\n// ============================================================================\n// ORDER HASHING\n// ============================================================================\n\n/**\n * Hash an order using keccak256\n * Layout (161 bytes - order without signature):\n * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||\n * side (1) || makerAmount (8) || takerAmount (8) || expiration (8)\n *\n * @returns 32-byte keccak256 hash\n */\nexport function hashOrder(order: SignedOrder): Buffer {\n const data = Buffer.concat([\n toU64Le(BigInt(order.nonce)),\n order.maker.toBuffer(),\n order.market.toBuffer(),\n order.baseMint.toBuffer(),\n order.quoteMint.toBuffer(),\n toU8(order.side),\n toU64Le(order.makerAmount),\n toU64Le(order.takerAmount),\n toI64Le(order.expiration),\n ]);\n\n return keccak256(data);\n}\n\n/**\n * Get the hex-encoded hash of an order\n */\nexport function hashOrderHex(order: SignedOrder): string {\n return hashOrder(order).toString(\"hex\");\n}\n\n/**\n * Get the message to sign for an order (the order hash)\n */\nexport function getOrderMessage(order: SignedOrder): Buffer {\n return hashOrder(order);\n}\n\n// ============================================================================\n// ORDER SIGNING\n// ============================================================================\n\n/**\n * Sign an order with a Keypair.\n * Signs the hex-encoded keccak hash (64-char ASCII string) for cross-compatibility with Rust.\n * Returns 64-byte Ed25519 signature.\n */\nexport function signOrder(order: SignedOrder, signer: Keypair): Buffer {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature);\n}\n\n/**\n * Sign an order and return a new order with the signature attached\n */\nexport function signOrderFull(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n): SignedOrder {\n const orderWithEmptySig: SignedOrder = {\n ...order,\n signature: Buffer.alloc(64),\n };\n const signature = signOrder(orderWithEmptySig, signer);\n return {\n ...order,\n signature,\n };\n}\n\n/**\n * Verify an order's signature.\n * Verifies against the hex-encoded keccak hash.\n */\nexport function verifyOrderSignature(order: SignedOrder): boolean {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n return sign.detached.verify(\n messageBytes,\n order.signature,\n order.maker.toBytes()\n );\n}\n\n// ============================================================================\n// SIGNED ORDER SERIALIZATION (225 bytes)\n// ============================================================================\n\n/**\n * Serialize a signed order to bytes (225 bytes)\n *\n * Layout:\n * [0..8] nonce (u64)\n * [8..40] maker (Pubkey)\n * [40..72] market (Pubkey)\n * [72..104] baseMint (Pubkey)\n * [104..136] quoteMint (Pubkey)\n * [136] side (u8)\n * [137..145] makerAmount (u64)\n * [145..153] takerAmount (u64)\n * [153..161] expiration (i64)\n * [161..225] signature (64 bytes)\n */\nexport function serializeSignedOrder(order: SignedOrder): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.SIGNED_ORDER);\n let offset = 0;\n\n toU64Le(BigInt(order.nonce)).copy(buffer, offset);\n offset += 8;\n\n order.maker.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.market.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.baseMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.quoteMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n offset += 8;\n\n order.signature.copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a signed order from bytes\n */\nexport function deserializeSignedOrder(data: Buffer): SignedOrder {\n if (data.length < ORDER_SIZE.SIGNED_ORDER) {\n throw new Error(\n `Invalid signed order length: ${data.length}, expected ${ORDER_SIZE.SIGNED_ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonceU64 = fromLeBytes(data.subarray(offset, offset + 8));\n if (nonceU64 > 0xFFFFFFFFn) {\n throw new Error(`Nonce exceeds u32 range: ${nonceU64}`);\n }\n const nonce = Number(nonceU64);\n offset += 8;\n\n const maker = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const market = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const baseMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const quoteMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n offset += 8;\n\n const signature = Buffer.from(data.subarray(offset, offset + 64));\n\n return {\n nonce,\n maker,\n market,\n baseMint,\n quoteMint,\n side,\n makerAmount,\n takerAmount,\n expiration,\n signature,\n };\n}\n\n// ============================================================================\n// ORDER SERIALIZATION (29 bytes)\n// ============================================================================\n\n/**\n * Serialize a compact order to bytes (29 bytes)\n *\n * Layout:\n * [0..4] nonce (u32)\n * [4] side (u8)\n * [5..13] makerAmount (u64)\n * [13..21] takerAmount (u64)\n * [21..29] expiration (i64)\n */\nexport function serializeOrder(order: Order): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.ORDER);\n let offset = 0;\n\n toU32Le(order.nonce).copy(buffer, offset);\n offset += 4;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a compact order from bytes\n */\nexport function deserializeOrder(data: Buffer): Order {\n if (data.length < ORDER_SIZE.ORDER) {\n throw new Error(\n `Invalid order length: ${data.length}, expected ${ORDER_SIZE.ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonce = data.readUInt32LE(offset);\n offset += 4;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n\n return {\n nonce,\n side,\n makerAmount,\n takerAmount,\n expiration,\n };\n}\n\n/**\n * Convert a SignedOrder to a compact Order (drop maker)\n */\nexport function signedOrderToOrder(order: SignedOrder): Order {\n return {\n nonce: order.nonce,\n side: order.side,\n makerAmount: order.makerAmount,\n takerAmount: order.takerAmount,\n expiration: order.expiration,\n };\n}\n\n// ============================================================================\n// ORDER CREATION HELPERS\n// ============================================================================\n\n/**\n * Create a BID order (buyer wants base tokens, pays with quote tokens)\n */\nexport function createBidOrder(\n params: BidOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.BID,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create an ASK order (seller offers base tokens, receives quote tokens)\n */\nexport function createAskOrder(\n params: AskOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.ASK,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create and sign a BID order in one step\n */\nexport function createSignedBidOrder(\n params: BidOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createBidOrder(params);\n return signOrderFull(order, signer);\n}\n\n/**\n * Create and sign an ASK order in one step\n */\nexport function createSignedAskOrder(\n params: AskOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createAskOrder(params);\n return signOrderFull(order, signer);\n}\n\n// ============================================================================\n// ORDER VALIDATION\n// ============================================================================\n\n/**\n * Check if an order has expired\n */\nexport function isOrderExpired(\n order: SignedOrder | Order,\n currentTime?: bigint\n): boolean {\n if (order.expiration === 0n) {\n return false;\n }\n const now = currentTime ?? BigInt(Math.floor(Date.now() / 1000));\n return order.expiration < now;\n}\n\n/**\n * Validate order crossing (orders are compatible for matching)\n */\nexport function ordersCanCross(\n buyOrder: SignedOrder,\n sellOrder: SignedOrder\n): boolean {\n if (buyOrder.side !== OrderSide.BID || sellOrder.side !== OrderSide.ASK) {\n return false;\n }\n return (\n buyOrder.makerAmount * sellOrder.makerAmount >=\n buyOrder.takerAmount * sellOrder.takerAmount\n );\n}\n\n/**\n * Calculate the fill amounts for a trade\n */\nexport function calculateTakerFill(\n makerOrder: SignedOrder,\n makerFillAmount: bigint\n): bigint {\n return (makerFillAmount * makerOrder.takerAmount) / makerOrder.makerAmount;\n}\n\n// ============================================================================\n// SIGNED ORDER HELPERS\n// ============================================================================\n\n/**\n * Get signature as hex string (128 chars)\n */\nexport function signatureHex(order: SignedOrder): string {\n return order.signature.toString(\"hex\");\n}\n\n/**\n * Check if a signed order has a non-zero signature\n */\nexport function isSigned(order: SignedOrder): boolean {\n return !order.signature.every((b) => b === 0);\n}\n\n/**\n * Derive orderbook ID from base and quote token addresses\n * Format: \"{base[0:8]}_{quote[0:8]}\"\n */\nexport function deriveOrderbookId(\n baseToken: string,\n quoteToken: string\n): string {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;\n}\n\n// ============================================================================\n// CANCEL ORDER SIGNING\n// ============================================================================\n\n/**\n * Build the message bytes for cancelling an order.\n * The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).\n */\nexport function cancelOrderMessage(orderHash: string): Uint8Array {\n return Buffer.from(orderHash, \"ascii\");\n}\n\n/**\n * Sign a cancel order request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelOrder(orderHash: string, signer: Keypair): string {\n const message = cancelOrderMessage(orderHash);\n const signature = sign.detached(message, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n/**\n * Build the message string for cancelling all orders.\n * Format: \"cancel_all:{pubkey}:{timestamp}\"\n */\nexport function cancelAllMessage(userPubkey: string, timestamp: number): string {\n return `cancel_all:${userPubkey}:${timestamp}`;\n}\n\n/**\n * Sign a cancel-all orders request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelAll(userPubkey: string, timestamp: number, signer: Keypair): string {\n const message = cancelAllMessage(userPubkey, timestamp);\n const messageBytes = Buffer.from(message, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n// ============================================================================\n// SUBMIT REQUEST HELPERS\n// ============================================================================\n\n/**\n * Convert a SignedOrder to a SubmitOrderRequest-compatible object\n */\nexport function toSubmitRequest(\n order: SignedOrder,\n orderbookId: string\n): {\n maker: string;\n nonce: string;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n maker_amount: string;\n taker_amount: string;\n expiration: number;\n signature: string;\n orderbook_id: string;\n} {\n return {\n maker: order.maker.toBase58(),\n nonce: order.nonce.toString(),\n market_pubkey: order.market.toBase58(),\n base_token: order.baseMint.toBase58(),\n quote_token: order.quoteMint.toBase58(),\n side: order.side,\n maker_amount: order.makerAmount.toString(),\n taker_amount: order.takerAmount.toString(),\n expiration: Number(order.expiration),\n signature: signatureHex(order),\n orderbook_id: orderbookId,\n };\n}\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Derive Exchange PDA (singleton central state)
|
|
4
|
+
* Seeds: ["central_state"]
|
|
5
|
+
*/
|
|
6
|
+
export declare function getExchangePda(programId?: PublicKey): [PublicKey, number];
|
|
7
|
+
/**
|
|
8
|
+
* Derive Market PDA
|
|
9
|
+
* Seeds: ["market", market_id (u64 little-endian)]
|
|
10
|
+
*/
|
|
11
|
+
export declare function getMarketPda(marketId: bigint, programId?: PublicKey): [PublicKey, number];
|
|
12
|
+
/**
|
|
13
|
+
* Derive Vault PDA (deposit token storage)
|
|
14
|
+
* Seeds: ["market_deposit_token_account", deposit_mint, market]
|
|
15
|
+
*/
|
|
16
|
+
export declare function getVaultPda(depositMint: PublicKey, market: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
17
|
+
/**
|
|
18
|
+
* Derive Mint Authority PDA (signs mint/burn operations)
|
|
19
|
+
* Seeds: ["market_mint_authority", market]
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMintAuthorityPda(market: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
22
|
+
/**
|
|
23
|
+
* Derive Conditional Mint PDA (per outcome)
|
|
24
|
+
* Seeds: ["conditional_mint", market, deposit_mint, outcome_index (u8)]
|
|
25
|
+
*/
|
|
26
|
+
export declare function getConditionalMintPda(market: PublicKey, depositMint: PublicKey, outcomeIndex: number, programId?: PublicKey): [PublicKey, number];
|
|
27
|
+
/**
|
|
28
|
+
* Derive all Conditional Mint PDAs for a market
|
|
29
|
+
*/
|
|
30
|
+
export declare function getAllConditionalMintPdas(market: PublicKey, depositMint: PublicKey, numOutcomes: number, programId?: PublicKey): [PublicKey, number][];
|
|
31
|
+
/**
|
|
32
|
+
* Derive Order Status PDA
|
|
33
|
+
* Seeds: ["order_status", order_hash (32 bytes)]
|
|
34
|
+
*/
|
|
35
|
+
export declare function getOrderStatusPda(orderHash: Buffer, programId?: PublicKey): [PublicKey, number];
|
|
36
|
+
/**
|
|
37
|
+
* Derive User Nonce PDA
|
|
38
|
+
* Seeds: ["user_nonce", user (32 bytes)]
|
|
39
|
+
*/
|
|
40
|
+
export declare function getUserNoncePda(user: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
41
|
+
/**
|
|
42
|
+
* Derive Position PDA
|
|
43
|
+
* Seeds: ["position", owner (32 bytes), market (32 bytes)]
|
|
44
|
+
*/
|
|
45
|
+
export declare function getPositionPda(owner: PublicKey, market: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
46
|
+
/**
|
|
47
|
+
* Derive Orderbook PDA
|
|
48
|
+
* Seeds: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
|
|
49
|
+
*/
|
|
50
|
+
export declare function getOrderbookPda(mintA: PublicKey, mintB: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
51
|
+
/**
|
|
52
|
+
* Derive Address Lookup Table PDA
|
|
53
|
+
* Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]
|
|
54
|
+
* Program: ALT_PROGRAM_ID
|
|
55
|
+
*/
|
|
56
|
+
export declare function getAltPda(orderbook: PublicKey, recentSlot: bigint): [PublicKey, number];
|
|
57
|
+
/**
|
|
58
|
+
* Collection of all PDA functions for easy access
|
|
59
|
+
*/
|
|
60
|
+
export declare const pda: {
|
|
61
|
+
getExchangePda: typeof getExchangePda;
|
|
62
|
+
getMarketPda: typeof getMarketPda;
|
|
63
|
+
getVaultPda: typeof getVaultPda;
|
|
64
|
+
getMintAuthorityPda: typeof getMintAuthorityPda;
|
|
65
|
+
getConditionalMintPda: typeof getConditionalMintPda;
|
|
66
|
+
getAllConditionalMintPdas: typeof getAllConditionalMintPdas;
|
|
67
|
+
getOrderStatusPda: typeof getOrderStatusPda;
|
|
68
|
+
getUserNoncePda: typeof getUserNoncePda;
|
|
69
|
+
getPositionPda: typeof getPositionPda;
|
|
70
|
+
getOrderbookPda: typeof getOrderbookPda;
|
|
71
|
+
getAltPda: typeof getAltPda;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=pda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAUrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAMvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;CAYf,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pda = void 0;
|
|
4
|
+
exports.getExchangePda = getExchangePda;
|
|
5
|
+
exports.getMarketPda = getMarketPda;
|
|
6
|
+
exports.getVaultPda = getVaultPda;
|
|
7
|
+
exports.getMintAuthorityPda = getMintAuthorityPda;
|
|
8
|
+
exports.getConditionalMintPda = getConditionalMintPda;
|
|
9
|
+
exports.getAllConditionalMintPdas = getAllConditionalMintPdas;
|
|
10
|
+
exports.getOrderStatusPda = getOrderStatusPda;
|
|
11
|
+
exports.getUserNoncePda = getUserNoncePda;
|
|
12
|
+
exports.getPositionPda = getPositionPda;
|
|
13
|
+
exports.getOrderbookPda = getOrderbookPda;
|
|
14
|
+
exports.getAltPda = getAltPda;
|
|
15
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
16
|
+
const constants_1 = require("./constants");
|
|
17
|
+
const utils_1 = require("./utils");
|
|
18
|
+
/**
|
|
19
|
+
* Derive Exchange PDA (singleton central state)
|
|
20
|
+
* Seeds: ["central_state"]
|
|
21
|
+
*/
|
|
22
|
+
function getExchangePda(programId = constants_1.PROGRAM_ID) {
|
|
23
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.CENTRAL_STATE)], programId);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Derive Market PDA
|
|
27
|
+
* Seeds: ["market", market_id (u64 little-endian)]
|
|
28
|
+
*/
|
|
29
|
+
function getMarketPda(marketId, programId = constants_1.PROGRAM_ID) {
|
|
30
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.MARKET), (0, utils_1.toU64Le)(marketId)], programId);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Derive Vault PDA (deposit token storage)
|
|
34
|
+
* Seeds: ["market_deposit_token_account", deposit_mint, market]
|
|
35
|
+
*/
|
|
36
|
+
function getVaultPda(depositMint, market, programId = constants_1.PROGRAM_ID) {
|
|
37
|
+
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
38
|
+
Buffer.from(constants_1.SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),
|
|
39
|
+
depositMint.toBuffer(),
|
|
40
|
+
market.toBuffer(),
|
|
41
|
+
], programId);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Derive Mint Authority PDA (signs mint/burn operations)
|
|
45
|
+
* Seeds: ["market_mint_authority", market]
|
|
46
|
+
*/
|
|
47
|
+
function getMintAuthorityPda(market, programId = constants_1.PROGRAM_ID) {
|
|
48
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()], programId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Derive Conditional Mint PDA (per outcome)
|
|
52
|
+
* Seeds: ["conditional_mint", market, deposit_mint, outcome_index (u8)]
|
|
53
|
+
*/
|
|
54
|
+
function getConditionalMintPda(market, depositMint, outcomeIndex, programId = constants_1.PROGRAM_ID) {
|
|
55
|
+
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
56
|
+
Buffer.from(constants_1.SEEDS.CONDITIONAL_MINT),
|
|
57
|
+
market.toBuffer(),
|
|
58
|
+
depositMint.toBuffer(),
|
|
59
|
+
(0, utils_1.toU8)(outcomeIndex),
|
|
60
|
+
], programId);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Derive all Conditional Mint PDAs for a market
|
|
64
|
+
*/
|
|
65
|
+
function getAllConditionalMintPdas(market, depositMint, numOutcomes, programId = constants_1.PROGRAM_ID) {
|
|
66
|
+
const pdas = [];
|
|
67
|
+
for (let i = 0; i < numOutcomes; i++) {
|
|
68
|
+
pdas.push(getConditionalMintPda(market, depositMint, i, programId));
|
|
69
|
+
}
|
|
70
|
+
return pdas;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Derive Order Status PDA
|
|
74
|
+
* Seeds: ["order_status", order_hash (32 bytes)]
|
|
75
|
+
*/
|
|
76
|
+
function getOrderStatusPda(orderHash, programId = constants_1.PROGRAM_ID) {
|
|
77
|
+
if (orderHash.length !== 32) {
|
|
78
|
+
throw new Error("Order hash must be 32 bytes");
|
|
79
|
+
}
|
|
80
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.ORDER_STATUS), orderHash], programId);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Derive User Nonce PDA
|
|
84
|
+
* Seeds: ["user_nonce", user (32 bytes)]
|
|
85
|
+
*/
|
|
86
|
+
function getUserNoncePda(user, programId = constants_1.PROGRAM_ID) {
|
|
87
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.USER_NONCE), user.toBuffer()], programId);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Derive Position PDA
|
|
91
|
+
* Seeds: ["position", owner (32 bytes), market (32 bytes)]
|
|
92
|
+
*/
|
|
93
|
+
function getPositionPda(owner, market, programId = constants_1.PROGRAM_ID) {
|
|
94
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.POSITION), owner.toBuffer(), market.toBuffer()], programId);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Derive Orderbook PDA
|
|
98
|
+
* Seeds: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
|
|
99
|
+
*/
|
|
100
|
+
function getOrderbookPda(mintA, mintB, programId = constants_1.PROGRAM_ID) {
|
|
101
|
+
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
102
|
+
Buffer.from(constants_1.SEEDS.ORDERBOOK),
|
|
103
|
+
mintA.toBuffer(),
|
|
104
|
+
mintB.toBuffer(),
|
|
105
|
+
], programId);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Derive Address Lookup Table PDA
|
|
109
|
+
* Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]
|
|
110
|
+
* Program: ALT_PROGRAM_ID
|
|
111
|
+
*/
|
|
112
|
+
function getAltPda(orderbook, recentSlot) {
|
|
113
|
+
return web3_js_1.PublicKey.findProgramAddressSync([orderbook.toBuffer(), (0, utils_1.toU64Le)(recentSlot)], constants_1.ALT_PROGRAM_ID);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Collection of all PDA functions for easy access
|
|
117
|
+
*/
|
|
118
|
+
exports.pda = {
|
|
119
|
+
getExchangePda,
|
|
120
|
+
getMarketPda,
|
|
121
|
+
getVaultPda,
|
|
122
|
+
getMintAuthorityPda,
|
|
123
|
+
getConditionalMintPda,
|
|
124
|
+
getAllConditionalMintPdas,
|
|
125
|
+
getOrderStatusPda,
|
|
126
|
+
getUserNoncePda,
|
|
127
|
+
getPositionPda,
|
|
128
|
+
getOrderbookPda,
|
|
129
|
+
getAltPda,
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=pda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_ID, ALT_PROGRAM_ID, SEEDS } from \"./constants\";\nimport { toU64Le, toU8 } from \"./utils\";\n\n/**\n * Derive Exchange PDA (singleton central state)\n * Seeds: [\"central_state\"]\n */\nexport function getExchangePda(\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.CENTRAL_STATE)],\n programId\n );\n}\n\n/**\n * Derive Market PDA\n * Seeds: [\"market\", market_id (u64 little-endian)]\n */\nexport function getMarketPda(\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET), toU64Le(marketId)],\n programId\n );\n}\n\n/**\n * Derive Vault PDA (deposit token storage)\n * Seeds: [\"market_deposit_token_account\", deposit_mint, market]\n */\nexport function getVaultPda(\n depositMint: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),\n depositMint.toBuffer(),\n market.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Mint Authority PDA (signs mint/burn operations)\n * Seeds: [\"market_mint_authority\", market]\n */\nexport function getMintAuthorityPda(\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Conditional Mint PDA (per outcome)\n * Seeds: [\"conditional_mint\", market, deposit_mint, outcome_index (u8)]\n */\nexport function getConditionalMintPda(\n market: PublicKey,\n depositMint: PublicKey,\n outcomeIndex: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.CONDITIONAL_MINT),\n market.toBuffer(),\n depositMint.toBuffer(),\n toU8(outcomeIndex),\n ],\n programId\n );\n}\n\n/**\n * Derive all Conditional Mint PDAs for a market\n */\nexport function getAllConditionalMintPdas(\n market: PublicKey,\n depositMint: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number][] {\n const pdas: [PublicKey, number][] = [];\n for (let i = 0; i < numOutcomes; i++) {\n pdas.push(getConditionalMintPda(market, depositMint, i, programId));\n }\n return pdas;\n}\n\n/**\n * Derive Order Status PDA\n * Seeds: [\"order_status\", order_hash (32 bytes)]\n */\nexport function getOrderStatusPda(\n orderHash: Buffer,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n if (orderHash.length !== 32) {\n throw new Error(\"Order hash must be 32 bytes\");\n }\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.ORDER_STATUS), orderHash],\n programId\n );\n}\n\n/**\n * Derive User Nonce PDA\n * Seeds: [\"user_nonce\", user (32 bytes)]\n */\nexport function getUserNoncePda(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.USER_NONCE), user.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Position PDA\n * Seeds: [\"position\", owner (32 bytes), market (32 bytes)]\n */\nexport function getPositionPda(\n owner: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.POSITION), owner.toBuffer(), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Orderbook PDA\n * Seeds: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n */\nexport function getOrderbookPda(\n mintA: PublicKey,\n mintB: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.ORDERBOOK),\n mintA.toBuffer(),\n mintB.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Address Lookup Table PDA\n * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]\n * Program: ALT_PROGRAM_ID\n */\nexport function getAltPda(\n orderbook: PublicKey,\n recentSlot: bigint\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [orderbook.toBuffer(), toU64Le(recentSlot)],\n ALT_PROGRAM_ID\n );\n}\n\n/**\n * Collection of all PDA functions for easy access\n */\nexport const pda = {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getConditionalMintPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n};\n"]}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import { PublicKey, Transaction } from "@solana/web3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Market status enum matching on-chain representation
|
|
4
|
+
*/
|
|
5
|
+
export declare enum MarketStatus {
|
|
6
|
+
Pending = 0,
|
|
7
|
+
Active = 1,
|
|
8
|
+
Resolved = 2,
|
|
9
|
+
Cancelled = 3
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Order side enum
|
|
13
|
+
* BID = buyer wants base tokens (pays quote)
|
|
14
|
+
* ASK = seller offers base tokens (receives quote)
|
|
15
|
+
*/
|
|
16
|
+
export declare enum OrderSide {
|
|
17
|
+
BID = 0,
|
|
18
|
+
ASK = 1
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Exchange account - singleton central state
|
|
22
|
+
* PDA: ["central_state"]
|
|
23
|
+
* Size: 88 bytes
|
|
24
|
+
*/
|
|
25
|
+
export interface Exchange {
|
|
26
|
+
discriminator: Buffer;
|
|
27
|
+
authority: PublicKey;
|
|
28
|
+
operator: PublicKey;
|
|
29
|
+
marketCount: bigint;
|
|
30
|
+
paused: boolean;
|
|
31
|
+
bump: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Market account
|
|
35
|
+
* PDA: ["market", market_id (u64)]
|
|
36
|
+
* Size: 120 bytes
|
|
37
|
+
*/
|
|
38
|
+
export interface Market {
|
|
39
|
+
discriminator: Buffer;
|
|
40
|
+
marketId: bigint;
|
|
41
|
+
numOutcomes: number;
|
|
42
|
+
status: MarketStatus;
|
|
43
|
+
winningOutcome: number;
|
|
44
|
+
hasWinningOutcome: boolean;
|
|
45
|
+
bump: number;
|
|
46
|
+
oracle: PublicKey;
|
|
47
|
+
questionId: Buffer;
|
|
48
|
+
conditionId: Buffer;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Order status account - tracks partial fills and cancellations
|
|
52
|
+
* PDA: ["order_status", order_hash (32 bytes)]
|
|
53
|
+
* Size: 24 bytes
|
|
54
|
+
*/
|
|
55
|
+
export interface OrderStatus {
|
|
56
|
+
discriminator: Buffer;
|
|
57
|
+
remaining: bigint;
|
|
58
|
+
isCancelled: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* User nonce account - replay protection
|
|
62
|
+
* PDA: ["user_nonce", user_pubkey (32 bytes)]
|
|
63
|
+
* Size: 16 bytes
|
|
64
|
+
*/
|
|
65
|
+
export interface UserNonce {
|
|
66
|
+
discriminator: Buffer;
|
|
67
|
+
nonce: bigint;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Position account - user's state in a market
|
|
71
|
+
* PDA: ["position", owner (32 bytes), market (32 bytes)]
|
|
72
|
+
* Size: 80 bytes
|
|
73
|
+
*/
|
|
74
|
+
export interface Position {
|
|
75
|
+
discriminator: Buffer;
|
|
76
|
+
owner: PublicKey;
|
|
77
|
+
market: PublicKey;
|
|
78
|
+
bump: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Orderbook account - links market to token pair and lookup table
|
|
82
|
+
* PDA: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
|
|
83
|
+
* Size: 144 bytes
|
|
84
|
+
*/
|
|
85
|
+
export interface Orderbook {
|
|
86
|
+
discriminator: Buffer;
|
|
87
|
+
market: PublicKey;
|
|
88
|
+
mintA: PublicKey;
|
|
89
|
+
mintB: PublicKey;
|
|
90
|
+
lookupTable: PublicKey;
|
|
91
|
+
bump: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Signed order format (225 bytes)
|
|
95
|
+
* Full order with all fields for submission, cancellation, and hashing
|
|
96
|
+
*/
|
|
97
|
+
export interface SignedOrder {
|
|
98
|
+
nonce: number;
|
|
99
|
+
maker: PublicKey;
|
|
100
|
+
market: PublicKey;
|
|
101
|
+
baseMint: PublicKey;
|
|
102
|
+
quoteMint: PublicKey;
|
|
103
|
+
side: OrderSide;
|
|
104
|
+
makerAmount: bigint;
|
|
105
|
+
takerAmount: bigint;
|
|
106
|
+
expiration: bigint;
|
|
107
|
+
signature: Buffer;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Compact order format (29 bytes)
|
|
111
|
+
* Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA)
|
|
112
|
+
*/
|
|
113
|
+
export interface Order {
|
|
114
|
+
nonce: number;
|
|
115
|
+
side: OrderSide;
|
|
116
|
+
makerAmount: bigint;
|
|
117
|
+
takerAmount: bigint;
|
|
118
|
+
expiration: bigint;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Parameters for initialize instruction
|
|
122
|
+
*/
|
|
123
|
+
export interface InitializeParams {
|
|
124
|
+
authority: PublicKey;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Parameters for createMarket instruction
|
|
128
|
+
*/
|
|
129
|
+
export interface CreateMarketParams {
|
|
130
|
+
authority: PublicKey;
|
|
131
|
+
numOutcomes: number;
|
|
132
|
+
oracle: PublicKey;
|
|
133
|
+
questionId: Buffer;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Metadata for a single outcome token
|
|
137
|
+
*/
|
|
138
|
+
export interface OutcomeMetadata {
|
|
139
|
+
name: string;
|
|
140
|
+
symbol: string;
|
|
141
|
+
uri: string;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Parameters for addDepositMint instruction
|
|
145
|
+
*/
|
|
146
|
+
export interface AddDepositMintParams {
|
|
147
|
+
authority: PublicKey;
|
|
148
|
+
marketId: bigint;
|
|
149
|
+
depositMint: PublicKey;
|
|
150
|
+
outcomeMetadata: OutcomeMetadata[];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Parameters for mintCompleteSet instruction
|
|
154
|
+
*/
|
|
155
|
+
export interface MintCompleteSetParams {
|
|
156
|
+
user: PublicKey;
|
|
157
|
+
market: PublicKey;
|
|
158
|
+
depositMint: PublicKey;
|
|
159
|
+
amount: bigint;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Parameters for mergeCompleteSet instruction
|
|
163
|
+
*/
|
|
164
|
+
export interface MergeCompleteSetParams {
|
|
165
|
+
user: PublicKey;
|
|
166
|
+
market: PublicKey;
|
|
167
|
+
depositMint: PublicKey;
|
|
168
|
+
amount: bigint;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Parameters for cancelOrder instruction
|
|
172
|
+
*/
|
|
173
|
+
export interface CancelOrderParams {
|
|
174
|
+
maker: PublicKey;
|
|
175
|
+
order: SignedOrder;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Parameters for incrementNonce instruction
|
|
179
|
+
*/
|
|
180
|
+
export interface IncrementNonceParams {
|
|
181
|
+
user: PublicKey;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Parameters for settleMarket instruction
|
|
185
|
+
*/
|
|
186
|
+
export interface SettleMarketParams {
|
|
187
|
+
oracle: PublicKey;
|
|
188
|
+
marketId: bigint;
|
|
189
|
+
winningOutcome: number;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Parameters for redeemWinnings instruction
|
|
193
|
+
*/
|
|
194
|
+
export interface RedeemWinningsParams {
|
|
195
|
+
user: PublicKey;
|
|
196
|
+
market: PublicKey;
|
|
197
|
+
depositMint: PublicKey;
|
|
198
|
+
amount: bigint;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Parameters for setPaused instruction
|
|
202
|
+
*/
|
|
203
|
+
export interface SetPausedParams {
|
|
204
|
+
authority: PublicKey;
|
|
205
|
+
paused: boolean;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Parameters for setOperator instruction
|
|
209
|
+
*/
|
|
210
|
+
export interface SetOperatorParams {
|
|
211
|
+
authority: PublicKey;
|
|
212
|
+
newOperator: PublicKey;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Parameters for withdrawFromPosition instruction
|
|
216
|
+
*/
|
|
217
|
+
export interface WithdrawFromPositionParams {
|
|
218
|
+
user: PublicKey;
|
|
219
|
+
market: PublicKey;
|
|
220
|
+
mint: PublicKey;
|
|
221
|
+
amount: bigint;
|
|
222
|
+
outcomeIndex: number;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Parameters for activateMarket instruction
|
|
226
|
+
*/
|
|
227
|
+
export interface ActivateMarketParams {
|
|
228
|
+
authority: PublicKey;
|
|
229
|
+
marketId: bigint;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Parameters for matchOrdersMulti instruction
|
|
233
|
+
*/
|
|
234
|
+
export interface MatchOrdersMultiParams {
|
|
235
|
+
operator: PublicKey;
|
|
236
|
+
market: PublicKey;
|
|
237
|
+
baseMint: PublicKey;
|
|
238
|
+
quoteMint: PublicKey;
|
|
239
|
+
takerOrder: SignedOrder;
|
|
240
|
+
makerOrders: SignedOrder[];
|
|
241
|
+
makerFillAmounts: bigint[];
|
|
242
|
+
takerFillAmounts: bigint[];
|
|
243
|
+
fullFillBitmask: number;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Parameters for setAuthority instruction
|
|
247
|
+
*/
|
|
248
|
+
export interface SetAuthorityParams {
|
|
249
|
+
currentAuthority: PublicKey;
|
|
250
|
+
newAuthority: PublicKey;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Parameters for createOrderbook instruction
|
|
254
|
+
*/
|
|
255
|
+
export interface CreateOrderbookParams {
|
|
256
|
+
payer: PublicKey;
|
|
257
|
+
market: PublicKey;
|
|
258
|
+
mintA: PublicKey;
|
|
259
|
+
mintB: PublicKey;
|
|
260
|
+
recentSlot: bigint;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Result from transaction builders
|
|
264
|
+
*/
|
|
265
|
+
export interface BuildResult<T = Record<string, PublicKey>> {
|
|
266
|
+
/** Unsigned transaction ready for signing */
|
|
267
|
+
transaction: Transaction;
|
|
268
|
+
/** Key accounts involved in the transaction */
|
|
269
|
+
accounts: T;
|
|
270
|
+
/** Serialize transaction to base64 */
|
|
271
|
+
serialize: () => string;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Accounts returned from initialize
|
|
275
|
+
*/
|
|
276
|
+
export interface InitializeAccounts {
|
|
277
|
+
exchange: PublicKey;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Accounts returned from createMarket
|
|
281
|
+
*/
|
|
282
|
+
export interface CreateMarketAccounts {
|
|
283
|
+
exchange: PublicKey;
|
|
284
|
+
market: PublicKey;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Accounts returned from addDepositMint
|
|
288
|
+
*/
|
|
289
|
+
export interface AddDepositMintAccounts {
|
|
290
|
+
market: PublicKey;
|
|
291
|
+
vault: PublicKey;
|
|
292
|
+
mintAuthority: PublicKey;
|
|
293
|
+
conditionalMints: PublicKey[];
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Accounts returned from mintCompleteSet
|
|
297
|
+
*/
|
|
298
|
+
export interface MintCompleteSetAccounts {
|
|
299
|
+
position: PublicKey;
|
|
300
|
+
vault: PublicKey;
|
|
301
|
+
conditionalMints: PublicKey[];
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Accounts returned from mergeCompleteSet
|
|
305
|
+
*/
|
|
306
|
+
export interface MergeCompleteSetAccounts {
|
|
307
|
+
position: PublicKey;
|
|
308
|
+
vault: PublicKey;
|
|
309
|
+
conditionalMints: PublicKey[];
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Accounts returned from cancelOrder
|
|
313
|
+
*/
|
|
314
|
+
export interface CancelOrderAccounts {
|
|
315
|
+
orderStatus: PublicKey;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Accounts returned from incrementNonce
|
|
319
|
+
*/
|
|
320
|
+
export interface IncrementNonceAccounts {
|
|
321
|
+
userNonce: PublicKey;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Accounts returned from settleMarket
|
|
325
|
+
*/
|
|
326
|
+
export interface SettleMarketAccounts {
|
|
327
|
+
exchange: PublicKey;
|
|
328
|
+
market: PublicKey;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Accounts returned from redeemWinnings
|
|
332
|
+
*/
|
|
333
|
+
export interface RedeemWinningsAccounts {
|
|
334
|
+
position: PublicKey;
|
|
335
|
+
vault: PublicKey;
|
|
336
|
+
winningMint: PublicKey;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Accounts returned from activateMarket
|
|
340
|
+
*/
|
|
341
|
+
export interface ActivateMarketAccounts {
|
|
342
|
+
exchange: PublicKey;
|
|
343
|
+
market: PublicKey;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Accounts returned from matchOrdersMulti
|
|
347
|
+
*/
|
|
348
|
+
export interface MatchOrdersMultiAccounts {
|
|
349
|
+
takerOrderStatus: PublicKey;
|
|
350
|
+
takerPosition: PublicKey;
|
|
351
|
+
makerOrderStatuses: PublicKey[];
|
|
352
|
+
makerPositions: PublicKey[];
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Parameters for creating a bid order
|
|
356
|
+
*/
|
|
357
|
+
export interface BidOrderParams {
|
|
358
|
+
nonce: number;
|
|
359
|
+
maker: PublicKey;
|
|
360
|
+
market: PublicKey;
|
|
361
|
+
baseMint: PublicKey;
|
|
362
|
+
quoteMint: PublicKey;
|
|
363
|
+
makerAmount: bigint;
|
|
364
|
+
takerAmount: bigint;
|
|
365
|
+
expiration?: bigint;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Parameters for creating an ask order
|
|
369
|
+
*/
|
|
370
|
+
export interface AskOrderParams {
|
|
371
|
+
nonce: number;
|
|
372
|
+
maker: PublicKey;
|
|
373
|
+
market: PublicKey;
|
|
374
|
+
baseMint: PublicKey;
|
|
375
|
+
quoteMint: PublicKey;
|
|
376
|
+
makerAmount: bigint;
|
|
377
|
+
takerAmount: bigint;
|
|
378
|
+
expiration?: bigint;
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"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"}
|