UNPKG

business-as-code

Version:

Primitives for expressing business logic and processes as code

459 lines 11.9 kB
/** * Core types for business-as-code primitives */ /** * Currency types supported by the system */ export type Currency = 'USD' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'CAD' | 'AUD' | string; /** * Time period for metrics and financial calculations */ export type TimePeriod = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly'; /** * Business entity definition */ export interface BusinessDefinition { /** Business name */ name: string; /** Business description */ description?: string; /** Industry/sector */ industry?: string; /** Mission statement */ mission?: string; /** Core values */ values?: string[]; /** Target market */ targetMarket?: string; /** Founding date */ foundedAt?: Date; /** Team size */ teamSize?: number; /** Organizational structure */ structure?: OrganizationalStructure; /** Business metadata */ metadata?: Record<string, unknown>; } /** * Goal definition */ export interface GoalDefinition { /** Goal name/title */ name: string; /** Goal description */ description?: string; /** Goal category */ category?: 'strategic' | 'operational' | 'financial' | 'customer' | 'internal' | 'learning'; /** Target completion date */ targetDate?: Date; /** Owner responsible for the goal */ owner?: string; /** Success metrics */ metrics?: string[]; /** Current status */ status?: 'not-started' | 'in-progress' | 'at-risk' | 'completed' | 'cancelled'; /** Progress percentage */ progress?: number; /** Dependencies on other goals */ dependencies?: string[]; /** Goal metadata */ metadata?: Record<string, unknown>; } /** * Department definition */ export interface Department { /** Department name */ name: string; /** Department description */ description?: string; /** Department head */ head?: string; /** Team members */ members?: string[]; /** Department budget */ budget?: number; /** Department goals */ goals?: GoalDefinition[]; } /** * Team definition */ export interface Team { /** Team name */ name: string; /** Team description */ description?: string; /** Team lead */ lead?: string; /** Team members */ members?: string[]; /** Team objectives */ objectives?: string[]; } /** * Organizational structure */ export interface OrganizationalStructure { /** Departments/divisions */ departments?: Department[]; /** Reporting hierarchy */ hierarchy?: Record<string, string[]>; /** Team compositions */ teams?: Team[]; } /** * Vision statement definition */ export interface VisionDefinition { /** Vision statement */ statement: string; /** Target timeframe */ timeframe?: string; /** Success indicators */ successIndicators?: string[]; /** Vision metadata */ metadata?: Record<string, unknown>; } /** * Product definition */ export interface ProductDefinition { /** Product name */ name: string; /** Product description */ description?: string; /** Product category */ category?: string; /** Target customer segment */ targetSegment?: string; /** Value proposition */ valueProposition?: string; /** Pricing model */ pricingModel?: 'one-time' | 'subscription' | 'usage-based' | 'freemium' | 'tiered'; /** Price */ price?: number; /** Currency */ currency?: Currency; /** Cost of goods sold */ cogs?: number; /** Features */ features?: string[]; /** Product roadmap */ roadmap?: RoadmapItem[]; /** Product metadata */ metadata?: Record<string, unknown>; } /** * Service definition */ export interface ServiceDefinition { /** Service name */ name: string; /** Service description */ description?: string; /** Service category */ category?: string; /** Target customer segment */ targetSegment?: string; /** Value proposition */ valueProposition?: string; /** Pricing model */ pricingModel?: 'hourly' | 'fixed' | 'retainer' | 'value-based'; /** Base price */ price?: number; /** Currency */ currency?: Currency; /** Estimated delivery time */ deliveryTime?: string; /** Service level agreement */ sla?: ServiceLevelAgreement; /** Service metadata */ metadata?: Record<string, unknown>; } /** * Roadmap item for products */ export interface RoadmapItem { /** Item name */ name: string; /** Description */ description?: string; /** Target quarter/date */ targetDate?: Date; /** Priority */ priority?: 'critical' | 'high' | 'medium' | 'low'; /** Status */ status?: 'planned' | 'in-progress' | 'completed' | 'cancelled'; } /** * Service level agreement */ export interface ServiceLevelAgreement { /** Uptime percentage */ uptime?: number; /** Response time */ responseTime?: string; /** Support hours */ supportHours?: string; /** Penalties for SLA violations */ penalties?: string; } /** * Business process definition */ export interface ProcessDefinition { /** Process name */ name: string; /** Process description */ description?: string; /** Process category */ category?: 'core' | 'support' | 'management'; /** Process owner */ owner?: string; /** Process steps */ steps?: ProcessStep[]; /** Inputs required */ inputs?: string[]; /** Outputs produced */ outputs?: string[]; /** Process metrics */ metrics?: ProcessMetric[]; /** Process metadata */ metadata?: Record<string, unknown>; } /** * Process step definition */ export interface ProcessStep { /** Step number */ order: number; /** Step name */ name: string; /** Step description */ description?: string; /** Responsible role/person */ responsible?: string; /** Estimated duration */ duration?: string; /** Step automation level */ automationLevel?: 'manual' | 'semi-automated' | 'automated'; } /** * Process metric */ export interface ProcessMetric { /** Metric name */ name: string; /** Metric description */ description?: string; /** Target value */ target?: number; /** Current value */ current?: number; /** Unit of measurement */ unit?: string; } /** * Workflow definition (automation sequence) */ export interface WorkflowDefinition { /** Workflow name */ name: string; /** Workflow description */ description?: string; /** Trigger conditions */ trigger?: WorkflowTrigger; /** Workflow actions */ actions?: WorkflowAction[]; /** Workflow metadata */ metadata?: Record<string, unknown>; } /** * Workflow trigger */ export interface WorkflowTrigger { /** Trigger type */ type: 'event' | 'schedule' | 'webhook' | 'manual'; /** Event name (for event triggers) */ event?: string; /** Schedule expression (for scheduled triggers) */ schedule?: string; /** Webhook URL (for webhook triggers) */ webhook?: string; } /** * Workflow action */ export interface WorkflowAction { /** Action order */ order: number; /** Action type */ type: 'send' | 'create' | 'update' | 'delete' | 'notify' | 'call' | 'wait'; /** Action description */ description?: string; /** Action parameters */ params?: Record<string, unknown>; /** Condition for executing this action */ condition?: string; } /** * Key Performance Indicator */ export interface KPIDefinition { /** KPI name */ name: string; /** KPI description */ description?: string; /** KPI category */ category?: 'financial' | 'customer' | 'operations' | 'people' | 'growth'; /** Measurement unit */ unit?: string; /** Target value */ target?: number; /** Current value */ current?: number; /** Measurement frequency */ frequency?: TimePeriod; /** Data source */ dataSource?: string; /** Calculation formula */ formula?: string; /** KPI metadata */ metadata?: Record<string, unknown>; } /** * Objective and Key Results (OKR) */ export interface OKRDefinition { /** Objective statement */ objective: string; /** Objective description */ description?: string; /** Time period */ period?: string; /** Owner */ owner?: string; /** Key results */ keyResults?: KeyResult[]; /** Status */ status?: 'not-started' | 'on-track' | 'at-risk' | 'completed'; /** Confidence level */ confidence?: number; /** OKR metadata */ metadata?: Record<string, unknown>; } /** * Key result within an OKR */ export interface KeyResult { /** Key result description */ description: string; /** Metric to measure */ metric: string; /** Starting value */ startValue?: number; /** Target value */ targetValue: number; /** Current value */ currentValue?: number; /** Unit of measurement */ unit?: string; /** Progress percentage */ progress?: number; } /** * Financial metrics and calculations */ export interface FinancialMetrics { /** Revenue */ revenue?: number; /** Cost of goods sold */ cogs?: number; /** Gross profit */ grossProfit?: number; /** Gross margin percentage */ grossMargin?: number; /** Operating expenses */ operatingExpenses?: number; /** Operating income */ operatingIncome?: number; /** Operating margin percentage */ operatingMargin?: number; /** Net income */ netIncome?: number; /** Net margin percentage */ netMargin?: number; /** EBITDA */ ebitda?: number; /** EBITDA margin percentage */ ebitdaMargin?: number; /** Cash flow from operations */ operatingCashFlow?: number; /** Free cash flow */ freeCashFlow?: number; /** Currency */ currency?: Currency; /** Period */ period?: TimePeriod; } /** * Financial statement data */ export interface FinancialStatement { /** Statement type */ type: 'income' | 'balance-sheet' | 'cash-flow'; /** Period */ period: string; /** Line items */ lineItems: Record<string, number>; /** Currency */ currency: Currency; /** Metadata */ metadata?: Record<string, unknown>; } /** * Business context for $ helper */ export interface BusinessContext { /** Current business entity */ business?: BusinessDefinition; /** Active goals */ goals?: GoalDefinition[]; /** Active OKRs */ okrs?: OKRDefinition[]; /** Tracked KPIs */ kpis?: KPIDefinition[]; /** Financial data */ financials?: FinancialMetrics; /** Custom context data */ [key: string]: unknown; } /** * $ helper for business operations */ export interface BusinessOperations { /** Format currency value */ format: (amount: number, currency?: Currency) => string; /** Calculate percentage */ percent: (value: number, total: number) => number; /** Calculate growth rate */ growth: (current: number, previous: number) => number; /** Calculate margin */ margin: (revenue: number, cost: number) => number; /** Calculate return on investment */ roi: (gain: number, cost: number) => number; /** Calculate customer lifetime value */ ltv: (averageValue: number, frequency: number, lifetime: number) => number; /** Calculate customer acquisition cost */ cac: (marketingSpend: number, newCustomers: number) => number; /** Calculate burn rate */ burnRate: (cashStart: number, cashEnd: number, months: number) => number; /** Calculate runway */ runway: (cash: number, burnRate: number) => number; /** Access business context */ context: BusinessContext; /** Log business event */ log: (event: string, data?: unknown) => void; } //# sourceMappingURL=types.d.ts.map