moltycash 8.3.0 → 8.5.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/reward.js +43 -5
- package/dist/reward.js.map +1 -1
- package/dist/session.js +25 -0
- 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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"}
|
package/dist/reward.js
CHANGED
|
@@ -4,6 +4,7 @@ import axios from "axios";
|
|
|
4
4
|
import { readCachedSession, readLatestSession } from "./lib/session.js";
|
|
5
5
|
import { buildExplorerUrl } from "./lib/explorer.js";
|
|
6
6
|
import { buildX402Signer } from "./lib/x402Network.js";
|
|
7
|
+
import { hasMppKey, buildMppFetch } from "./lib/mppNetwork.js";
|
|
7
8
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
8
9
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
9
10
|
let rpcIdCounter = 1;
|
|
@@ -81,13 +82,20 @@ async function handleBalance() {
|
|
|
81
82
|
const u = result.balance_usd;
|
|
82
83
|
console.log(`USD value (≈): ${u >= 0.01 ? `$${u.toFixed(2)}` : '< $0.01'}`);
|
|
83
84
|
}
|
|
84
|
-
console.log(`Current tier:
|
|
85
|
+
console.log(`Current tier: ${result.current_tier_label || 'Starter'} (${result.current_percentage ?? 0}% rebate)`);
|
|
85
86
|
if (result.next_tier_min_tokens) {
|
|
86
|
-
console.log(`Next tier at: ${result.next_tier_min_tokens.toLocaleString()} tokens (
|
|
87
|
+
console.log(`Next tier at: ${result.next_tier_min_tokens.toLocaleString()} tokens (${result.next_tier_percentage}% rebate)`);
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
if (result.tier_jumps) {
|
|
90
|
+
for (const [label, jump] of Object.entries(result.tier_jumps)) {
|
|
91
|
+
console.log(`To reach ${label.padEnd(7)}: ${jump.required_moltycash_tokens.toLocaleString()} tokens — pay ~$${jump.usdc_needed.toFixed(2)} USDC → ${jump.reward_percentage}% rebate`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (result.spot_price_usd)
|
|
95
|
+
console.log(`Spot price: $${result.spot_price_usd.toExponential(4)} per token`);
|
|
96
|
+
const exitPct = ((result.exit_tax_percent ?? 0.01) * 100).toFixed(1);
|
|
97
|
+
console.log(`Exit tax on claim: ${exitPct}% of claim value (min $${(result.exit_tax_min_usd ?? 0.02).toFixed(2)} USDC)`);
|
|
98
|
+
console.log(`Claimable now: ${result.claimable ? 'YES' : 'no — empty balance'}`);
|
|
91
99
|
if (result.rewards_paused)
|
|
92
100
|
console.log(`⚠️ Rewards are currently paused.`);
|
|
93
101
|
}
|
|
@@ -97,6 +105,36 @@ async function handleClaim(args) {
|
|
|
97
105
|
console.error("❌ --destination <0x...> is required (Base EVM address that receives the $moltycash)");
|
|
98
106
|
process.exit(1);
|
|
99
107
|
}
|
|
108
|
+
// MPP chains (Tempo / Stellar / Monad) — single POST with Authorization
|
|
109
|
+
// header, server handles 402 cycle, returns flat result.
|
|
110
|
+
if (hasMppKey()) {
|
|
111
|
+
const { mppFetch, walletLabel, network } = await buildMppFetch();
|
|
112
|
+
console.log(`🎁 Claiming $moltycash for ${walletLabel} (${network}) → ${destination}`);
|
|
113
|
+
console.log(`💳 Signing USDC exit-tax via MPP (${network})...`);
|
|
114
|
+
const body = JSON.stringify({ jsonrpc: "2.0", id: 1, method: "reward.claim", params: { destination } });
|
|
115
|
+
const resp = await mppFetch(`${baseURL}/a2a`, {
|
|
116
|
+
method: "POST",
|
|
117
|
+
headers: { "Content-Type": "application/json" },
|
|
118
|
+
body,
|
|
119
|
+
});
|
|
120
|
+
const data = await resp.json();
|
|
121
|
+
if (data.error) {
|
|
122
|
+
const e = new Error(data.error.message || "MPP reward.claim failed");
|
|
123
|
+
e.code = data.error.code;
|
|
124
|
+
e.data = data.error.data;
|
|
125
|
+
throw e;
|
|
126
|
+
}
|
|
127
|
+
const receipt = data.result;
|
|
128
|
+
console.log("");
|
|
129
|
+
console.log(`✅ Claimed ${(receipt.claimed_tokens || 0).toLocaleString()} $moltycash`);
|
|
130
|
+
console.log(` Destination: ${receipt.destination}`);
|
|
131
|
+
console.log(` Fee paid: $${receipt.fee_paid_usd} USDC (${receipt.fee_network || network})`);
|
|
132
|
+
const feeExplorer = buildExplorerUrl(receipt.fee_tx, receipt.fee_network) || receipt.fee_tx;
|
|
133
|
+
console.log(` Fee tx: ${feeExplorer}`);
|
|
134
|
+
const sweepExplorer = buildExplorerUrl(receipt.sweep_tx, receipt.sweep_network || 'base') || receipt.sweep_tx;
|
|
135
|
+
console.log(` Sweep tx: ${sweepExplorer}`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
100
138
|
// Build x402 client for whichever chain has a private key configured. The
|
|
101
139
|
// signing chain doesn't have to match the destination — destination is
|
|
102
140
|
// always Base EVM (where the sweep lands); fee can be paid from any
|
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;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"reward.js","sourceRoot":"","sources":["../reward.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -3,6 +3,7 @@ import minimist from "minimist";
|
|
|
3
3
|
import axios from "axios";
|
|
4
4
|
import { writeCachedSession, readCachedSession } from "./lib/session.js";
|
|
5
5
|
import { buildX402Signer } from "./lib/x402Network.js";
|
|
6
|
+
import { hasMppKey, buildMppFetch } from "./lib/mppNetwork.js";
|
|
6
7
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
7
8
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
8
9
|
let rpcIdCounter = 1;
|
|
@@ -23,6 +24,30 @@ async function a2aCall(method, params) {
|
|
|
23
24
|
return response.data.result;
|
|
24
25
|
}
|
|
25
26
|
async function handleSessionCreate() {
|
|
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;
|
|
50
|
+
}
|
|
26
51
|
const { client, walletLabel, network } = await buildX402Signer();
|
|
27
52
|
console.log(`🔧 Wallet: ${walletLabel} (${network})`);
|
|
28
53
|
console.log("💳 Phase 1: requesting USDC auth payment challenge...");
|
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;AAC1B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../session.ts"],"names":[],"mappings":"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"}
|