business-as-code
Version:
Primitives for expressing business logic and processes as code
112 lines • 3.44 kB
TypeScript
/**
* Business process definition and management
*/
import type { ProcessDefinition, ProcessStep, ProcessMetric } from './types.js';
/**
* Define a business process with steps, inputs, outputs, and metrics
*
* @example
* ```ts
* const process = Process({
* name: 'Customer Onboarding',
* description: 'Process for onboarding new customers',
* category: 'core',
* owner: 'Customer Success Team',
* steps: [
* {
* order: 1,
* name: 'Welcome Email',
* description: 'Send personalized welcome email',
* responsible: 'CS Manager',
* duration: '5 minutes',
* automationLevel: 'automated',
* },
* {
* order: 2,
* name: 'Initial Setup Call',
* description: 'Schedule and conduct setup call',
* responsible: 'CS Rep',
* duration: '30 minutes',
* automationLevel: 'manual',
* },
* {
* order: 3,
* name: 'Account Configuration',
* description: 'Configure customer account settings',
* responsible: 'CS Rep',
* duration: '15 minutes',
* automationLevel: 'semi-automated',
* },
* ],
* inputs: ['Customer Information', 'Subscription Plan'],
* outputs: ['Configured Account', 'Training Materials'],
* metrics: [
* {
* name: 'Time to First Value',
* description: 'Time from signup to first successful use',
* target: 24,
* unit: 'hours',
* },
* {
* name: 'Onboarding Completion Rate',
* description: 'Percentage of customers completing onboarding',
* target: 90,
* unit: 'percent',
* },
* ],
* })
* ```
*/
export declare function Process(definition: ProcessDefinition): ProcessDefinition;
/**
* Get process steps in order
*/
export declare function getStepsInOrder(process: ProcessDefinition): ProcessStep[];
/**
* Get steps by automation level
*/
export declare function getStepsByAutomationLevel(process: ProcessDefinition, level: ProcessStep['automationLevel']): ProcessStep[];
/**
* Calculate total process duration in minutes
*/
export declare function calculateTotalDuration(process: ProcessDefinition): number;
/**
* Format minutes to human-readable duration
*/
export declare function formatDuration(minutes: number): string;
/**
* Calculate automation percentage
*/
export declare function calculateAutomationPercentage(process: ProcessDefinition): number;
/**
* Get metric by name
*/
export declare function getMetric(process: ProcessDefinition, name: string): ProcessMetric | undefined;
/**
* Check if metric meets target
*/
export declare function meetsTarget(metric: ProcessMetric): boolean;
/**
* Calculate metric achievement percentage
*/
export declare function calculateMetricAchievement(metric: ProcessMetric): number;
/**
* Update metric current value
*/
export declare function updateMetric(process: ProcessDefinition, metricName: string, currentValue: number): ProcessDefinition;
/**
* Add step to process
*/
export declare function addStep(process: ProcessDefinition, step: ProcessStep): ProcessDefinition;
/**
* Remove step from process
*/
export declare function removeStep(process: ProcessDefinition, stepOrder: number): ProcessDefinition;
/**
* Validate process definition
*/
export declare function validateProcess(process: ProcessDefinition): {
valid: boolean;
errors: string[];
};
//# sourceMappingURL=process.d.ts.map