moltycash 8.2.1 โ 8.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/mppNetwork.d.ts +9 -0
- package/dist/lib/mppNetwork.d.ts.map +1 -0
- package/dist/lib/mppNetwork.js +64 -0
- package/dist/lib/mppNetwork.js.map +1 -0
- package/dist/lib/x402Network.d.ts +7 -0
- package/dist/lib/x402Network.d.ts.map +1 -0
- package/dist/lib/x402Network.js +58 -0
- package/dist/lib/x402Network.js.map +1 -0
- package/dist/reward.js +40 -26
- package/dist/reward.js.map +1 -1
- package/dist/session.js +42 -30
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type MppNetwork = 'tempo' | 'stellar' | 'monad';
|
|
2
|
+
export interface MppFetchSetup {
|
|
3
|
+
mppFetch: typeof globalThis.fetch;
|
|
4
|
+
walletLabel: string;
|
|
5
|
+
network: MppNetwork;
|
|
6
|
+
}
|
|
7
|
+
export declare function hasMppKey(): boolean;
|
|
8
|
+
export declare function buildMppFetch(): Promise<MppFetchSetup>;
|
|
9
|
+
//# sourceMappingURL=mppNetwork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mppNetwork.d.ts","sourceRoot":"","sources":["../../lib/mppNetwork.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,wBAAgB,SAAS,IAAI,OAAO,CAMnC;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CA6C5D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
2
|
+
import { Mppx } from "@stellar/mpp/charge/client";
|
|
3
|
+
import { stellar } from "@stellar/mpp/charge/client";
|
|
4
|
+
import { tempo } from "mppx/client";
|
|
5
|
+
import { monad } from "@monad-crypto/mpp/client";
|
|
6
|
+
export function hasMppKey() {
|
|
7
|
+
return !!(process.env.TEMPO_PRIVATE_KEY
|
|
8
|
+
|| process.env.STELLAR_SECRET_KEY
|
|
9
|
+
|| process.env.MONAD_PRIVATE_KEY);
|
|
10
|
+
}
|
|
11
|
+
export async function buildMppFetch() {
|
|
12
|
+
const tempoKey = process.env.TEMPO_PRIVATE_KEY;
|
|
13
|
+
const stellarKey = process.env.STELLAR_SECRET_KEY;
|
|
14
|
+
const monadKey = process.env.MONAD_PRIVATE_KEY;
|
|
15
|
+
const keyCount = [tempoKey, stellarKey, monadKey].filter(Boolean).length;
|
|
16
|
+
if (keyCount === 0)
|
|
17
|
+
throw new Error("No MPP private key set (TEMPO_PRIVATE_KEY / STELLAR_SECRET_KEY / MONAD_PRIVATE_KEY)");
|
|
18
|
+
if (keyCount > 1)
|
|
19
|
+
throw new Error("Multiple MPP keys set. Unset the ones you don't want to use โ only one chain per call.");
|
|
20
|
+
if (monadKey) {
|
|
21
|
+
if (!monadKey.startsWith("0x"))
|
|
22
|
+
throw new Error("MONAD_PRIVATE_KEY must start with '0x'");
|
|
23
|
+
const account = privateKeyToAccount(monadKey);
|
|
24
|
+
const mppClient = Mppx.create({
|
|
25
|
+
methods: [monad.charge({ account })],
|
|
26
|
+
polyfill: false,
|
|
27
|
+
});
|
|
28
|
+
return { mppFetch: mppClient.fetch, walletLabel: account.address, network: 'monad' };
|
|
29
|
+
}
|
|
30
|
+
if (tempoKey) {
|
|
31
|
+
if (!tempoKey.startsWith("0x"))
|
|
32
|
+
throw new Error("TEMPO_PRIVATE_KEY must start with '0x'");
|
|
33
|
+
const account = privateKeyToAccount(tempoKey);
|
|
34
|
+
const mppClient = Mppx.create({
|
|
35
|
+
methods: [tempo.charge({ account })],
|
|
36
|
+
polyfill: false,
|
|
37
|
+
});
|
|
38
|
+
return { mppFetch: mppClient.fetch, walletLabel: account.address, network: 'tempo' };
|
|
39
|
+
}
|
|
40
|
+
// Stellar
|
|
41
|
+
const mppClient = Mppx.create({
|
|
42
|
+
methods: [
|
|
43
|
+
stellar.charge({
|
|
44
|
+
secretKey: stellarKey,
|
|
45
|
+
onProgress: (event) => {
|
|
46
|
+
if (event.type === 'challenge')
|
|
47
|
+
console.log(` ๐ฐ ${event.amount} stroops โ ${event.recipient}`);
|
|
48
|
+
if (event.type === 'signing')
|
|
49
|
+
console.log(" ๐ Signing Soroban transaction...");
|
|
50
|
+
if (event.type === 'paying')
|
|
51
|
+
console.log(" ๐ค Submitting payment...");
|
|
52
|
+
if (event.type === 'paid')
|
|
53
|
+
console.log(` โ
Paid! Hash: ${event.hash}`);
|
|
54
|
+
},
|
|
55
|
+
}),
|
|
56
|
+
],
|
|
57
|
+
polyfill: false,
|
|
58
|
+
});
|
|
59
|
+
// We don't have a clean way to derive the Stellar public address from the
|
|
60
|
+
// secret without an SDK import โ use a placeholder; the server resolves
|
|
61
|
+
// the actual payer from the settled payment anyway.
|
|
62
|
+
return { mppFetch: mppClient.fetch, walletLabel: 'stellar-signer', network: 'stellar' };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=mppNetwork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mppNetwork.js","sourceRoot":"","sources":["../../lib/mppNetwork.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402Network.d.ts","sourceRoot":"","sources":["../../lib/x402Network.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CACvD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,CAsDhE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
2
|
+
import { x402Client } from "@x402/core/client";
|
|
3
|
+
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
4
|
+
import { registerExactSvmScheme } from "@x402/svm/exact/client";
|
|
5
|
+
import { createKeyPairSignerFromBytes } from "@solana/kit";
|
|
6
|
+
import bs58 from "bs58";
|
|
7
|
+
const SKALE_CHAIN_ID = 1187947933;
|
|
8
|
+
const SKALE_NETWORK_ID = `eip155:${SKALE_CHAIN_ID}`;
|
|
9
|
+
export async function buildX402Signer() {
|
|
10
|
+
const evmKey = process.env.EVM_PRIVATE_KEY;
|
|
11
|
+
const svmKey = process.env.SVM_PRIVATE_KEY;
|
|
12
|
+
const worldchainKey = process.env.WORLDCHAIN_PRIVATE_KEY;
|
|
13
|
+
const skaleKey = process.env.SKALE_PRIVATE_KEY;
|
|
14
|
+
const keyCount = [evmKey, svmKey, worldchainKey, skaleKey].filter(Boolean).length;
|
|
15
|
+
if (keyCount === 0) {
|
|
16
|
+
throw new Error("Set one of: EVM_PRIVATE_KEY (Base), SVM_PRIVATE_KEY (Solana), WORLDCHAIN_PRIVATE_KEY, SKALE_PRIVATE_KEY");
|
|
17
|
+
}
|
|
18
|
+
if (keyCount > 1) {
|
|
19
|
+
throw new Error("Multiple chain keys set. Unset the ones you don't want to use โ only one chain per call.");
|
|
20
|
+
}
|
|
21
|
+
const client = new x402Client();
|
|
22
|
+
if (svmKey) {
|
|
23
|
+
const keyBytes = bs58.decode(svmKey);
|
|
24
|
+
const signer = await createKeyPairSignerFromBytes(keyBytes);
|
|
25
|
+
registerExactSvmScheme(client, { signer });
|
|
26
|
+
return { client, walletLabel: signer.address, network: 'solana' };
|
|
27
|
+
}
|
|
28
|
+
if (worldchainKey) {
|
|
29
|
+
if (!worldchainKey.startsWith("0x"))
|
|
30
|
+
throw new Error("WORLDCHAIN_PRIVATE_KEY must start with '0x'");
|
|
31
|
+
const account = privateKeyToAccount(worldchainKey);
|
|
32
|
+
registerExactEvmScheme(client, {
|
|
33
|
+
signer: account,
|
|
34
|
+
networks: ["eip155:480"],
|
|
35
|
+
paymentRequirementsSelector: (_ver, reqs) => reqs.find((r) => r.network === "eip155:480") || reqs[0],
|
|
36
|
+
});
|
|
37
|
+
return { client, walletLabel: account.address, network: 'worldchain' };
|
|
38
|
+
}
|
|
39
|
+
if (skaleKey) {
|
|
40
|
+
if (!skaleKey.startsWith("0x"))
|
|
41
|
+
throw new Error("SKALE_PRIVATE_KEY must start with '0x'");
|
|
42
|
+
const account = privateKeyToAccount(skaleKey);
|
|
43
|
+
registerExactEvmScheme(client, {
|
|
44
|
+
signer: account,
|
|
45
|
+
networks: [SKALE_NETWORK_ID],
|
|
46
|
+
paymentRequirementsSelector: (_ver, reqs) => reqs.find((r) => r.network === SKALE_NETWORK_ID) || reqs[0],
|
|
47
|
+
});
|
|
48
|
+
return { client, walletLabel: account.address, network: 'skale' };
|
|
49
|
+
}
|
|
50
|
+
// EVM Base default
|
|
51
|
+
if (!evmKey || !evmKey.startsWith("0x")) {
|
|
52
|
+
throw new Error("EVM_PRIVATE_KEY must start with '0x'");
|
|
53
|
+
}
|
|
54
|
+
const account = privateKeyToAccount(evmKey);
|
|
55
|
+
registerExactEvmScheme(client, { signer: account });
|
|
56
|
+
return { client, walletLabel: account.address, network: 'base' };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=x402Network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402Network.js","sourceRoot":"","sources":["../../lib/x402Network.ts"],"names":[],"mappings":"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"}
|
package/dist/reward.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import minimist from "minimist";
|
|
3
3
|
import axios from "axios";
|
|
4
|
-
import { privateKeyToAccount } from "viem/accounts";
|
|
5
|
-
import { x402Client } from "@x402/core/client";
|
|
6
|
-
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
7
4
|
import { readCachedSession, readLatestSession } from "./lib/session.js";
|
|
8
5
|
import { buildExplorerUrl } from "./lib/explorer.js";
|
|
9
|
-
|
|
6
|
+
import { buildX402Signer } from "./lib/x402Network.js";
|
|
7
|
+
import { hasMppKey, buildMppFetch } from "./lib/mppNetwork.js";
|
|
10
8
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
11
9
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
12
10
|
let rpcIdCounter = 1;
|
|
@@ -53,20 +51,9 @@ async function rpcA2A(method, params) {
|
|
|
53
51
|
return response.data.result;
|
|
54
52
|
}
|
|
55
53
|
async function resolveWalletLabel() {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const bs58Mod = await import("bs58");
|
|
60
|
-
const decoder = bs58Mod.default ?? bs58Mod;
|
|
61
|
-
const keyBytes = decoder.decode(svm);
|
|
62
|
-
const signer = await createKeyPairSignerFromBytes(keyBytes);
|
|
63
|
-
return signer.address;
|
|
64
|
-
}
|
|
65
|
-
if (privateKey && privateKey.startsWith("0x")) {
|
|
66
|
-
const account = privateKeyToAccount(privateKey);
|
|
67
|
-
return account.address;
|
|
68
|
-
}
|
|
69
|
-
throw new Error("Set EVM_PRIVATE_KEY (Base) or SVM_PRIVATE_KEY (Solana)");
|
|
54
|
+
// Reuse the x402 signer setup so we accept the same chain set everywhere.
|
|
55
|
+
const { walletLabel } = await buildX402Signer();
|
|
56
|
+
return walletLabel;
|
|
70
57
|
}
|
|
71
58
|
async function handleBalance() {
|
|
72
59
|
// Prefer the wallet-specific session if any env key is set; otherwise just
|
|
@@ -111,15 +98,42 @@ async function handleClaim(args) {
|
|
|
111
98
|
console.error("โ --destination <0x...> is required (Base EVM address that receives the $moltycash)");
|
|
112
99
|
process.exit(1);
|
|
113
100
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
101
|
+
// MPP chains (Tempo / Stellar / Monad) โ single POST with Authorization
|
|
102
|
+
// header, server handles 402 cycle, returns flat result.
|
|
103
|
+
if (hasMppKey()) {
|
|
104
|
+
const { mppFetch, walletLabel, network } = await buildMppFetch();
|
|
105
|
+
console.log(`๐ Claiming $moltycash for ${walletLabel} (${network}) โ ${destination}`);
|
|
106
|
+
console.log(`๐ณ Signing USDC exit-tax via MPP (${network})...`);
|
|
107
|
+
const body = JSON.stringify({ jsonrpc: "2.0", id: 1, method: "reward.claim", params: { destination } });
|
|
108
|
+
const resp = await mppFetch(`${baseURL}/a2a`, {
|
|
109
|
+
method: "POST",
|
|
110
|
+
headers: { "Content-Type": "application/json" },
|
|
111
|
+
body,
|
|
112
|
+
});
|
|
113
|
+
const data = await resp.json();
|
|
114
|
+
if (data.error) {
|
|
115
|
+
const e = new Error(data.error.message || "MPP reward.claim failed");
|
|
116
|
+
e.code = data.error.code;
|
|
117
|
+
e.data = data.error.data;
|
|
118
|
+
throw e;
|
|
119
|
+
}
|
|
120
|
+
const receipt = data.result;
|
|
121
|
+
console.log("");
|
|
122
|
+
console.log(`โ
Claimed ${(receipt.claimed_tokens || 0).toLocaleString()} $moltycash`);
|
|
123
|
+
console.log(` Destination: ${receipt.destination}`);
|
|
124
|
+
console.log(` Fee paid: $${receipt.fee_paid_usd} USDC (${receipt.fee_network || network})`);
|
|
125
|
+
const feeExplorer = buildExplorerUrl(receipt.fee_tx, receipt.fee_network) || receipt.fee_tx;
|
|
126
|
+
console.log(` Fee tx: ${feeExplorer}`);
|
|
127
|
+
const sweepExplorer = buildExplorerUrl(receipt.sweep_tx, receipt.sweep_network || 'base') || receipt.sweep_tx;
|
|
128
|
+
console.log(` Sweep tx: ${sweepExplorer}`);
|
|
129
|
+
return;
|
|
117
130
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
131
|
+
// Build x402 client for whichever chain has a private key configured. The
|
|
132
|
+
// signing chain doesn't have to match the destination โ destination is
|
|
133
|
+
// always Base EVM (where the sweep lands); fee can be paid from any
|
|
134
|
+
// supported x402 chain (Base / Solana / World Chain / SKALE).
|
|
135
|
+
const { client, walletLabel, network } = await buildX402Signer();
|
|
136
|
+
console.log(`๐ Claiming $moltycash for ${walletLabel} (${network}) โ ${destination}`);
|
|
123
137
|
// Phase 1: request fee challenge
|
|
124
138
|
console.log("๐ณ Phase 1: requesting USDC exit-tax challenge...");
|
|
125
139
|
const phase1 = await rpcA2A("reward.claim", { destination });
|
package/dist/reward.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reward.js","sourceRoot":"","sources":["../reward.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"reward.js","sourceRoot":"","sources":["../reward.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import minimist from "minimist";
|
|
3
3
|
import axios from "axios";
|
|
4
|
-
import { privateKeyToAccount } from "viem/accounts";
|
|
5
|
-
import { x402Client } from "@x402/core/client";
|
|
6
|
-
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
7
4
|
import { writeCachedSession, readCachedSession } from "./lib/session.js";
|
|
8
|
-
|
|
5
|
+
import { buildX402Signer } from "./lib/x402Network.js";
|
|
6
|
+
import { hasMppKey, buildMppFetch } from "./lib/mppNetwork.js";
|
|
9
7
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
10
8
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
11
9
|
let rpcIdCounter = 1;
|
|
@@ -26,28 +24,45 @@ async function a2aCall(method, params) {
|
|
|
26
24
|
return response.data.result;
|
|
27
25
|
}
|
|
28
26
|
async function handleSessionCreate() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
// MPP chains (Tempo / Stellar / Monad) take a different transport โ single
|
|
28
|
+
// POST with Authorization: Payment header, mppFetch auto-handles 402 cycle.
|
|
29
|
+
if (hasMppKey()) {
|
|
30
|
+
const { mppFetch, walletLabel, network } = await buildMppFetch();
|
|
31
|
+
console.log(`๐ง Wallet: ${walletLabel} (${network})`);
|
|
32
|
+
console.log(`๐ณ Signing USDC auth payment via MPP (${network})...`);
|
|
33
|
+
const body = JSON.stringify({ jsonrpc: "2.0", id: 1, method: "session.create", params: {} });
|
|
34
|
+
const resp = await mppFetch(`${baseURL}/a2a`, {
|
|
35
|
+
method: "POST",
|
|
36
|
+
headers: { "Content-Type": "application/json" },
|
|
37
|
+
body,
|
|
38
|
+
});
|
|
39
|
+
const data = await resp.json();
|
|
40
|
+
if (data.error)
|
|
41
|
+
throw new Error(data.error.message || "MPP session.create failed");
|
|
42
|
+
const issued = data.result;
|
|
43
|
+
if (!issued?.session_token)
|
|
44
|
+
throw new Error("session_token missing from MPP response");
|
|
45
|
+
writeCachedSession(issued);
|
|
46
|
+
const expiresIn = Math.max(0, issued.session_expires_at - Math.floor(Date.now() / 1000));
|
|
47
|
+
console.log(`โ
Session token cached for wallet ${issued.session_wallet}`);
|
|
48
|
+
console.log(` Expires in ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m`);
|
|
49
|
+
return;
|
|
32
50
|
}
|
|
33
|
-
const
|
|
34
|
-
console.log(`๐ง Wallet: ${
|
|
35
|
-
|
|
36
|
-
registerExactEvmScheme(client, { signer: account });
|
|
37
|
-
console.log("๐ณ Phase 1: requesting 1ยข auth payment challenge...");
|
|
51
|
+
const { client, walletLabel, network } = await buildX402Signer();
|
|
52
|
+
console.log(`๐ง Wallet: ${walletLabel} (${network})`);
|
|
53
|
+
console.log("๐ณ Phase 1: requesting USDC auth payment challenge...");
|
|
38
54
|
const phase1 = await a2aCall("session.create", {});
|
|
39
55
|
if (!phase1.id)
|
|
40
56
|
throw new Error("Missing task ID in Phase 1 response");
|
|
41
57
|
const paymentRequired = phase1.status?.message?.metadata?.["x402.payment.required"];
|
|
42
58
|
if (!paymentRequired)
|
|
43
59
|
throw new Error("No payment requirements found");
|
|
44
|
-
console.log("๐ Phase 2: signing
|
|
60
|
+
console.log("๐ Phase 2: signing payment + submitting...");
|
|
45
61
|
const signedPayment = await client.createPaymentPayload(paymentRequired);
|
|
46
62
|
const phase2 = await a2aCall("session.create", {
|
|
47
63
|
taskId: phase1.id,
|
|
48
64
|
payment: signedPayment,
|
|
49
65
|
});
|
|
50
|
-
// Extract session_token from task artifacts
|
|
51
66
|
const artifacts = phase2.artifacts || [];
|
|
52
67
|
let issued = null;
|
|
53
68
|
for (const a of artifacts) {
|
|
@@ -69,6 +84,17 @@ async function handleSessionCreate() {
|
|
|
69
84
|
console.log(`โ
Session token cached for wallet ${issued.session_wallet}`);
|
|
70
85
|
console.log(` Expires in ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m`);
|
|
71
86
|
}
|
|
87
|
+
async function handleSessionStatus() {
|
|
88
|
+
const { walletLabel } = await buildX402Signer();
|
|
89
|
+
const cached = readCachedSession(walletLabel);
|
|
90
|
+
if (!cached) {
|
|
91
|
+
console.log(`No active session for ${walletLabel}. Run: moltycash session create`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const expiresIn = Math.max(0, cached.session_expires_at - Math.floor(Date.now() / 1000));
|
|
95
|
+
console.log(`Wallet: ${cached.session_wallet}`);
|
|
96
|
+
console.log(`Expires: ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m from now`);
|
|
97
|
+
}
|
|
72
98
|
const args = minimist(process.argv.slice(2));
|
|
73
99
|
const subcommand = args._[0];
|
|
74
100
|
async function main() {
|
|
@@ -77,23 +103,9 @@ async function main() {
|
|
|
77
103
|
case "create":
|
|
78
104
|
await handleSessionCreate();
|
|
79
105
|
break;
|
|
80
|
-
case "status":
|
|
81
|
-
|
|
82
|
-
console.error("โ EVM_PRIVATE_KEY required");
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
const account = privateKeyToAccount(privateKey);
|
|
86
|
-
const cached = readCachedSession(account.address);
|
|
87
|
-
if (!cached) {
|
|
88
|
-
console.log(`No active session for ${account.address}. Run: moltycash session create`);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const expiresIn = Math.max(0, cached.session_expires_at - Math.floor(Date.now() / 1000));
|
|
92
|
-
console.log(`Wallet: ${cached.session_wallet}`);
|
|
93
|
-
console.log(`Expires in ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m`);
|
|
94
|
-
}
|
|
106
|
+
case "status":
|
|
107
|
+
await handleSessionStatus();
|
|
95
108
|
break;
|
|
96
|
-
}
|
|
97
109
|
default:
|
|
98
110
|
console.error("Usage: moltycash session <create|status>");
|
|
99
111
|
process.exit(1);
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../session.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../session.ts"],"names":[],"mappings":"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"}
|