@veilo/sdk-core 0.5.0 → 0.6.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 (236) hide show
  1. package/README.md +237 -19
  2. package/accounts.d.ts +2 -0
  3. package/accounts.js +3 -0
  4. package/cloak.d.ts +2 -0
  5. package/cloak.js +3 -0
  6. package/config.d.ts +2 -0
  7. package/config.js +3 -0
  8. package/dist/cjs/events/index.d.ts +6 -0
  9. package/dist/cjs/events/index.js +22 -0
  10. package/dist/cjs/events/parsing.d.ts +25 -0
  11. package/dist/cjs/events/parsing.js +158 -0
  12. package/dist/cjs/events/position.d.ts +26 -0
  13. package/dist/cjs/events/position.js +53 -0
  14. package/dist/cjs/events/recovery.d.ts +87 -0
  15. package/dist/cjs/events/recovery.js +281 -0
  16. package/dist/cjs/events/scanning.d.ts +35 -0
  17. package/dist/cjs/events/scanning.js +98 -0
  18. package/dist/cjs/events/tree.d.ts +27 -0
  19. package/dist/cjs/events/tree.js +63 -0
  20. package/dist/cjs/events/types.d.ts +39 -0
  21. package/dist/cjs/events/types.js +2 -0
  22. package/dist/cjs/events.d.ts +1 -77
  23. package/dist/cjs/events.js +6 -154
  24. package/dist/cjs/identity/encoding.d.ts +9 -0
  25. package/dist/cjs/identity/encoding.js +85 -0
  26. package/dist/cjs/identity/index.d.ts +4 -0
  27. package/dist/cjs/identity/index.js +20 -0
  28. package/dist/cjs/identity/noteKey.d.ts +33 -0
  29. package/dist/cjs/identity/noteKey.js +97 -0
  30. package/dist/cjs/identity/spending.d.ts +18 -0
  31. package/dist/cjs/identity/spending.js +46 -0
  32. package/dist/cjs/identity/viewKey.d.ts +38 -0
  33. package/dist/cjs/identity/viewKey.js +105 -0
  34. package/dist/cjs/idl/index.d.ts +18 -0
  35. package/dist/cjs/idl/index.js +24 -0
  36. package/dist/cjs/idl/privacy_pool.json +9907 -9907
  37. package/dist/cjs/idl/privacy_pool_legacy.d.ts +5 -0
  38. package/dist/cjs/idl/privacy_pool_legacy.js +3307 -0
  39. package/dist/cjs/idl/privacy_pool_legacy.json +2302 -0
  40. package/dist/cjs/idl/privacy_pool_legacy2.d.ts +5 -0
  41. package/dist/cjs/idl/privacy_pool_legacy2.js +3397 -0
  42. package/dist/cjs/idl/privacy_pool_legacy2.json +2376 -0
  43. package/dist/cjs/index.d.ts +8 -3
  44. package/dist/cjs/index.js +12 -2
  45. package/dist/cjs/notes/amount.d.ts +2 -0
  46. package/dist/cjs/notes/amount.js +21 -0
  47. package/dist/cjs/notes/index.d.ts +3 -0
  48. package/dist/cjs/notes/index.js +3 -0
  49. package/dist/cjs/notes/recovery.d.ts +16 -6
  50. package/dist/cjs/notes/recovery.js +33 -16
  51. package/dist/cjs/notes/selection.d.ts +77 -0
  52. package/dist/cjs/notes/selection.js +193 -0
  53. package/dist/cjs/notes/spent.d.ts +60 -0
  54. package/dist/cjs/notes/spent.js +101 -0
  55. package/dist/cjs/perps/constants.d.ts +16 -0
  56. package/dist/cjs/perps/constants.js +52 -0
  57. package/dist/cjs/perps/index.d.ts +5 -0
  58. package/dist/cjs/perps/index.js +21 -0
  59. package/dist/cjs/perps/keys.d.ts +16 -0
  60. package/dist/cjs/perps/keys.js +43 -0
  61. package/dist/cjs/perps/pdas.d.ts +29 -0
  62. package/dist/cjs/perps/pdas.js +55 -0
  63. package/dist/cjs/perps/relayer.d.ts +9 -0
  64. package/dist/cjs/perps/relayer.js +35 -0
  65. package/dist/cjs/perps/types.d.ts +126 -0
  66. package/dist/cjs/perps/types.js +2 -0
  67. package/dist/cjs/positions/index.d.ts +4 -0
  68. package/dist/cjs/positions/index.js +20 -0
  69. package/dist/cjs/positions/keys.d.ts +29 -0
  70. package/dist/cjs/positions/keys.js +71 -0
  71. package/dist/cjs/positions/pdas.d.ts +15 -0
  72. package/dist/cjs/positions/pdas.js +54 -0
  73. package/dist/cjs/positions/relayer.d.ts +4 -0
  74. package/dist/cjs/positions/relayer.js +15 -0
  75. package/dist/cjs/positions/types.d.ts +97 -0
  76. package/dist/cjs/positions/types.js +2 -0
  77. package/dist/cjs/predictions/client.d.ts +41 -0
  78. package/dist/cjs/predictions/client.js +147 -0
  79. package/dist/cjs/predictions/index.d.ts +5 -0
  80. package/dist/cjs/predictions/index.js +21 -0
  81. package/dist/cjs/predictions/keys.d.ts +14 -0
  82. package/dist/cjs/predictions/keys.js +40 -0
  83. package/dist/cjs/predictions/pdas.d.ts +6 -0
  84. package/dist/cjs/predictions/pdas.js +13 -0
  85. package/dist/cjs/predictions/relayer.d.ts +3 -0
  86. package/dist/cjs/predictions/relayer.js +11 -0
  87. package/dist/cjs/predictions/types.d.ts +178 -0
  88. package/dist/cjs/predictions/types.js +2 -0
  89. package/dist/cjs/program.d.ts +2 -0
  90. package/dist/cjs/program.js +8 -7
  91. package/dist/cjs/prover.d.ts +27 -4
  92. package/dist/cjs/prover.js +107 -48
  93. package/dist/cjs/relayer/api.d.ts +31 -0
  94. package/dist/cjs/relayer/api.js +86 -0
  95. package/dist/cjs/relayer/client.d.ts +29 -17
  96. package/dist/cjs/relayer/client.js +72 -17
  97. package/dist/cjs/relayer/errors.d.ts +1 -1
  98. package/dist/cjs/relayer/errors.js +1 -1
  99. package/dist/cjs/relayer/index.d.ts +4 -1
  100. package/dist/cjs/relayer/index.js +1 -1
  101. package/dist/cjs/relayer/internal-config.d.ts +36 -0
  102. package/dist/cjs/relayer/internal-config.js +9 -0
  103. package/dist/cjs/relayer/internal.d.ts +6 -0
  104. package/dist/cjs/relayer/internal.js +14 -0
  105. package/dist/cjs/relayer/transport.d.ts +4 -2
  106. package/dist/cjs/relayer/transport.js +10 -5
  107. package/dist/cjs/relayer/types.d.ts +9 -10
  108. package/dist/cjs/relayer/types.js +1 -1
  109. package/dist/cjs/shield/owner.js +1 -4
  110. package/dist/esm/events/index.d.ts +6 -0
  111. package/dist/esm/events/index.js +6 -0
  112. package/dist/esm/events/parsing.d.ts +25 -0
  113. package/dist/esm/events/parsing.js +120 -0
  114. package/dist/esm/events/position.d.ts +26 -0
  115. package/dist/esm/events/position.js +48 -0
  116. package/dist/esm/events/recovery.d.ts +87 -0
  117. package/dist/esm/events/recovery.js +237 -0
  118. package/dist/esm/events/scanning.d.ts +35 -0
  119. package/dist/esm/events/scanning.js +92 -0
  120. package/dist/esm/events/tree.d.ts +27 -0
  121. package/dist/esm/events/tree.js +58 -0
  122. package/dist/esm/events/types.d.ts +39 -0
  123. package/dist/esm/events/types.js +1 -0
  124. package/dist/esm/events.d.ts +1 -77
  125. package/dist/esm/events.js +3 -129
  126. package/dist/esm/identity/encoding.d.ts +9 -0
  127. package/dist/esm/identity/encoding.js +75 -0
  128. package/dist/esm/identity/index.d.ts +4 -0
  129. package/dist/esm/identity/index.js +4 -0
  130. package/dist/esm/identity/noteKey.d.ts +33 -0
  131. package/dist/esm/identity/noteKey.js +91 -0
  132. package/dist/esm/identity/spending.d.ts +18 -0
  133. package/dist/esm/identity/spending.js +35 -0
  134. package/dist/esm/identity/viewKey.d.ts +38 -0
  135. package/dist/esm/identity/viewKey.js +96 -0
  136. package/dist/esm/idl/index.d.ts +18 -0
  137. package/dist/esm/idl/index.js +18 -0
  138. package/dist/esm/idl/privacy_pool.json +9907 -9907
  139. package/dist/esm/idl/privacy_pool_legacy.d.ts +5 -0
  140. package/dist/esm/idl/privacy_pool_legacy.js +3305 -0
  141. package/dist/esm/idl/privacy_pool_legacy.json +2302 -0
  142. package/dist/esm/idl/privacy_pool_legacy2.d.ts +5 -0
  143. package/dist/esm/idl/privacy_pool_legacy2.js +3395 -0
  144. package/dist/esm/idl/privacy_pool_legacy2.json +2376 -0
  145. package/dist/esm/index.d.ts +8 -3
  146. package/dist/esm/index.js +8 -3
  147. package/dist/esm/notes/amount.d.ts +2 -0
  148. package/dist/esm/notes/amount.js +18 -0
  149. package/dist/esm/notes/index.d.ts +3 -0
  150. package/dist/esm/notes/index.js +3 -0
  151. package/dist/esm/notes/recovery.d.ts +16 -6
  152. package/dist/esm/notes/recovery.js +33 -16
  153. package/dist/esm/notes/selection.d.ts +77 -0
  154. package/dist/esm/notes/selection.js +188 -0
  155. package/dist/esm/notes/spent.d.ts +60 -0
  156. package/dist/esm/notes/spent.js +96 -0
  157. package/dist/esm/perps/constants.d.ts +16 -0
  158. package/dist/esm/perps/constants.js +48 -0
  159. package/dist/esm/perps/index.d.ts +5 -0
  160. package/dist/esm/perps/index.js +5 -0
  161. package/dist/esm/perps/keys.d.ts +16 -0
  162. package/dist/esm/perps/keys.js +35 -0
  163. package/dist/esm/perps/pdas.d.ts +29 -0
  164. package/dist/esm/perps/pdas.js +47 -0
  165. package/dist/esm/perps/relayer.d.ts +9 -0
  166. package/dist/esm/perps/relayer.js +25 -0
  167. package/dist/esm/perps/types.d.ts +126 -0
  168. package/dist/esm/perps/types.js +1 -0
  169. package/dist/esm/positions/index.d.ts +4 -0
  170. package/dist/esm/positions/index.js +4 -0
  171. package/dist/esm/positions/keys.d.ts +29 -0
  172. package/dist/esm/positions/keys.js +65 -0
  173. package/dist/esm/positions/pdas.d.ts +15 -0
  174. package/dist/esm/positions/pdas.js +44 -0
  175. package/dist/esm/positions/relayer.d.ts +4 -0
  176. package/dist/esm/positions/relayer.js +10 -0
  177. package/dist/esm/positions/types.d.ts +97 -0
  178. package/dist/esm/positions/types.js +1 -0
  179. package/dist/esm/predictions/client.d.ts +41 -0
  180. package/dist/esm/predictions/client.js +141 -0
  181. package/dist/esm/predictions/index.d.ts +5 -0
  182. package/dist/esm/predictions/index.js +5 -0
  183. package/dist/esm/predictions/keys.d.ts +14 -0
  184. package/dist/esm/predictions/keys.js +33 -0
  185. package/dist/esm/predictions/pdas.d.ts +6 -0
  186. package/dist/esm/predictions/pdas.js +10 -0
  187. package/dist/esm/predictions/relayer.d.ts +3 -0
  188. package/dist/esm/predictions/relayer.js +7 -0
  189. package/dist/esm/predictions/types.d.ts +178 -0
  190. package/dist/esm/predictions/types.js +1 -0
  191. package/dist/esm/program.d.ts +2 -0
  192. package/dist/esm/program.js +4 -3
  193. package/dist/esm/prover.d.ts +27 -4
  194. package/dist/esm/prover.js +106 -15
  195. package/dist/esm/relayer/api.d.ts +31 -0
  196. package/dist/esm/relayer/api.js +55 -0
  197. package/dist/esm/relayer/client.d.ts +29 -17
  198. package/dist/esm/relayer/client.js +72 -17
  199. package/dist/esm/relayer/errors.d.ts +1 -1
  200. package/dist/esm/relayer/errors.js +1 -1
  201. package/dist/esm/relayer/index.d.ts +4 -1
  202. package/dist/esm/relayer/index.js +1 -1
  203. package/dist/esm/relayer/internal-config.d.ts +36 -0
  204. package/dist/esm/relayer/internal-config.js +6 -0
  205. package/dist/esm/relayer/internal.d.ts +6 -0
  206. package/dist/esm/relayer/internal.js +10 -0
  207. package/dist/esm/relayer/transport.d.ts +4 -2
  208. package/dist/esm/relayer/transport.js +10 -5
  209. package/dist/esm/relayer/types.d.ts +9 -10
  210. package/dist/esm/relayer/types.js +1 -1
  211. package/dist/esm/shield/owner.js +1 -4
  212. package/identity.d.ts +2 -0
  213. package/identity.js +3 -0
  214. package/idl.d.ts +2 -0
  215. package/idl.js +3 -0
  216. package/notes.d.ts +2 -0
  217. package/notes.js +3 -0
  218. package/package.json +85 -3
  219. package/perps.d.ts +2 -0
  220. package/perps.js +3 -0
  221. package/poseidon.d.ts +2 -0
  222. package/poseidon.js +3 -0
  223. package/positions.d.ts +2 -0
  224. package/positions.js +3 -0
  225. package/predictions.d.ts +2 -0
  226. package/predictions.js +3 -0
  227. package/proof.d.ts +2 -0
  228. package/proof.js +3 -0
  229. package/prover.d.ts +2 -0
  230. package/prover.js +3 -0
  231. package/relayer.d.ts +2 -0
  232. package/relayer.js +3 -0
  233. package/shield.d.ts +2 -0
  234. package/shield.js +3 -0
  235. package/transactions.d.ts +2 -0
  236. package/transactions.js +3 -0
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JPERP_USD_DECIMALS = exports.JPERP_LONG_DECIMALS = exports.JPERP_LONG_JUPITER_MINTS = exports.JPERP_LONG_POOL_MINTS = exports.JUPITER_PERPS_DOVES_ORACLES = exports.JUPITER_PERPS_CUSTODIES = exports.JPERP_WRAPPED_SOL_MINT = exports.JPERP_NATIVE_SOL_MINT = exports.JPERP_USDC_MINT = exports.JUPITER_JLP_MINT = exports.JUPITER_PERPS_POOL = exports.JUPITER_PERPS_EVENT_AUTHORITY = exports.JUPITER_PERPS_PROGRAM_ID = void 0;
4
+ exports.getJperpMarketPayload = getJperpMarketPayload;
5
+ exports.JUPITER_PERPS_PROGRAM_ID = "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu";
6
+ exports.JUPITER_PERPS_EVENT_AUTHORITY = "37hJBDnntwqhGbK7L6M1bLyvccj4u55CCUiLPdYkiqBN";
7
+ exports.JUPITER_PERPS_POOL = "5BUwFW4nRbftYTDMbgxykoFWqWHPzahFSNAaaaJtVKsq";
8
+ exports.JUPITER_JLP_MINT = "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4";
9
+ exports.JPERP_USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
10
+ exports.JPERP_NATIVE_SOL_MINT = "11111111111111111111111111111111";
11
+ exports.JPERP_WRAPPED_SOL_MINT = "So11111111111111111111111111111111111111112";
12
+ exports.JUPITER_PERPS_CUSTODIES = {
13
+ SOL: "7xS2gz2bTp3fwCC7knJvUWTEU9Tycczu6VhJYKgi1wdz",
14
+ ETH: "AQCGyheWPLeo6Qp9WpYS9m3Qj479t7R636N9ey1rEjEn",
15
+ BTC: "5Pv3gM9JrFFH883SWAhvJC9RPYmo8UNxuFtv5bMMALkm",
16
+ USDC: "G18jKKXQwBbrHeiK3C9MRXhkHsLHf7XgCSisykV46EZa",
17
+ USDT: "4vkNeXiYEUizLdrpdPS1eC2mccyM4NUPRtERrk6ZETkk",
18
+ };
19
+ exports.JUPITER_PERPS_DOVES_ORACLES = {
20
+ SOL: "FYq2BWQ1V5P1WFBqr3qB2Kb5yHVvSv7upzKodgQE5zXh",
21
+ ETH: "AFZnHPzy4mvVCffrVwhewHbFc93uTHvDSFrVH7GtfXF1",
22
+ BTC: "hUqAT1KQ7eW1i6Csp9CXYtpPfSAvi835V7wKi5fRfmC",
23
+ };
24
+ exports.JPERP_LONG_POOL_MINTS = {
25
+ SOL: exports.JPERP_NATIVE_SOL_MINT,
26
+ ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",
27
+ BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",
28
+ };
29
+ exports.JPERP_LONG_JUPITER_MINTS = {
30
+ SOL: exports.JPERP_WRAPPED_SOL_MINT,
31
+ ETH: exports.JPERP_LONG_POOL_MINTS.ETH,
32
+ BTC: exports.JPERP_LONG_POOL_MINTS.BTC,
33
+ };
34
+ exports.JPERP_LONG_DECIMALS = {
35
+ SOL: 9,
36
+ ETH: 8,
37
+ BTC: 8,
38
+ };
39
+ exports.JPERP_USD_DECIMALS = 6;
40
+ /** Resolve the exact market payload duplicated by the wallet-app reference. */
41
+ function getJperpMarketPayload(market, side) {
42
+ const isLong = side === "long";
43
+ return {
44
+ custody: exports.JUPITER_PERPS_CUSTODIES[market],
45
+ collateralCustody: exports.JUPITER_PERPS_CUSTODIES[isLong ? market : "USDC"],
46
+ inputMint: isLong ? exports.JPERP_LONG_POOL_MINTS[market] : exports.JPERP_USDC_MINT,
47
+ jupiterInputMint: isLong
48
+ ? exports.JPERP_LONG_JUPITER_MINTS[market]
49
+ : exports.JPERP_USDC_MINT,
50
+ dovesOracle: exports.JUPITER_PERPS_DOVES_ORACLES[market],
51
+ };
52
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./constants.js";
3
+ export * from "./keys.js";
4
+ export * from "./pdas.js";
5
+ export * from "./relayer.js";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types.js"), exports);
18
+ __exportStar(require("./constants.js"), exports);
19
+ __exportStar(require("./keys.js"), exports);
20
+ __exportStar(require("./pdas.js"), exports);
21
+ __exportStar(require("./relayer.js"), exports);
@@ -0,0 +1,16 @@
1
+ import { Keypair } from "@solana/web3.js";
2
+ export interface JperpKeyBundle {
3
+ withdrawalId: Uint8Array;
4
+ withdrawalIdHex: string;
5
+ claimant: Keypair;
6
+ claimantPublicKey: string;
7
+ claimantSecretKey: string;
8
+ }
9
+ export declare function deriveJperpWithdrawalId(spendingKey: Uint8Array, index: number): Uint8Array;
10
+ export declare function deriveJperpClaimantKeypair(spendingKey: Uint8Array, withdrawalId: Uint8Array): Keypair;
11
+ export declare function jperpWithdrawalIdToHex(withdrawalId: Uint8Array): string;
12
+ export declare function jperpWithdrawalIdFromHex(value: string): Uint8Array;
13
+ /** Derive every client-held key field needed across the jPerp lifecycle. */
14
+ export declare function deriveJperpKeyBundle(spendingKey: Uint8Array, index: number): JperpKeyBundle;
15
+ /** Match the client reference's per-request Jupiter PDA namespace. */
16
+ export declare function createJperpCounter(): string;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deriveJperpWithdrawalId = deriveJperpWithdrawalId;
4
+ exports.deriveJperpClaimantKeypair = deriveJperpClaimantKeypair;
5
+ exports.jperpWithdrawalIdToHex = jperpWithdrawalIdToHex;
6
+ exports.jperpWithdrawalIdFromHex = jperpWithdrawalIdFromHex;
7
+ exports.deriveJperpKeyBundle = deriveJperpKeyBundle;
8
+ exports.createJperpCounter = createJperpCounter;
9
+ const sha256_1 = require("@noble/hashes/sha256");
10
+ const web3_js_1 = require("@solana/web3.js");
11
+ const encoding_js_1 = require("../identity/encoding.js");
12
+ function deriveJperpWithdrawalId(spendingKey, index) {
13
+ (0, encoding_js_1.assertBytes)(spendingKey, 32, "spending key");
14
+ return (0, sha256_1.sha256)((0, encoding_js_1.concatBytes)((0, encoding_js_1.utf8)("jperp_withdrawal_v1"), spendingKey, (0, encoding_js_1.uint32Le)(index, "jPerp position index")));
15
+ }
16
+ function deriveJperpClaimantKeypair(spendingKey, withdrawalId) {
17
+ (0, encoding_js_1.assertBytes)(spendingKey, 32, "spending key");
18
+ (0, encoding_js_1.assertBytes)(withdrawalId, 32, "jPerp withdrawal ID");
19
+ return web3_js_1.Keypair.fromSeed((0, sha256_1.sha256)((0, encoding_js_1.concatBytes)((0, encoding_js_1.utf8)("jperp_claimant"), spendingKey, withdrawalId)));
20
+ }
21
+ function jperpWithdrawalIdToHex(withdrawalId) {
22
+ (0, encoding_js_1.assertBytes)(withdrawalId, 32, "jPerp withdrawal ID");
23
+ return (0, encoding_js_1.bytesToHex)(withdrawalId);
24
+ }
25
+ function jperpWithdrawalIdFromHex(value) {
26
+ return (0, encoding_js_1.hexToBytes)(value, 32, "jPerp withdrawal ID");
27
+ }
28
+ /** Derive every client-held key field needed across the jPerp lifecycle. */
29
+ function deriveJperpKeyBundle(spendingKey, index) {
30
+ const withdrawalId = deriveJperpWithdrawalId(spendingKey, index);
31
+ const claimant = deriveJperpClaimantKeypair(spendingKey, withdrawalId);
32
+ return {
33
+ withdrawalId,
34
+ withdrawalIdHex: jperpWithdrawalIdToHex(withdrawalId),
35
+ claimant,
36
+ claimantPublicKey: claimant.publicKey.toBase58(),
37
+ claimantSecretKey: (0, encoding_js_1.encodeBase58)(claimant.secretKey),
38
+ };
39
+ }
40
+ /** Match the client reference's per-request Jupiter PDA namespace. */
41
+ function createJperpCounter() {
42
+ return String(Math.floor(Math.random() * 1000000000000));
43
+ }
@@ -0,0 +1,29 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import type { JperpSide } from "./types.js";
3
+ export declare const JPERP_SIDE_LONG = 1;
4
+ export declare const JPERP_SIDE_SHORT = 2;
5
+ export declare const JPERP_CHANGE_INCREASE = 1;
6
+ export declare const JPERP_CHANGE_DECREASE = 2;
7
+ export declare function deriveJupiterPerpetualsPda(): PublicKey;
8
+ export declare function deriveJperpExecutorPda(params: {
9
+ programId: PublicKey;
10
+ mint: PublicKey;
11
+ claimant: PublicKey;
12
+ withdrawalId: Uint8Array;
13
+ }): PublicKey;
14
+ export declare function deriveJperpSlotPda(params: {
15
+ programId: PublicKey;
16
+ mint: PublicKey;
17
+ withdrawalId: Uint8Array;
18
+ }): PublicKey;
19
+ export declare function deriveJupiterPerpPositionPda(params: {
20
+ executor: PublicKey;
21
+ custody: PublicKey;
22
+ collateralCustody: PublicKey;
23
+ side: JperpSide;
24
+ }): PublicKey;
25
+ export declare function deriveJupiterPerpRequestPda(params: {
26
+ position: PublicKey;
27
+ counter: bigint;
28
+ change: "increase" | "decrease";
29
+ }): PublicKey;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JPERP_CHANGE_DECREASE = exports.JPERP_CHANGE_INCREASE = exports.JPERP_SIDE_SHORT = exports.JPERP_SIDE_LONG = void 0;
4
+ exports.deriveJupiterPerpetualsPda = deriveJupiterPerpetualsPda;
5
+ exports.deriveJperpExecutorPda = deriveJperpExecutorPda;
6
+ exports.deriveJperpSlotPda = deriveJperpSlotPda;
7
+ exports.deriveJupiterPerpPositionPda = deriveJupiterPerpPositionPda;
8
+ exports.deriveJupiterPerpRequestPda = deriveJupiterPerpRequestPda;
9
+ const web3_js_1 = require("@solana/web3.js");
10
+ const encoding_js_1 = require("../identity/encoding.js");
11
+ const constants_js_1 = require("./constants.js");
12
+ exports.JPERP_SIDE_LONG = 1;
13
+ exports.JPERP_SIDE_SHORT = 2;
14
+ exports.JPERP_CHANGE_INCREASE = 1;
15
+ exports.JPERP_CHANGE_DECREASE = 2;
16
+ function deriveJupiterPerpetualsPda() {
17
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("perpetuals")], new web3_js_1.PublicKey(constants_js_1.JUPITER_PERPS_PROGRAM_ID))[0];
18
+ }
19
+ function deriveJperpExecutorPda(params) {
20
+ (0, encoding_js_1.assertBytes)(params.withdrawalId, 32, "jPerp withdrawal ID");
21
+ return web3_js_1.PublicKey.findProgramAddressSync([
22
+ (0, encoding_js_1.utf8)("jperp_executor"),
23
+ params.mint.toBytes(),
24
+ params.claimant.toBytes(),
25
+ params.withdrawalId,
26
+ ], params.programId)[0];
27
+ }
28
+ function deriveJperpSlotPda(params) {
29
+ (0, encoding_js_1.assertBytes)(params.withdrawalId, 32, "jPerp withdrawal ID");
30
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("jperp_slot_v1"), params.mint.toBytes(), params.withdrawalId], params.programId)[0];
31
+ }
32
+ function deriveJupiterPerpPositionPda(params) {
33
+ return web3_js_1.PublicKey.findProgramAddressSync([
34
+ (0, encoding_js_1.utf8)("position"),
35
+ params.executor.toBytes(),
36
+ new web3_js_1.PublicKey(constants_js_1.JUPITER_PERPS_POOL).toBytes(),
37
+ params.custody.toBytes(),
38
+ params.collateralCustody.toBytes(),
39
+ Uint8Array.from([
40
+ params.side === "long" ? exports.JPERP_SIDE_LONG : exports.JPERP_SIDE_SHORT,
41
+ ]),
42
+ ], new web3_js_1.PublicKey(constants_js_1.JUPITER_PERPS_PROGRAM_ID))[0];
43
+ }
44
+ function deriveJupiterPerpRequestPda(params) {
45
+ return web3_js_1.PublicKey.findProgramAddressSync([
46
+ (0, encoding_js_1.utf8)("position_request"),
47
+ params.position.toBytes(),
48
+ (0, encoding_js_1.uint64Le)(params.counter, "jPerp request counter"),
49
+ Uint8Array.from([
50
+ params.change === "increase"
51
+ ? exports.JPERP_CHANGE_INCREASE
52
+ : exports.JPERP_CHANGE_DECREASE,
53
+ ]),
54
+ ], new web3_js_1.PublicKey(constants_js_1.JUPITER_PERPS_PROGRAM_ID))[0];
55
+ }
@@ -0,0 +1,9 @@
1
+ import type { JperpCancelTriggerRequest, JperpCancelTriggerResponse, JperpCloseRequest, JperpDecreaseResponse, JperpOpenRequest, JperpOpenResponse, JperpRecoverNativeRequest, JperpRecoverNativeResponse, JperpRecoverSeedRequest, JperpRecoverSeedResponse, JperpReissueRequest, JperpReissueResponse, JperpSetTpslRequest, JperpUpdateTpslRequest } from "./types.js";
2
+ export declare function submitJperpOpen(data: JperpOpenRequest): Promise<JperpOpenResponse>;
3
+ export declare function submitJperpClose(data: JperpCloseRequest): Promise<JperpDecreaseResponse>;
4
+ export declare function submitJperpSetTpsl(data: JperpSetTpslRequest): Promise<JperpDecreaseResponse>;
5
+ export declare function submitJperpUpdateTpsl(data: JperpUpdateTpslRequest): Promise<JperpDecreaseResponse>;
6
+ export declare function submitJperpCancelTrigger(data: JperpCancelTriggerRequest): Promise<JperpCancelTriggerResponse>;
7
+ export declare function submitJperpReissue(data: JperpReissueRequest): Promise<JperpReissueResponse>;
8
+ export declare function submitJperpRecoverSeed(data: JperpRecoverSeedRequest): Promise<JperpRecoverSeedResponse>;
9
+ export declare function submitJperpRecoverNative(data: JperpRecoverNativeRequest): Promise<JperpRecoverNativeResponse>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.submitJperpOpen = submitJperpOpen;
4
+ exports.submitJperpClose = submitJperpClose;
5
+ exports.submitJperpSetTpsl = submitJperpSetTpsl;
6
+ exports.submitJperpUpdateTpsl = submitJperpUpdateTpsl;
7
+ exports.submitJperpCancelTrigger = submitJperpCancelTrigger;
8
+ exports.submitJperpReissue = submitJperpReissue;
9
+ exports.submitJperpRecoverSeed = submitJperpRecoverSeed;
10
+ exports.submitJperpRecoverNative = submitJperpRecoverNative;
11
+ const internal_js_1 = require("../relayer/internal.js");
12
+ function submitJperpOpen(data) {
13
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpOpen(data);
14
+ }
15
+ function submitJperpClose(data) {
16
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpClose(data);
17
+ }
18
+ function submitJperpSetTpsl(data) {
19
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpSetTpsl(data);
20
+ }
21
+ function submitJperpUpdateTpsl(data) {
22
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpUpdateTpsl(data);
23
+ }
24
+ function submitJperpCancelTrigger(data) {
25
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpCancelTrigger(data);
26
+ }
27
+ function submitJperpReissue(data) {
28
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpReissue(data);
29
+ }
30
+ function submitJperpRecoverSeed(data) {
31
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpRecoverSeed(data);
32
+ }
33
+ function submitJperpRecoverNative(data) {
34
+ return (0, internal_js_1.getInternalRelayerClient)().submitJperpRecoverNative(data);
35
+ }
@@ -0,0 +1,126 @@
1
+ import type { TransactNote } from "../relayer/types.js";
2
+ export type JperpMarket = "SOL" | "ETH" | "BTC";
3
+ export type JperpSide = "long" | "short";
4
+ /** Jupiter market accounts forwarded to the relayer's Perps CPI builder. */
5
+ export interface JperpMarketPayload {
6
+ custody: string;
7
+ collateralCustody: string;
8
+ /** Veilo pool mint used for notes and the ZK proof. */
9
+ inputMint: string;
10
+ /** Jupiter SPL collateral mint; WSOL when inputMint is native SOL. */
11
+ jupiterInputMint?: string;
12
+ /** Optional; the relayer resolves the known market oracle when omitted. */
13
+ dovesOracle?: string;
14
+ }
15
+ export interface JperpOpenRequest extends JperpMarketPayload {
16
+ notes: TransactNote[];
17
+ depositAmount: string;
18
+ /** 32-byte withdrawal ID, hex. */
19
+ withdrawalId: string;
20
+ claimantPublicKey: string;
21
+ userPublicKey: string;
22
+ /** Position size in Jupiter's 1e6 USD units. */
23
+ sizeUsdDelta: string;
24
+ collateralTokenDelta: string;
25
+ side: JperpSide;
26
+ priceSlippage?: string;
27
+ counter: string;
28
+ }
29
+ export interface JperpOpenResponse {
30
+ success: boolean;
31
+ message: string;
32
+ data?: {
33
+ txSignature: string;
34
+ executor: string;
35
+ position: string;
36
+ positionRequest: string;
37
+ changeAmount: string;
38
+ };
39
+ }
40
+ export interface JperpDecreaseBase extends JperpMarketPayload {
41
+ withdrawalId: string;
42
+ claimantSecretKey: string;
43
+ userPublicKey: string;
44
+ side: JperpSide;
45
+ counter: string;
46
+ }
47
+ export interface JperpCloseRequest extends JperpDecreaseBase {
48
+ collateralUsdDelta?: string;
49
+ sizeUsdDelta?: string;
50
+ entirePosition?: boolean;
51
+ priceSlippage?: string;
52
+ }
53
+ export interface JperpSetTpslRequest extends JperpDecreaseBase {
54
+ collateralUsdDelta?: string;
55
+ sizeUsdDelta?: string;
56
+ triggerPrice: string;
57
+ triggerAboveThreshold: boolean;
58
+ entirePosition?: boolean;
59
+ }
60
+ export interface JperpUpdateTpslRequest extends JperpDecreaseBase {
61
+ sizeUsdDelta?: string;
62
+ triggerPrice: string;
63
+ }
64
+ export interface JperpDecreaseResponse {
65
+ success: boolean;
66
+ message: string;
67
+ data?: {
68
+ txSignature: string;
69
+ positionRequest: string;
70
+ };
71
+ }
72
+ export interface JperpReissueRequest {
73
+ withdrawalId: string;
74
+ claimantSecretKey: string;
75
+ reissueAmount: string;
76
+ veiloPublicKey: string;
77
+ userPublicKey: string;
78
+ poolMint?: string;
79
+ }
80
+ export interface JperpReissueResponse {
81
+ success: boolean;
82
+ message: string;
83
+ data?: {
84
+ txSignature: string;
85
+ reissueAmount: string;
86
+ };
87
+ }
88
+ export interface JperpRecoverSeedRequest {
89
+ withdrawalId: string;
90
+ claimantPublicKey: string;
91
+ poolMint: string;
92
+ userPublicKey: string;
93
+ }
94
+ export interface JperpRecoverSeedResponse {
95
+ success: boolean;
96
+ message: string;
97
+ data?: {
98
+ txSignature?: string;
99
+ executorWsolAta: string;
100
+ recoverable: string;
101
+ };
102
+ }
103
+ export type JperpCancelTriggerRequest = JperpDecreaseBase;
104
+ export interface JperpCancelTriggerResponse {
105
+ success: boolean;
106
+ message: string;
107
+ data?: {
108
+ txSignature: string;
109
+ triggerRequest: string;
110
+ };
111
+ }
112
+ export interface JperpRecoverNativeRequest {
113
+ withdrawalId: string;
114
+ claimantSecretKey: string;
115
+ veiloPublicKey: string;
116
+ userPublicKey: string;
117
+ poolMint?: string;
118
+ }
119
+ export interface JperpRecoverNativeResponse {
120
+ success: boolean;
121
+ message: string;
122
+ data?: {
123
+ txSignature: string;
124
+ recoverAmount: string;
125
+ };
126
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export * from "./types.js";
2
+ export * from "./keys.js";
3
+ export * from "./pdas.js";
4
+ export * from "./relayer.js";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types.js"), exports);
18
+ __exportStar(require("./keys.js"), exports);
19
+ __exportStar(require("./pdas.js"), exports);
20
+ __exportStar(require("./relayer.js"), exports);
@@ -0,0 +1,29 @@
1
+ import { Keypair, PublicKey } from "@solana/web3.js";
2
+ import type { NewPositionKeys, PositionNotePayload } from "./types.js";
3
+ export interface PositionKeyMaterial {
4
+ positionSecretN: bigint;
5
+ positionBlinding: bigint;
6
+ positionPubkey: bigint;
7
+ positionPdaKeyBytes: Uint8Array;
8
+ }
9
+ export interface PositionKeyBundle {
10
+ material: PositionKeyMaterial;
11
+ claimant: Keypair;
12
+ position: NewPositionKeys;
13
+ }
14
+ /** Derive the exact Poseidon key material used by private position notes. */
15
+ export declare function derivePositionKeys(spendingKey: Uint8Array, index: number): PositionKeyMaterial;
16
+ /** Deterministic claimant required to close or merge a position. */
17
+ export declare function derivePositionClaimantKeypair(spendingKey: Uint8Array, positionPdaKeyBytes: Uint8Array): Keypair;
18
+ /** Derive both local secret material and the public request payload. */
19
+ export declare function derivePositionKeyBundle(spendingKey: Uint8Array, index: number): PositionKeyBundle;
20
+ /** Serialize a returned open/merge position into the relayer's close shape. */
21
+ export declare function createPositionNotePayload(params: {
22
+ amount: bigint | string;
23
+ commitment: Uint8Array | string;
24
+ leafIndex: number;
25
+ mint: PublicKey | string;
26
+ isToken2022: boolean;
27
+ treeId?: number;
28
+ keys: PositionKeyMaterial;
29
+ }): PositionNotePayload;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.derivePositionKeys = derivePositionKeys;
4
+ exports.derivePositionClaimantKeypair = derivePositionClaimantKeypair;
5
+ exports.derivePositionKeyBundle = derivePositionKeyBundle;
6
+ exports.createPositionNotePayload = createPositionNotePayload;
7
+ const sha256_1 = require("@noble/hashes/sha256");
8
+ const web3_js_1 = require("@solana/web3.js");
9
+ const poseidon_js_1 = require("../poseidon.js");
10
+ const encoding_js_1 = require("../identity/encoding.js");
11
+ /** Derive the exact Poseidon key material used by private position notes. */
12
+ function derivePositionKeys(spendingKey, index) {
13
+ (0, encoding_js_1.assertBytes)(spendingKey, 32, "spending key");
14
+ if (!Number.isSafeInteger(index) || index < 0) {
15
+ throw new RangeError("position index must be a non-negative safe integer");
16
+ }
17
+ const rootSecret = (0, poseidon_js_1.bytesToBigIntBE)((0, sha256_1.sha256)((0, encoding_js_1.concatBytes)(spendingKey, (0, encoding_js_1.utf8)("veilo_v1")))) % poseidon_js_1.BN254_FR_MODULUS;
18
+ const positionSecretN = (0, poseidon_js_1.poseidon2)(rootSecret, BigInt(index));
19
+ const positionBlinding = (0, poseidon_js_1.poseidon2)(positionSecretN, 1n);
20
+ const positionPubkey = (0, poseidon_js_1.poseidon1)(positionSecretN);
21
+ return {
22
+ positionSecretN,
23
+ positionBlinding,
24
+ positionPubkey,
25
+ positionPdaKeyBytes: (0, poseidon_js_1.bigIntToBytesBE)(positionPubkey),
26
+ };
27
+ }
28
+ /** Deterministic claimant required to close or merge a position. */
29
+ function derivePositionClaimantKeypair(spendingKey, positionPdaKeyBytes) {
30
+ (0, encoding_js_1.assertBytes)(spendingKey, 32, "spending key");
31
+ (0, encoding_js_1.assertBytes)(positionPdaKeyBytes, 32, "position PDA key");
32
+ return web3_js_1.Keypair.fromSeed((0, sha256_1.sha256)((0, encoding_js_1.concatBytes)((0, encoding_js_1.utf8)("position_claimant"), spendingKey, positionPdaKeyBytes)));
33
+ }
34
+ /** Derive both local secret material and the public request payload. */
35
+ function derivePositionKeyBundle(spendingKey, index) {
36
+ const material = derivePositionKeys(spendingKey, index);
37
+ const claimant = derivePositionClaimantKeypair(spendingKey, material.positionPdaKeyBytes);
38
+ return {
39
+ material,
40
+ claimant,
41
+ position: {
42
+ pubkey: material.positionPubkey.toString(),
43
+ blinding: (0, encoding_js_1.bytesToHex)((0, poseidon_js_1.bigIntToBytesBE)(material.positionBlinding)),
44
+ pdaKey: (0, encoding_js_1.bytesToHex)(material.positionPdaKeyBytes),
45
+ claimantPublicKey: claimant.publicKey.toBase58(),
46
+ },
47
+ };
48
+ }
49
+ /** Serialize a returned open/merge position into the relayer's close shape. */
50
+ function createPositionNotePayload(params) {
51
+ if (!Number.isSafeInteger(params.leafIndex) || params.leafIndex < 0) {
52
+ throw new RangeError("leafIndex must be a non-negative safe integer");
53
+ }
54
+ const commitment = typeof params.commitment === "string"
55
+ ? (0, encoding_js_1.hexToBytes)(params.commitment, 32, "position commitment")
56
+ : params.commitment;
57
+ (0, encoding_js_1.assertBytes)(commitment, 32, "position commitment");
58
+ const mint = params.mint instanceof web3_js_1.PublicKey ? params.mint : new web3_js_1.PublicKey(params.mint);
59
+ return {
60
+ amount: params.amount.toString(),
61
+ commitment: (0, encoding_js_1.bytesToHex)(commitment),
62
+ privateKey: (0, encoding_js_1.bytesToHex)((0, poseidon_js_1.bigIntToBytesBE)(params.keys.positionSecretN)),
63
+ publicKey: params.keys.positionPubkey.toString(),
64
+ blinding: (0, encoding_js_1.bytesToHex)((0, poseidon_js_1.bigIntToBytesBE)(params.keys.positionBlinding)),
65
+ leafIndex: params.leafIndex,
66
+ positionPdaKey: (0, encoding_js_1.bytesToHex)(params.keys.positionPdaKeyBytes),
67
+ mint: mint.toBase58(),
68
+ isToken2022: params.isToken2022,
69
+ treeId: params.treeId ?? 0,
70
+ };
71
+ }
@@ -0,0 +1,15 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function derivePositionConfigPda(programId: PublicKey): PublicKey;
3
+ export declare function derivePositionTreePda(programId: PublicKey, treeId?: number): PublicKey;
4
+ export declare function derivePositionVaultRecordPda(programId: PublicKey, mint: PublicKey): PublicKey;
5
+ export declare function derivePositionVaultPda(programId: PublicKey, mint: PublicKey): PublicKey;
6
+ export declare function derivePositionPda(programId: PublicKey, positionPdaKey: Uint8Array): PublicKey;
7
+ export declare function derivePositionNullifierMarkerPda(programId: PublicKey, mint: PublicKey, nullifier: Uint8Array): PublicKey;
8
+ export declare function derivePositionExecutorPda(params: {
9
+ programId: PublicKey;
10
+ sourceMint: PublicKey;
11
+ destMint: PublicKey;
12
+ inputNullifier0: Uint8Array;
13
+ relayer: PublicKey;
14
+ }): PublicKey;
15
+ export declare function derivePositionSwapLegsBufferPda(programId: PublicKey, nullifier0: Uint8Array): PublicKey;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.derivePositionConfigPda = derivePositionConfigPda;
4
+ exports.derivePositionTreePda = derivePositionTreePda;
5
+ exports.derivePositionVaultRecordPda = derivePositionVaultRecordPda;
6
+ exports.derivePositionVaultPda = derivePositionVaultPda;
7
+ exports.derivePositionPda = derivePositionPda;
8
+ exports.derivePositionNullifierMarkerPda = derivePositionNullifierMarkerPda;
9
+ exports.derivePositionExecutorPda = derivePositionExecutorPda;
10
+ exports.derivePositionSwapLegsBufferPda = derivePositionSwapLegsBufferPda;
11
+ const web3_js_1 = require("@solana/web3.js");
12
+ const encoding_js_1 = require("../identity/encoding.js");
13
+ function treeIdLe(treeId) {
14
+ if (!Number.isInteger(treeId) || treeId < 0 || treeId > 0xffff) {
15
+ throw new RangeError("position tree ID must be an unsigned 16-bit integer");
16
+ }
17
+ const bytes = new Uint8Array(2);
18
+ new DataView(bytes.buffer).setUint16(0, treeId, true);
19
+ return bytes;
20
+ }
21
+ function derivePositionConfigPda(programId) {
22
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_config_v1")], programId)[0];
23
+ }
24
+ function derivePositionTreePda(programId, treeId = 0) {
25
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_tree_v1"), treeIdLe(treeId)], programId)[0];
26
+ }
27
+ function derivePositionVaultRecordPda(programId, mint) {
28
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_vault_v1"), mint.toBytes()], programId)[0];
29
+ }
30
+ function derivePositionVaultPda(programId, mint) {
31
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_vault_token_v1"), mint.toBytes()], programId)[0];
32
+ }
33
+ function derivePositionPda(programId, positionPdaKey) {
34
+ (0, encoding_js_1.assertBytes)(positionPdaKey, 32, "position PDA key");
35
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_pda_v1"), positionPdaKey], programId)[0];
36
+ }
37
+ function derivePositionNullifierMarkerPda(programId, mint, nullifier) {
38
+ (0, encoding_js_1.assertBytes)(nullifier, 32, "position nullifier");
39
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("position_nullifier_v1"), mint.toBytes(), nullifier], programId)[0];
40
+ }
41
+ function derivePositionExecutorPda(params) {
42
+ (0, encoding_js_1.assertBytes)(params.inputNullifier0, 32, "input nullifier");
43
+ return web3_js_1.PublicKey.findProgramAddressSync([
44
+ (0, encoding_js_1.utf8)("position_executor"),
45
+ params.sourceMint.toBytes(),
46
+ params.destMint.toBytes(),
47
+ params.inputNullifier0,
48
+ params.relayer.toBytes(),
49
+ ], params.programId)[0];
50
+ }
51
+ function derivePositionSwapLegsBufferPda(programId, nullifier0) {
52
+ (0, encoding_js_1.assertBytes)(nullifier0, 32, "input nullifier");
53
+ return web3_js_1.PublicKey.findProgramAddressSync([(0, encoding_js_1.utf8)("swap_legs_v1"), nullifier0], programId)[0];
54
+ }
@@ -0,0 +1,4 @@
1
+ import type { ClosePositionRequest, ClosePositionResponse, MergePositionsRequest, MergePositionsResponse, OpenPositionRequest, OpenPositionResponse } from "./types.js";
2
+ export declare function submitOpenPosition(data: OpenPositionRequest): Promise<OpenPositionResponse>;
3
+ export declare function submitClosePosition(data: ClosePositionRequest): Promise<ClosePositionResponse>;
4
+ export declare function submitMergePositions(data: MergePositionsRequest): Promise<MergePositionsResponse>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.submitOpenPosition = submitOpenPosition;
4
+ exports.submitClosePosition = submitClosePosition;
5
+ exports.submitMergePositions = submitMergePositions;
6
+ const internal_js_1 = require("../relayer/internal.js");
7
+ function submitOpenPosition(data) {
8
+ return (0, internal_js_1.getInternalRelayerClient)().submitOpenPosition(data);
9
+ }
10
+ function submitClosePosition(data) {
11
+ return (0, internal_js_1.getInternalRelayerClient)().submitClosePosition(data);
12
+ }
13
+ function submitMergePositions(data) {
14
+ return (0, internal_js_1.getInternalRelayerClient)().submitMergePositions(data);
15
+ }