@subly_fi/pay 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.
@@ -0,0 +1,27 @@
1
+ // src/setup-status.ts
2
+ function fail(message) {
3
+ process.stderr.write(`${message}
4
+ `);
5
+ process.exit(1);
6
+ }
7
+ var arg = process.argv[2];
8
+ if (arg === void 0) {
9
+ fail("Usage: pay setup-status <st_sessionId | setupUrl>");
10
+ }
11
+ var match = arg.match(/st_[0-9a-f]+/i);
12
+ if (match === null) {
13
+ fail(`no session id (st_...) found in: ${arg}`);
14
+ }
15
+ var sessionId = match[0];
16
+ var relayerBaseUrl = process.env.SUBLY_RELAYER_URL ?? process.env.SUBLY_FACILITATOR_URL ?? "https://api.demo.sublyfi.com";
17
+ var response = await fetch(
18
+ `${relayerBaseUrl}/v1/setup-sessions/${encodeURIComponent(sessionId)}`
19
+ );
20
+ var text = await response.text();
21
+ if (response.status !== 200) {
22
+ process.stdout.write(`${text}
23
+ `);
24
+ process.exit(1);
25
+ }
26
+ process.stdout.write(`${text}
27
+ `);
package/dist/withdraw.js CHANGED
@@ -1058,26 +1058,26 @@ var VaultFlowClient = class {
1058
1058
  * up and used automatically before surfacing deposit_approval_required.
1059
1059
  */
1060
1060
  async deposit(input) {
1061
- let approvalId = input.approvalId;
1061
+ let approvalId2 = input.approvalId;
1062
1062
  let prepared;
1063
1063
  try {
1064
1064
  prepared = await this.postJson("prepare", "/v1/deposits/prepare", {
1065
1065
  wallet: this.signer.walletAddress,
1066
1066
  amountRawUsdc: input.amountRawUsdc.toString(),
1067
- ...approvalId === void 0 ? {} : { approvalId }
1067
+ ...approvalId2 === void 0 ? {} : { approvalId: approvalId2 }
1068
1068
  });
1069
1069
  } catch (error) {
1070
- if (!(error instanceof VaultFlowClientError) || error.code !== "deposit_approval_required" || approvalId !== void 0) {
1070
+ if (!(error instanceof VaultFlowClientError) || error.code !== "deposit_approval_required" || approvalId2 !== void 0) {
1071
1071
  throw error;
1072
1072
  }
1073
- approvalId = await this.findApprovedDepositApproval(input.amountRawUsdc);
1074
- if (approvalId === void 0) {
1073
+ approvalId2 = await this.findApprovedDepositApproval(input.amountRawUsdc);
1074
+ if (approvalId2 === void 0) {
1075
1075
  throw error;
1076
1076
  }
1077
1077
  prepared = await this.postJson("prepare", "/v1/deposits/prepare", {
1078
1078
  wallet: this.signer.walletAddress,
1079
1079
  amountRawUsdc: input.amountRawUsdc.toString(),
1080
- approvalId
1080
+ approvalId: approvalId2
1081
1081
  });
1082
1082
  }
1083
1083
  const signed = await this.signer.signDeposit({
@@ -1423,9 +1423,13 @@ var relayerBaseUrl = process.env.SUBLY_RELAYER_URL ?? process.env.SUBLY_FACILITA
1423
1423
  var amountRawUsdc = process.argv[2];
1424
1424
  if (amountRawUsdc === void 0 || !/^[1-9]\d*$/.test(amountRawUsdc)) {
1425
1425
  fail(
1426
- "Usage: npm run demo:withdraw -- <amountRawUsdc> (positive integer, e.g. 1000000 = 1 USDC)"
1426
+ "Usage: pay withdraw <amountRawUsdc> [apr_<approvalId>] (positive integer, e.g. 1000000 = 1 USDC)"
1427
1427
  );
1428
1428
  }
1429
+ var approvalId = process.argv[3];
1430
+ if (approvalId !== void 0 && !/^apr_[0-9a-f]+$/i.test(approvalId)) {
1431
+ fail(`unrecognized argument: ${approvalId} (expected apr_<approvalId>)`);
1432
+ }
1429
1433
  var keyPairSigner = await loadKeyPairSigner({
1430
1434
  base58Secret: process.env.SUBLY_DEMO_AGENT_KEYPAIR,
1431
1435
  jsonFilePath: process.env.SUBLY_DEMO_AGENT_KEYPAIR_PATH,
@@ -1449,10 +1453,30 @@ console.log(
1449
1453
  var submitted;
1450
1454
  try {
1451
1455
  submitted = await vaultFlows.withdraw({
1452
- amountRawUsdc: BigInt(amountRawUsdc)
1456
+ amountRawUsdc: BigInt(amountRawUsdc),
1457
+ ...approvalId === void 0 ? {} : { approvalId }
1453
1458
  });
1454
1459
  } catch (error) {
1455
1460
  if (error instanceof VaultFlowClientError) {
1461
+ if (error.code === "withdrawal_approval_required") {
1462
+ const details = error.errorDetails ?? {};
1463
+ process.stdout.write(
1464
+ `${JSON.stringify(
1465
+ {
1466
+ ok: false,
1467
+ approvalRequired: true,
1468
+ approvalId: details.approvalId ?? null,
1469
+ approveUrl: details.approveUrl ?? null,
1470
+ expiresAtMs: details.expiresAtMs ?? null,
1471
+ message: `This withdrawal needs the owner's approval. Paste approveUrl to the user; once they approve, retry: pay withdraw ${amountRawUsdc} ${details.approvalId ?? "<approvalId>"}`
1472
+ },
1473
+ null,
1474
+ 2
1475
+ )}
1476
+ `
1477
+ );
1478
+ process.exit(1);
1479
+ }
1456
1480
  fail(`[withdraw] ${error.step} failed: ${error.message}`);
1457
1481
  }
1458
1482
  throw error;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subly_fi/pay",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Subly client: pay compatible standard x402 Solana USDC exact APIs from Kamino vault yield — the seller needs no Subly integration. Ships an MCP server and a one-shot pay/deposit CLI; non-custodial (signs locally with your own key).",
5
5
  "license": "MIT",
6
6
  "type": "module",