UNPKG

business-as-code

Version:

Primitives for expressing business logic and processes as code

130 lines 4.28 kB
/** * Financial metrics and calculations */ import type { FinancialMetrics, FinancialStatement, Currency } from './types.js'; /** * Calculate financial metrics from basic inputs * * @example * ```ts * const metrics = financials({ * revenue: 1000000, * cogs: 300000, * operatingExpenses: 500000, * currency: 'USD', * period: 'monthly', * }) * * console.log(metrics.grossMargin) // 70% * console.log(metrics.operatingMargin) // 20% * console.log(metrics.netMargin) // 20% * ``` */ export declare function financials(metrics: Partial<FinancialMetrics>): FinancialMetrics; /** * Calculate gross margin */ export declare function calculateGrossMargin(revenue: number, cogs: number): number; /** * Calculate operating margin */ export declare function calculateOperatingMargin(revenue: number, cogs: number, operatingExpenses: number): number; /** * Calculate net margin */ export declare function calculateNetMargin(revenue: number, netIncome: number): number; /** * Calculate EBITDA margin */ export declare function calculateEBITDAMargin(revenue: number, ebitda: number): number; /** * Calculate burn rate (monthly cash burn) */ export declare function calculateBurnRate(cashStart: number, cashEnd: number, months: number): number; /** * Calculate runway (months until cash runs out) */ export declare function calculateRunway(cash: number, monthlyBurnRate: number): number; /** * Calculate customer acquisition cost (CAC) */ export declare function calculateCAC(marketingSpend: number, newCustomers: number): number; /** * Calculate customer lifetime value (LTV) */ export declare function calculateLTV(averageRevenuePerCustomer: number, averageCustomerLifetimeMonths: number, grossMarginPercent: number): number; /** * Calculate LTV:CAC ratio */ export declare function calculateLTVtoCAC(ltv: number, cac: number): number; /** * Calculate payback period (months to recover CAC) */ export declare function calculatePaybackPeriod(cac: number, monthlyRevPerCustomer: number): number; /** * Calculate annual recurring revenue (ARR) */ export declare function calculateARR(mrr: number): number; /** * Calculate monthly recurring revenue (MRR) */ export declare function calculateMRR(arr: number): number; /** * Calculate revenue growth rate */ export declare function calculateGrowthRate(currentRevenue: number, previousRevenue: number): number; /** * Calculate compound annual growth rate (CAGR) */ export declare function calculateCAGR(beginningValue: number, endingValue: number, years: number): number; /** * Calculate return on investment (ROI) */ export declare function calculateROI(gain: number, cost: number): number; /** * Calculate return on equity (ROE) */ export declare function calculateROE(netIncome: number, shareholderEquity: number): number; /** * Calculate return on assets (ROA) */ export declare function calculateROA(netIncome: number, totalAssets: number): number; /** * Calculate quick ratio (liquidity) */ export declare function calculateQuickRatio(currentAssets: number, inventory: number, currentLiabilities: number): number; /** * Calculate current ratio (liquidity) */ export declare function calculateCurrentRatio(currentAssets: number, currentLiabilities: number): number; /** * Calculate debt-to-equity ratio */ export declare function calculateDebtToEquity(totalDebt: number, totalEquity: number): number; /** * Format currency value */ export declare function formatCurrency(amount: number, currency?: Currency): string; /** * Create a financial statement */ export declare function createStatement(type: FinancialStatement['type'], period: string, lineItems: Record<string, number>, currency?: Currency): FinancialStatement; /** * Get line item from financial statement */ export declare function getLineItem(statement: FinancialStatement, name: string): number; /** * Compare financial metrics between periods */ export declare function compareMetrics(current: FinancialMetrics, previous: FinancialMetrics): Record<string, { change: number; changePercent: number; }>; /** * Validate financial metrics */ export declare function validateFinancials(metrics: FinancialMetrics): { valid: boolean; errors: string[]; }; //# sourceMappingURL=financials.d.ts.map