@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.
Files changed (75) hide show
  1. package/README.md +22 -37
  2. package/dist/client.d.ts +19 -1
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +49 -0
  5. package/dist/client.js.map +1 -1
  6. package/dist/context.d.ts +7 -0
  7. package/dist/context.d.ts.map +1 -1
  8. package/dist/context.js +79 -0
  9. package/dist/context.js.map +1 -1
  10. package/dist/domain/market/builders.d.ts +37 -0
  11. package/dist/domain/market/builders.d.ts.map +1 -0
  12. package/dist/domain/market/builders.js +114 -0
  13. package/dist/domain/market/builders.js.map +1 -0
  14. package/dist/domain/market/client.d.ts +3 -0
  15. package/dist/domain/market/client.d.ts.map +1 -1
  16. package/dist/domain/market/client.js +8 -0
  17. package/dist/domain/market/client.js.map +1 -1
  18. package/dist/domain/market/index.d.ts +1 -0
  19. package/dist/domain/market/index.d.ts.map +1 -1
  20. package/dist/domain/market/index.js +1 -0
  21. package/dist/domain/market/index.js.map +1 -1
  22. package/dist/domain/order/client.d.ts +8 -1
  23. package/dist/domain/order/client.d.ts.map +1 -1
  24. package/dist/domain/order/client.js +109 -0
  25. package/dist/domain/order/client.js.map +1 -1
  26. package/dist/domain/order/wire.d.ts +15 -0
  27. package/dist/domain/order/wire.d.ts.map +1 -1
  28. package/dist/domain/order/wire.js.map +1 -1
  29. package/dist/domain/orderbook/state.d.ts +4 -14
  30. package/dist/domain/orderbook/state.d.ts.map +1 -1
  31. package/dist/domain/orderbook/state.js +26 -66
  32. package/dist/domain/orderbook/state.js.map +1 -1
  33. package/dist/domain/position/builders.d.ts +179 -0
  34. package/dist/domain/position/builders.d.ts.map +1 -0
  35. package/dist/domain/position/builders.js +501 -0
  36. package/dist/domain/position/builders.js.map +1 -0
  37. package/dist/domain/position/client.d.ts +15 -1
  38. package/dist/domain/position/client.d.ts.map +1 -1
  39. package/dist/domain/position/client.js +90 -0
  40. package/dist/domain/position/client.js.map +1 -1
  41. package/dist/domain/position/index.d.ts +1 -0
  42. package/dist/domain/position/index.d.ts.map +1 -1
  43. package/dist/domain/position/index.js +1 -0
  44. package/dist/domain/position/index.js.map +1 -1
  45. package/dist/domain/trade/state.d.ts +1 -3
  46. package/dist/domain/trade/state.d.ts.map +1 -1
  47. package/dist/domain/trade/state.js +12 -33
  48. package/dist/domain/trade/state.js.map +1 -1
  49. package/dist/error.d.ts +4 -1
  50. package/dist/error.d.ts.map +1 -1
  51. package/dist/error.js +9 -0
  52. package/dist/error.js.map +1 -1
  53. package/dist/index.d.ts +1 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/prelude.d.ts +6 -3
  58. package/dist/prelude.d.ts.map +1 -1
  59. package/dist/prelude.js +16 -1
  60. package/dist/prelude.js.map +1 -1
  61. package/dist/privy/index.js +25 -25
  62. package/dist/privy/index.js.map +1 -1
  63. package/dist/program/envelope.d.ts +20 -15
  64. package/dist/program/envelope.d.ts.map +1 -1
  65. package/dist/program/envelope.js +99 -31
  66. package/dist/program/envelope.js.map +1 -1
  67. package/dist/shared/index.d.ts +1 -0
  68. package/dist/shared/index.d.ts.map +1 -1
  69. package/dist/shared/index.js +3 -1
  70. package/dist/shared/index.js.map +1 -1
  71. package/dist/shared/signing.d.ts +17 -0
  72. package/dist/shared/signing.d.ts.map +1 -0
  73. package/dist/shared/signing.js +13 -0
  74. package/dist/shared/signing.js.map +1 -0
  75. package/package.json +2 -1
@@ -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.fieldsMaker(), "maker");
35
- const nonce = requireDefined(envelope.fieldsNonce(), "nonce");
36
- const salt = requireDefined(envelope.fieldsSalt(), "salt");
37
- const market = requireDefined(envelope.fieldsMarket(), "market");
38
- const baseMint = requireDefined(envelope.fieldsBaseMint(), "base_mint");
39
- const quoteMint = requireDefined(envelope.fieldsQuoteMint(), "quote_mint");
40
- const side = requireDefined(envelope.fieldsSide(), "side");
41
- const amountIn = requireDefined(envelope.fieldsAmountIn(), "amount_in");
42
- const amountOut = requireDefined(envelope.fieldsAmountOut(), "amount_out");
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.fieldsExpiration(), "expiration"),
53
+ expiration: bigintToSafeNumber(envelope.getExpiration(), "expiration"),
54
54
  orderbook_id: orderbookId,
55
- deposit_source: envelope.fieldsDepositSource(),
55
+ deposit_source: envelope.getDepositSource(),
56
56
  };
57
57
  }
58
58
  function privyOrderFromTriggerEnvelope(envelope, orderbookId) {
59
- const maker = requireDefined(envelope.fieldsMaker(), "maker");
60
- const nonce = requireDefined(envelope.fieldsNonce(), "nonce");
61
- const salt = requireDefined(envelope.fieldsSalt(), "salt");
62
- const market = requireDefined(envelope.fieldsMarket(), "market");
63
- const baseMint = requireDefined(envelope.fieldsBaseMint(), "base_mint");
64
- const quoteMint = requireDefined(envelope.fieldsQuoteMint(), "quote_mint");
65
- const side = requireDefined(envelope.fieldsSide(), "side");
66
- const amountIn = requireDefined(envelope.fieldsAmountIn(), "amount_in");
67
- const amountOut = requireDefined(envelope.fieldsAmountOut(), "amount_out");
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.fieldsExpiration(), "expiration"),
78
+ expiration: bigintToSafeNumber(envelope.getExpiration(), "expiration"),
79
79
  orderbook_id: orderbookId,
80
- tif: envelope.fieldsTimeInForce(),
81
- trigger_price: envelope.fieldsTriggerPrice(),
82
- trigger_type: envelope.fieldsTriggerType(),
83
- deposit_source: envelope.fieldsDepositSource(),
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
@@ -1 +1 @@
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.fieldsMaker(), \"maker\");\n const nonce = requireDefined(envelope.fieldsNonce(), \"nonce\");\n const salt = requireDefined(envelope.fieldsSalt(), \"salt\");\n const market = requireDefined(envelope.fieldsMarket(), \"market\");\n const baseMint = requireDefined(envelope.fieldsBaseMint(), \"base_mint\");\n const quoteMint = requireDefined(envelope.fieldsQuoteMint(), \"quote_mint\");\n const side = requireDefined(envelope.fieldsSide(), \"side\");\n const amountIn = requireDefined(envelope.fieldsAmountIn(), \"amount_in\");\n const amountOut = requireDefined(envelope.fieldsAmountOut(), \"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.fieldsExpiration(), \"expiration\"),\n orderbook_id: orderbookId,\n deposit_source: envelope.fieldsDepositSource(),\n };\n}\n\nexport function privyOrderFromTriggerEnvelope(\n envelope: TriggerOrderEnvelope,\n orderbookId: string\n): PrivyOrderEnvelope {\n const maker = requireDefined(envelope.fieldsMaker(), \"maker\");\n const nonce = requireDefined(envelope.fieldsNonce(), \"nonce\");\n const salt = requireDefined(envelope.fieldsSalt(), \"salt\");\n const market = requireDefined(envelope.fieldsMarket(), \"market\");\n const baseMint = requireDefined(envelope.fieldsBaseMint(), \"base_mint\");\n const quoteMint = requireDefined(envelope.fieldsQuoteMint(), \"quote_mint\");\n const side = requireDefined(envelope.fieldsSide(), \"side\");\n const amountIn = requireDefined(envelope.fieldsAmountIn(), \"amount_in\");\n const amountOut = requireDefined(envelope.fieldsAmountOut(), \"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.fieldsExpiration(), \"expiration\"),\n orderbook_id: orderbookId,\n tif: envelope.fieldsTimeInForce(),\n trigger_price: envelope.fieldsTriggerPrice(),\n trigger_type: envelope.fieldsTriggerType(),\n deposit_source: envelope.fieldsDepositSource(),\n };\n}\n"]}
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
- fieldsNonce(): number | undefined;
61
- fieldsSalt(): bigint | undefined;
62
- fieldsMaker(): PublicKey | undefined;
63
- fieldsMarket(): PublicKey | undefined;
64
- fieldsBaseMint(): PublicKey | undefined;
65
- fieldsQuoteMint(): PublicKey | undefined;
66
- fieldsSide(): OrderSide | undefined;
67
- fieldsAmountIn(): bigint | undefined;
68
- fieldsAmountOut(): bigint | undefined;
69
- fieldsExpiration(): bigint;
70
- fieldsDepositSource(): DepositSource | undefined;
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
- fieldsTimeInForce(): TimeInForce | undefined;
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
- fieldsTimeInForce(): TimeInForce | undefined;
101
- fieldsTriggerPrice(): number | undefined;
102
- fieldsTriggerType(): TriggerType | undefined;
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":"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"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/program/envelope.ts"],"names":[],"mappings":"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"}
@@ -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 error_1 = require("./error");
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 error_1.ProgramSdkError.missingField("nonce");
27
+ throw error_2.ProgramSdkError.missingField("nonce");
23
28
  if (!fields.maker)
24
- throw error_1.ProgramSdkError.missingField("maker");
29
+ throw error_2.ProgramSdkError.missingField("maker");
25
30
  if (!fields.market)
26
- throw error_1.ProgramSdkError.missingField("market");
31
+ throw error_2.ProgramSdkError.missingField("market");
27
32
  if (!fields.baseMint)
28
- throw error_1.ProgramSdkError.missingField("base_mint");
33
+ throw error_2.ProgramSdkError.missingField("base_mint");
29
34
  if (!fields.quoteMint)
30
- throw error_1.ProgramSdkError.missingField("quote_mint");
35
+ throw error_2.ProgramSdkError.missingField("quote_mint");
31
36
  if (fields.side === undefined)
32
- throw error_1.ProgramSdkError.missingField("side");
37
+ throw error_2.ProgramSdkError.missingField("side");
33
38
  if (fields.amountIn === undefined)
34
- throw error_1.ProgramSdkError.missingField("amount_in");
39
+ throw error_2.ProgramSdkError.missingField("amount_in");
35
40
  if (fields.amountOut === undefined)
36
- throw error_1.ProgramSdkError.missingField("amount_out");
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
- fieldsNonce() {
123
+ getNonce() {
119
124
  return this.fields.nonce;
120
125
  }
121
- fieldsSalt() {
126
+ getSalt() {
122
127
  return this.fields.salt;
123
128
  }
124
- fieldsMaker() {
129
+ getMaker() {
125
130
  return this.fields.maker;
126
131
  }
127
- fieldsMarket() {
132
+ getMarket() {
128
133
  return this.fields.market;
129
134
  }
130
- fieldsBaseMint() {
135
+ getBaseMint() {
131
136
  return this.fields.baseMint;
132
137
  }
133
- fieldsQuoteMint() {
138
+ getQuoteMint() {
134
139
  return this.fields.quoteMint;
135
140
  }
136
- fieldsSide() {
141
+ getSide() {
137
142
  return this.fields.side;
138
143
  }
139
- fieldsAmountIn() {
144
+ getAmountIn() {
140
145
  return this.fields.amountIn;
141
146
  }
142
- fieldsAmountOut() {
147
+ getAmountOut() {
143
148
  return this.fields.amountOut;
144
149
  }
145
- fieldsExpiration() {
150
+ getExpiration() {
146
151
  return this.fields.expiration;
147
152
  }
148
- fieldsDepositSource() {
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 error_1.ProgramSdkError.missingField("price");
165
+ throw error_2.ProgramSdkError.missingField("price");
161
166
  if (!this.fields.sizeRaw)
162
- throw error_1.ProgramSdkError.missingField("size");
167
+ throw error_2.ProgramSdkError.missingField("size");
163
168
  if (this.fields.side === undefined)
164
- throw error_1.ProgramSdkError.missingField("side");
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
- fieldsTimeInForce() {
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.fieldsDepositSource(),
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
- fieldsTimeInForce() {
293
+ getTimeInForce() {
258
294
  return this.timeInForceValue;
259
295
  }
260
- fieldsTriggerPrice() {
296
+ getTriggerPrice() {
261
297
  return this.triggerPriceValue;
262
298
  }
263
- fieldsTriggerType() {
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.fieldsDepositSource(),
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 error_1.ProgramSdkError.missingField("trigger_price");
357
+ throw error_2.ProgramSdkError.missingField("trigger_price");
290
358
  }
291
359
  if (!this.triggerTypeValue) {
292
- throw error_1.ProgramSdkError.missingField("trigger_type");
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":";;;;;;AA0YA,kCAKC;AA/YD,4DAAiC;AAEjC,gDAAwB;AACxB,+CAAqE;AACrE,mDAA4E;AAO5E,mCAA0C;AAC1C,qCAMkB;AAClB,mCAAsD;AAkBtD,SAAS,aAAa;IACpB,OAAO;QACL,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACnF,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAErF,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAA,qBAAY,GAAE;QACnC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAuBD,MAAM,YAAY;IACG,MAAM,CAAc;IAEvC,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,iBAAS,CAAC,GAAG,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,iBAAS,CAAC,GAAG,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAgB;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAoB;QAChC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED;;;OAGG;IACO,SAAS,CAAC,SAAwB;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,uBAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE/E,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAA,0BAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC3C,CAAC;IAES,wBAAwB,CAChC,YAAoB,EACpB,WAAmB,EACnB,UAAgC,EAAE;QAElC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAA,wBAAe,EACpB;YACE,GAAG,QAAQ;YACX,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;SAC5C,EACD,WAAW,EACX;YACE,GAAG,OAAO;YACV,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SACzC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAC1C,gBAAgB,CAAe;IAEvC,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,KAAkB;QAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAgB,EAAE,SAAwB;QAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAA,wBAAe,EAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE;YACpD,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,eAAuB,EAAE,SAAwB;QACxD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,EAAE;YACxE,WAAW,EAAE,IAAI,CAAC,gBAAgB;SACnC,CAAC,CAAC;IACL,CAAC;CACF;AAhCD,gDAgCC;AAED,MAAa,oBAAqB,SAAQ,YAAY;IAC5C,gBAAgB,CAAe;IAC/B,iBAAiB,CAAU;IAC3B,gBAAgB,CAAe;IAEvC,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,KAAkB;QAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAAkB;QAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAmB,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAmB,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAoB,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAoB,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAoB,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAoB,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAgB,EAAE,SAAwB;QAC7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAA,wBAAe,EAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE;YACpD,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,YAAY,EAAE,IAAI,CAAC,iBAAiB;YACpC,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,eAAuB,EAAE,SAAwB;QACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,EAAE;YACxE,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,YAAY,EAAE,IAAI,CAAC,iBAAiB;YACpC,WAAW,EAAE,IAAI,CAAC,gBAAgB;SACnC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,uBAAe,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,uBAAe,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF;AAnGD,oDAmGC;AAED,SAAgB,WAAW,CACzB,OAAuC,EACvC,OAAgB;IAEhB,OAAO,IAAA,kBAAS,EAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC","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"]}
@@ -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"}
@@ -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
@@ -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"}