/**
 * Diet configuration for balanced ticket pulling.
 *
 * The "diet" defines target ratios for business categories (e.g., ship, grow, support).
 * Users specify relative weights (e.g., ship=4, grow=2, support=1) which are
 * normalized to percentages internally. No need to sum to 100.
 */
import Database from 'better-sqlite3';
/**
 * Diet ratio for a single category.
 * `weight` is the user-facing relative weight.
 * `target` is the normalized percentage (0.0-1.0), computed from weights.
 */
export interface DietRatio {
    category: string;
    weight: number;
    target: number;
}
/**
 * Full diet configuration.
 */
export interface DietConfig {
    ratios: DietRatio[];
}
/**
 * Diet report for a single category showing actual vs target.
 */
export interface DietCategoryReport {
    category: string;
    target: number;
    actual: number;
    count: number;
    targetCount: number;
    delta: number;
    status: 'over' | 'under' | 'ok';
}
/**
 * Full diet report.
 */
export interface DietReport {
    categories: DietCategoryReport[];
    totalReady: number;
    uncategorized: number;
}
/**
 * Result of a pull operation.
 */
export interface PullResult {
    pulled: PulledTicket[];
    skippedBlocked: number;
    skippedCeiling: number;
    totalCandidates: number;
}
export interface PulledTicket {
    id: string;
    title: string;
    category: string | undefined;
    position: number;
    pass: 'first' | 'second';
}
/**
 * Default diet weights matching the 5-Tool Founder business categories.
 * Weights: ship=4, grow=2.5, support=1.5, bizops=1, strategy=1
 * Normalizes to: ship=40%, grow=25%, support=15%, bizops=10%, strategy=10%
 */
export declare const DEFAULT_DIET_WEIGHTS: Array<{
    category: string;
    weight: number;
}>;
export declare const DEFAULT_DIET_CONFIG: DietConfig;
/**
 * Normalize an array of category weights into a DietConfig with target percentages.
 */
export declare function normalizeWeights(weights: Array<{
    category: string;
    weight: number;
}>): DietConfig;
/**
 * Load diet configuration from the database.
 * Returns default config if none is stored.
 *
 * Handles backward compatibility: if stored config has ratios without weights,
 * reconstructs weights from target percentages.
 */
export declare function loadDietConfig(db: Database.Database): DietConfig;
/**
 * Save diet configuration to the database.
 */
export declare function saveDietConfig(db: Database.Database, config: DietConfig): void;
/**
 * Parse a diet string like "ship=4,grow=2.5,support=1.5,bizops=1,strategy=1"
 * into a DietConfig. Values are relative weights that get normalized internally.
 */
export declare function parseDietString(input: string): DietConfig;
/**
 * Format a diet config showing weights and computed percentages.
 */
export declare function formatDietConfig(config: DietConfig): string;
/**
 * Format a diet config showing only the weights (compact form).
 */
export declare function formatDietWeights(config: DietConfig): string;
