business-as-code
Version:
Primitives for expressing business logic and processes as code
130 lines • 4.28 kB
TypeScript
/**
* 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