@lightconexyz/lightcone-sdk 0.2.42 → 0.4.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 +22 -37
- package/dist/client.d.ts +19 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -0
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +79 -0
- package/dist/context.js.map +1 -1
- package/dist/domain/market/builders.d.ts +37 -0
- package/dist/domain/market/builders.d.ts.map +1 -0
- package/dist/domain/market/builders.js +114 -0
- package/dist/domain/market/builders.js.map +1 -0
- package/dist/domain/market/client.d.ts +3 -0
- package/dist/domain/market/client.d.ts.map +1 -1
- package/dist/domain/market/client.js +8 -0
- package/dist/domain/market/client.js.map +1 -1
- package/dist/domain/market/index.d.ts +1 -0
- package/dist/domain/market/index.d.ts.map +1 -1
- package/dist/domain/market/index.js +1 -0
- package/dist/domain/market/index.js.map +1 -1
- package/dist/domain/order/client.d.ts +8 -1
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +109 -0
- package/dist/domain/order/client.js.map +1 -1
- package/dist/domain/order/wire.d.ts +15 -0
- package/dist/domain/order/wire.d.ts.map +1 -1
- package/dist/domain/order/wire.js.map +1 -1
- package/dist/domain/orderbook/state.d.ts +4 -14
- package/dist/domain/orderbook/state.d.ts.map +1 -1
- package/dist/domain/orderbook/state.js +26 -66
- package/dist/domain/orderbook/state.js.map +1 -1
- package/dist/domain/position/builders.d.ts +179 -0
- package/dist/domain/position/builders.d.ts.map +1 -0
- package/dist/domain/position/builders.js +501 -0
- package/dist/domain/position/builders.js.map +1 -0
- package/dist/domain/position/client.d.ts +15 -1
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +90 -0
- package/dist/domain/position/client.js.map +1 -1
- package/dist/domain/position/index.d.ts +1 -0
- package/dist/domain/position/index.d.ts.map +1 -1
- package/dist/domain/position/index.js +1 -0
- package/dist/domain/position/index.js.map +1 -1
- package/dist/domain/trade/state.d.ts +1 -3
- package/dist/domain/trade/state.d.ts.map +1 -1
- package/dist/domain/trade/state.js +12 -33
- package/dist/domain/trade/state.js.map +1 -1
- package/dist/error.d.ts +4 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +9 -0
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +6 -3
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js +16 -1
- package/dist/prelude.js.map +1 -1
- package/dist/privy/index.js +25 -25
- package/dist/privy/index.js.map +1 -1
- package/dist/program/envelope.d.ts +20 -15
- package/dist/program/envelope.d.ts.map +1 -1
- package/dist/program/envelope.js +99 -31
- package/dist/program/envelope.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +3 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/signing.d.ts +17 -0
- package/dist/shared/signing.d.ts.map +1 -0
- package/dist/shared/signing.js +13 -0
- package/dist/shared/signing.js.map +1 -0
- package/package.json +2 -1
package/dist/privy/index.js
CHANGED
|
@@ -31,15 +31,15 @@ function bigintToSafeNumber(value, field) {
|
|
|
31
31
|
return Number(value);
|
|
32
32
|
}
|
|
33
33
|
function privyOrderFromLimitEnvelope(envelope, orderbookId) {
|
|
34
|
-
const maker = requireDefined(envelope.
|
|
35
|
-
const nonce = requireDefined(envelope.
|
|
36
|
-
const salt = requireDefined(envelope.
|
|
37
|
-
const market = requireDefined(envelope.
|
|
38
|
-
const baseMint = requireDefined(envelope.
|
|
39
|
-
const quoteMint = requireDefined(envelope.
|
|
40
|
-
const side = requireDefined(envelope.
|
|
41
|
-
const amountIn = requireDefined(envelope.
|
|
42
|
-
const amountOut = requireDefined(envelope.
|
|
34
|
+
const maker = requireDefined(envelope.getMaker(), "maker");
|
|
35
|
+
const nonce = requireDefined(envelope.getNonce(), "nonce");
|
|
36
|
+
const salt = requireDefined(envelope.getSalt(), "salt");
|
|
37
|
+
const market = requireDefined(envelope.getMarket(), "market");
|
|
38
|
+
const baseMint = requireDefined(envelope.getBaseMint(), "base_mint");
|
|
39
|
+
const quoteMint = requireDefined(envelope.getQuoteMint(), "quote_mint");
|
|
40
|
+
const side = requireDefined(envelope.getSide(), "side");
|
|
41
|
+
const amountIn = requireDefined(envelope.getAmountIn(), "amount_in");
|
|
42
|
+
const amountOut = requireDefined(envelope.getAmountOut(), "amount_out");
|
|
43
43
|
return {
|
|
44
44
|
maker: maker.toBase58(),
|
|
45
45
|
nonce,
|
|
@@ -50,21 +50,21 @@ function privyOrderFromLimitEnvelope(envelope, orderbookId) {
|
|
|
50
50
|
side,
|
|
51
51
|
amount_in: bigintToSafeNumber(amountIn, "amount_in"),
|
|
52
52
|
amount_out: bigintToSafeNumber(amountOut, "amount_out"),
|
|
53
|
-
expiration: bigintToSafeNumber(envelope.
|
|
53
|
+
expiration: bigintToSafeNumber(envelope.getExpiration(), "expiration"),
|
|
54
54
|
orderbook_id: orderbookId,
|
|
55
|
-
deposit_source: envelope.
|
|
55
|
+
deposit_source: envelope.getDepositSource(),
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
58
|
function privyOrderFromTriggerEnvelope(envelope, orderbookId) {
|
|
59
|
-
const maker = requireDefined(envelope.
|
|
60
|
-
const nonce = requireDefined(envelope.
|
|
61
|
-
const salt = requireDefined(envelope.
|
|
62
|
-
const market = requireDefined(envelope.
|
|
63
|
-
const baseMint = requireDefined(envelope.
|
|
64
|
-
const quoteMint = requireDefined(envelope.
|
|
65
|
-
const side = requireDefined(envelope.
|
|
66
|
-
const amountIn = requireDefined(envelope.
|
|
67
|
-
const amountOut = requireDefined(envelope.
|
|
59
|
+
const maker = requireDefined(envelope.getMaker(), "maker");
|
|
60
|
+
const nonce = requireDefined(envelope.getNonce(), "nonce");
|
|
61
|
+
const salt = requireDefined(envelope.getSalt(), "salt");
|
|
62
|
+
const market = requireDefined(envelope.getMarket(), "market");
|
|
63
|
+
const baseMint = requireDefined(envelope.getBaseMint(), "base_mint");
|
|
64
|
+
const quoteMint = requireDefined(envelope.getQuoteMint(), "quote_mint");
|
|
65
|
+
const side = requireDefined(envelope.getSide(), "side");
|
|
66
|
+
const amountIn = requireDefined(envelope.getAmountIn(), "amount_in");
|
|
67
|
+
const amountOut = requireDefined(envelope.getAmountOut(), "amount_out");
|
|
68
68
|
return {
|
|
69
69
|
maker: maker.toBase58(),
|
|
70
70
|
nonce,
|
|
@@ -75,12 +75,12 @@ function privyOrderFromTriggerEnvelope(envelope, orderbookId) {
|
|
|
75
75
|
side,
|
|
76
76
|
amount_in: bigintToSafeNumber(amountIn, "amount_in"),
|
|
77
77
|
amount_out: bigintToSafeNumber(amountOut, "amount_out"),
|
|
78
|
-
expiration: bigintToSafeNumber(envelope.
|
|
78
|
+
expiration: bigintToSafeNumber(envelope.getExpiration(), "expiration"),
|
|
79
79
|
orderbook_id: orderbookId,
|
|
80
|
-
tif: envelope.
|
|
81
|
-
trigger_price: envelope.
|
|
82
|
-
trigger_type: envelope.
|
|
83
|
-
deposit_source: envelope.
|
|
80
|
+
tif: envelope.getTimeInForce(),
|
|
81
|
+
trigger_price: envelope.getTriggerPrice(),
|
|
82
|
+
trigger_type: envelope.getTriggerType(),
|
|
83
|
+
deposit_source: envelope.getDepositSource(),
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
//# sourceMappingURL=index.js.map
|
package/dist/privy/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/privy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA+HA,kEA4BC;AAED,sEA+BC;AA5LD,2CAAyB;AA6GzB,SAAS,cAAc,CACrB,KAAoB,EACpB,KAAa;IAEb,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5C,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,2BAA2B,CACzC,QAA4B,EAC5B,WAAmB;IAEnB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/privy/index.ts"],"names":[],"mappings":"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","sourcesContent":["export * from \"./client\";\nimport type { LimitOrderEnvelope, TriggerOrderEnvelope } from \"../program/envelope\";\n\nexport interface SignAndSendTxRequest {\n wallet_id: string;\n base64_tx: string;\n}\n\nexport interface SignAndSendTxResponse {\n hash: string;\n}\n\nexport interface PrivyOrderEnvelope {\n maker: string;\n nonce: number;\n salt: number;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n amount_in: number;\n amount_out: number;\n expiration?: number;\n orderbook_id: string;\n tif?: import(\"../shared\").TimeInForce;\n trigger_price?: number;\n trigger_type?: import(\"../shared\").TriggerType;\n deposit_source?: import(\"../shared\").DepositSource;\n}\n\nexport interface SignAndSendOrderRequest {\n wallet_id: string;\n order: PrivyOrderEnvelope;\n}\n\nexport type CancelTarget =\n | { cancel_type: \"limit\"; order_hash: string }\n | { cancel_type: \"trigger\"; trigger_order_id: string };\n\nexport type SignAndCancelOrderRequest = {\n wallet_id: string;\n maker: string;\n} & CancelTarget;\n\nexport interface SignAndCancelAllRequest {\n wallet_id: string;\n user_pubkey: string;\n orderbook_id: string;\n timestamp: number;\n salt: string;\n}\n\nexport interface ExportWalletRequest {\n wallet_id: string;\n decode_pubkey_base64: string;\n}\n\nexport interface ExportWalletResponse {\n encryption_type: string;\n ciphertext: string;\n encapsulated_key: string;\n}\n\nexport interface OrderFill {\n counterparty: string;\n counterparty_order_hash: string;\n fill_amount: string;\n price: string;\n is_maker: boolean;\n}\n\nexport interface LimitOrderResponse {\n order_hash: string;\n status: string;\n remaining: string;\n filled: string;\n fills: OrderFill[];\n}\n\nexport interface TriggerOrderResponse {\n trigger_order_id: string;\n order_hash: string;\n status: string;\n}\n\nexport type SignAndSendOrderResponse = LimitOrderResponse | TriggerOrderResponse;\n\nexport interface LimitCancelResponse {\n status: string;\n order_hash: string;\n remaining: string;\n}\n\nexport interface TriggerCancelResponse {\n status: string;\n trigger_order_id: string;\n}\n\nexport type SignAndCancelOrderResponse = LimitCancelResponse | TriggerCancelResponse;\n\nexport interface SignAndCancelAllResponse {\n status: string;\n user_pubkey: string;\n orderbook_id: string;\n cancelled_order_hashes: string[];\n count: number;\n message: string;\n}\n\nfunction requireDefined<T>(\n value: T | undefined,\n field: string\n): T {\n if (value === undefined) {\n throw new Error(`Missing required field: ${field}`);\n }\n return value;\n}\n\nfunction bigintToSafeNumber(value: bigint, field: string): number {\n const max = BigInt(Number.MAX_SAFE_INTEGER);\n if (value > max || value < -max) {\n throw new Error(`${field} exceeds Number.MAX_SAFE_INTEGER`);\n }\n return Number(value);\n}\n\nexport function privyOrderFromLimitEnvelope(\n envelope: LimitOrderEnvelope,\n orderbookId: string\n): PrivyOrderEnvelope {\n const maker = requireDefined(envelope.getMaker(), \"maker\");\n const nonce = requireDefined(envelope.getNonce(), \"nonce\");\n const salt = requireDefined(envelope.getSalt(), \"salt\");\n const market = requireDefined(envelope.getMarket(), \"market\");\n const baseMint = requireDefined(envelope.getBaseMint(), \"base_mint\");\n const quoteMint = requireDefined(envelope.getQuoteMint(), \"quote_mint\");\n const side = requireDefined(envelope.getSide(), \"side\");\n const amountIn = requireDefined(envelope.getAmountIn(), \"amount_in\");\n const amountOut = requireDefined(envelope.getAmountOut(), \"amount_out\");\n\n return {\n maker: maker.toBase58(),\n nonce,\n salt: bigintToSafeNumber(salt, \"salt\"),\n market_pubkey: market.toBase58(),\n base_token: baseMint.toBase58(),\n quote_token: quoteMint.toBase58(),\n side,\n amount_in: bigintToSafeNumber(amountIn, \"amount_in\"),\n amount_out: bigintToSafeNumber(amountOut, \"amount_out\"),\n expiration: bigintToSafeNumber(envelope.getExpiration(), \"expiration\"),\n orderbook_id: orderbookId,\n deposit_source: envelope.getDepositSource(),\n };\n}\n\nexport function privyOrderFromTriggerEnvelope(\n envelope: TriggerOrderEnvelope,\n orderbookId: string\n): PrivyOrderEnvelope {\n const maker = requireDefined(envelope.getMaker(), \"maker\");\n const nonce = requireDefined(envelope.getNonce(), \"nonce\");\n const salt = requireDefined(envelope.getSalt(), \"salt\");\n const market = requireDefined(envelope.getMarket(), \"market\");\n const baseMint = requireDefined(envelope.getBaseMint(), \"base_mint\");\n const quoteMint = requireDefined(envelope.getQuoteMint(), \"quote_mint\");\n const side = requireDefined(envelope.getSide(), \"side\");\n const amountIn = requireDefined(envelope.getAmountIn(), \"amount_in\");\n const amountOut = requireDefined(envelope.getAmountOut(), \"amount_out\");\n\n return {\n maker: maker.toBase58(),\n nonce,\n salt: bigintToSafeNumber(salt, \"salt\"),\n market_pubkey: market.toBase58(),\n base_token: baseMint.toBase58(),\n quote_token: quoteMint.toBase58(),\n side,\n amount_in: bigintToSafeNumber(amountIn, \"amount_in\"),\n amount_out: bigintToSafeNumber(amountOut, \"amount_out\"),\n expiration: bigintToSafeNumber(envelope.getExpiration(), \"expiration\"),\n orderbook_id: orderbookId,\n tif: envelope.getTimeInForce(),\n trigger_price: envelope.getTriggerPrice(),\n trigger_type: envelope.getTriggerType(),\n deposit_source: envelope.getDepositSource(),\n };\n}\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
2
|
+
import type { ClientContext } from "../context";
|
|
2
3
|
import { type OrderBookPair } from "../domain/orderbook";
|
|
3
4
|
import type { DepositSource, SubmitOrderRequest, TimeInForce, TriggerType } from "../shared";
|
|
5
|
+
import type { SubmitOrderResponse } from "../domain/order/client";
|
|
6
|
+
import type { TriggerOrderResponse } from "../domain/order/client";
|
|
4
7
|
import { type SubmitRequestOptions } from "./orders";
|
|
5
8
|
import { OrderSide, type SignedOrder } from "./types";
|
|
6
9
|
interface OrderFields {
|
|
@@ -57,17 +60,17 @@ declare class BaseEnvelope {
|
|
|
57
60
|
size(value: string): this;
|
|
58
61
|
depositSource(value: DepositSource): this;
|
|
59
62
|
payload(): Omit<SignedOrder, "signature">;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
getNonce(): number | undefined;
|
|
64
|
+
getSalt(): bigint | undefined;
|
|
65
|
+
getMaker(): PublicKey | undefined;
|
|
66
|
+
getMarket(): PublicKey | undefined;
|
|
67
|
+
getBaseMint(): PublicKey | undefined;
|
|
68
|
+
getQuoteMint(): PublicKey | undefined;
|
|
69
|
+
getSide(): OrderSide | undefined;
|
|
70
|
+
getAmountIn(): bigint | undefined;
|
|
71
|
+
getAmountOut(): bigint | undefined;
|
|
72
|
+
getExpiration(): bigint;
|
|
73
|
+
getDepositSource(): DepositSource | undefined;
|
|
71
74
|
/**
|
|
72
75
|
* Auto-scale price/size to raw amounts if the user provided human-readable
|
|
73
76
|
* strings but not pre-computed amounts. Skips if amounts are already set.
|
|
@@ -79,9 +82,10 @@ export declare class LimitOrderEnvelope extends BaseEnvelope implements OrderEnv
|
|
|
79
82
|
private timeInForceValue?;
|
|
80
83
|
static new(): LimitOrderEnvelope;
|
|
81
84
|
timeInForce(value: TimeInForce): this;
|
|
82
|
-
|
|
85
|
+
getTimeInForce(): TimeInForce | undefined;
|
|
83
86
|
sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
84
87
|
finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
88
|
+
submit(client: ClientContext, orderbook: OrderBookPair): Promise<SubmitOrderResponse>;
|
|
85
89
|
}
|
|
86
90
|
export declare class TriggerOrderEnvelope extends BaseEnvelope implements OrderEnvelope {
|
|
87
91
|
private timeInForceValue?;
|
|
@@ -97,11 +101,12 @@ export declare class TriggerOrderEnvelope extends BaseEnvelope implements OrderE
|
|
|
97
101
|
ioc(): this;
|
|
98
102
|
fok(): this;
|
|
99
103
|
alo(): this;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
getTimeInForce(): TimeInForce | undefined;
|
|
105
|
+
getTriggerPrice(): number | undefined;
|
|
106
|
+
getTriggerType(): TriggerType | undefined;
|
|
103
107
|
sign(keypair: Keypair, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
104
108
|
finalize(signatureBase58: string, orderbook: OrderBookPair): SubmitOrderRequest;
|
|
109
|
+
submit(client: ClientContext, orderbook: OrderBookPair): Promise<TriggerOrderResponse>;
|
|
105
110
|
private requireTriggerFields;
|
|
106
111
|
}
|
|
107
112
|
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":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/program/envelope.js
CHANGED
|
@@ -7,9 +7,14 @@ exports.TriggerOrderEnvelope = exports.LimitOrderEnvelope = void 0;
|
|
|
7
7
|
exports.signPayload = signPayload;
|
|
8
8
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
9
9
|
const bs58_1 = __importDefault(require("bs58"));
|
|
10
|
+
const context_1 = require("../context");
|
|
11
|
+
const error_1 = require("../error");
|
|
12
|
+
const http_1 = require("../http");
|
|
13
|
+
const privy_1 = require("../privy");
|
|
10
14
|
const scaling_1 = require("../shared/scaling");
|
|
15
|
+
const signing_1 = require("../shared/signing");
|
|
11
16
|
const orderbook_1 = require("../domain/orderbook");
|
|
12
|
-
const
|
|
17
|
+
const error_2 = require("./error");
|
|
13
18
|
const orders_1 = require("./orders");
|
|
14
19
|
const types_1 = require("./types");
|
|
15
20
|
function defaultFields() {
|
|
@@ -19,21 +24,21 @@ function defaultFields() {
|
|
|
19
24
|
}
|
|
20
25
|
function toUnsignedOrder(fields) {
|
|
21
26
|
if (fields.nonce === undefined)
|
|
22
|
-
throw
|
|
27
|
+
throw error_2.ProgramSdkError.missingField("nonce");
|
|
23
28
|
if (!fields.maker)
|
|
24
|
-
throw
|
|
29
|
+
throw error_2.ProgramSdkError.missingField("maker");
|
|
25
30
|
if (!fields.market)
|
|
26
|
-
throw
|
|
31
|
+
throw error_2.ProgramSdkError.missingField("market");
|
|
27
32
|
if (!fields.baseMint)
|
|
28
|
-
throw
|
|
33
|
+
throw error_2.ProgramSdkError.missingField("base_mint");
|
|
29
34
|
if (!fields.quoteMint)
|
|
30
|
-
throw
|
|
35
|
+
throw error_2.ProgramSdkError.missingField("quote_mint");
|
|
31
36
|
if (fields.side === undefined)
|
|
32
|
-
throw
|
|
37
|
+
throw error_2.ProgramSdkError.missingField("side");
|
|
33
38
|
if (fields.amountIn === undefined)
|
|
34
|
-
throw
|
|
39
|
+
throw error_2.ProgramSdkError.missingField("amount_in");
|
|
35
40
|
if (fields.amountOut === undefined)
|
|
36
|
-
throw
|
|
41
|
+
throw error_2.ProgramSdkError.missingField("amount_out");
|
|
37
42
|
return {
|
|
38
43
|
nonce: fields.nonce,
|
|
39
44
|
salt: fields.salt ?? (0, orders_1.generateSalt)(),
|
|
@@ -115,37 +120,37 @@ class BaseEnvelope {
|
|
|
115
120
|
payload() {
|
|
116
121
|
return toUnsignedOrder(this.fields);
|
|
117
122
|
}
|
|
118
|
-
|
|
123
|
+
getNonce() {
|
|
119
124
|
return this.fields.nonce;
|
|
120
125
|
}
|
|
121
|
-
|
|
126
|
+
getSalt() {
|
|
122
127
|
return this.fields.salt;
|
|
123
128
|
}
|
|
124
|
-
|
|
129
|
+
getMaker() {
|
|
125
130
|
return this.fields.maker;
|
|
126
131
|
}
|
|
127
|
-
|
|
132
|
+
getMarket() {
|
|
128
133
|
return this.fields.market;
|
|
129
134
|
}
|
|
130
|
-
|
|
135
|
+
getBaseMint() {
|
|
131
136
|
return this.fields.baseMint;
|
|
132
137
|
}
|
|
133
|
-
|
|
138
|
+
getQuoteMint() {
|
|
134
139
|
return this.fields.quoteMint;
|
|
135
140
|
}
|
|
136
|
-
|
|
141
|
+
getSide() {
|
|
137
142
|
return this.fields.side;
|
|
138
143
|
}
|
|
139
|
-
|
|
144
|
+
getAmountIn() {
|
|
140
145
|
return this.fields.amountIn;
|
|
141
146
|
}
|
|
142
|
-
|
|
147
|
+
getAmountOut() {
|
|
143
148
|
return this.fields.amountOut;
|
|
144
149
|
}
|
|
145
|
-
|
|
150
|
+
getExpiration() {
|
|
146
151
|
return this.fields.expiration;
|
|
147
152
|
}
|
|
148
|
-
|
|
153
|
+
getDepositSource() {
|
|
149
154
|
return this.fields.depositSource;
|
|
150
155
|
}
|
|
151
156
|
/**
|
|
@@ -157,11 +162,11 @@ class BaseEnvelope {
|
|
|
157
162
|
return;
|
|
158
163
|
}
|
|
159
164
|
if (!this.fields.priceRaw)
|
|
160
|
-
throw
|
|
165
|
+
throw error_2.ProgramSdkError.missingField("price");
|
|
161
166
|
if (!this.fields.sizeRaw)
|
|
162
|
-
throw
|
|
167
|
+
throw error_2.ProgramSdkError.missingField("size");
|
|
163
168
|
if (this.fields.side === undefined)
|
|
164
|
-
throw
|
|
169
|
+
throw error_2.ProgramSdkError.missingField("side");
|
|
165
170
|
const decimals = (0, orderbook_1.orderbookDecimals)(orderbook);
|
|
166
171
|
const price = new decimal_js_1.default(this.fields.priceRaw);
|
|
167
172
|
const alignedPrice = (0, scaling_1.alignPriceToTick)(price, decimals);
|
|
@@ -189,7 +194,7 @@ class LimitOrderEnvelope extends BaseEnvelope {
|
|
|
189
194
|
this.timeInForceValue = value;
|
|
190
195
|
return this;
|
|
191
196
|
}
|
|
192
|
-
|
|
197
|
+
getTimeInForce() {
|
|
193
198
|
return this.timeInForceValue;
|
|
194
199
|
}
|
|
195
200
|
sign(keypair, orderbook) {
|
|
@@ -197,7 +202,7 @@ class LimitOrderEnvelope extends BaseEnvelope {
|
|
|
197
202
|
const signed = (0, orders_1.signOrderFull)(this.payload(), keypair);
|
|
198
203
|
return (0, orders_1.toSubmitRequest)(signed, orderbook.orderbookId, {
|
|
199
204
|
timeInForce: this.timeInForceValue,
|
|
200
|
-
depositSource: this.
|
|
205
|
+
depositSource: this.getDepositSource(),
|
|
201
206
|
});
|
|
202
207
|
}
|
|
203
208
|
finalize(signatureBase58, orderbook) {
|
|
@@ -207,6 +212,37 @@ class LimitOrderEnvelope extends BaseEnvelope {
|
|
|
207
212
|
timeInForce: this.timeInForceValue,
|
|
208
213
|
});
|
|
209
214
|
}
|
|
215
|
+
async submit(client, orderbook) {
|
|
216
|
+
const strategy = (0, context_1.requireSigningStrategy)(client);
|
|
217
|
+
this.autoScale(orderbook);
|
|
218
|
+
switch (strategy.type) {
|
|
219
|
+
case "native": {
|
|
220
|
+
const request = this.sign(strategy.keypair, orderbook);
|
|
221
|
+
const url = `${client.http.baseUrl()}/api/orders/submit`;
|
|
222
|
+
return client.http.post(url, request, http_1.RetryPolicy.None);
|
|
223
|
+
}
|
|
224
|
+
case "walletAdapter": {
|
|
225
|
+
const unsigned = this.payload();
|
|
226
|
+
const hash = (0, orders_1.hashOrderHex)({ ...unsigned, signature: Buffer.alloc(64) });
|
|
227
|
+
const sigBytes = await strategy.signer
|
|
228
|
+
.signMessage(new TextEncoder().encode(hash))
|
|
229
|
+
.catch((err) => {
|
|
230
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
231
|
+
if ((0, signing_1.isUserCancellation)(msg))
|
|
232
|
+
throw error_1.SdkError.userCancelled();
|
|
233
|
+
throw error_1.SdkError.signing(msg);
|
|
234
|
+
});
|
|
235
|
+
const request = this.finalize(bs58_1.default.encode(sigBytes), orderbook);
|
|
236
|
+
const url = `${client.http.baseUrl()}/api/orders/submit`;
|
|
237
|
+
return client.http.post(url, request, http_1.RetryPolicy.None);
|
|
238
|
+
}
|
|
239
|
+
case "privy": {
|
|
240
|
+
const envelope = (0, privy_1.privyOrderFromLimitEnvelope)(this, orderbook.orderbookId);
|
|
241
|
+
const url = `${client.http.baseUrl()}/api/privy/sign_and_send_order`;
|
|
242
|
+
return client.http.post(url, { wallet_id: strategy.walletId, order: envelope }, http_1.RetryPolicy.None);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
210
246
|
}
|
|
211
247
|
exports.LimitOrderEnvelope = LimitOrderEnvelope;
|
|
212
248
|
class TriggerOrderEnvelope extends BaseEnvelope {
|
|
@@ -254,13 +290,13 @@ class TriggerOrderEnvelope extends BaseEnvelope {
|
|
|
254
290
|
this.timeInForceValue = "ALO";
|
|
255
291
|
return this;
|
|
256
292
|
}
|
|
257
|
-
|
|
293
|
+
getTimeInForce() {
|
|
258
294
|
return this.timeInForceValue;
|
|
259
295
|
}
|
|
260
|
-
|
|
296
|
+
getTriggerPrice() {
|
|
261
297
|
return this.triggerPriceValue;
|
|
262
298
|
}
|
|
263
|
-
|
|
299
|
+
getTriggerType() {
|
|
264
300
|
return this.triggerTypeValue;
|
|
265
301
|
}
|
|
266
302
|
sign(keypair, orderbook) {
|
|
@@ -271,7 +307,7 @@ class TriggerOrderEnvelope extends BaseEnvelope {
|
|
|
271
307
|
timeInForce: this.timeInForceValue,
|
|
272
308
|
triggerPrice: this.triggerPriceValue,
|
|
273
309
|
triggerType: this.triggerTypeValue,
|
|
274
|
-
depositSource: this.
|
|
310
|
+
depositSource: this.getDepositSource(),
|
|
275
311
|
});
|
|
276
312
|
}
|
|
277
313
|
finalize(signatureBase58, orderbook) {
|
|
@@ -284,12 +320,44 @@ class TriggerOrderEnvelope extends BaseEnvelope {
|
|
|
284
320
|
triggerType: this.triggerTypeValue,
|
|
285
321
|
});
|
|
286
322
|
}
|
|
323
|
+
async submit(client, orderbook) {
|
|
324
|
+
const strategy = (0, context_1.requireSigningStrategy)(client);
|
|
325
|
+
this.requireTriggerFields();
|
|
326
|
+
this.autoScale(orderbook);
|
|
327
|
+
switch (strategy.type) {
|
|
328
|
+
case "native": {
|
|
329
|
+
const request = this.sign(strategy.keypair, orderbook);
|
|
330
|
+
const url = `${client.http.baseUrl()}/api/orders/submit`;
|
|
331
|
+
return client.http.post(url, request, http_1.RetryPolicy.None);
|
|
332
|
+
}
|
|
333
|
+
case "walletAdapter": {
|
|
334
|
+
const unsigned = this.payload();
|
|
335
|
+
const hash = (0, orders_1.hashOrderHex)({ ...unsigned, signature: Buffer.alloc(64) });
|
|
336
|
+
const sigBytes = await strategy.signer
|
|
337
|
+
.signMessage(new TextEncoder().encode(hash))
|
|
338
|
+
.catch((err) => {
|
|
339
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
340
|
+
if ((0, signing_1.isUserCancellation)(msg))
|
|
341
|
+
throw error_1.SdkError.userCancelled();
|
|
342
|
+
throw error_1.SdkError.signing(msg);
|
|
343
|
+
});
|
|
344
|
+
const request = this.finalize(bs58_1.default.encode(sigBytes), orderbook);
|
|
345
|
+
const url = `${client.http.baseUrl()}/api/orders/submit`;
|
|
346
|
+
return client.http.post(url, request, http_1.RetryPolicy.None);
|
|
347
|
+
}
|
|
348
|
+
case "privy": {
|
|
349
|
+
const envelope = (0, privy_1.privyOrderFromTriggerEnvelope)(this, orderbook.orderbookId);
|
|
350
|
+
const url = `${client.http.baseUrl()}/api/privy/sign_and_send_order`;
|
|
351
|
+
return client.http.post(url, { wallet_id: strategy.walletId, order: envelope }, http_1.RetryPolicy.None);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
287
355
|
requireTriggerFields() {
|
|
288
356
|
if (this.triggerPriceValue === undefined) {
|
|
289
|
-
throw
|
|
357
|
+
throw error_2.ProgramSdkError.missingField("trigger_price");
|
|
290
358
|
}
|
|
291
359
|
if (!this.triggerTypeValue) {
|
|
292
|
-
throw
|
|
360
|
+
throw error_2.ProgramSdkError.missingField("trigger_type");
|
|
293
361
|
}
|
|
294
362
|
}
|
|
295
363
|
}
|
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
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 type { ClientContext } from \"../context\";\nimport { requireSigningStrategy } from \"../context\";\nimport { SdkError } from \"../error\";\nimport { RetryPolicy } from \"../http\";\nimport {\n privyOrderFromLimitEnvelope,\n privyOrderFromTriggerEnvelope,\n} from \"../privy\";\nimport { alignPriceToTick, scalePriceSize } from \"../shared/scaling\";\nimport { isUserCancellation } from \"../shared/signing\";\nimport { orderbookDecimals, type OrderBookPair } from \"../domain/orderbook\";\nimport type {\n DepositSource,\n SubmitOrderRequest,\n TimeInForce,\n TriggerType,\n} from \"../shared\";\nimport type { SubmitOrderResponse } from \"../domain/order/client\";\nimport type { TriggerOrderResponse } from \"../domain/order/client\";\nimport { ProgramSdkError } from \"./error\";\nimport {\n generateSalt,\n hashOrderHex,\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 getNonce(): number | undefined {\n return this.fields.nonce;\n }\n\n getSalt(): bigint | undefined {\n return this.fields.salt;\n }\n\n getMaker(): PublicKey | undefined {\n return this.fields.maker;\n }\n\n getMarket(): PublicKey | undefined {\n return this.fields.market;\n }\n\n getBaseMint(): PublicKey | undefined {\n return this.fields.baseMint;\n }\n\n getQuoteMint(): PublicKey | undefined {\n return this.fields.quoteMint;\n }\n\n getSide(): OrderSide | undefined {\n return this.fields.side;\n }\n\n getAmountIn(): bigint | undefined {\n return this.fields.amountIn;\n }\n\n getAmountOut(): bigint | undefined {\n return this.fields.amountOut;\n }\n\n getExpiration(): bigint {\n return this.fields.expiration;\n }\n\n getDepositSource(): 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 getTimeInForce(): 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.getDepositSource(),\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 async submit(\n client: ClientContext,\n orderbook: OrderBookPair\n ): Promise<SubmitOrderResponse> {\n const strategy = requireSigningStrategy(client);\n this.autoScale(orderbook);\n\n switch (strategy.type) {\n case \"native\": {\n const request = this.sign(strategy.keypair, orderbook);\n const url = `${client.http.baseUrl()}/api/orders/submit`;\n return client.http.post<SubmitOrderResponse, SubmitOrderRequest>(\n url,\n request,\n RetryPolicy.None\n );\n }\n case \"walletAdapter\": {\n const unsigned = this.payload();\n const hash = hashOrderHex({ ...unsigned, signature: Buffer.alloc(64) });\n const sigBytes = await strategy.signer\n .signMessage(new TextEncoder().encode(hash))\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const request = this.finalize(bs58.encode(sigBytes), orderbook);\n const url = `${client.http.baseUrl()}/api/orders/submit`;\n return client.http.post<SubmitOrderResponse, SubmitOrderRequest>(\n url,\n request,\n RetryPolicy.None\n );\n }\n case \"privy\": {\n const envelope = privyOrderFromLimitEnvelope(this, orderbook.orderbookId);\n const url = `${client.http.baseUrl()}/api/privy/sign_and_send_order`;\n return client.http.post(url, { wallet_id: strategy.walletId, order: envelope }, RetryPolicy.None);\n }\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 getTimeInForce(): TimeInForce | undefined {\n return this.timeInForceValue;\n }\n\n getTriggerPrice(): number | undefined {\n return this.triggerPriceValue;\n }\n\n getTriggerType(): 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.getDepositSource(),\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 async submit(\n client: ClientContext,\n orderbook: OrderBookPair\n ): Promise<TriggerOrderResponse> {\n const strategy = requireSigningStrategy(client);\n this.requireTriggerFields();\n this.autoScale(orderbook);\n\n switch (strategy.type) {\n case \"native\": {\n const request = this.sign(strategy.keypair, orderbook);\n const url = `${client.http.baseUrl()}/api/orders/submit`;\n return client.http.post<TriggerOrderResponse, SubmitOrderRequest>(\n url,\n request,\n RetryPolicy.None\n );\n }\n case \"walletAdapter\": {\n const unsigned = this.payload();\n const hash = hashOrderHex({ ...unsigned, signature: Buffer.alloc(64) });\n const sigBytes = await strategy.signer\n .signMessage(new TextEncoder().encode(hash))\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const request = this.finalize(bs58.encode(sigBytes), orderbook);\n const url = `${client.http.baseUrl()}/api/orders/submit`;\n return client.http.post<TriggerOrderResponse, SubmitOrderRequest>(\n url,\n request,\n RetryPolicy.None\n );\n }\n case \"privy\": {\n const envelope = privyOrderFromTriggerEnvelope(this, orderbook.orderbookId);\n const url = `${client.http.baseUrl()}/api/privy/sign_and_send_order`;\n return client.http.post(url, { wallet_id: strategy.walletId, order: envelope }, RetryPolicy.None);\n }\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/shared/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { asOrderBookId, asPubkeyStr, DepositSource, deriveOrderbookId, parseSide
|
|
|
2
2
|
export { formatDecimal, isZero, parseDecimal } from "./price";
|
|
3
3
|
export { alignPriceToTick, scalePriceSize, scalePriceSizeLegacy, ScalingError, type LegacyScaledAmounts, type OrderbookDecimals, type ScaledAmounts, } from "./scaling";
|
|
4
4
|
export { scalePriceSizeLegacy as scalePriceSizeV1 } from "./scaling";
|
|
5
|
+
export { isUserCancellation, type ExternalSigner, type SigningStrategy, } from "./signing";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,UAAU,EACV,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,UAAU,EACV,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}
|
package/dist/shared/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scalePriceSizeV1 = exports.ScalingError = exports.scalePriceSizeLegacy = exports.scalePriceSize = exports.alignPriceToTick = exports.parseDecimal = exports.isZero = exports.formatDecimal = exports.TriggerUpdateType = exports.TriggerType = exports.TriggerStatus = exports.TriggerResultStatus = exports.TimeInForce = exports.Side = exports.Resolution = exports.OrderUpdateType = exports.sideLabel = exports.resolutionSeconds = exports.parseSide = exports.deriveOrderbookId = exports.DepositSource = exports.asPubkeyStr = exports.asOrderBookId = void 0;
|
|
3
|
+
exports.isUserCancellation = exports.scalePriceSizeV1 = exports.ScalingError = exports.scalePriceSizeLegacy = exports.scalePriceSize = exports.alignPriceToTick = exports.parseDecimal = exports.isZero = exports.formatDecimal = exports.TriggerUpdateType = exports.TriggerType = exports.TriggerStatus = exports.TriggerResultStatus = exports.TimeInForce = exports.Side = exports.Resolution = exports.OrderUpdateType = exports.sideLabel = exports.resolutionSeconds = exports.parseSide = exports.deriveOrderbookId = exports.DepositSource = exports.asPubkeyStr = exports.asOrderBookId = void 0;
|
|
4
4
|
var types_1 = require("./types");
|
|
5
5
|
Object.defineProperty(exports, "asOrderBookId", { enumerable: true, get: function () { return types_1.asOrderBookId; } });
|
|
6
6
|
Object.defineProperty(exports, "asPubkeyStr", { enumerable: true, get: function () { return types_1.asPubkeyStr; } });
|
|
@@ -29,4 +29,6 @@ Object.defineProperty(exports, "ScalingError", { enumerable: true, get: function
|
|
|
29
29
|
// Backward-compatible name from v1.
|
|
30
30
|
var scaling_2 = require("./scaling");
|
|
31
31
|
Object.defineProperty(exports, "scalePriceSizeV1", { enumerable: true, get: function () { return scaling_2.scalePriceSizeLegacy; } });
|
|
32
|
+
var signing_1 = require("./signing");
|
|
33
|
+
Object.defineProperty(exports, "isUserCancellation", { enumerable: true, get: function () { return signing_1.isUserCancellation; } });
|
|
32
34
|
//# sourceMappingURL=index.js.map
|
package/dist/shared/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,iCAoBiB;AAnBf,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,6FAAA,IAAI,OAAA;AACJ,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AAOnB,iCAA8D;AAArD,sGAAA,aAAa,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,qGAAA,YAAY,OAAA;AAE5C,qCAQmB;AAPjB,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,uGAAA,YAAY,OAAA;AAMd,oCAAoC;AACpC,qCAAqE;AAA5D,2GAAA,oBAAoB,OAAoB","sourcesContent":["export {\n asOrderBookId,\n asPubkeyStr,\n DepositSource,\n deriveOrderbookId,\n parseSide,\n resolutionSeconds,\n sideLabel,\n OrderUpdateType,\n Resolution,\n Side,\n TimeInForce,\n TriggerResultStatus,\n TriggerStatus,\n TriggerType,\n TriggerUpdateType,\n type Branded,\n type OrderBookId,\n type PubkeyStr,\n type SubmitOrderRequest,\n} from \"./types\";\n\nexport { formatDecimal, isZero, parseDecimal } from \"./price\";\n\nexport {\n alignPriceToTick,\n scalePriceSize,\n scalePriceSizeLegacy,\n ScalingError,\n type LegacyScaledAmounts,\n type OrderbookDecimals,\n type ScaledAmounts,\n} from \"./scaling\";\n\n// Backward-compatible name from v1.\nexport { scalePriceSizeLegacy as scalePriceSizeV1 } from \"./scaling\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,iCAoBiB;AAnBf,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,6FAAA,IAAI,OAAA;AACJ,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AAOnB,iCAA8D;AAArD,sGAAA,aAAa,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,qGAAA,YAAY,OAAA;AAE5C,qCAQmB;AAPjB,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,uGAAA,YAAY,OAAA;AAMd,oCAAoC;AACpC,qCAAqE;AAA5D,2GAAA,oBAAoB,OAAoB;AAEjD,qCAImB;AAHjB,6GAAA,kBAAkB,OAAA","sourcesContent":["export {\n asOrderBookId,\n asPubkeyStr,\n DepositSource,\n deriveOrderbookId,\n parseSide,\n resolutionSeconds,\n sideLabel,\n OrderUpdateType,\n Resolution,\n Side,\n TimeInForce,\n TriggerResultStatus,\n TriggerStatus,\n TriggerType,\n TriggerUpdateType,\n type Branded,\n type OrderBookId,\n type PubkeyStr,\n type SubmitOrderRequest,\n} from \"./types\";\n\nexport { formatDecimal, isZero, parseDecimal } from \"./price\";\n\nexport {\n alignPriceToTick,\n scalePriceSize,\n scalePriceSizeLegacy,\n ScalingError,\n type LegacyScaledAmounts,\n type OrderbookDecimals,\n type ScaledAmounts,\n} from \"./scaling\";\n\n// Backward-compatible name from v1.\nexport { scalePriceSizeLegacy as scalePriceSizeV1 } from \"./scaling\";\n\nexport {\n isUserCancellation,\n type ExternalSigner,\n type SigningStrategy,\n} from \"./signing\";\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Keypair } from "@solana/web3.js";
|
|
2
|
+
export interface ExternalSigner {
|
|
3
|
+
signMessage(message: Uint8Array): Promise<Uint8Array>;
|
|
4
|
+
signTransaction(txBytes: Uint8Array): Promise<Uint8Array>;
|
|
5
|
+
}
|
|
6
|
+
export type SigningStrategy = {
|
|
7
|
+
type: "native";
|
|
8
|
+
keypair: Keypair;
|
|
9
|
+
} | {
|
|
10
|
+
type: "walletAdapter";
|
|
11
|
+
signer: ExternalSigner;
|
|
12
|
+
} | {
|
|
13
|
+
type: "privy";
|
|
14
|
+
walletId: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function isUserCancellation(error: string): boolean;
|
|
17
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/shared/signing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3D;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUzD"}
|