business-as-code
Version:
Primitives for expressing business logic and processes as code
85 lines • 2.58 kB
TypeScript
/**
* Product definition and management
*/
import type { ProductDefinition, RoadmapItem } from './types.js';
/**
* Define a product with pricing, features, and roadmap
*
* @example
* ```ts
* const product = Product({
* name: 'Widget Pro',
* description: 'Enterprise-grade widget management platform',
* category: 'SaaS',
* targetSegment: 'Enterprise',
* valueProposition: 'Reduce widget management costs by 50%',
* pricingModel: 'subscription',
* price: 99,
* currency: 'USD',
* cogs: 20,
* features: [
* 'Unlimited widgets',
* 'Advanced analytics',
* 'API access',
* '24/7 support',
* ],
* roadmap: [
* {
* name: 'Mobile app',
* description: 'Native iOS and Android apps',
* targetDate: new Date('2024-09-01'),
* priority: 'high',
* status: 'in-progress',
* },
* {
* name: 'AI-powered insights',
* description: 'Automated widget optimization suggestions',
* targetDate: new Date('2024-12-01'),
* priority: 'high',
* status: 'planned',
* },
* ],
* })
* ```
*/
export declare function Product(definition: ProductDefinition): ProductDefinition;
/**
* Calculate gross margin for a product
*/
export declare function calculateGrossMargin(product: ProductDefinition): number;
/**
* Calculate gross profit for a product
*/
export declare function calculateGrossProfit(product: ProductDefinition, unitsSold: number): number;
/**
* Get roadmap items by status
*/
export declare function getRoadmapByStatus(product: ProductDefinition, status: RoadmapItem['status']): RoadmapItem[];
/**
* Get roadmap items by priority
*/
export declare function getRoadmapByPriority(product: ProductDefinition, priority: RoadmapItem['priority']): RoadmapItem[];
/**
* Get overdue roadmap items
*/
export declare function getOverdueRoadmapItems(product: ProductDefinition): RoadmapItem[];
/**
* Update roadmap item status
*/
export declare function updateRoadmapItem(product: ProductDefinition, itemName: string, updates: Partial<RoadmapItem>): ProductDefinition;
/**
* Add feature to product
*/
export declare function addFeature(product: ProductDefinition, feature: string): ProductDefinition;
/**
* Remove feature from product
*/
export declare function removeFeature(product: ProductDefinition, feature: string): ProductDefinition;
/**
* Validate product definition
*/
export declare function validateProduct(product: ProductDefinition): {
valid: boolean;
errors: string[];
};
//# sourceMappingURL=product.d.ts.map