UNPKG

filecoin-pin

Version:

Bridge IPFS content to Filecoin Onchain Cloud using familiar tools

117 lines 4.72 kB
import { Command } from 'commander'; import { runAutoSetup } from '../payments/auto.js'; import { runDeposit } from '../payments/deposit.js'; import { runFund } from '../payments/fund.js'; import { runInteractiveSetup } from '../payments/interactive.js'; import { showPaymentStatus } from '../payments/status.js'; import { runWithdraw } from '../payments/withdraw.js'; import { addAuthOptions } from '../utils/cli-options.js'; export const paymentsCommand = new Command('payments').description('Manage payment setup for Filecoin Onchain Cloud'); // Setup command const setupCommand = new Command('setup') .description('Setup payment approvals for Filecoin Onchain Cloud storage') .option('--auto', 'Run in automatic mode with defaults') .option('--deposit <amount>', 'USDFC amount to deposit in Filecoin Pay (default: 1)') .option('--rate-allowance <amount>', 'Storage allowance for WarmStorage service (e.g., "1TiB/month", "500GiB/month", or "0.0000565" USDFC/epoch, default: 1TiB/month)') .action(async (options) => { try { const setupOptions = { ...options, auto: options.auto || false, deposit: options.deposit || '1', rateAllowance: options.rateAllowance || '1TiB/month', }; if (setupOptions.auto) { await runAutoSetup(setupOptions); } else { await runInteractiveSetup(setupOptions); } } catch (error) { console.error('Payment setup failed:', error instanceof Error ? error.message : error); process.exit(1); } }); addAuthOptions(setupCommand); paymentsCommand.addCommand(setupCommand); // Fund command - adjust funds to an exact runway or deposited total const fundCommand = new Command('fund') .description('Adjust funds to an exact runway (days) or total deposit') .option('--days <n>', 'Set final runway to exactly N days (deposit or withdraw as needed)') .option('--amount <usdfc>', 'Set final deposited total to exactly this USDFC amount (deposit or withdraw)') .option('--mode <mode>', 'Mode to use for funding: "exact" (default) or "minimum". "exact" will withdraw/deposit to exactly match the target. "minimum" will only deposit if below the minimum target.') .action(async (options) => { try { const fundOptions = { ...options, amount: options.amount, mode: options.mode, }; if (options.days != null) fundOptions.days = Number(options.days); await runFund(fundOptions); } catch (error) { console.error('Failed to adjust funds:', error instanceof Error ? error.message : error); process.exit(1); } }); addAuthOptions(fundCommand); paymentsCommand.addCommand(fundCommand); // Withdraw command const withdrawCommand = new Command('withdraw') .description('Withdraw funds from Filecoin Pay to your wallet') .requiredOption('--amount <usdfc>', 'USDFC amount to withdraw (e.g., 5)') .action(async (options) => { try { await runWithdraw({ ...options, amount: options.amount, }); } catch (error) { console.error('Failed to withdraw:', error instanceof Error ? error.message : error); process.exit(1); } }); addAuthOptions(withdrawCommand); paymentsCommand.addCommand(withdrawCommand); // Status command const statusCommand = new Command('status') .description('Check current payment setup status') .option('--include-rails', 'Show payment rail details') .action(async (options) => { try { await showPaymentStatus({ ...options, }); } catch (error) { console.error('Failed to get payment status:', error instanceof Error ? error.message : error); process.exit(1); } }); addAuthOptions(statusCommand); paymentsCommand.addCommand(statusCommand); // Deposit command const depositCommand = new Command('deposit') .description('Deposit or top-up funds in Filecoin Pay') .option('--amount <usdfc>', 'USDFC amount to deposit (e.g., 10.5)') .option('--days <n>', 'Fund enough to keep current spend alive for N days') .action(async (options) => { try { await runDeposit({ ...options, amount: options.amount, days: options.days != null ? Number(options.days) : undefined, // Only pass days if explicitly provided }); } catch (error) { console.error('Failed to perform deposit:', error instanceof Error ? error.message : error); process.exit(1); } }); addAuthOptions(depositCommand); paymentsCommand.addCommand(depositCommand); //# sourceMappingURL=payments.js.map