@unifiedflow/cli 1.0.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/README.md +85 -0
- package/dist/idl/unified_flow.json +1889 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +443 -0
- package/dist/index.js.map +1 -0
- package/dist/services/backfill.d.ts +2 -0
- package/dist/services/backfill.d.ts.map +1 -0
- package/dist/services/backfill.js +358 -0
- package/dist/services/backfill.js.map +1 -0
- package/dist/services/csvDiff.d.ts +68 -0
- package/dist/services/csvDiff.d.ts.map +1 -0
- package/dist/services/csvDiff.js +318 -0
- package/dist/services/csvDiff.js.map +1 -0
- package/dist/services/decoder.d.ts +3 -0
- package/dist/services/decoder.d.ts.map +1 -0
- package/dist/services/decoder.js +43 -0
- package/dist/services/decoder.js.map +1 -0
- package/dist/services/eventNormalizer.d.ts +63 -0
- package/dist/services/eventNormalizer.d.ts.map +1 -0
- package/dist/services/eventNormalizer.js +212 -0
- package/dist/services/eventNormalizer.js.map +1 -0
- package/dist/services/eventParser.d.ts +7 -0
- package/dist/services/eventParser.d.ts.map +1 -0
- package/dist/services/eventParser.js +130 -0
- package/dist/services/eventParser.js.map +1 -0
- package/dist/services/rpc.d.ts +10 -0
- package/dist/services/rpc.d.ts.map +1 -0
- package/dist/services/rpc.js +203 -0
- package/dist/services/rpc.js.map +1 -0
- package/dist/services/streamIndexer.d.ts +2 -0
- package/dist/services/streamIndexer.d.ts.map +1 -0
- package/dist/services/streamIndexer.js +367 -0
- package/dist/services/streamIndexer.js.map +1 -0
- package/package.json +42 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,443 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const anchor = __importStar(require("@coral-xyz/anchor"));
|
|
40
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
41
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
const path_1 = __importDefault(require("path"));
|
|
44
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
45
|
+
const rpc_1 = require("./services/rpc");
|
|
46
|
+
const unified_flow_json_1 = __importDefault(require("./idl/unified_flow.json"));
|
|
47
|
+
dotenv_1.default.config();
|
|
48
|
+
// ============================================================================
|
|
49
|
+
// COLORS & FORMATTING FOR GORGEOUS TERMINAL
|
|
50
|
+
// ============================================================================
|
|
51
|
+
const C_RESET = "\x1b[0m";
|
|
52
|
+
const C_GREEN = "\x1b[32m";
|
|
53
|
+
const C_BLUE = "\x1b[34m";
|
|
54
|
+
const C_CYAN = "\x1b[36m";
|
|
55
|
+
const C_YELLOW = "\x1b[33m";
|
|
56
|
+
const C_RED = "\x1b[31m";
|
|
57
|
+
const C_MAGENTA = "\x1b[35m";
|
|
58
|
+
const C_BOLD = "\x1b[1m";
|
|
59
|
+
function logSuccess(msg) { console.log(`${C_GREEN}${C_BOLD}✔ Success:${C_RESET} ${msg}`); }
|
|
60
|
+
function logInfo(msg) { console.log(`${C_BLUE}${C_BOLD}ℹ Info:${C_RESET} ${msg}`); }
|
|
61
|
+
function logWarn(msg) { console.log(`${C_YELLOW}${C_BOLD}⚠ Warning:${C_RESET} ${msg}`); }
|
|
62
|
+
function logError(msg) { console.log(`${C_RED}${C_BOLD}✘ Error:${C_RESET} ${msg}`); }
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// SYSTEM & WALLET BOOT
|
|
65
|
+
// ============================================================================
|
|
66
|
+
const PROGRAM_ID = new web3_js_1.PublicKey(process.env.PROGRAM_ID || "8M5yieUh7pxwUi1YBByDF82nqoorZwaKi8dBoMVpurFa");
|
|
67
|
+
function loadWallet(filePath) {
|
|
68
|
+
const resolvedPath = path_1.default.resolve(filePath.replace(/^~/, process.env.HOME || ""));
|
|
69
|
+
const secret = JSON.parse(fs_1.default.readFileSync(resolvedPath, "utf-8"));
|
|
70
|
+
return web3_js_1.Keypair.fromSecretKey(Uint8Array.from(secret));
|
|
71
|
+
}
|
|
72
|
+
function getSigner() {
|
|
73
|
+
const defaultPath = process.env.WALLET_PATH || path_1.default.join(process.env.HOME || "", ".config/solana/id.json");
|
|
74
|
+
try {
|
|
75
|
+
return loadWallet(defaultPath);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
logError(`Failed to load default wallet from ${defaultPath}: ${e}`);
|
|
79
|
+
logInfo("Please configure WALLET_PATH in your .env or run: solana-keygen new");
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function getAnchorProgram(signer) {
|
|
84
|
+
const wallet = new anchor.Wallet(signer);
|
|
85
|
+
const provider = new anchor.AnchorProvider(rpc_1.connection, wallet, {
|
|
86
|
+
commitment: "confirmed",
|
|
87
|
+
});
|
|
88
|
+
return new anchor.Program(unified_flow_json_1.default, provider);
|
|
89
|
+
}
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// CLI ROUTER & COMMANDS
|
|
92
|
+
// ============================================================================
|
|
93
|
+
function printHelp() {
|
|
94
|
+
console.log(`
|
|
95
|
+
${C_CYAN}${C_BOLD}🌌 Solana Vesting & Distribution CLI Command Manual${C_RESET}
|
|
96
|
+
Usage: npm run cli <command> [args...]
|
|
97
|
+
|
|
98
|
+
${C_BOLD}READ COMMANDS:${C_RESET}
|
|
99
|
+
${C_GREEN}view <streamAddress>${C_RESET} Fetch & print real-time on-chain stream & milestone details.
|
|
100
|
+
${C_GREEN}config${C_RESET} Print global protocol config (fees, admin, paused state).
|
|
101
|
+
|
|
102
|
+
${C_BOLD}WRITE TRANSACTION COMMANDS:${C_RESET}
|
|
103
|
+
${C_GREEN}init${C_RESET} Initialize global protocol config PDA state.
|
|
104
|
+
${C_GREEN}create <recipient> <mint> <amount> <type> [duration|milestones...]${C_RESET}
|
|
105
|
+
Create a new vesting stream.
|
|
106
|
+
Vesting types:
|
|
107
|
+
${C_BOLD}0${C_RESET} - Linear (args: <durationSecs>)
|
|
108
|
+
${C_BOLD}1${C_RESET} - Cliff (args: <durationSecs>)
|
|
109
|
+
${C_BOLD}2${C_RESET} - Milestone (args: comma-separated list of milestone amounts)
|
|
110
|
+
${C_GREEN}withdraw <streamAddress>${C_RESET} Withdraw claimable vested tokens from a stream.
|
|
111
|
+
${C_GREEN}cancel <streamAddress>${C_RESET} Cancel an active stream (returns unvested tokens to creator).
|
|
112
|
+
${C_GREEN}unlock <streamAddress>${C_RESET} Unlock the next milestone in a milestone stream.
|
|
113
|
+
${C_GREEN}edit-milestone <stream> <idx> <amt>${C_RESET} Modify a locked milestone allocation.
|
|
114
|
+
${C_GREEN}edit-cliff <stream> <newCliffTs>${C_RESET} Edit stream's cliff timestamp.
|
|
115
|
+
`);
|
|
116
|
+
}
|
|
117
|
+
async function main() {
|
|
118
|
+
const args = process.argv.slice(2);
|
|
119
|
+
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
120
|
+
printHelp();
|
|
121
|
+
process.exit(0);
|
|
122
|
+
}
|
|
123
|
+
const command = args[0];
|
|
124
|
+
const signer = getSigner();
|
|
125
|
+
const program = getAnchorProgram(signer);
|
|
126
|
+
const programAccount = program.account;
|
|
127
|
+
try {
|
|
128
|
+
switch (command) {
|
|
129
|
+
case "config": {
|
|
130
|
+
logInfo("Fetching global protocol config...");
|
|
131
|
+
const [configPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("config")], PROGRAM_ID);
|
|
132
|
+
const config = await programAccount.configAccount.fetch(configPda);
|
|
133
|
+
console.log(`
|
|
134
|
+
${C_BLUE}${C_BOLD}📋 Global Protocol Settings:${C_RESET}
|
|
135
|
+
- Config PDA Address: ${configPda.toBase58()}
|
|
136
|
+
- Admin Authority: ${config.adminAuthority.toBase58()}
|
|
137
|
+
- Fee Authority: ${config.feeAuthority.toBase58()}
|
|
138
|
+
- Status: ${config.paused ? `${C_RED}PAUSED${C_RESET}` : `${C_GREEN}ACTIVE/RUNNING${C_RESET}`}
|
|
139
|
+
- Withdrawal Fee: ${config.withdrawFeeBps / 100}% (${config.withdrawFeeBps} bps)
|
|
140
|
+
- Max Permitted Fee: ${config.maxWithdrawFeeBps / 100}% (${config.maxWithdrawFeeBps} bps)
|
|
141
|
+
- Timelock Delay: ${config.feeChangeTimelockSeconds.toString()} seconds
|
|
142
|
+
- Allowed Mints: ${config.allowedMints.length === 0 ? "Any SPL Token" : config.allowedMints.map((m) => m.toBase58()).join(", ")}
|
|
143
|
+
`);
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case "view": {
|
|
147
|
+
if (args.length < 2) {
|
|
148
|
+
logError("Missing stream address. Usage: npm run cli view <streamAddress>");
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
const streamAddress = args[1];
|
|
152
|
+
const streamPubkey = new web3_js_1.PublicKey(streamAddress);
|
|
153
|
+
logInfo(`Fetching on-chain details for stream ${streamAddress}...`);
|
|
154
|
+
const streamState = await programAccount.streamAccount.fetch(streamPubkey);
|
|
155
|
+
const typeNames = ["Linear Vesting", "Cliff Vesting", "Milestone Vesting"];
|
|
156
|
+
const statusNames = ["Unknown", "Active", "Completed", "Cancelled"];
|
|
157
|
+
console.log(`
|
|
158
|
+
${C_BLUE}${C_BOLD}🌊 Vesting Stream Details:${C_RESET}
|
|
159
|
+
- Address: ${streamAddress}
|
|
160
|
+
- Creator: ${streamState.creator.toBase58()}
|
|
161
|
+
- Recipient: ${streamState.recipient.toBase58()}
|
|
162
|
+
- Token Mint: ${streamState.mint.toBase58()}
|
|
163
|
+
- Vault Token ATA: ${streamState.vault.toBase58()}
|
|
164
|
+
- Total Allocation: ${streamState.totalAmount.toString()} tokens
|
|
165
|
+
- Claimed/Withdrawn: ${streamState.withdrawn.toString()} tokens
|
|
166
|
+
- Vesting Schedule: ${C_MAGENTA}${C_BOLD}${typeNames[streamState.vestingType] || "Custom"}${C_RESET}
|
|
167
|
+
- Status: ${streamState.status === 1 ? C_GREEN : streamState.status === 2 ? C_BLUE : C_RED}${C_BOLD}${statusNames[streamState.status] || "Unknown"}${C_RESET}
|
|
168
|
+
- Start Time: ${new Date(streamState.startTs.toNumber() * 1000).toLocaleString()}
|
|
169
|
+
- Cliff Time: ${new Date(streamState.cliffTs.toNumber() * 1000).toLocaleString()}
|
|
170
|
+
- End Time: ${new Date(streamState.endTs.toNumber() * 1000).toLocaleString()}
|
|
171
|
+
- Cancelable: ${streamState.cancelable ? "Yes" : "No"}
|
|
172
|
+
- Nonce Identifier: ${streamState.nonce.toString()}
|
|
173
|
+
`);
|
|
174
|
+
if (streamState.vestingType === 2) {
|
|
175
|
+
console.log(` ${C_BOLD}Milestones status (${streamState.nextMilestoneIndex}/${streamState.milestoneCount} unlocked):${C_RESET}`);
|
|
176
|
+
for (let i = 0; i < streamState.milestoneCount; i++) {
|
|
177
|
+
const [milestonePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("milestone"), streamPubkey.toBuffer(), Buffer.from([i])], PROGRAM_ID);
|
|
178
|
+
try {
|
|
179
|
+
const milestoneState = await programAccount.milestoneAccount.fetch(milestonePda);
|
|
180
|
+
console.log(` [Milestone #${i}] ${milestoneState.amount.toString()} tokens - ${milestoneState.unlocked ? `${C_GREEN}UNLOCKED${C_RESET}` : `${C_YELLOW}LOCKED (Pending Creator Approval)${C_RESET}`} (Address: ${milestonePda.toBase58()})`);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
console.log(` [Milestone #${i}] Address: ${milestonePda.toBase58()} - Fetch failed: ${err}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
case "init": {
|
|
190
|
+
logInfo("Submitting initialize config transaction...");
|
|
191
|
+
const [configPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("config")], PROGRAM_ID);
|
|
192
|
+
const tx = await program.methods
|
|
193
|
+
.initializeConfig()
|
|
194
|
+
.accounts({
|
|
195
|
+
admin: signer.publicKey,
|
|
196
|
+
config: configPda,
|
|
197
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
198
|
+
})
|
|
199
|
+
.signers([signer])
|
|
200
|
+
.rpc();
|
|
201
|
+
logSuccess(`Protocol configured. PDA address: ${configPda.toBase58()}`);
|
|
202
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case "create": {
|
|
206
|
+
if (args.length < 6) {
|
|
207
|
+
logError("Missing arguments. Usage:\n" +
|
|
208
|
+
" Linear/Cliff: npm run cli create <recipient> <mint> <amount> <type: 0|1> <durationSecs>\n" +
|
|
209
|
+
" Milestone: npm run cli create <recipient> <mint> <amount> <type: 2> <milestones: 100,200,300>");
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
const recipientStr = args[1];
|
|
213
|
+
const mintStr = args[2];
|
|
214
|
+
const amountStr = args[3];
|
|
215
|
+
const typeNum = parseInt(args[4], 10);
|
|
216
|
+
const recipientPubkey = new web3_js_1.PublicKey(recipientStr);
|
|
217
|
+
const mintPubkey = new web3_js_1.PublicKey(mintStr);
|
|
218
|
+
const amountBN = new anchor.BN(amountStr);
|
|
219
|
+
const finalNonce = new anchor.BN(Date.now());
|
|
220
|
+
let startTs = Math.floor(Date.now() / 1000) + 10; // start 10s in future
|
|
221
|
+
let cliffTs = startTs;
|
|
222
|
+
let endTs = startTs + 60; // fallback duration 60s
|
|
223
|
+
let milestonesInputs = [];
|
|
224
|
+
if (typeNum === 0 || typeNum === 1) {
|
|
225
|
+
const duration = parseInt(args[5], 10);
|
|
226
|
+
if (isNaN(duration) || duration <= 0) {
|
|
227
|
+
throw new Error("Invalid duration. Must be a positive integer in seconds.");
|
|
228
|
+
}
|
|
229
|
+
endTs = startTs + duration;
|
|
230
|
+
if (typeNum === 1) {
|
|
231
|
+
cliffTs = endTs; // cliff unlocks at end
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else if (typeNum === 2) {
|
|
235
|
+
const parts = args[5].split(",");
|
|
236
|
+
milestonesInputs = parts.map(p => ({ amount: new anchor.BN(p) }));
|
|
237
|
+
const totalMilestonesSum = milestonesInputs.reduce((sum, m) => sum.add(m.amount), new anchor.BN(0));
|
|
238
|
+
if (!totalMilestonesSum.eq(amountBN)) {
|
|
239
|
+
throw new Error(`Milestone sum (${totalMilestonesSum.toString()}) does not equal total amount (${amountStr})`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
throw new Error("Invalid vesting type. Must be 0 (Linear), 1 (Cliff), or 2 (Milestone).");
|
|
244
|
+
}
|
|
245
|
+
const [streamPda] = web3_js_1.PublicKey.findProgramAddressSync([
|
|
246
|
+
Buffer.from("stream"),
|
|
247
|
+
signer.publicKey.toBuffer(),
|
|
248
|
+
recipientPubkey.toBuffer(),
|
|
249
|
+
new anchor.BN(endTs).toArrayLike(Buffer, "le", 8),
|
|
250
|
+
], PROGRAM_ID);
|
|
251
|
+
const vaultAta = await (0, spl_token_1.getAssociatedTokenAddress)(mintPubkey, streamPda, true);
|
|
252
|
+
const creatorTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mintPubkey, signer.publicKey, true);
|
|
253
|
+
const [configPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("config")], PROGRAM_ID);
|
|
254
|
+
const remainingAccounts = [];
|
|
255
|
+
if (typeNum === 2) {
|
|
256
|
+
for (let i = 0; i < milestonesInputs.length; i++) {
|
|
257
|
+
const [milestonePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("milestone"), streamPda.toBuffer(), Buffer.from([i])], PROGRAM_ID);
|
|
258
|
+
remainingAccounts.push({ pubkey: milestonePda, isWritable: true, isSigner: false });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
logInfo("Creating stream on-chain...");
|
|
262
|
+
const tx = await program.methods
|
|
263
|
+
.createStream(amountBN, new anchor.BN(startTs), new anchor.BN(cliffTs), new anchor.BN(endTs), typeNum, milestonesInputs, finalNonce)
|
|
264
|
+
.accounts({
|
|
265
|
+
creator: signer.publicKey,
|
|
266
|
+
recipient: recipientPubkey,
|
|
267
|
+
mint: mintPubkey,
|
|
268
|
+
config: configPda,
|
|
269
|
+
stream: streamPda,
|
|
270
|
+
vault: vaultAta,
|
|
271
|
+
creatorTokenAccount: creatorTokenAccount,
|
|
272
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
273
|
+
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
274
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
275
|
+
})
|
|
276
|
+
.remainingAccounts(remainingAccounts)
|
|
277
|
+
.signers([signer])
|
|
278
|
+
.rpc();
|
|
279
|
+
logSuccess(`Vesting Stream created successfully!`);
|
|
280
|
+
console.log(` - Stream address: ${streamPda.toBase58()}`);
|
|
281
|
+
console.log(` - Vault address: ${vaultAta.toBase58()}`);
|
|
282
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
case "withdraw": {
|
|
286
|
+
if (args.length < 2) {
|
|
287
|
+
logError("Missing stream address. Usage: npm run cli withdraw <streamAddress>");
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
const streamPubkey = new web3_js_1.PublicKey(args[1]);
|
|
291
|
+
const streamState = await programAccount.streamAccount.fetch(streamPubkey);
|
|
292
|
+
const mint = streamState.mint;
|
|
293
|
+
const vault = streamState.vault;
|
|
294
|
+
const recipientAta = await (0, spl_token_1.getAssociatedTokenAddress)(mint, signer.publicKey, true);
|
|
295
|
+
const [configPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("config")], PROGRAM_ID);
|
|
296
|
+
const feeReceiver = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("fee_vault")], PROGRAM_ID)[0];
|
|
297
|
+
const chainlinkFeed = new web3_js_1.PublicKey("99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR");
|
|
298
|
+
const seqNumber = new anchor.BN(Math.floor(Math.random() * 100000));
|
|
299
|
+
logInfo("Submitting claim/withdrawal transaction...");
|
|
300
|
+
const tx = await program.methods
|
|
301
|
+
.withdraw(seqNumber)
|
|
302
|
+
.accounts({
|
|
303
|
+
recipient: signer.publicKey,
|
|
304
|
+
mint: mint,
|
|
305
|
+
config: configPda,
|
|
306
|
+
stream: streamPubkey,
|
|
307
|
+
vault: vault,
|
|
308
|
+
recipientAta: recipientAta,
|
|
309
|
+
feeReceiver: feeReceiver,
|
|
310
|
+
chainlinkFeed: chainlinkFeed,
|
|
311
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
312
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
313
|
+
})
|
|
314
|
+
.signers([signer])
|
|
315
|
+
.rpc();
|
|
316
|
+
logSuccess("Tokens withdrawn successfully!");
|
|
317
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case "cancel": {
|
|
321
|
+
if (args.length < 2) {
|
|
322
|
+
logError("Missing stream address. Usage: npm run cli cancel <streamAddress>");
|
|
323
|
+
process.exit(1);
|
|
324
|
+
}
|
|
325
|
+
const streamPubkey = new web3_js_1.PublicKey(args[1]);
|
|
326
|
+
const streamState = await programAccount.streamAccount.fetch(streamPubkey);
|
|
327
|
+
const mint = streamState.mint;
|
|
328
|
+
const vault = streamState.vault;
|
|
329
|
+
const creatorTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mint, signer.publicKey, true);
|
|
330
|
+
const recipientTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mint, streamState.recipient, true);
|
|
331
|
+
logInfo("Cancelling stream on-chain...");
|
|
332
|
+
const tx = await program.methods
|
|
333
|
+
.cancel()
|
|
334
|
+
.accounts({
|
|
335
|
+
creator: signer.publicKey,
|
|
336
|
+
mint,
|
|
337
|
+
stream: streamPubkey,
|
|
338
|
+
vault,
|
|
339
|
+
creatorTokenAccount,
|
|
340
|
+
recipientTokenAccount,
|
|
341
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
342
|
+
})
|
|
343
|
+
.signers([signer])
|
|
344
|
+
.rpc();
|
|
345
|
+
logSuccess("Stream successfully cancelled.");
|
|
346
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
case "unlock": {
|
|
350
|
+
if (args.length < 2) {
|
|
351
|
+
logError("Missing stream address. Usage: npm run cli unlock <streamAddress>");
|
|
352
|
+
process.exit(1);
|
|
353
|
+
}
|
|
354
|
+
const streamPubkey = new web3_js_1.PublicKey(args[1]);
|
|
355
|
+
const streamState = await programAccount.streamAccount.fetch(streamPubkey);
|
|
356
|
+
const nextIndex = streamState.nextMilestoneIndex;
|
|
357
|
+
if (nextIndex >= streamState.milestoneCount) {
|
|
358
|
+
throw new Error("All milestones are already unlocked.");
|
|
359
|
+
}
|
|
360
|
+
const [milestonePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("milestone"), streamPubkey.toBuffer(), Buffer.from([nextIndex])], PROGRAM_ID);
|
|
361
|
+
logInfo(`Unlocking milestone #${nextIndex} (${milestonePda.toBase58()})...`);
|
|
362
|
+
const tx = await program.methods
|
|
363
|
+
.unlockMilestone()
|
|
364
|
+
.accountsStrict({
|
|
365
|
+
creator: signer.publicKey,
|
|
366
|
+
stream: streamPubkey,
|
|
367
|
+
milestone: milestonePda,
|
|
368
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
369
|
+
})
|
|
370
|
+
.signers([signer])
|
|
371
|
+
.rpc();
|
|
372
|
+
logSuccess(`Successfully unlocked milestone #${nextIndex}!`);
|
|
373
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
case "edit-milestone": {
|
|
377
|
+
if (args.length < 4) {
|
|
378
|
+
logError("Missing arguments. Usage: npm run cli edit-milestone <stream> <idx> <amt>");
|
|
379
|
+
process.exit(1);
|
|
380
|
+
}
|
|
381
|
+
const streamPubkey = new web3_js_1.PublicKey(args[1]);
|
|
382
|
+
const idx = parseInt(args[2], 10);
|
|
383
|
+
const amtStr = args[3];
|
|
384
|
+
const streamState = await programAccount.streamAccount.fetch(streamPubkey);
|
|
385
|
+
const mint = streamState.mint;
|
|
386
|
+
const vault = streamState.vault;
|
|
387
|
+
const [milestonePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("milestone"), streamPubkey.toBuffer(), Buffer.from([idx])], PROGRAM_ID);
|
|
388
|
+
const creatorTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mint, signer.publicKey, true);
|
|
389
|
+
logInfo(`Modifying milestone #${idx} allocation to ${amtStr} tokens...`);
|
|
390
|
+
const tx = await program.methods
|
|
391
|
+
.editMilestone(new anchor.BN(amtStr))
|
|
392
|
+
.accounts({
|
|
393
|
+
creator: signer.publicKey,
|
|
394
|
+
stream: streamPubkey,
|
|
395
|
+
milestone: milestonePda,
|
|
396
|
+
mint: mint,
|
|
397
|
+
vault: vault,
|
|
398
|
+
creatorTokenAccount: creatorTokenAccount,
|
|
399
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
400
|
+
})
|
|
401
|
+
.signers([signer])
|
|
402
|
+
.rpc();
|
|
403
|
+
logSuccess("Milestone modified successfully!");
|
|
404
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
case "edit-cliff": {
|
|
408
|
+
if (args.length < 3) {
|
|
409
|
+
logError("Missing arguments. Usage: npm run cli edit-cliff <stream> <newCliffTs>");
|
|
410
|
+
process.exit(1);
|
|
411
|
+
}
|
|
412
|
+
const streamPubkey = new web3_js_1.PublicKey(args[1]);
|
|
413
|
+
const newCliffTs = parseInt(args[2], 10);
|
|
414
|
+
logInfo(`Modifying stream cliff timestamp to ${new Date(newCliffTs * 1000).toLocaleString()}...`);
|
|
415
|
+
const tx = await program.methods
|
|
416
|
+
.editCliff(new anchor.BN(newCliffTs))
|
|
417
|
+
.accounts({
|
|
418
|
+
creator: signer.publicKey,
|
|
419
|
+
stream: streamPubkey,
|
|
420
|
+
})
|
|
421
|
+
.signers([signer])
|
|
422
|
+
.rpc();
|
|
423
|
+
logSuccess("Cliff timestamp successfully updated!");
|
|
424
|
+
logInfo(`Tx Explorer link: https://explorer.solana.com/tx/${tx}?cluster=devnet`);
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
default:
|
|
428
|
+
logError(`Unknown command: ${command}`);
|
|
429
|
+
printHelp();
|
|
430
|
+
process.exit(1);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
catch (e) {
|
|
434
|
+
logError(`Execution failed: ${e.message || e}`);
|
|
435
|
+
if (e.logs) {
|
|
436
|
+
console.log(`${C_RED}Transaction Logs:${C_RESET}`);
|
|
437
|
+
console.log(e.logs.join("\n"));
|
|
438
|
+
}
|
|
439
|
+
process.exit(1);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
main();
|
|
443
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/services/backfill.ts"],"names":[],"mappings":"AAmBA,wBAAsB,QAAQ,kBAmF7B"}
|