jaspervault_cli 1.0.23 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # JasperVault CLI (`jv`)
1
+ # JasperVault CLI
2
2
 
3
3
  Trade perpetuals on JasperVault through AI conversation. Install this CLI and connect your AI assistant (OpenClaw, Cursor, Claude Code) — then just talk to place orders, set take-profits, and manage positions without touching the command line.
4
4
 
@@ -85,9 +85,9 @@ All configuration is done via environment variables. For most users, **no config
85
85
  | `JV_JASPERVAULT_RPC_URL` | No | JasperVault chain RPC URL override | built-in |
86
86
  | `JV_SUBGRAPH_URL` | No | Subgraph endpoint override | built-in per network |
87
87
  | `WC_PROJECT_ID` | No | WalletConnect Cloud project ID (get one at [cloud.reown.com](https://cloud.reown.com)) | — |
88
- | `PRIVATE_KEY` | No* | EOA wallet private key; only needed for traditional `vault init` and `deposit` | — |
88
+ | `PRIVATE_KEY` | No* | EOA wallet private key; when set, `deposit` and `vault init` execute directly without WalletConnect | — |
89
89
 
90
- \* Not required when using the WalletConnect flow (`vault setup`, `deposit info`).
90
+ \* Not required when using the WalletConnect flow (`vault setup`, `deposit`).
91
91
 
92
92
  ### Connecting to a Different Environment
93
93
 
@@ -111,7 +111,15 @@ To deposit tokens from Base to JasperVault, tell OpenClaw:
111
111
 
112
112
  > **"Deposit 100 JUSDC into my vault"**
113
113
 
114
- OpenClaw will fetch the transaction data and send it to your phone via WalletConnect for approval.
114
+ Or run it directly:
115
+
116
+ ```bash
117
+ jv deposit --token jusdc --amount 100 --pretty
118
+ ```
119
+
120
+ The CLI auto-detects how to sign:
121
+ - **`PRIVATE_KEY` set** → signs and sends the transaction directly
122
+ - **No `PRIVATE_KEY`** → displays a WalletConnect QR code; scan with your mobile wallet to approve on your phone
115
123
 
116
124
  ---
117
125
 
@@ -1,5 +1,5 @@
1
1
  import { Command } from 'commander';
2
- import { ethers } from 'ethers';
2
+ import type { Provider } from 'ethers';
3
3
  import type { WarpTokenConfig } from '../services/chain-config.js';
4
4
  export interface UnsignedTx {
5
5
  to: string;
@@ -26,7 +26,7 @@ export interface DepositTxInfo {
26
26
  /**
27
27
  * Compute vault address from vault factory (read-only).
28
28
  */
29
- export declare function computeVaultAddress(provider: ethers.Provider, vaultFactoryAddress: string, ownerAddress: string, vaultIndex: number): Promise<string>;
29
+ export declare function computeVaultAddress(provider: Provider, vaultFactoryAddress: string, ownerAddress: string, vaultIndex: number): Promise<string>;
30
30
  /**
31
31
  * Build approve tx calldata for ERC20.
32
32
  */
@@ -42,7 +42,7 @@ export declare function buildDepositTransactions(warpConfig: WarpTokenConfig, re
42
42
  /**
43
43
  * Check balances and allowance for deposit (read-only).
44
44
  */
45
- export declare function checkDepositBalances(baseProvider: ethers.Provider, walletAddress: string, warpConfig: WarpTokenConfig, amountWei: bigint): Promise<{
45
+ export declare function checkDepositBalances(baseProvider: Provider, walletAddress: string, warpConfig: WarpTokenConfig, amountWei: bigint): Promise<{
46
46
  underlyingBalance: bigint;
47
47
  warpBalance: bigint;
48
48
  allowance: bigint;
@@ -52,7 +52,7 @@ export declare function checkDepositBalances(baseProvider: ethers.Provider, wall
52
52
  /**
53
53
  * Poll for token arrival on JasperVault chain.
54
54
  */
55
- export declare function pollForDepositArrival(jaspervaultProvider: ethers.Provider, destWarpRouterAddress: string, recipient: string, initialBalance: bigint, timeoutMs?: number): Promise<{
55
+ export declare function pollForDepositArrival(jaspervaultProvider: Provider, destWarpRouterAddress: string, recipient: string, initialBalance: bigint, timeoutMs?: number): Promise<{
56
56
  arrived: boolean;
57
57
  arrivalTimeMs?: number;
58
58
  }>;
@@ -1,6 +1,7 @@
1
- import { ethers } from 'ethers';
1
+ import { Contract, Interface, JsonRpcProvider, MaxUint256, Wallet, parseUnits, zeroPadValue, } from 'ethers';
2
2
  import { printJson, exitWithError, EXIT_CODES } from '../utils/output.js';
3
3
  import { getWarpConfig, getBaseRpcUrl, getJaspervaultRpcUrl, getNetworkConfig, } from '../services/chain-config.js';
4
+ import { initWcAndConnect, startHeartbeat } from './connect.js';
4
5
  const ERC20_ABI = [
5
6
  'function balanceOf(address account) external view returns (uint256)',
6
7
  'function allowance(address owner, address spender) external view returns (uint256)',
@@ -22,7 +23,7 @@ const POLL_INTERVAL_MS = 1000;
22
23
  * Compute vault address from vault factory (read-only).
23
24
  */
24
25
  export async function computeVaultAddress(provider, vaultFactoryAddress, ownerAddress, vaultIndex) {
25
- const iface = new ethers.Interface(VAULT_FACTORY_ABI);
26
+ const iface = new Interface(VAULT_FACTORY_ABI);
26
27
  const data = iface.encodeFunctionData('getAddress', [ownerAddress, BigInt(vaultIndex)]);
27
28
  const result = await provider.call({ to: vaultFactoryAddress, data });
28
29
  const decoded = iface.decodeFunctionResult('getAddress', result);
@@ -32,15 +33,15 @@ export async function computeVaultAddress(provider, vaultFactoryAddress, ownerAd
32
33
  * Build approve tx calldata for ERC20.
33
34
  */
34
35
  export function buildApproveCalldata(spender, amountWei) {
35
- const iface = new ethers.Interface(ERC20_ABI);
36
+ const iface = new Interface(ERC20_ABI);
36
37
  return iface.encodeFunctionData('approve', [spender, amountWei]);
37
38
  }
38
39
  /**
39
40
  * Build transferRemote tx calldata for Hyperlane Warp.
40
41
  */
41
42
  export function buildTransferRemoteCalldata(destinationDomain, recipient, amountWei) {
42
- const iface = new ethers.Interface(HYP_ERC20_ABI);
43
- const recipientBytes32 = ethers.zeroPadValue(recipient, 32);
43
+ const iface = new Interface(HYP_ERC20_ABI);
44
+ const recipientBytes32 = zeroPadValue(recipient, 32);
44
45
  return iface.encodeFunctionData('transferRemote', [
45
46
  destinationDomain,
46
47
  recipientBytes32,
@@ -60,7 +61,7 @@ export function buildDepositTransactions(warpConfig, recipient, amountWei, needs
60
61
  required: true,
61
62
  tx: {
62
63
  to: warpConfig.base.underlyingToken,
63
- data: buildApproveCalldata(warpConfig.base.warpRouter, ethers.MaxUint256),
64
+ data: buildApproveCalldata(warpConfig.base.warpRouter, MaxUint256),
64
65
  value: '0x0',
65
66
  chainId: chainIdHex,
66
67
  },
@@ -83,8 +84,8 @@ export function buildDepositTransactions(warpConfig, recipient, amountWei, needs
83
84
  * Check balances and allowance for deposit (read-only).
84
85
  */
85
86
  export async function checkDepositBalances(baseProvider, walletAddress, warpConfig, amountWei) {
86
- const underlyingToken = new ethers.Contract(warpConfig.base.underlyingToken, ERC20_ABI, baseProvider);
87
- const warpRouter = new ethers.Contract(warpConfig.base.warpRouter, HYP_ERC20_ABI, baseProvider);
87
+ const underlyingToken = new Contract(warpConfig.base.underlyingToken, ERC20_ABI, baseProvider);
88
+ const warpRouter = new Contract(warpConfig.base.warpRouter, HYP_ERC20_ABI, baseProvider);
88
89
  const [underlyingBalance, warpBalance, allowance] = await Promise.all([
89
90
  underlyingToken.balanceOf(walletAddress),
90
91
  warpRouter.balanceOf(walletAddress),
@@ -98,7 +99,7 @@ export async function checkDepositBalances(baseProvider, walletAddress, warpConf
98
99
  * Poll for token arrival on JasperVault chain.
99
100
  */
100
101
  export async function pollForDepositArrival(jaspervaultProvider, destWarpRouterAddress, recipient, initialBalance, timeoutMs = POLL_TIMEOUT_MS) {
101
- const destWarpRouter = new ethers.Contract(destWarpRouterAddress, ERC20_ABI, jaspervaultProvider);
102
+ const destWarpRouter = new Contract(destWarpRouterAddress, ERC20_ABI, jaspervaultProvider);
102
103
  const pollStart = Date.now();
103
104
  while (Date.now() - pollStart < timeoutMs) {
104
105
  try {
@@ -114,148 +115,160 @@ export async function pollForDepositArrival(jaspervaultProvider, destWarpRouterA
114
115
  }
115
116
  return { arrived: false };
116
117
  }
118
+ /**
119
+ * Send a transaction via WalletConnect and wait for on-chain confirmation.
120
+ */
121
+ async function sendWcTransaction(client, session, walletAddress, to, data, baseProvider, phase, heartbeatMsg) {
122
+ const heartbeat = startHeartbeat(phase, heartbeatMsg);
123
+ let txHash;
124
+ try {
125
+ txHash = (await client.request({
126
+ topic: session.topic,
127
+ chainId: `eip155:${BASE_CHAIN_ID}`,
128
+ request: {
129
+ method: 'eth_sendTransaction',
130
+ params: [{
131
+ from: walletAddress,
132
+ to,
133
+ data,
134
+ value: '0x0',
135
+ }],
136
+ },
137
+ }));
138
+ }
139
+ catch (err) {
140
+ heartbeat.stop();
141
+ throw new Error(`Transaction rejected or failed: ${err.message}`);
142
+ }
143
+ heartbeat.stop();
144
+ await baseProvider.waitForTransaction(txHash, 1);
145
+ return txHash;
146
+ }
117
147
  export function registerDepositCommand(program) {
118
- const deposit = program
148
+ program
119
149
  .command('deposit')
120
- .description('Deposit tokens via Hyperlane Warp Route (Base -> JasperVault)');
121
- deposit
122
- .command('info')
123
- .description('Output unsigned tx data for WalletConnect (approve + transferRemote)')
124
- .requiredOption('--wallet <address>', 'User EOA wallet address (from WalletConnect)')
150
+ .description('Deposit tokens from Base to JasperVault (auto-detects PRIVATE_KEY or WalletConnect)')
125
151
  .requiredOption('--token <symbol>', 'Token: jbtc | jusdc | cbbtc | usdc')
126
- .requiredOption('--amount <value>', 'Amount in human-readable units, e.g. "100" for USDC')
127
- .option('--network <name>', 'Network for vault address computation', 'jaspervault')
128
- .option('--vault-index <n>', 'Vault index for computing recipient', '1')
129
- .option('--pretty', 'Pretty-print JSON output')
130
- .action(async (opts) => {
131
- const walletAddress = ethers.getAddress(opts.wallet);
132
- const warpConfig = getWarpConfig(opts.token);
133
- const baseRpc = getBaseRpcUrl();
134
- const jaspervaultRpc = getJaspervaultRpcUrl();
135
- const net = getNetworkConfig(opts.network);
136
- const baseProvider = new ethers.JsonRpcProvider(baseRpc);
137
- const jaspervaultProvider = new ethers.JsonRpcProvider(jaspervaultRpc);
138
- const vaultIndex = parseInt(opts.vaultIndex, 10);
139
- const recipient = await computeVaultAddress(jaspervaultProvider, net.contracts.vaultFactory, walletAddress, vaultIndex);
140
- const amountWei = ethers.parseUnits(opts.amount, warpConfig.decimals);
141
- const { hasEnough, needsApprove } = await checkDepositBalances(baseProvider, walletAddress, warpConfig, amountWei);
142
- if (!hasEnough) {
143
- exitWithError(`Insufficient balance. Required: ${opts.amount} ${warpConfig.symbol}`, EXIT_CODES.BUSINESS_ERROR);
144
- }
145
- const transactions = buildDepositTransactions(warpConfig, recipient, amountWei, needsApprove);
146
- const result = {
147
- success: true,
148
- recipient,
149
- token: warpConfig.symbol,
150
- amount: opts.amount,
151
- amountWei: amountWei.toString(),
152
- transactions,
153
- polling: {
154
- description: 'After tx confirms, check arrival on JasperVault',
155
- command: `jv deposit poll --recipient ${recipient} --token ${opts.token} --network ${opts.network}`,
156
- },
157
- };
158
- printJson(result, opts.pretty);
159
- });
160
- deposit
161
- .command('poll')
162
- .description('Poll for token arrival on JasperVault chain')
163
- .requiredOption('--recipient <address>', 'Vault address (recipient)')
164
- .requiredOption('--token <symbol>', 'Token: jbtc | jusdc | cbbtc | usdc')
165
- .option('--timeout <seconds>', 'Poll timeout in seconds', '60')
166
- .option('--network <name>', 'Network (for dest warp router)', 'jaspervault')
167
- .option('--pretty', 'Pretty-print JSON output')
168
- .action(async (opts) => {
169
- const warpConfig = getWarpConfig(opts.token);
170
- const jaspervaultRpc = getJaspervaultRpcUrl();
171
- const jaspervaultProvider = new ethers.JsonRpcProvider(jaspervaultRpc);
172
- const destWarpRouter = new ethers.Contract(warpConfig.jaspervault.warpRouter, ERC20_ABI, jaspervaultProvider);
173
- let initialBalance = 0n;
174
- try {
175
- initialBalance = await destWarpRouter.balanceOf(opts.recipient);
176
- }
177
- catch {
178
- // ignore
179
- }
180
- const timeoutMs = parseInt(opts.timeout, 10) * 1000;
181
- const { arrived, arrivalTimeMs } = await pollForDepositArrival(jaspervaultProvider, warpConfig.jaspervault.warpRouter, opts.recipient, initialBalance, timeoutMs);
182
- const result = {
183
- success: true,
184
- arrived,
185
- arrivalTimeMs: arrived ? arrivalTimeMs : undefined,
186
- message: arrived
187
- ? `Tokens arrived on JasperVault in ${arrivalTimeMs}ms`
188
- : 'Timeout; tokens may still be in transit to JasperVault',
189
- };
190
- printJson(result, opts.pretty);
191
- });
192
- deposit
193
- .command('run', { isDefault: true })
194
- .description('Execute deposit (requires PRIVATE_KEY)')
195
- .requiredOption('--token <symbol>', 'Token: jbtc | jusdc | cbbtc | usdc')
196
- .requiredOption('--amount <value>', 'Amount in human-readable units, e.g. "100" for USDC')
152
+ .requiredOption('--amount <value>', 'Amount in human-readable units, e.g. "1000" for JUSDC')
197
153
  .option('--network <name>', 'Network for vault address computation', 'jaspervault')
198
154
  .option('--vault-index <n>', 'Vault index for computing recipient', '1')
155
+ .option('--timeout <seconds>', 'WalletConnect connection timeout in seconds', '120')
199
156
  .option('--no-wait', 'Skip polling for arrival on JasperVault')
200
157
  .option('--pretty', 'Pretty-print JSON output')
201
158
  .action(async (opts) => {
202
159
  const privateKey = process.env.PRIVATE_KEY;
203
- if (!privateKey) {
204
- exitWithError('PRIVATE_KEY environment variable is not set. Set it to your EOA wallet private key.', EXIT_CODES.CONFIG_ERROR);
160
+ const mode = privateKey ? 'pk' : 'wc';
161
+ let walletAddress;
162
+ let wcClient = null;
163
+ let wcSession = null;
164
+ // Step 1: obtain wallet address + signing capability
165
+ if (mode === 'pk') {
166
+ walletAddress = new Wallet(privateKey).address;
167
+ }
168
+ else {
169
+ const timeoutS = parseInt(opts.timeout, 10) || 120;
170
+ let wcResult;
171
+ try {
172
+ wcResult = await initWcAndConnect({
173
+ timeoutS,
174
+ onAwaiting: (uri, { qrCodeUrl }) => {
175
+ printJson({
176
+ status: 'awaiting_connection',
177
+ qrCodeUrl,
178
+ uri,
179
+ message: 'Scan QR code or paste URI in wallet to connect',
180
+ }, opts.pretty);
181
+ },
182
+ });
183
+ }
184
+ catch (err) {
185
+ printJson({ success: false, message: err.message }, opts.pretty);
186
+ process.exit(EXIT_CODES.BUSINESS_ERROR);
187
+ }
188
+ wcClient = wcResult.client;
189
+ wcSession = wcResult.session;
190
+ walletAddress = wcResult.walletAddress;
205
191
  }
206
- const wallet = new ethers.Wallet(privateKey);
207
192
  const warpConfig = getWarpConfig(opts.token);
208
193
  const baseRpc = getBaseRpcUrl();
209
194
  const jaspervaultRpc = getJaspervaultRpcUrl();
210
195
  const net = getNetworkConfig(opts.network);
211
- const baseProvider = new ethers.JsonRpcProvider(baseRpc);
212
- const jaspervaultProvider = new ethers.JsonRpcProvider(jaspervaultRpc);
196
+ const baseProvider = new JsonRpcProvider(baseRpc);
197
+ const jaspervaultProvider = new JsonRpcProvider(jaspervaultRpc);
198
+ // Step 2: compute vault address + check balance
213
199
  const vaultIndex = parseInt(opts.vaultIndex, 10);
214
- const recipient = await computeVaultAddress(jaspervaultProvider, net.contracts.vaultFactory, wallet.address, vaultIndex);
215
- const amountWei = ethers.parseUnits(opts.amount, warpConfig.decimals);
216
- const { hasEnough, needsApprove } = await checkDepositBalances(baseProvider, wallet.address, warpConfig, amountWei);
200
+ const recipient = await computeVaultAddress(jaspervaultProvider, net.contracts.vaultFactory, walletAddress, vaultIndex);
201
+ const amountWei = parseUnits(opts.amount, warpConfig.decimals);
202
+ const { hasEnough, needsApprove } = await checkDepositBalances(baseProvider, walletAddress, warpConfig, amountWei);
217
203
  if (!hasEnough) {
218
204
  exitWithError(`Insufficient balance. Required: ${opts.amount} ${warpConfig.symbol}`, EXIT_CODES.BUSINESS_ERROR);
219
205
  }
220
- const underlyingToken = new ethers.Contract(warpConfig.base.underlyingToken, ERC20_ABI, wallet.connect(baseProvider));
221
- const warpRouter = new ethers.Contract(warpConfig.base.warpRouter, HYP_ERC20_ABI, wallet.connect(baseProvider));
222
- if (needsApprove) {
223
- const approveTx = await underlyingToken.approve(warpConfig.base.warpRouter, ethers.MaxUint256);
224
- await approveTx.wait(1);
225
- }
206
+ let transferTxHash;
226
207
  const transferStartTime = Date.now();
227
- const recipientBytes32 = ethers.zeroPadValue(recipient, 32);
228
- const tx = await warpRouter.transferRemote(warpConfig.jaspervault.domain, recipientBytes32, amountWei, { value: 0n });
229
- const receipt = await tx.wait(1);
208
+ if (mode === 'pk') {
209
+ // Step 3 & 4 (PK): sign and send directly
210
+ const wallet = new Wallet(privateKey, baseProvider);
211
+ const underlyingToken = new Contract(warpConfig.base.underlyingToken, ERC20_ABI, wallet);
212
+ const warpRouter = new Contract(warpConfig.base.warpRouter, HYP_ERC20_ABI, wallet);
213
+ if (needsApprove) {
214
+ const approveTx = await underlyingToken.approve(warpConfig.base.warpRouter, MaxUint256);
215
+ await approveTx.wait(1);
216
+ }
217
+ const recipientBytes32 = zeroPadValue(recipient, 32);
218
+ const tx = await warpRouter.transferRemote(warpConfig.jaspervault.domain, recipientBytes32, amountWei, { value: 0n });
219
+ const receipt = await tx.wait(1);
220
+ transferTxHash = receipt.hash;
221
+ }
222
+ else {
223
+ // Step 3 & 4 (WC): send via WalletConnect
224
+ if (needsApprove) {
225
+ const approveCalldata = buildApproveCalldata(warpConfig.base.warpRouter, MaxUint256);
226
+ await sendWcTransaction(wcClient, wcSession, walletAddress, warpConfig.base.underlyingToken, approveCalldata, baseProvider, 'approve', 'Waiting for approve confirmation on wallet...');
227
+ }
228
+ const transferCalldata = buildTransferRemoteCalldata(warpConfig.jaspervault.domain, recipient, amountWei);
229
+ transferTxHash = await sendWcTransaction(wcClient, wcSession, walletAddress, warpConfig.base.warpRouter, transferCalldata, baseProvider, 'transfer', 'Waiting for transfer confirmation on wallet...');
230
+ }
230
231
  const baseChainConfirmTimeMs = Date.now() - transferStartTime;
232
+ // Step 5: poll for arrival + output result
231
233
  const result = {
232
234
  success: true,
233
235
  message: 'Deposit transaction confirmed on Base',
234
- transactionHash: receipt.hash,
236
+ transactionHash: transferTxHash,
235
237
  recipient,
236
238
  token: warpConfig.symbol,
237
239
  amount: opts.amount,
238
240
  baseChainConfirmTimeMs,
239
241
  };
240
- if (!opts.wait) {
241
- printJson(result, opts.pretty);
242
- return;
243
- }
244
- let initialBalance = 0n;
245
- try {
246
- const destWarpRouter = new ethers.Contract(warpConfig.jaspervault.warpRouter, ERC20_ABI, jaspervaultProvider);
247
- initialBalance = await destWarpRouter.balanceOf(recipient);
248
- }
249
- catch {
250
- // ignore
251
- }
252
- const { arrived, arrivalTimeMs } = await pollForDepositArrival(jaspervaultProvider, warpConfig.jaspervault.warpRouter, recipient, initialBalance, POLL_TIMEOUT_MS);
253
- result.arrived = arrived;
254
- result.arrivalTimeMs = arrivalTimeMs;
255
- if (!arrived) {
256
- result.message = 'Deposit confirmed on Base; tokens may still be in transit to JasperVault';
242
+ if (opts.wait) {
243
+ let initialBalance = 0n;
244
+ try {
245
+ const destWarpRouter = new Contract(warpConfig.jaspervault.warpRouter, ERC20_ABI, jaspervaultProvider);
246
+ initialBalance = await destWarpRouter.balanceOf(recipient);
247
+ }
248
+ catch {
249
+ // ignore
250
+ }
251
+ const { arrived, arrivalTimeMs } = await pollForDepositArrival(jaspervaultProvider, warpConfig.jaspervault.warpRouter, recipient, initialBalance, POLL_TIMEOUT_MS);
252
+ result.arrived = arrived;
253
+ result.arrivalTimeMs = arrivalTimeMs;
254
+ if (!arrived) {
255
+ result.message =
256
+ 'Deposit confirmed on Base; tokens may still be in transit to JasperVault';
257
+ }
257
258
  }
258
259
  printJson(result, opts.pretty);
260
+ // Step 6: disconnect WC session
261
+ if (wcClient && wcSession) {
262
+ try {
263
+ await wcClient.disconnect({
264
+ topic: wcSession.topic,
265
+ reason: { code: 6000, message: 'Done' },
266
+ });
267
+ }
268
+ catch {
269
+ // ignore disconnect errors
270
+ }
271
+ }
259
272
  });
260
273
  }
261
274
  //# sourceMappingURL=deposit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/commands/deposit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/commands/deposit.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,9 @@ import { getNetworkConfig, getTokenConfig, getWriterAddress } from '../services/
7
7
  import { SubgraphClient } from '../services/subgraph-client.js';
8
8
  import { loadDelegationKey } from '../services/key-manager.js';
9
9
  import { loadVaultProfile, getPositionAccountFromProfile } from '../services/vault-profile.js';
10
- import { buildSignData, signSignData, fetchWriterIndices, buildManagedOrder, } from '../services/order-signer.js';
10
+ import { buildSignData, signSignData, fetchWriterIndices, fetchOptionWriterIndices, buildManagedOrder, signPerpsOptionCreate, } from '../services/order-signer.js';
11
11
  import { fetchCurrentPrice, calculateQuantity } from '../services/price-service.js';
12
+ import { fetchOptionQuote } from '../services/quote-center.js';
12
13
  import { parsePpoOptions } from '../utils/ppo.js';
13
14
  export function registerOrderCommand(program) {
14
15
  const order = program
@@ -137,52 +138,37 @@ export function registerOrderCommand(program) {
137
138
  const positionSide = order.positionSide;
138
139
  // LONG position needs PUT (1), SHORT position needs CALL (0)
139
140
  const hedgeOptionType = positionSide === 'LONG' ? 1 : 0;
140
- // signData orderType is flipped from option type (matching backend logic)
141
- const signOrderType = hedgeOptionType === 0 ? 1 : 0;
142
141
  const { ppoSettings } = parsePpoOptions({
143
142
  ppo: true,
144
143
  ppoExpire: opts.ppoExpire,
145
144
  ppoCategory: opts.ppoCategory,
146
145
  ppoTier: opts.ppoTier,
147
146
  });
148
- const expireSeconds = parseInt(ppoSettings.optionExpireTime ?? '1800', 10);
149
- const expireDate = Math.floor(Date.now() / 1000) + expireSeconds;
150
147
  const ttlSeconds = parseInt(opts.ttl, 10);
151
148
  const writerSide = positionSide.toLowerCase();
152
149
  const tokenConfig = getTokenConfig(opts.network, opts.symbol);
153
150
  const writerAddress = getWriterAddress(opts.network, opts.symbol, writerSide);
154
- const provider = new JsonRpcProvider(net.rpcUrl);
155
- const optionModuleV2 = net.contracts.optionModuleV2 ?? net.contracts.diamond;
156
- const writerIndices = await fetchWriterIndices(writerAddress, signOrderType, tokenConfig.address, provider, optionModuleV2);
157
151
  const marginAssetConfig = net.marginAsset;
158
152
  if (!marginAssetConfig) {
159
153
  exitWithError(`marginAsset not configured for network ${opts.network}`, EXIT_CODES.CONFIG_ERROR);
160
154
  }
161
- const signData = {
162
- limitType: 0,
163
- orderID: parseInt(order.id),
164
- orderType: signOrderType,
165
- productType: order.productType || '0',
166
- targetPrice: '0',
167
- expireTime: Math.floor(Date.now() / 1000) + ttlSeconds,
168
- wallet: profile.eoa,
169
- writer: writerAddress,
170
- recipient: order.recipient || profile.marginAccount || '',
155
+ const durationSeconds = parseInt(ppoSettings.optionExpireTime ?? '1800', 10);
156
+ const provider = new JsonRpcProvider(net.rpcUrl);
157
+ const optionModuleV2 = net.contracts.optionModuleV2 ?? net.contracts.diamond;
158
+ const writerIndices = await fetchOptionWriterIndices(writerAddress, hedgeOptionType, tokenConfig.address, durationSeconds, provider, optionModuleV2);
159
+ console.error(`Adding ${ppoSettings.optionCategory ?? 'ATM'} hedge protection to order #${order.id} (${positionSide}), ` +
160
+ `expires in ${opts.ppoExpire}`);
161
+ console.error('Fetching option quote from Quote Center...');
162
+ const premiumSign = await fetchOptionQuote(opts.network, {
163
+ baseAssetSymbol: opts.symbol,
164
+ quoteAssetSymbol: marginAssetConfig.symbol,
165
+ orderType: hedgeOptionType,
166
+ amount: order.quantity,
167
+ durationSeconds,
171
168
  chainId: net.chainId,
172
- marginAsset: marginAssetConfig.address,
173
- marginAmount: '0',
174
- underlyingAsset: order.underlyingAsset,
175
- };
176
- const delegationWallet = new Wallet(delegation.delegationPrivateKey);
177
- const signature = await signSignData(signData, delegationWallet);
178
- const premiumSign = {
179
- lockAsset: order.underlyingAsset,
180
- strikeAsset: marginAssetConfig.address,
181
- optionType: String(hedgeOptionType),
182
- productType: order.productType || '0',
183
- expireDate: expireDate.toString(),
184
- chainId: net.chainId.toString(),
185
- };
169
+ optionCategory: ppoSettings.optionCategory,
170
+ ratio: ppoSettings.ratio,
171
+ });
186
172
  const managedOrderBody = {
187
173
  holder: order.holder,
188
174
  quantity: order.quantity,
@@ -197,8 +183,8 @@ export function registerOrderCommand(program) {
197
183
  offerID: writerIndices.offerID,
198
184
  premiumSign,
199
185
  };
200
- console.error(`Adding ${ppoSettings.optionCategory ?? 'ATM'} hedge protection to order #${order.id} (${positionSide}), ` +
201
- `expires in ${opts.ppoExpire}`);
186
+ const delegationWallet = new Wallet(delegation.delegationPrivateKey);
187
+ const signature = await signPerpsOptionCreate(managedOrderBody, Number(opts.orderId), delegationWallet);
202
188
  const config = loadConfig();
203
189
  const client = new ApiClient(config);
204
190
  const res = await client.post(ENDPOINTS.ORDER_CREATE_OPTION, { managedOrder: managedOrderBody, signature, orderId: Number(opts.orderId) });
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/commands/order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/commands/order.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ethers } from 'ethers';
2
2
  import type { SignData, ManagedOrder, OrderIntentParams, TpSlIntentParams } from '../types.js';
3
3
  import type { VaultProfile } from '../types.js';
4
+ import type { PremiumOracleSign } from './quote-center.js';
4
5
  export interface WriterIndices {
5
6
  settingsIndex: string;
6
7
  productTypeIndex: string;
@@ -18,7 +19,21 @@ export declare function signSignData(signData: SignData, delegationWallet: ether
18
19
  * Fetch settingsIndex, productTypeIndex, offerID from chain.
19
20
  */
20
21
  export declare function fetchWriterIndices(writerAddress: string, orderType: number, underlyingAsset: string, provider: ethers.Provider, optionModuleV2Address: string): Promise<WriterIndices>;
22
+ /**
23
+ * Fetch settingsIndex, productTypeIndex, offerID for option protect orders.
24
+ * Unlike fetchWriterIndices (which looks for perps productTypes >= 10^12),
25
+ * this finds settings matching the option duration (e.g. 1800 for 30m).
26
+ */
27
+ export declare function fetchOptionWriterIndices(writerAddress: string, optionType: number, underlyingAsset: string, durationSeconds: number, provider: ethers.Provider, optionModuleV2Address: string): Promise<WriterIndices>;
21
28
  /**
22
29
  * Build ManagedOrder from SignData and writer indices.
23
30
  */
24
31
  export declare function buildManagedOrder(signData: SignData, writerIndices: WriterIndices, holder: string, quantity?: string): ManagedOrder;
32
+ export interface ManagedOrderWithPremium extends ManagedOrder {
33
+ premiumSign: PremiumOracleSign;
34
+ }
35
+ /**
36
+ * Sign the full PerpsOptionCreate struct for createPerpsOptionV6.
37
+ * The contract verifies: keccak256(abi.encode(PerpsOptionCreate)) + EIP-191 prefix.
38
+ */
39
+ export declare function signPerpsOptionCreate(managedOrder: ManagedOrderWithPremium, orderId: number, signer: ethers.Wallet): Promise<string>;
@@ -142,6 +142,36 @@ export async function fetchWriterIndices(writerAddress, orderType, underlyingAss
142
142
  }
143
143
  throw new Error(`No perps product type found for writer ${writerAddress}, orderType ${orderType}, underlyingAsset ${underlyingAsset}`);
144
144
  }
145
+ /**
146
+ * Fetch settingsIndex, productTypeIndex, offerID for option protect orders.
147
+ * Unlike fetchWriterIndices (which looks for perps productTypes >= 10^12),
148
+ * this finds settings matching the option duration (e.g. 1800 for 30m).
149
+ */
150
+ export async function fetchOptionWriterIndices(writerAddress, optionType, underlyingAsset, durationSeconds, provider, optionModuleV2Address) {
151
+ const contract = new ethers.Contract(optionModuleV2Address, GET_MANAGED_OPTIONS_SETTINGS_ABI, provider);
152
+ const settings = (await contract.getManagedOptionsSettings(writerAddress));
153
+ const targetOrderType = BigInt(optionType);
154
+ const targetUnderlying = underlyingAsset.toLowerCase();
155
+ const targetDuration = BigInt(durationSeconds);
156
+ for (let i = 0; i < settings.length; i++) {
157
+ const setting = settings[i];
158
+ if (BigInt(setting.orderType) !== targetOrderType)
159
+ continue;
160
+ if (setting.underlyingAsset.toLowerCase() !== targetUnderlying)
161
+ continue;
162
+ for (let j = 0; j < setting.productTypes.length; j++) {
163
+ if (setting.productTypes[j] === targetDuration) {
164
+ return {
165
+ settingsIndex: String(i),
166
+ productTypeIndex: String(j),
167
+ offerID: String(setting.offerID),
168
+ };
169
+ }
170
+ }
171
+ }
172
+ throw new Error(`No option setting found for writer ${writerAddress}, optionType ${optionType}, ` +
173
+ `underlyingAsset ${underlyingAsset}, duration ${durationSeconds}s`);
174
+ }
145
175
  /**
146
176
  * Build ManagedOrder from SignData and writer indices.
147
177
  */
@@ -160,4 +190,53 @@ export function buildManagedOrder(signData, writerIndices, holder, quantity = '0
160
190
  offerID: writerIndices.offerID,
161
191
  };
162
192
  }
193
+ // ABI tuple types matching the contract's PerpsOptionCreate struct exactly.
194
+ // Must stay in sync with PerpsOptionLiquidateHelperV5._hashCreatePerpsOptionParams.
195
+ const PREMIUM_ORACLE_SIGN_TYPE = 'tuple(uint256 id, uint256 chainId, uint64 productType, address optionAsset, uint256 strikePrice, address strikeAsset, uint256 strikeAmount, address lockAsset, uint256 lockAmount, uint256 expireDate, uint256 lockDate, uint8 optionType, address premiumAsset, uint256 premiumFee, uint256 timestamp, bytes[] oracleSign)';
196
+ const MANAGED_ORDER_TYPE = `tuple(address holder, address writer, address recipient, uint256 quantity, uint256 settingsIndex, uint256 productTypeIndex, uint256 oracleIndex, address nftFreeOption, ${PREMIUM_ORACLE_SIGN_TYPE} premiumSign, uint8 optionSourceType, bool liquidationToEOA, uint256 offerID)`;
197
+ const PERPS_OPTION_CREATE_TYPE = `tuple(${MANAGED_ORDER_TYPE} _info, uint64 _orderId)`;
198
+ /**
199
+ * Sign the full PerpsOptionCreate struct for createPerpsOptionV6.
200
+ * The contract verifies: keccak256(abi.encode(PerpsOptionCreate)) + EIP-191 prefix.
201
+ */
202
+ export async function signPerpsOptionCreate(managedOrder, orderId, signer) {
203
+ const ps = managedOrder.premiumSign;
204
+ const values = {
205
+ _info: {
206
+ holder: managedOrder.holder,
207
+ writer: managedOrder.writer,
208
+ recipient: managedOrder.recipient,
209
+ quantity: BigInt(managedOrder.quantity),
210
+ settingsIndex: BigInt(managedOrder.settingsIndex),
211
+ productTypeIndex: BigInt(managedOrder.productTypeIndex),
212
+ oracleIndex: BigInt(managedOrder.oracleIndex),
213
+ nftFreeOption: managedOrder.nftFreeOption,
214
+ premiumSign: {
215
+ id: BigInt(ps.id),
216
+ chainId: BigInt(ps.chainId),
217
+ productType: BigInt(ps.productType),
218
+ optionAsset: ps.optionAsset,
219
+ strikePrice: BigInt(ps.strikePrice),
220
+ strikeAsset: ps.strikeAsset,
221
+ strikeAmount: BigInt(ps.strikeAmount),
222
+ lockAsset: ps.lockAsset,
223
+ lockAmount: BigInt(ps.lockAmount),
224
+ expireDate: BigInt(ps.expireDate),
225
+ lockDate: BigInt(ps.lockDate),
226
+ optionType: Number(ps.optionType),
227
+ premiumAsset: ps.premiumAsset,
228
+ premiumFee: BigInt(ps.premiumFee),
229
+ timestamp: BigInt(ps.timestamp),
230
+ oracleSign: ps.oracleSign,
231
+ },
232
+ optionSourceType: Number(managedOrder.optionSourceType),
233
+ liquidationToEOA: managedOrder.liquidationToEOA,
234
+ offerID: BigInt(managedOrder.offerID),
235
+ },
236
+ _orderId: BigInt(orderId),
237
+ };
238
+ const encodedData = ethers.AbiCoder.defaultAbiCoder().encode([PERPS_OPTION_CREATE_TYPE], [values]);
239
+ const messageHash = ethers.keccak256(encodedData);
240
+ return signer.signMessage(ethers.getBytes(messageHash));
241
+ }
163
242
  //# sourceMappingURL=order-signer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-signer.js","sourceRoot":"","sources":["../../../src/services/order-signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order-signer.js","sourceRoot":"","sources":["../../../src/services/order-signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface PremiumOracleSign {
2
+ id: string;
3
+ chainId: string;
4
+ productType: string;
5
+ optionAsset: string;
6
+ strikePrice: string;
7
+ strikeAsset: string;
8
+ strikeAmount: string;
9
+ lockAsset: string;
10
+ lockAmount: string;
11
+ expireDate: string;
12
+ lockDate: string;
13
+ optionType: string;
14
+ premiumAsset: string;
15
+ premiumFee: string;
16
+ timestamp: string;
17
+ oracleSign: string[];
18
+ }
19
+ export interface FetchQuoteParams {
20
+ baseAssetSymbol: string;
21
+ quoteAssetSymbol: string;
22
+ orderType: number;
23
+ amount: string;
24
+ durationSeconds: number;
25
+ chainId: number;
26
+ optionCategory?: 'ATM' | 'OTM';
27
+ ratio?: number;
28
+ }
29
+ /**
30
+ * Fetch a signed option quote from Quote Center.
31
+ * Mirrors backend OptionPricingService.fetchPremiumSign logic.
32
+ */
33
+ export declare function fetchOptionQuote(network: string, params: FetchQuoteParams): Promise<PremiumOracleSign>;
@@ -0,0 +1,79 @@
1
+ import { getNetworkConfig } from './chain-config.js';
2
+ /**
3
+ * Fetch a signed option quote from Quote Center.
4
+ * Mirrors backend OptionPricingService.fetchPremiumSign logic.
5
+ */
6
+ export async function fetchOptionQuote(network, params) {
7
+ const net = getNetworkConfig(network);
8
+ const baseUrl = process.env.QUOTE_CENTER_URL ?? net.quoteCenterUrl ?? 'https://uat-jasperquotecenterv2.fly.dev';
9
+ const optionCategory = params.optionCategory ?? 'ATM';
10
+ const requestData = {
11
+ amount: params.amount,
12
+ jvault_product: 'Degen',
13
+ base_asset: params.baseAssetSymbol.toUpperCase(),
14
+ quote_asset: params.quoteAssetSymbol.toUpperCase(),
15
+ premium_asset: params.quoteAssetSymbol.toUpperCase(),
16
+ product_type: params.durationSeconds,
17
+ option_type: params.orderType === 0 ? 'C' : 'P',
18
+ option_mode: 'EUO',
19
+ chain_id: params.chainId,
20
+ };
21
+ if (optionCategory === 'OTM') {
22
+ if (params.ratio === undefined || params.ratio === null) {
23
+ throw new Error('ratio parameter is required for OTM options');
24
+ }
25
+ // CALL (orderType=0) → positive ratio, PUT (orderType=1) → negative ratio
26
+ requestData.ratio = params.orderType === 0
27
+ ? Math.abs(params.ratio)
28
+ : -Math.abs(params.ratio);
29
+ }
30
+ const apiUrl = optionCategory === 'OTM'
31
+ ? `${baseUrl}/api/v3/public/otm/signedPrice`
32
+ : `${baseUrl}/api/v1/public/signedPrice`;
33
+ const maxRetries = 3;
34
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
35
+ try {
36
+ const controller = new AbortController();
37
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
38
+ const response = await fetch(apiUrl, {
39
+ method: 'POST',
40
+ headers: { 'Content-Type': 'application/json' },
41
+ body: JSON.stringify(requestData),
42
+ signal: controller.signal,
43
+ });
44
+ clearTimeout(timeoutId);
45
+ if (!response.ok) {
46
+ const body = await response.text().catch(() => '');
47
+ throw new Error(`HTTP ${response.status}: ${response.statusText} - ${body}`);
48
+ }
49
+ const data = await response.json();
50
+ return {
51
+ id: String(data.data.id),
52
+ chainId: String(data.data.chain_id),
53
+ productType: String(data.data.product_type),
54
+ optionAsset: data.data.option_asset,
55
+ strikePrice: String(data.data.strike_price),
56
+ strikeAsset: data.data.strike_asset,
57
+ strikeAmount: String(data.data.strike_amount),
58
+ lockAsset: data.data.lock_asset,
59
+ lockAmount: String(data.data.lock_amount),
60
+ expireDate: String(data.data.expire_date),
61
+ lockDate: String(data.data.lock_date),
62
+ optionType: String(data.data.option_type),
63
+ premiumAsset: data.data.premium_asset,
64
+ premiumFee: String(data.data.premium_fee),
65
+ timestamp: String(data.data.timestamp),
66
+ oracleSign: data.oracle_sign,
67
+ };
68
+ }
69
+ catch (error) {
70
+ if (attempt === maxRetries) {
71
+ throw new Error(`Quote Center failed after ${maxRetries} attempts: ${error.message}`);
72
+ }
73
+ const delayMs = Math.pow(2, attempt - 1) * 1000;
74
+ await new Promise(resolve => setTimeout(resolve, delayMs));
75
+ }
76
+ }
77
+ throw new Error('Failed to fetch option quote');
78
+ }
79
+ //# sourceMappingURL=quote-center.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote-center.js","sourceRoot":"","sources":["../../../src/services/quote-center.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jaspervault_cli",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "JasperVault CLI for interacting with the JasperVault Manager API",
5
5
  "type": "module",
6
6
  "bin": {