@lightconexyz/lightcone-sdk 0.2.4 → 0.2.42
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 +5 -23
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/client.js +0 -3
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/client.d.ts +2 -15
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -28
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +0 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/domain/admin/client.d.ts +13 -1
- package/dist/domain/admin/client.d.ts.map +1 -1
- package/dist/domain/admin/client.js +50 -0
- package/dist/domain/admin/client.js.map +1 -1
- package/dist/domain/market/client.d.ts +3 -1
- package/dist/domain/market/client.d.ts.map +1 -1
- package/dist/domain/market/client.js +10 -0
- package/dist/domain/market/client.js.map +1 -1
- package/dist/domain/order/client.d.ts +3 -1
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +10 -0
- package/dist/domain/order/client.js.map +1 -1
- package/dist/domain/orderbook/client.d.ts +3 -6
- package/dist/domain/orderbook/client.d.ts.map +1 -1
- package/dist/domain/orderbook/client.js +1 -16
- package/dist/domain/orderbook/client.js.map +1 -1
- package/dist/domain/orderbook/index.d.ts +7 -0
- package/dist/domain/orderbook/index.d.ts.map +1 -1
- package/dist/domain/orderbook/index.js +17 -0
- package/dist/domain/orderbook/index.js.map +1 -1
- package/dist/domain/orderbook/state.d.ts +14 -4
- package/dist/domain/orderbook/state.d.ts.map +1 -1
- package/dist/domain/orderbook/state.js +66 -26
- package/dist/domain/orderbook/state.js.map +1 -1
- package/dist/domain/position/client.d.ts +10 -2
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +33 -0
- package/dist/domain/position/client.js.map +1 -1
- package/dist/domain/trade/state.d.ts +3 -1
- package/dist/domain/trade/state.d.ts.map +1 -1
- package/dist/domain/trade/state.js +33 -12
- package/dist/domain/trade/state.js.map +1 -1
- package/dist/http/client.d.ts +0 -1
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +12 -3
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +2 -2
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js.map +1 -1
- package/dist/privy/index.d.ts +1 -0
- package/dist/privy/index.d.ts.map +1 -1
- package/dist/privy/index.js +4 -0
- package/dist/privy/index.js.map +1 -1
- package/dist/program/builder.d.ts +3 -0
- package/dist/program/builder.d.ts.map +1 -1
- package/dist/program/builder.js +8 -0
- package/dist/program/builder.js.map +1 -1
- package/dist/program/constants.d.ts +3 -2
- package/dist/program/constants.d.ts.map +1 -1
- package/dist/program/constants.js +3 -2
- package/dist/program/constants.js.map +1 -1
- package/dist/program/envelope.d.ts +19 -9
- package/dist/program/envelope.d.ts.map +1 -1
- package/dist/program/envelope.js +54 -20
- package/dist/program/envelope.js.map +1 -1
- package/dist/program/index.d.ts +3 -3
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/index.js +28 -2
- package/dist/program/index.js.map +1 -1
- package/dist/program/instructions.d.ts +39 -2
- package/dist/program/instructions.d.ts.map +1 -1
- package/dist/program/instructions.js +155 -0
- package/dist/program/instructions.js.map +1 -1
- package/dist/program/orders.d.ts +23 -17
- package/dist/program/orders.d.ts.map +1 -1
- package/dist/program/orders.js +44 -17
- package/dist/program/orders.js.map +1 -1
- package/dist/program/types.d.ts +14 -2
- package/dist/program/types.d.ts.map +1 -1
- package/dist/program/types.js.map +1 -1
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/program/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAkB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC,gCAAgC;IAChC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,6BAA6B;IAC7B,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK7B,qBAAqB;IACrB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK9B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKhC,yCAAyC;IACzC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,sBAAsB;IACtB,GAAG,IAAI,IAAI;IAKX,sBAAsB;IACtB,GAAG,IAAI,IAAI;IAKX,yBAAyB;IACzB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK5B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,2CAA2C;IAC3C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,iCAAiC;IACjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,kCAAkC;IAClC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,mDAAmD;IACnD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8CAA8C;IAC9C,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKzC;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAY3E;;;OAGG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,GAC1B,IAAI;IAIP;;;OAGG;IACH,KAAK,IAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/program/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAkB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAEvC,gCAAgC;IAChC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,0EAA0E;IAC1E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,6BAA6B;IAC7B,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK7B,qBAAqB;IACrB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK9B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKhC,yCAAyC;IACzC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,sBAAsB;IACtB,GAAG,IAAI,IAAI;IAKX,sBAAsB;IACtB,GAAG,IAAI,IAAI;IAKX,yBAAyB;IACzB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK5B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,2CAA2C;IAC3C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,iCAAiC;IACjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,kCAAkC;IAClC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,mDAAmD;IACnD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8CAA8C;IAC9C,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKzC;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAY3E;;;OAGG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,GAC1B,IAAI;IAIP;;;OAGG;IACH,KAAK,IAAI,WAAW;IAqBpB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;IAmB3C;;OAEG;IACH,eAAe,CACb,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAClB,kBAAkB;CAMtB"}
|
package/dist/program/builder.js
CHANGED
|
@@ -25,6 +25,7 @@ const scaling_1 = require("../shared/scaling");
|
|
|
25
25
|
*/
|
|
26
26
|
class OrderBuilder {
|
|
27
27
|
_nonce = 0;
|
|
28
|
+
_salt = null;
|
|
28
29
|
_maker = null;
|
|
29
30
|
_market = null;
|
|
30
31
|
_baseMint = null;
|
|
@@ -39,6 +40,11 @@ class OrderBuilder {
|
|
|
39
40
|
this._nonce = value;
|
|
40
41
|
return this;
|
|
41
42
|
}
|
|
43
|
+
/** Set the order salt (u64) for uniqueness. Auto-generated if not set. */
|
|
44
|
+
salt(value) {
|
|
45
|
+
this._salt = value;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
42
48
|
/** Set the maker (signer) */
|
|
43
49
|
maker(value) {
|
|
44
50
|
this._maker = value;
|
|
@@ -137,6 +143,7 @@ class OrderBuilder {
|
|
|
137
143
|
throw new Error("OrderBuilder: quoteMint is required");
|
|
138
144
|
return {
|
|
139
145
|
nonce: this._nonce,
|
|
146
|
+
salt: this._salt ?? (0, orders_1.generateSalt)(),
|
|
140
147
|
maker: this._maker,
|
|
141
148
|
market: this._market,
|
|
142
149
|
baseMint: this._baseMint,
|
|
@@ -155,6 +162,7 @@ class OrderBuilder {
|
|
|
155
162
|
const unsigned = this.build();
|
|
156
163
|
return (0, orders_1.signOrderFull)({
|
|
157
164
|
nonce: unsigned.nonce,
|
|
165
|
+
salt: unsigned.salt,
|
|
158
166
|
maker: unsigned.maker,
|
|
159
167
|
market: unsigned.market,
|
|
160
168
|
baseMint: unsigned.baseMint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/program/builder.ts"],"names":[],"mappings":";;;AACA,mCAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/program/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Keypair } from \"@solana/web3.js\";\nimport { SignedOrder, OrderSide } from \"./types\";\nimport { generateSalt, signOrderFull, toSubmitRequest as orderToSubmitRequest } from \"./orders\";\nimport { scalePriceSize, OrderbookDecimals } from \"../shared/scaling\";\nimport type { DepositSource, SubmitOrderRequest } from \"../shared\";\n\n/**\n * Fluent builder for creating orders.\n * Matches the Rust SDK's OrderBuilder pattern.\n *\n * @example\n * ```typescript\n * const order = new OrderBuilder()\n * .nonce(1)\n * .maker(makerPubkey)\n * .market(marketPubkey)\n * .baseMint(baseMintPubkey)\n * .quoteMint(quoteMintPubkey)\n * .bid()\n * .amountIn(1000000n)\n * .amountOut(500000n)\n * .expiration(0n)\n * .build();\n * ```\n */\nexport class OrderBuilder {\n private _nonce: number = 0;\n private _salt: bigint | null = null;\n private _maker: PublicKey | null = null;\n private _market: PublicKey | null = null;\n private _baseMint: PublicKey | null = null;\n private _quoteMint: PublicKey | null = null;\n private _side: OrderSide = OrderSide.BID;\n private _amountIn: bigint = 0n;\n private _amountOut: bigint = 0n;\n private _expiration: bigint = 0n;\n private _depositSource?: DepositSource;\n\n /** Set the order nonce (u32) */\n nonce(value: number): this {\n this._nonce = value;\n return this;\n }\n\n /** Set the order salt (u64) for uniqueness. Auto-generated if not set. */\n salt(value: bigint): this {\n this._salt = value;\n return this;\n }\n\n /** Set the maker (signer) */\n maker(value: PublicKey): this {\n this._maker = value;\n return this;\n }\n\n /** Set the market */\n market(value: PublicKey): this {\n this._market = value;\n return this;\n }\n\n /** Set the base mint (conditional token) */\n baseMint(value: PublicKey): this {\n this._baseMint = value;\n return this;\n }\n\n /** Set the quote mint (payment token) */\n quoteMint(value: PublicKey): this {\n this._quoteMint = value;\n return this;\n }\n\n /** Set side to BID */\n bid(): this {\n this._side = OrderSide.BID;\n return this;\n }\n\n /** Set side to ASK */\n ask(): this {\n this._side = OrderSide.ASK;\n return this;\n }\n\n /** Set the order side */\n side(value: OrderSide): this {\n this._side = value;\n return this;\n }\n\n /** Set amount in (what maker gives) */\n amountIn(value: bigint): this {\n this._amountIn = value;\n return this;\n }\n\n /** Set amount out (what maker receives) */\n amountOut(value: bigint): this {\n this._amountOut = value;\n return this;\n }\n\n /** @deprecated Use amountIn() */\n makerAmount(value: bigint): this {\n return this.amountIn(value);\n }\n\n /** @deprecated Use amountOut() */\n takerAmount(value: bigint): this {\n return this.amountOut(value);\n }\n\n /** Set expiration timestamp (0 = no expiration) */\n expiration(value: bigint): this {\n this._expiration = value;\n return this;\n }\n\n /** Set deposit source for order submission */\n depositSource(value: DepositSource): this {\n this._depositSource = value;\n return this;\n }\n\n /**\n * Set price and size, auto-computing amountIn and amountOut using decimal scaling.\n *\n * @param price - Price as a decimal string (e.g., \"0.75\")\n * @param size - Size as a decimal string (e.g., \"100\")\n * @param decimals - Orderbook decimal configuration\n */\n price(priceStr: string, sizeStr: string, decimals: OrderbookDecimals): this {\n const { amountIn, amountOut } = scalePriceSize(\n priceStr,\n sizeStr,\n this._side,\n decimals\n );\n this._amountIn = amountIn;\n this._amountOut = amountOut;\n return this;\n }\n\n /**\n * Apply decimal scaling to convert price/size to amountIn/amountOut.\n * Equivalent to calling price() but with separate method name for clarity.\n */\n applyScaling(\n priceStr: string,\n sizeStr: string,\n decimals: OrderbookDecimals\n ): this {\n return this.price(priceStr, sizeStr, decimals);\n }\n\n /**\n * Build the unsigned SignedOrder (signature will be all zeros).\n * All required fields must be set.\n */\n build(): SignedOrder {\n if (!this._maker) throw new Error(\"OrderBuilder: maker is required\");\n if (!this._market) throw new Error(\"OrderBuilder: market is required\");\n if (!this._baseMint) throw new Error(\"OrderBuilder: baseMint is required\");\n if (!this._quoteMint) throw new Error(\"OrderBuilder: quoteMint is required\");\n\n return {\n nonce: this._nonce,\n salt: this._salt ?? generateSalt(),\n maker: this._maker,\n market: this._market,\n baseMint: this._baseMint,\n quoteMint: this._quoteMint,\n side: this._side,\n amountIn: this._amountIn,\n amountOut: this._amountOut,\n expiration: this._expiration,\n signature: Buffer.alloc(64),\n };\n }\n\n /**\n * Build and sign the order with a Keypair.\n */\n buildAndSign(keypair: Keypair): SignedOrder {\n const unsigned = this.build();\n return signOrderFull(\n {\n nonce: unsigned.nonce,\n salt: unsigned.salt,\n maker: unsigned.maker,\n market: unsigned.market,\n baseMint: unsigned.baseMint,\n quoteMint: unsigned.quoteMint,\n side: unsigned.side,\n amountIn: unsigned.amountIn,\n amountOut: unsigned.amountOut,\n expiration: unsigned.expiration,\n },\n keypair\n );\n }\n\n /**\n * Build, sign, and convert to a SubmitOrderRequest.\n */\n toSubmitRequest(\n keypair: Keypair,\n orderbookId: string\n ): SubmitOrderRequest {\n const signed = this.buildAndSign(keypair);\n return orderToSubmitRequest(signed, orderbookId, {\n depositSource: this._depositSource,\n });\n }\n}\n"]}
|
|
@@ -53,6 +53,7 @@ export declare const INSTRUCTION: {
|
|
|
53
53
|
readonly INIT_POSITION_TOKENS: 19;
|
|
54
54
|
readonly DEPOSIT_AND_SWAP: 20;
|
|
55
55
|
readonly EXTEND_POSITION_TOKENS: 21;
|
|
56
|
+
readonly WITHDRAW_FROM_GLOBAL: 22;
|
|
56
57
|
};
|
|
57
58
|
/**
|
|
58
59
|
* Account discriminators (8 bytes each)
|
|
@@ -83,8 +84,8 @@ export declare const ACCOUNT_SIZE: {
|
|
|
83
84
|
* Order sizes in bytes
|
|
84
85
|
*/
|
|
85
86
|
export declare const ORDER_SIZE: {
|
|
86
|
-
readonly SIGNED_ORDER:
|
|
87
|
-
readonly ORDER:
|
|
87
|
+
readonly SIGNED_ORDER: 233;
|
|
88
|
+
readonly ORDER: 37;
|
|
88
89
|
readonly SIGNATURE: 64;
|
|
89
90
|
};
|
|
90
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/program/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAOzB;;GAEG;AACH,eAAO,MAAM,UAAU,WAEtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,WAE1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAAuB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,qBAAqB,WAA4B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,2BAA2B,WAAkC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,iBAAiB,WAA0B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,cAAc,WAAqB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/program/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAOzB;;GAEG;AACH,eAAO,MAAM,UAAU,WAEtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,WAE1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAAuB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,qBAAqB,WAA4B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,2BAA2B,WAAkC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,iBAAiB,WAA0B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,cAAc,WAAqB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;CAwBd,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;CAQhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;CAWR,CAAC"}
|
|
@@ -57,6 +57,7 @@ exports.INSTRUCTION = {
|
|
|
57
57
|
INIT_POSITION_TOKENS: 19,
|
|
58
58
|
DEPOSIT_AND_SWAP: 20,
|
|
59
59
|
EXTEND_POSITION_TOKENS: 21,
|
|
60
|
+
WITHDRAW_FROM_GLOBAL: 22,
|
|
60
61
|
};
|
|
61
62
|
/**
|
|
62
63
|
* Account discriminators (8 bytes each)
|
|
@@ -87,8 +88,8 @@ exports.ACCOUNT_SIZE = {
|
|
|
87
88
|
* Order sizes in bytes
|
|
88
89
|
*/
|
|
89
90
|
exports.ORDER_SIZE = {
|
|
90
|
-
SIGNED_ORDER:
|
|
91
|
-
ORDER:
|
|
91
|
+
SIGNED_ORDER: 233,
|
|
92
|
+
ORDER: 37,
|
|
92
93
|
SIGNATURE: 64,
|
|
93
94
|
};
|
|
94
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/program/constants.ts"],"names":[],"mappings":";;;AAAA,6CAIyB;AACzB,iDAI2B;AAE3B;;GAEG;AACU,QAAA,UAAU,GAAG,IAAI,mBAAS,CACrC,8CAA8C,CAC/C,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,6CAA6C,CAC9C,CAAC;AAEF;;GAEG;AACU,QAAA,gBAAgB,GAAG,4BAAoB,CAAC;AAErD;;GAEG;AACU,QAAA,qBAAqB,GAAG,iCAAyB,CAAC;AAE/D;;GAEG;AACU,QAAA,2BAA2B,GAAG,uCAA+B,CAAC;AAE3E;;GAEG;AACU,QAAA,iBAAiB,GAAG,uBAAa,CAAC,SAAS,CAAC;AAEzD;;GAEG;AACU,QAAA,cAAc,GAAG,4BAAkB,CAAC;AAEjD;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC;IACrB,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;IAClB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,EAAE;IAChB,sBAAsB,EAAE,EAAE;IAC1B,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,EAAE;IACtB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,EAAE;IACpB,uBAAuB,EAAE,EAAE;IAC3B,iBAAiB,EAAE,EAAE;IACrB,wBAAwB,EAAE,EAAE;IAC5B,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/program/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n SystemProgram,\n SYSVAR_RENT_PUBKEY,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID as SPL_TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID as SPL_TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID as SPL_ASSOCIATED_TOKEN_PROGRAM_ID,\n} from \"@solana/spl-token\";\n\n/**\n * Lightcone Pinocchio Program ID\n */\nexport const PROGRAM_ID = new PublicKey(\n \"8nzsoyHZFYig3uN3M717Q47MtLqzx2V2UAKaPTqDy5rV\"\n);\n\n/**\n * Address Lookup Table Program ID\n */\nexport const ALT_PROGRAM_ID = new PublicKey(\n \"AddressLookupTab1e1111111111111111111111111\"\n);\n\n/**\n * SPL Token Program ID\n */\nexport const TOKEN_PROGRAM_ID = SPL_TOKEN_PROGRAM_ID;\n\n/**\n * Token-2022 Program ID (for conditional tokens)\n */\nexport const TOKEN_2022_PROGRAM_ID = SPL_TOKEN_2022_PROGRAM_ID;\n\n/**\n * Associated Token Account Program ID\n */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = SPL_ASSOCIATED_TOKEN_PROGRAM_ID;\n\n/**\n * System Program ID\n */\nexport const SYSTEM_PROGRAM_ID = SystemProgram.programId;\n\n/**\n * Rent Sysvar ID\n */\nexport const RENT_SYSVAR_ID = SYSVAR_RENT_PUBKEY;\n\n/**\n * Instruction discriminators (single byte indices)\n */\nexport const INSTRUCTION = {\n INITIALIZE: 0,\n CREATE_MARKET: 1,\n ADD_DEPOSIT_MINT: 2,\n MINT_COMPLETE_SET: 3,\n MERGE_COMPLETE_SET: 4,\n CANCEL_ORDER: 5,\n INCREMENT_NONCE: 6,\n SETTLE_MARKET: 7,\n REDEEM_WINNINGS: 8,\n SET_PAUSED: 9,\n SET_OPERATOR: 10,\n WITHDRAW_FROM_POSITION: 11,\n ACTIVATE_MARKET: 12,\n MATCH_ORDERS_MULTI: 13,\n SET_AUTHORITY: 14,\n CREATE_ORDERBOOK: 15,\n WHITELIST_DEPOSIT_TOKEN: 16,\n DEPOSIT_TO_GLOBAL: 17,\n GLOBAL_TO_MARKET_DEPOSIT: 18,\n INIT_POSITION_TOKENS: 19,\n DEPOSIT_AND_SWAP: 20,\n EXTEND_POSITION_TOKENS: 21,\n WITHDRAW_FROM_GLOBAL: 22,\n} as const;\n\n/**\n * Account discriminators (8 bytes each)\n * SHA-256 hash bytes matching the on-chain program\n */\nexport const DISCRIMINATOR = {\n EXCHANGE: Buffer.from([0x1e, 0xc8, 0xdc, 0x95, 0x03, 0x3d, 0x68, 0x32]),\n MARKET: Buffer.from([0xdb, 0xbe, 0xd5, 0x37, 0x00, 0xe3, 0xc6, 0x9a]),\n ORDER_STATUS: Buffer.from([0x2e, 0x5a, 0xf1, 0x49, 0xb2, 0x68, 0x41, 0x03]),\n USER_NONCE: Buffer.from([0xeb, 0x85, 0x01, 0xf3, 0x12, 0x87, 0x58, 0xe0]),\n POSITION: Buffer.from([0xaa, 0xbc, 0x8f, 0xe4, 0x7a, 0x40, 0xf7, 0xd0]),\n ORDERBOOK: Buffer.from([0x2b, 0x22, 0x19, 0x71, 0xc3, 0x45, 0x48, 0x07]),\n GLOBAL_DEPOSIT_TOKEN: Buffer.from([0x25, 0xbe, 0xa1, 0xe8, 0x7b, 0x92, 0x2a, 0x57]),\n} as const;\n\n/**\n * Account sizes in bytes\n */\nexport const ACCOUNT_SIZE = {\n EXCHANGE: 88,\n MARKET: 120,\n ORDER_STATUS: 24,\n USER_NONCE: 16,\n POSITION: 80,\n ORDERBOOK: 144,\n GLOBAL_DEPOSIT_TOKEN: 48,\n} as const;\n\n/**\n * Order sizes in bytes\n */\nexport const ORDER_SIZE = {\n SIGNED_ORDER: 233,\n ORDER: 37,\n SIGNATURE: 64,\n} as const;\n\n/**\n * Maximum number of outcomes per market (2-6)\n */\nexport const MAX_OUTCOMES = 6;\n\n/**\n * Minimum number of outcomes per market\n */\nexport const MIN_OUTCOMES = 2;\n\n/**\n * Maximum number of makers per match_orders_multi instruction\n */\nexport const MAX_MAKERS = 5;\n\n/**\n * PDA Seeds\n */\nexport const SEEDS = {\n CENTRAL_STATE: \"central_state\",\n MARKET: \"market\",\n MARKET_DEPOSIT_TOKEN_ACCOUNT: \"market_deposit_token_account\",\n MARKET_MINT_AUTHORITY: \"market_mint_authority\",\n CONDITIONAL_MINT: \"conditional_mint\",\n ORDER_STATUS: \"order_status\",\n USER_NONCE: \"user_nonce\",\n POSITION: \"position\",\n ORDERBOOK: \"orderbook\",\n GLOBAL_DEPOSIT: \"global_deposit\",\n} as const;\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
2
|
-
import { type
|
|
2
|
+
import { type OrderBookPair } from "../domain/orderbook";
|
|
3
3
|
import type { DepositSource, SubmitOrderRequest, TimeInForce, TriggerType } from "../shared";
|
|
4
4
|
import { type SubmitRequestOptions } from "./orders";
|
|
5
5
|
import { OrderSide, type SignedOrder } from "./types";
|
|
6
6
|
interface OrderFields {
|
|
7
7
|
nonce?: number;
|
|
8
|
+
salt?: bigint;
|
|
8
9
|
maker?: PublicKey;
|
|
9
10
|
market?: PublicKey;
|
|
10
11
|
baseMint?: PublicKey;
|
|
@@ -19,6 +20,7 @@ interface OrderFields {
|
|
|
19
20
|
}
|
|
20
21
|
export interface OrderEnvelope {
|
|
21
22
|
nonce(value: number): this;
|
|
23
|
+
salt(value: bigint): this;
|
|
22
24
|
maker(value: PublicKey): this;
|
|
23
25
|
market(value: PublicKey): this;
|
|
24
26
|
baseMint(value: PublicKey): this;
|
|
@@ -32,15 +34,15 @@ export interface OrderEnvelope {
|
|
|
32
34
|
price(value: string): this;
|
|
33
35
|
size(value: string): this;
|
|
34
36
|
depositSource(value: DepositSource): this;
|
|
35
|
-
applyScaling(decimals: OrderbookDecimals): this;
|
|
36
37
|
payload(): Omit<SignedOrder, "signature">;
|
|
37
|
-
sign(keypair: Keypair,
|
|
38
|
-
finalize(signatureBase58: string,
|
|
38
|
+
sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
39
|
+
finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
39
40
|
}
|
|
40
41
|
declare class BaseEnvelope {
|
|
41
42
|
protected readonly fields: OrderFields;
|
|
42
43
|
constructor(fields?: OrderFields);
|
|
43
44
|
nonce(value: number): this;
|
|
45
|
+
salt(value: bigint): this;
|
|
44
46
|
maker(value: PublicKey): this;
|
|
45
47
|
market(value: PublicKey): this;
|
|
46
48
|
baseMint(value: PublicKey): this;
|
|
@@ -54,9 +56,9 @@ declare class BaseEnvelope {
|
|
|
54
56
|
price(value: string): this;
|
|
55
57
|
size(value: string): this;
|
|
56
58
|
depositSource(value: DepositSource): this;
|
|
57
|
-
applyScaling(decimals: OrderbookDecimals): this;
|
|
58
59
|
payload(): Omit<SignedOrder, "signature">;
|
|
59
60
|
fieldsNonce(): number | undefined;
|
|
61
|
+
fieldsSalt(): bigint | undefined;
|
|
60
62
|
fieldsMaker(): PublicKey | undefined;
|
|
61
63
|
fieldsMarket(): PublicKey | undefined;
|
|
62
64
|
fieldsBaseMint(): PublicKey | undefined;
|
|
@@ -66,12 +68,20 @@ declare class BaseEnvelope {
|
|
|
66
68
|
fieldsAmountOut(): bigint | undefined;
|
|
67
69
|
fieldsExpiration(): bigint;
|
|
68
70
|
fieldsDepositSource(): DepositSource | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Auto-scale price/size to raw amounts if the user provided human-readable
|
|
73
|
+
* strings but not pre-computed amounts. Skips if amounts are already set.
|
|
74
|
+
*/
|
|
75
|
+
protected autoScale(orderbook: OrderBookPair): void;
|
|
69
76
|
protected finalizeWithHexSignature(signatureHex: string, orderbookId: string, options?: SubmitRequestOptions): SubmitOrderRequest;
|
|
70
77
|
}
|
|
71
78
|
export declare class LimitOrderEnvelope extends BaseEnvelope implements OrderEnvelope {
|
|
79
|
+
private timeInForceValue?;
|
|
72
80
|
static new(): LimitOrderEnvelope;
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
timeInForce(value: TimeInForce): this;
|
|
82
|
+
fieldsTimeInForce(): TimeInForce | undefined;
|
|
83
|
+
sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
84
|
+
finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
75
85
|
}
|
|
76
86
|
export declare class TriggerOrderEnvelope extends BaseEnvelope implements OrderEnvelope {
|
|
77
87
|
private timeInForceValue?;
|
|
@@ -90,8 +100,8 @@ export declare class TriggerOrderEnvelope extends BaseEnvelope implements OrderE
|
|
|
90
100
|
fieldsTimeInForce(): TimeInForce | undefined;
|
|
91
101
|
fieldsTriggerPrice(): number | undefined;
|
|
92
102
|
fieldsTriggerType(): TriggerType | undefined;
|
|
93
|
-
sign(keypair: Keypair,
|
|
94
|
-
finalize(signatureBase58: string,
|
|
103
|
+
sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
104
|
+
finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
95
105
|
private requireTriggerFields;
|
|
96
106
|
}
|
|
97
107
|
export declare function signPayload(payload: Omit<SignedOrder, "signature">, keypair: Keypair): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,WAAW,EACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtD,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAgCD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,GAAG,IAAI,IAAI,CAAC;IACZ,GAAG,IAAI,IAAI,CAAC;IACZ,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB,CAAC;IACrE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB,CAAC;CACjF;AAED,cAAM,YAAY;IAChB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAE3B,MAAM,CAAC,EAAE,WAAW;IAIhC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK7B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK9B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKhC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,GAAG,IAAI,IAAI;IAKX,GAAG,IAAI,IAAI;IAKX,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAIzC,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,WAAW,IAAI,SAAS,GAAG,SAAS;IAIpC,YAAY,IAAI,SAAS,GAAG,SAAS;IAIrC,cAAc,IAAI,SAAS,GAAG,SAAS;IAIvC,eAAe,IAAI,SAAS,GAAG,SAAS;IAIxC,UAAU,IAAI,SAAS,GAAG,SAAS;IAInC,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,gBAAgB,IAAI,MAAM;IAI1B,mBAAmB,IAAI,aAAa,GAAG,SAAS;IAIhD;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAiBnD,SAAS,CAAC,wBAAwB,CAChC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,kBAAkB;CActB;AAED,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,aAAa;IAC3E,OAAO,CAAC,gBAAgB,CAAC,CAAc;IAEvC,MAAM,CAAC,GAAG,IAAI,kBAAkB;IAIhC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKrC,iBAAiB,IAAI,WAAW,GAAG,SAAS;IAI5C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB;IASpE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB;CAOhF;AAED,qBAAa,oBAAqB,SAAQ,YAAa,YAAW,aAAa;IAC7E,OAAO,CAAC,gBAAgB,CAAC,CAAc;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAc;IAEvC,MAAM,CAAC,GAAG,IAAI,oBAAoB;IAIlC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKrC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKrC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,GAAG,IAAI,IAAI;IAKX,GAAG,IAAI,IAAI;IAKX,GAAG,IAAI,IAAI;IAKX,GAAG,IAAI,IAAI;IAKX,iBAAiB,IAAI,WAAW,GAAG,SAAS;IAI5C,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIxC,iBAAiB,IAAI,WAAW,GAAG,SAAS;IAI5C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB;IAYpE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,kBAAkB;IAW/E,OAAO,CAAC,oBAAoB;CAQ7B;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACvC,OAAO,EAAE,OAAO,GACf,MAAM,CAER"}
|
package/dist/program/envelope.js
CHANGED
|
@@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TriggerOrderEnvelope = exports.LimitOrderEnvelope = void 0;
|
|
7
7
|
exports.signPayload = signPayload;
|
|
8
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
9
|
const bs58_1 = __importDefault(require("bs58"));
|
|
9
10
|
const scaling_1 = require("../shared/scaling");
|
|
11
|
+
const orderbook_1 = require("../domain/orderbook");
|
|
10
12
|
const error_1 = require("./error");
|
|
11
13
|
const orders_1 = require("./orders");
|
|
12
14
|
const types_1 = require("./types");
|
|
@@ -34,6 +36,7 @@ function toUnsignedOrder(fields) {
|
|
|
34
36
|
throw error_1.ProgramSdkError.missingField("amount_out");
|
|
35
37
|
return {
|
|
36
38
|
nonce: fields.nonce,
|
|
39
|
+
salt: fields.salt ?? (0, orders_1.generateSalt)(),
|
|
37
40
|
maker: fields.maker,
|
|
38
41
|
market: fields.market,
|
|
39
42
|
baseMint: fields.baseMint,
|
|
@@ -53,6 +56,10 @@ class BaseEnvelope {
|
|
|
53
56
|
this.fields.nonce = value;
|
|
54
57
|
return this;
|
|
55
58
|
}
|
|
59
|
+
salt(value) {
|
|
60
|
+
this.fields.salt = value;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
56
63
|
maker(value) {
|
|
57
64
|
this.fields.maker = value;
|
|
58
65
|
return this;
|
|
@@ -105,24 +112,15 @@ class BaseEnvelope {
|
|
|
105
112
|
this.fields.depositSource = value;
|
|
106
113
|
return this;
|
|
107
114
|
}
|
|
108
|
-
applyScaling(decimals) {
|
|
109
|
-
if (!this.fields.priceRaw)
|
|
110
|
-
throw error_1.ProgramSdkError.missingField("price");
|
|
111
|
-
if (!this.fields.sizeRaw)
|
|
112
|
-
throw error_1.ProgramSdkError.missingField("size");
|
|
113
|
-
if (this.fields.side === undefined)
|
|
114
|
-
throw error_1.ProgramSdkError.missingField("side");
|
|
115
|
-
const scaled = (0, scaling_1.scalePriceSize)(this.fields.priceRaw, this.fields.sizeRaw, this.fields.side, decimals);
|
|
116
|
-
this.fields.amountIn = scaled.amountIn;
|
|
117
|
-
this.fields.amountOut = scaled.amountOut;
|
|
118
|
-
return this;
|
|
119
|
-
}
|
|
120
115
|
payload() {
|
|
121
116
|
return toUnsignedOrder(this.fields);
|
|
122
117
|
}
|
|
123
118
|
fieldsNonce() {
|
|
124
119
|
return this.fields.nonce;
|
|
125
120
|
}
|
|
121
|
+
fieldsSalt() {
|
|
122
|
+
return this.fields.salt;
|
|
123
|
+
}
|
|
126
124
|
fieldsMaker() {
|
|
127
125
|
return this.fields.maker;
|
|
128
126
|
}
|
|
@@ -150,6 +148,27 @@ class BaseEnvelope {
|
|
|
150
148
|
fieldsDepositSource() {
|
|
151
149
|
return this.fields.depositSource;
|
|
152
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Auto-scale price/size to raw amounts if the user provided human-readable
|
|
153
|
+
* strings but not pre-computed amounts. Skips if amounts are already set.
|
|
154
|
+
*/
|
|
155
|
+
autoScale(orderbook) {
|
|
156
|
+
if (this.fields.amountIn !== undefined || this.fields.amountOut !== undefined) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (!this.fields.priceRaw)
|
|
160
|
+
throw error_1.ProgramSdkError.missingField("price");
|
|
161
|
+
if (!this.fields.sizeRaw)
|
|
162
|
+
throw error_1.ProgramSdkError.missingField("size");
|
|
163
|
+
if (this.fields.side === undefined)
|
|
164
|
+
throw error_1.ProgramSdkError.missingField("side");
|
|
165
|
+
const decimals = (0, orderbook_1.orderbookDecimals)(orderbook);
|
|
166
|
+
const price = new decimal_js_1.default(this.fields.priceRaw);
|
|
167
|
+
const alignedPrice = (0, scaling_1.alignPriceToTick)(price, decimals);
|
|
168
|
+
const scaled = (0, scaling_1.scalePriceSize)(alignedPrice, this.fields.sizeRaw, this.fields.side, decimals);
|
|
169
|
+
this.fields.amountIn = scaled.amountIn;
|
|
170
|
+
this.fields.amountOut = scaled.amountOut;
|
|
171
|
+
}
|
|
153
172
|
finalizeWithHexSignature(signatureHex, orderbookId, options = {}) {
|
|
154
173
|
const unsigned = toUnsignedOrder(this.fields);
|
|
155
174
|
return (0, orders_1.toSubmitRequest)({
|
|
@@ -162,18 +181,31 @@ class BaseEnvelope {
|
|
|
162
181
|
}
|
|
163
182
|
}
|
|
164
183
|
class LimitOrderEnvelope extends BaseEnvelope {
|
|
184
|
+
timeInForceValue;
|
|
165
185
|
static new() {
|
|
166
186
|
return new LimitOrderEnvelope();
|
|
167
187
|
}
|
|
168
|
-
|
|
188
|
+
timeInForce(value) {
|
|
189
|
+
this.timeInForceValue = value;
|
|
190
|
+
return this;
|
|
191
|
+
}
|
|
192
|
+
fieldsTimeInForce() {
|
|
193
|
+
return this.timeInForceValue;
|
|
194
|
+
}
|
|
195
|
+
sign(keypair, orderbook) {
|
|
196
|
+
this.autoScale(orderbook);
|
|
169
197
|
const signed = (0, orders_1.signOrderFull)(this.payload(), keypair);
|
|
170
|
-
return (0, orders_1.toSubmitRequest)(signed, orderbookId, {
|
|
198
|
+
return (0, orders_1.toSubmitRequest)(signed, orderbook.orderbookId, {
|
|
199
|
+
timeInForce: this.timeInForceValue,
|
|
171
200
|
depositSource: this.fieldsDepositSource(),
|
|
172
201
|
});
|
|
173
202
|
}
|
|
174
|
-
finalize(signatureBase58,
|
|
203
|
+
finalize(signatureBase58, orderbook) {
|
|
204
|
+
this.autoScale(orderbook);
|
|
175
205
|
const signatureHex = Buffer.from(bs58_1.default.decode(signatureBase58)).toString("hex");
|
|
176
|
-
return this.finalizeWithHexSignature(signatureHex, orderbookId
|
|
206
|
+
return this.finalizeWithHexSignature(signatureHex, orderbook.orderbookId, {
|
|
207
|
+
timeInForce: this.timeInForceValue,
|
|
208
|
+
});
|
|
177
209
|
}
|
|
178
210
|
}
|
|
179
211
|
exports.LimitOrderEnvelope = LimitOrderEnvelope;
|
|
@@ -231,20 +263,22 @@ class TriggerOrderEnvelope extends BaseEnvelope {
|
|
|
231
263
|
fieldsTriggerType() {
|
|
232
264
|
return this.triggerTypeValue;
|
|
233
265
|
}
|
|
234
|
-
sign(keypair,
|
|
266
|
+
sign(keypair, orderbook) {
|
|
235
267
|
this.requireTriggerFields();
|
|
268
|
+
this.autoScale(orderbook);
|
|
236
269
|
const signed = (0, orders_1.signOrderFull)(this.payload(), keypair);
|
|
237
|
-
return (0, orders_1.toSubmitRequest)(signed, orderbookId, {
|
|
270
|
+
return (0, orders_1.toSubmitRequest)(signed, orderbook.orderbookId, {
|
|
238
271
|
timeInForce: this.timeInForceValue,
|
|
239
272
|
triggerPrice: this.triggerPriceValue,
|
|
240
273
|
triggerType: this.triggerTypeValue,
|
|
241
274
|
depositSource: this.fieldsDepositSource(),
|
|
242
275
|
});
|
|
243
276
|
}
|
|
244
|
-
finalize(signatureBase58,
|
|
277
|
+
finalize(signatureBase58, orderbook) {
|
|
245
278
|
this.requireTriggerFields();
|
|
279
|
+
this.autoScale(orderbook);
|
|
246
280
|
const signatureHex = Buffer.from(bs58_1.default.decode(signatureBase58)).toString("hex");
|
|
247
|
-
return this.finalizeWithHexSignature(signatureHex, orderbookId, {
|
|
281
|
+
return this.finalizeWithHexSignature(signatureHex, orderbook.orderbookId, {
|
|
248
282
|
timeInForce: this.timeInForceValue,
|
|
249
283
|
triggerPrice: this.triggerPriceValue,
|
|
250
284
|
triggerType: this.triggerTypeValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"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","sourcesContent":["import { Keypair, PublicKey } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport { scalePriceSize, type OrderbookDecimals } from \"../shared/scaling\";\nimport type {\n DepositSource,\n SubmitOrderRequest,\n TimeInForce,\n TriggerType,\n} from \"../shared\";\nimport { ProgramSdkError } from \"./error\";\nimport {\n signOrder,\n signOrderFull,\n toSubmitRequest,\n type SubmitRequestOptions,\n} from \"./orders\";\nimport { OrderSide, type SignedOrder } from \"./types\";\n\ninterface OrderFields {\n nonce?: number;\n maker?: PublicKey;\n market?: PublicKey;\n baseMint?: PublicKey;\n quoteMint?: PublicKey;\n side?: OrderSide;\n amountIn?: bigint;\n amountOut?: bigint;\n expiration: bigint;\n priceRaw?: string;\n sizeRaw?: string;\n depositSource?: DepositSource;\n}\n\nfunction defaultFields(): OrderFields {\n return {\n expiration: 0n,\n };\n}\n\nfunction toUnsignedOrder(fields: OrderFields): Omit<SignedOrder, \"signature\"> {\n if (fields.nonce === undefined) throw ProgramSdkError.missingField(\"nonce\");\n if (!fields.maker) throw ProgramSdkError.missingField(\"maker\");\n if (!fields.market) throw ProgramSdkError.missingField(\"market\");\n if (!fields.baseMint) throw ProgramSdkError.missingField(\"base_mint\");\n if (!fields.quoteMint) throw ProgramSdkError.missingField(\"quote_mint\");\n if (fields.side === undefined) throw ProgramSdkError.missingField(\"side\");\n if (fields.amountIn === undefined) throw ProgramSdkError.missingField(\"amount_in\");\n if (fields.amountOut === undefined) throw ProgramSdkError.missingField(\"amount_out\");\n\n return {\n nonce: fields.nonce,\n maker: fields.maker,\n market: fields.market,\n baseMint: fields.baseMint,\n quoteMint: fields.quoteMint,\n side: fields.side,\n amountIn: fields.amountIn,\n amountOut: fields.amountOut,\n expiration: fields.expiration,\n };\n}\n\nexport interface OrderEnvelope {\n nonce(value: number): this;\n maker(value: PublicKey): this;\n market(value: PublicKey): this;\n baseMint(value: PublicKey): this;\n quoteMint(value: PublicKey): this;\n bid(): this;\n ask(): this;\n side(value: OrderSide): this;\n amountIn(value: bigint): this;\n amountOut(value: bigint): this;\n expiration(value: bigint): this;\n price(value: string): this;\n size(value: string): this;\n depositSource(value: DepositSource): this;\n applyScaling(decimals: OrderbookDecimals): this;\n payload(): Omit<SignedOrder, \"signature\">;\n sign(keypair: Keypair, orderbookId: string): SubmitOrderRequest;\n finalize(signatureBase58: string, orderbookId: string): SubmitOrderRequest;\n}\n\nclass BaseEnvelope {\n protected readonly fields: OrderFields;\n\n constructor(fields?: OrderFields) {\n this.fields = fields ? { ...fields } : defaultFields();\n }\n\n nonce(value: number): this {\n this.fields.nonce = value;\n return this;\n }\n\n maker(value: PublicKey): this {\n this.fields.maker = value;\n return this;\n }\n\n market(value: PublicKey): this {\n this.fields.market = value;\n return this;\n }\n\n baseMint(value: PublicKey): this {\n this.fields.baseMint = value;\n return this;\n }\n\n quoteMint(value: PublicKey): this {\n this.fields.quoteMint = value;\n return this;\n }\n\n bid(): this {\n this.fields.side = OrderSide.BID;\n return this;\n }\n\n ask(): this {\n this.fields.side = OrderSide.ASK;\n return this;\n }\n\n side(value: OrderSide): this {\n this.fields.side = value;\n return this;\n }\n\n amountIn(value: bigint): this {\n this.fields.amountIn = value;\n return this;\n }\n\n amountOut(value: bigint): this {\n this.fields.amountOut = value;\n return this;\n }\n\n expiration(value: bigint): this {\n this.fields.expiration = value;\n return this;\n }\n\n price(value: string): this {\n this.fields.priceRaw = value;\n return this;\n }\n\n size(value: string): this {\n this.fields.sizeRaw = value;\n return this;\n }\n\n depositSource(value: DepositSource): this {\n this.fields.depositSource = value;\n return this;\n }\n\n applyScaling(decimals: OrderbookDecimals): this {\n if (!this.fields.priceRaw) throw ProgramSdkError.missingField(\"price\");\n if (!this.fields.sizeRaw) throw ProgramSdkError.missingField(\"size\");\n if (this.fields.side === undefined) throw ProgramSdkError.missingField(\"side\");\n\n const scaled = scalePriceSize(this.fields.priceRaw, this.fields.sizeRaw, this.fields.side, decimals);\n this.fields.amountIn = scaled.amountIn;\n this.fields.amountOut = scaled.amountOut;\n return this;\n }\n\n payload(): Omit<SignedOrder, \"signature\"> {\n return toUnsignedOrder(this.fields);\n }\n\n fieldsNonce(): number | undefined {\n return this.fields.nonce;\n }\n\n fieldsMaker(): PublicKey | undefined {\n return this.fields.maker;\n }\n\n fieldsMarket(): PublicKey | undefined {\n return this.fields.market;\n }\n\n fieldsBaseMint(): PublicKey | undefined {\n return this.fields.baseMint;\n }\n\n fieldsQuoteMint(): PublicKey | undefined {\n return this.fields.quoteMint;\n }\n\n fieldsSide(): OrderSide | undefined {\n return this.fields.side;\n }\n\n fieldsAmountIn(): bigint | undefined {\n return this.fields.amountIn;\n }\n\n fieldsAmountOut(): bigint | undefined {\n return this.fields.amountOut;\n }\n\n fieldsExpiration(): bigint {\n return this.fields.expiration;\n }\n\n fieldsDepositSource(): DepositSource | undefined {\n return this.fields.depositSource;\n }\n\n protected finalizeWithHexSignature(\n signatureHex: string,\n orderbookId: string,\n options: SubmitRequestOptions = {}\n ): SubmitOrderRequest {\n const unsigned = toUnsignedOrder(this.fields);\n return toSubmitRequest(\n {\n ...unsigned,\n signature: Buffer.from(signatureHex, \"hex\"),\n },\n orderbookId,\n {\n ...options,\n depositSource: this.fields.depositSource,\n }\n );\n }\n}\n\nexport class LimitOrderEnvelope extends BaseEnvelope implements OrderEnvelope {\n static new(): LimitOrderEnvelope {\n return new LimitOrderEnvelope();\n }\n\n sign(keypair: Keypair, orderbookId: string): SubmitOrderRequest {\n const signed = signOrderFull(this.payload(), keypair);\n return toSubmitRequest(signed, orderbookId, {\n depositSource: this.fieldsDepositSource(),\n });\n }\n\n finalize(signatureBase58: string, orderbookId: string): SubmitOrderRequest {\n const signatureHex = Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\");\n return this.finalizeWithHexSignature(signatureHex, orderbookId);\n }\n}\n\nexport class TriggerOrderEnvelope extends BaseEnvelope implements OrderEnvelope {\n private timeInForceValue?: TimeInForce;\n private triggerPriceValue?: number;\n private triggerTypeValue?: TriggerType;\n\n static new(): TriggerOrderEnvelope {\n return new TriggerOrderEnvelope();\n }\n\n timeInForce(value: TimeInForce): this {\n this.timeInForceValue = value;\n return this;\n }\n\n triggerPrice(value: number): this {\n this.triggerPriceValue = value;\n return this;\n }\n\n triggerType(value: TriggerType): this {\n this.triggerTypeValue = value;\n return this;\n }\n\n takeProfit(price: number): this {\n this.triggerPriceValue = price;\n this.triggerTypeValue = \"TP\" as TriggerType;\n return this;\n }\n\n stopLoss(price: number): this {\n this.triggerPriceValue = price;\n this.triggerTypeValue = \"SL\" as TriggerType;\n return this;\n }\n\n gtc(): this {\n this.timeInForceValue = \"GTC\" as TimeInForce;\n return this;\n }\n\n ioc(): this {\n this.timeInForceValue = \"IOC\" as TimeInForce;\n return this;\n }\n\n fok(): this {\n this.timeInForceValue = \"FOK\" as TimeInForce;\n return this;\n }\n\n alo(): this {\n this.timeInForceValue = \"ALO\" as TimeInForce;\n return this;\n }\n\n fieldsTimeInForce(): TimeInForce | undefined {\n return this.timeInForceValue;\n }\n\n fieldsTriggerPrice(): number | undefined {\n return this.triggerPriceValue;\n }\n\n fieldsTriggerType(): TriggerType | undefined {\n return this.triggerTypeValue;\n }\n\n sign(keypair: Keypair, orderbookId: string): SubmitOrderRequest {\n this.requireTriggerFields();\n const signed = signOrderFull(this.payload(), keypair);\n return toSubmitRequest(signed, orderbookId, {\n timeInForce: this.timeInForceValue,\n triggerPrice: this.triggerPriceValue,\n triggerType: this.triggerTypeValue,\n depositSource: this.fieldsDepositSource(),\n });\n }\n\n finalize(signatureBase58: string, orderbookId: string): SubmitOrderRequest {\n this.requireTriggerFields();\n const signatureHex = Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\");\n return this.finalizeWithHexSignature(signatureHex, orderbookId, {\n timeInForce: this.timeInForceValue,\n triggerPrice: this.triggerPriceValue,\n triggerType: this.triggerTypeValue,\n });\n }\n\n private requireTriggerFields(): void {\n if (this.triggerPriceValue === undefined) {\n throw ProgramSdkError.missingField(\"trigger_price\");\n }\n if (!this.triggerTypeValue) {\n throw ProgramSdkError.missingField(\"trigger_type\");\n }\n }\n}\n\nexport function signPayload(\n payload: Omit<SignedOrder, \"signature\">,\n keypair: Keypair\n): string {\n return signOrder({ ...payload, signature: Buffer.alloc(64) }, keypair).toString(\"hex\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"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","sourcesContent":["import Decimal from \"decimal.js\";\nimport { Keypair, PublicKey } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport { alignPriceToTick, scalePriceSize } from \"../shared/scaling\";\nimport { orderbookDecimals, type OrderBookPair } from \"../domain/orderbook\";\nimport type {\n DepositSource,\n SubmitOrderRequest,\n TimeInForce,\n TriggerType,\n} from \"../shared\";\nimport { ProgramSdkError } from \"./error\";\nimport {\n generateSalt,\n signOrder,\n signOrderFull,\n toSubmitRequest,\n type SubmitRequestOptions,\n} from \"./orders\";\nimport { OrderSide, type SignedOrder } from \"./types\";\n\ninterface OrderFields {\n nonce?: number;\n salt?: bigint;\n maker?: PublicKey;\n market?: PublicKey;\n baseMint?: PublicKey;\n quoteMint?: PublicKey;\n side?: OrderSide;\n amountIn?: bigint;\n amountOut?: bigint;\n expiration: bigint;\n priceRaw?: string;\n sizeRaw?: string;\n depositSource?: DepositSource;\n}\n\nfunction defaultFields(): OrderFields {\n return {\n expiration: 0n,\n };\n}\n\nfunction toUnsignedOrder(fields: OrderFields): Omit<SignedOrder, \"signature\"> {\n if (fields.nonce === undefined) throw ProgramSdkError.missingField(\"nonce\");\n if (!fields.maker) throw ProgramSdkError.missingField(\"maker\");\n if (!fields.market) throw ProgramSdkError.missingField(\"market\");\n if (!fields.baseMint) throw ProgramSdkError.missingField(\"base_mint\");\n if (!fields.quoteMint) throw ProgramSdkError.missingField(\"quote_mint\");\n if (fields.side === undefined) throw ProgramSdkError.missingField(\"side\");\n if (fields.amountIn === undefined) throw ProgramSdkError.missingField(\"amount_in\");\n if (fields.amountOut === undefined) throw ProgramSdkError.missingField(\"amount_out\");\n\n return {\n nonce: fields.nonce,\n salt: fields.salt ?? generateSalt(),\n maker: fields.maker,\n market: fields.market,\n baseMint: fields.baseMint,\n quoteMint: fields.quoteMint,\n side: fields.side,\n amountIn: fields.amountIn,\n amountOut: fields.amountOut,\n expiration: fields.expiration,\n };\n}\n\nexport interface OrderEnvelope {\n nonce(value: number): this;\n salt(value: bigint): this;\n maker(value: PublicKey): this;\n market(value: PublicKey): this;\n baseMint(value: PublicKey): this;\n quoteMint(value: PublicKey): this;\n bid(): this;\n ask(): this;\n side(value: OrderSide): this;\n amountIn(value: bigint): this;\n amountOut(value: bigint): this;\n expiration(value: bigint): this;\n price(value: string): this;\n size(value: string): this;\n depositSource(value: DepositSource): this;\n payload(): Omit<SignedOrder, \"signature\">;\n sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;\n finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;\n}\n\nclass BaseEnvelope {\n protected readonly fields: OrderFields;\n\n constructor(fields?: OrderFields) {\n this.fields = fields ? { ...fields } : defaultFields();\n }\n\n nonce(value: number): this {\n this.fields.nonce = value;\n return this;\n }\n\n salt(value: bigint): this {\n this.fields.salt = value;\n return this;\n }\n\n maker(value: PublicKey): this {\n this.fields.maker = value;\n return this;\n }\n\n market(value: PublicKey): this {\n this.fields.market = value;\n return this;\n }\n\n baseMint(value: PublicKey): this {\n this.fields.baseMint = value;\n return this;\n }\n\n quoteMint(value: PublicKey): this {\n this.fields.quoteMint = value;\n return this;\n }\n\n bid(): this {\n this.fields.side = OrderSide.BID;\n return this;\n }\n\n ask(): this {\n this.fields.side = OrderSide.ASK;\n return this;\n }\n\n side(value: OrderSide): this {\n this.fields.side = value;\n return this;\n }\n\n amountIn(value: bigint): this {\n this.fields.amountIn = value;\n return this;\n }\n\n amountOut(value: bigint): this {\n this.fields.amountOut = value;\n return this;\n }\n\n expiration(value: bigint): this {\n this.fields.expiration = value;\n return this;\n }\n\n price(value: string): this {\n this.fields.priceRaw = value;\n return this;\n }\n\n size(value: string): this {\n this.fields.sizeRaw = value;\n return this;\n }\n\n depositSource(value: DepositSource): this {\n this.fields.depositSource = value;\n return this;\n }\n\n payload(): Omit<SignedOrder, \"signature\"> {\n return toUnsignedOrder(this.fields);\n }\n\n fieldsNonce(): number | undefined {\n return this.fields.nonce;\n }\n\n fieldsSalt(): bigint | undefined {\n return this.fields.salt;\n }\n\n fieldsMaker(): PublicKey | undefined {\n return this.fields.maker;\n }\n\n fieldsMarket(): PublicKey | undefined {\n return this.fields.market;\n }\n\n fieldsBaseMint(): PublicKey | undefined {\n return this.fields.baseMint;\n }\n\n fieldsQuoteMint(): PublicKey | undefined {\n return this.fields.quoteMint;\n }\n\n fieldsSide(): OrderSide | undefined {\n return this.fields.side;\n }\n\n fieldsAmountIn(): bigint | undefined {\n return this.fields.amountIn;\n }\n\n fieldsAmountOut(): bigint | undefined {\n return this.fields.amountOut;\n }\n\n fieldsExpiration(): bigint {\n return this.fields.expiration;\n }\n\n fieldsDepositSource(): DepositSource | undefined {\n return this.fields.depositSource;\n }\n\n /**\n * Auto-scale price/size to raw amounts if the user provided human-readable\n * strings but not pre-computed amounts. Skips if amounts are already set.\n */\n protected autoScale(orderbook: OrderBookPair): void {\n if (this.fields.amountIn !== undefined || this.fields.amountOut !== undefined) {\n return;\n }\n\n if (!this.fields.priceRaw) throw ProgramSdkError.missingField(\"price\");\n if (!this.fields.sizeRaw) throw ProgramSdkError.missingField(\"size\");\n if (this.fields.side === undefined) throw ProgramSdkError.missingField(\"side\");\n\n const decimals = orderbookDecimals(orderbook);\n const price = new Decimal(this.fields.priceRaw);\n const alignedPrice = alignPriceToTick(price, decimals);\n const scaled = scalePriceSize(alignedPrice, this.fields.sizeRaw, this.fields.side, decimals);\n this.fields.amountIn = scaled.amountIn;\n this.fields.amountOut = scaled.amountOut;\n }\n\n protected finalizeWithHexSignature(\n signatureHex: string,\n orderbookId: string,\n options: SubmitRequestOptions = {}\n ): SubmitOrderRequest {\n const unsigned = toUnsignedOrder(this.fields);\n return toSubmitRequest(\n {\n ...unsigned,\n signature: Buffer.from(signatureHex, \"hex\"),\n },\n orderbookId,\n {\n ...options,\n depositSource: this.fields.depositSource,\n }\n );\n }\n}\n\nexport class LimitOrderEnvelope extends BaseEnvelope implements OrderEnvelope {\n private timeInForceValue?: TimeInForce;\n\n static new(): LimitOrderEnvelope {\n return new LimitOrderEnvelope();\n }\n\n timeInForce(value: TimeInForce): this {\n this.timeInForceValue = value;\n return this;\n }\n\n fieldsTimeInForce(): TimeInForce | undefined {\n return this.timeInForceValue;\n }\n\n sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest {\n this.autoScale(orderbook);\n const signed = signOrderFull(this.payload(), keypair);\n return toSubmitRequest(signed, orderbook.orderbookId, {\n timeInForce: this.timeInForceValue,\n depositSource: this.fieldsDepositSource(),\n });\n }\n\n finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest {\n this.autoScale(orderbook);\n const signatureHex = Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\");\n return this.finalizeWithHexSignature(signatureHex, orderbook.orderbookId, {\n timeInForce: this.timeInForceValue,\n });\n }\n}\n\nexport class TriggerOrderEnvelope extends BaseEnvelope implements OrderEnvelope {\n private timeInForceValue?: TimeInForce;\n private triggerPriceValue?: number;\n private triggerTypeValue?: TriggerType;\n\n static new(): TriggerOrderEnvelope {\n return new TriggerOrderEnvelope();\n }\n\n timeInForce(value: TimeInForce): this {\n this.timeInForceValue = value;\n return this;\n }\n\n triggerPrice(value: number): this {\n this.triggerPriceValue = value;\n return this;\n }\n\n triggerType(value: TriggerType): this {\n this.triggerTypeValue = value;\n return this;\n }\n\n takeProfit(price: number): this {\n this.triggerPriceValue = price;\n this.triggerTypeValue = \"TP\" as TriggerType;\n return this;\n }\n\n stopLoss(price: number): this {\n this.triggerPriceValue = price;\n this.triggerTypeValue = \"SL\" as TriggerType;\n return this;\n }\n\n gtc(): this {\n this.timeInForceValue = \"GTC\" as TimeInForce;\n return this;\n }\n\n ioc(): this {\n this.timeInForceValue = \"IOC\" as TimeInForce;\n return this;\n }\n\n fok(): this {\n this.timeInForceValue = \"FOK\" as TimeInForce;\n return this;\n }\n\n alo(): this {\n this.timeInForceValue = \"ALO\" as TimeInForce;\n return this;\n }\n\n fieldsTimeInForce(): TimeInForce | undefined {\n return this.timeInForceValue;\n }\n\n fieldsTriggerPrice(): number | undefined {\n return this.triggerPriceValue;\n }\n\n fieldsTriggerType(): TriggerType | undefined {\n return this.triggerTypeValue;\n }\n\n sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest {\n this.requireTriggerFields();\n this.autoScale(orderbook);\n const signed = signOrderFull(this.payload(), keypair);\n return toSubmitRequest(signed, orderbook.orderbookId, {\n timeInForce: this.timeInForceValue,\n triggerPrice: this.triggerPriceValue,\n triggerType: this.triggerTypeValue,\n depositSource: this.fieldsDepositSource(),\n });\n }\n\n finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest {\n this.requireTriggerFields();\n this.autoScale(orderbook);\n const signatureHex = Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\");\n return this.finalizeWithHexSignature(signatureHex, orderbook.orderbookId, {\n timeInForce: this.timeInForceValue,\n triggerPrice: this.triggerPriceValue,\n triggerType: this.triggerTypeValue,\n });\n }\n\n private requireTriggerFields(): void {\n if (this.triggerPriceValue === undefined) {\n throw ProgramSdkError.missingField(\"trigger_price\");\n }\n if (!this.triggerTypeValue) {\n throw ProgramSdkError.missingField(\"trigger_type\");\n }\n }\n}\n\nexport function signPayload(\n payload: Omit<SignedOrder, \"signature\">,\n keypair: Keypair\n): string {\n return signOrder({ ...payload, signature: Buffer.alloc(64) }, keypair).toString(\"hex\");\n}\n"]}
|
package/dist/program/index.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ export { LimitOrderEnvelope, TriggerOrderEnvelope, type OrderEnvelope } from "./
|
|
|
5
5
|
export { ProgramSdkError, ProgramSdkError as SdkError } from "./error";
|
|
6
6
|
export type { ProgramResult, ProgramResult as SdkResult } from "./error";
|
|
7
7
|
export { MarketStatus, OrderSide, } from "./types";
|
|
8
|
-
export type { Exchange, GlobalDepositToken, Market, Position, OrderStatus, UserNonce, Orderbook, SignedOrder, OrderPayload, Order, InitializeParams, CreateMarketParams, OutcomeMetadata, AddDepositMintParams, MintCompleteSetParams, MergeCompleteSetParams, CancelOrderParams, IncrementNonceParams, SettleMarketParams, RedeemWinningsParams, SetPausedParams, SetOperatorParams, WithdrawFromPositionParams, ActivateMarketParams, MatchOrdersMultiParams, SetAuthorityParams, CreateOrderbookParams, WhitelistDepositTokenParams, DepositToGlobalParams, GlobalToMarketDepositParams, InitPositionTokensParams, ExtendPositionTokensParams, MakerFill, DepositAndSwapParams, BuildResult, InitializeAccounts, CreateMarketAccounts, AddDepositMintAccounts, MintCompleteSetAccounts, MergeCompleteSetAccounts, CancelOrderAccounts, IncrementNonceAccounts, SettleMarketAccounts, RedeemWinningsAccounts, ActivateMarketAccounts, MatchOrdersMultiAccounts, BidOrderParams, AskOrderParams, } from "./types";
|
|
8
|
+
export type { Exchange, GlobalDepositToken, Market, Position, OrderStatus, UserNonce, Orderbook, SignedOrder, OrderPayload, Order, InitializeParams, CreateMarketParams, OutcomeMetadata, AddDepositMintParams, MintCompleteSetParams, MergeCompleteSetParams, CancelOrderParams, IncrementNonceParams, SettleMarketParams, RedeemWinningsParams, SetPausedParams, SetOperatorParams, WithdrawFromPositionParams, ActivateMarketParams, MatchOrdersMultiParams, SetAuthorityParams, CreateOrderbookParams, WhitelistDepositTokenParams, DepositToGlobalParams, GlobalToMarketDepositParams, InitPositionTokensParams, ExtendPositionTokensParams, MakerFill, DepositAndSwapParams, WithdrawFromGlobalParams, BuildResult, InitializeAccounts, CreateMarketAccounts, AddDepositMintAccounts, MintCompleteSetAccounts, MergeCompleteSetAccounts, CancelOrderAccounts, IncrementNonceAccounts, SettleMarketAccounts, RedeemWinningsAccounts, ActivateMarketAccounts, MatchOrdersMultiAccounts, BidOrderParams, AskOrderParams, } from "./types";
|
|
9
9
|
export { PROGRAM_ID, ALT_PROGRAM_ID, TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, SYSTEM_PROGRAM_ID, RENT_SYSVAR_ID, INSTRUCTION, DISCRIMINATOR, ACCOUNT_SIZE, ORDER_SIZE, MAX_OUTCOMES, MIN_OUTCOMES, MAX_MAKERS, SEEDS, } from "./constants";
|
|
10
10
|
export { toLeBytes, fromLeBytes, toBeBytes, fromBeBytes, toU8, toU32Le, toU64Le, toI64Le, fromI64Le, keccak256, deriveConditionId, getAssociatedTokenAddress, getConditionalTokenAta, getDepositTokenAta, serializeString, deserializeString, validateOutcomes, validateOutcomeIndex, validate32Bytes, } from "./utils";
|
|
11
11
|
export { getExchangePda, getMarketPda, getVaultPda, getMintAuthorityPda, getConditionalMintPda, getAllConditionalMintPdas, getOrderStatusPda, getUserNoncePda, getPositionPda, getOrderbookPda, getAltPda, getGlobalDepositTokenPda, getUserGlobalDepositPda, getPositionAltPda, pda, } from "./pda";
|
|
12
12
|
export { deserializeExchange, deserializeMarket, deserializePosition, deserializeOrderStatus, deserializeUserNonce, deserializeOrderbook, deserializeGlobalDepositToken, isExchangeAccount, isMarketAccount, isPositionAccount, isOrderStatusAccount, isUserNonceAccount, isOrderbookAccount, isGlobalDepositTokenAccount, } from "./accounts";
|
|
13
|
-
export { buildInitializeIx, buildCreateMarketIx, buildAddDepositMintIx, buildMintCompleteSetIx, buildMergeCompleteSetIx, buildCancelOrderIx, buildIncrementNonceIx, buildSettleMarketIx, buildRedeemWinningsIx, buildSetPausedIx, buildSetOperatorIx, buildWithdrawFromPositionIx, buildActivateMarketIx, buildMatchOrdersMultiIx, buildSetAuthorityIx, buildCreateOrderbookIx, buildWhitelistDepositTokenIx, buildDepositToGlobalIx, buildGlobalToMarketDepositIx, buildInitPositionTokensIx, buildExtendPositionTokensIx, buildDepositAndSwapIx, } from "./instructions";
|
|
14
|
-
export { hashOrder, hashOrderHex, getOrderMessage, signOrder, signOrderFull, verifyOrderSignature, serializeSignedOrder, deserializeSignedOrder, serializeOrder, deserializeOrder, signedOrderToOrder, createBidOrder, createAskOrder, createSignedBidOrder, createSignedAskOrder, isOrderExpired, ordersCanCross, calculateTakerFill, signatureHex, isSigned, applySignature, orderToSigned, deriveOrderbookId, toSubmitRequest, cancelOrderMessage, signCancelOrder, cancelTriggerOrderMessage, signCancelTriggerOrder, cancelAllMessage, generateCancelAllSalt, signCancelAll, is_order_expired, orders_can_cross, calculate_taker_fill, cancel_order_message, cancel_trigger_order_message, cancel_all_message, generate_cancel_all_salt, derive_condition_id, apply_signature, order_to_signed, } from "./orders";
|
|
13
|
+
export { buildInitializeIx, buildCreateMarketIx, buildAddDepositMintIx, buildMintCompleteSetIx, buildMergeCompleteSetIx, buildCancelOrderIx, buildIncrementNonceIx, buildSettleMarketIx, buildRedeemWinningsIx, buildSetPausedIx, buildSetOperatorIx, buildWithdrawFromPositionIx, buildActivateMarketIx, buildMatchOrdersMultiIx, buildSetAuthorityIx, buildCreateOrderbookIx, buildWhitelistDepositTokenIx, buildDepositToGlobalIx, buildGlobalToMarketDepositIx, buildInitPositionTokensIx, buildExtendPositionTokensIx, buildDepositAndSwapIx, buildWithdrawFromGlobalIx, buildInitializeTx, buildCreateMarketTx, buildAddDepositMintTx, buildMintCompleteSetTx, buildMergeCompleteSetTx, buildCancelOrderTx, buildIncrementNonceTx, buildSettleMarketTx, buildRedeemWinningsTx, buildSetPausedTx, buildSetOperatorTx, buildWithdrawFromPositionTx, buildActivateMarketTx, buildMatchOrdersMultiTx, buildSetAuthorityTx, buildCreateOrderbookTx, buildWhitelistDepositTokenTx, buildDepositToGlobalTx, buildGlobalToMarketDepositTx, buildInitPositionTokensTx, buildExtendPositionTokensTx, buildDepositAndSwapTx, buildWithdrawFromGlobalTx, } from "./instructions";
|
|
14
|
+
export { generateSalt, hashOrder, hashOrderHex, getOrderMessage, signOrder, signOrderFull, verifyOrderSignature, serializeSignedOrder, deserializeSignedOrder, serializeOrder, deserializeOrder, signedOrderToOrder, createBidOrder, createAskOrder, createSignedBidOrder, createSignedAskOrder, isOrderExpired, ordersCanCross, calculateTakerFill, signatureHex, isSigned, applySignature, orderToSigned, deriveOrderbookId, toSubmitRequest, cancelOrderMessage, signCancelOrder, cancelTriggerOrderMessage, signCancelTriggerOrder, cancelAllMessage, generateCancelAllSalt, signCancelAll, is_order_expired, orders_can_cross, calculate_taker_fill, cancel_order_message, cancel_trigger_order_message, cancel_all_message, generate_cancel_all_salt, derive_condition_id, apply_signature, order_to_signed, } from "./orders";
|
|
15
15
|
export { OrderBuilder } from "./builder";
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/program/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/program/index.ts"],"names":[],"mappings":"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"}
|