import * as v from 'valibot';
import { onSiteHabitatBaselineSchema } from './onSite/habitatBaseline';
import { onSiteHabitatCreationSchema } from './onSite/habitatCreation';
import { onSiteHabitatEnhancementSchema } from './onSite/habitatEnhancement';
import { offSiteHabitatBaselineSchema } from './offSite/habitatBaseline';
import { offSiteHabitatCreationSchema } from './offSite/habitatCreation';
import { offSiteHabitatEnhancementSchema } from './offSite/habitatEnhancement';
import { onSiteHedgerowBaselineSchema } from './onSite/hedgerowBaseline';
import { onSiteHedgerowCreationSchema } from './onSite/hedgerowCreation';
import { onSiteHedgerowEnhancementSchema } from './onSite/hedgerowEnhancement';
import { offSiteHedgerowBaselineSchema } from './offSite/hedgerowBaseline';
import { offSiteHedgerowCreationSchema } from './offSite/hedgerowCreation';
import { offSiteHedgerowEnhancementSchema } from './offSite/hedgerowEnhancement';
import { onSiteWatercourseBaselineSchema } from './onSite/watercourseBaseline';
import { onSiteWatercourseCreationSchema } from './onSite/watercourseCreation';
import { onSiteWatercourseEnhancementSchema } from './onSite/watercourseEnhancement';
import { offSiteWatercourseBaselineSchema } from './offSite/watercourseBaseline';
import { offSiteWatercourseCreationSchema } from './offSite/watercourseCreation';
import { offSiteWatercourseEnhancementSchema } from './offSite/watercourseEnhancement';
import type { AllFeatures } from './features';
import type { TradingSummaries } from './tradingSummaries';
/**
 * Calculates the total on-site habitat baseline units
 * Sums the totalHabitatUnits from all A-1 baseline entries
 * Corresponds to cell H8 in the Headline Results sheet
 */
export declare function calculateOnSiteHabitatBaseline(baselines: v.InferOutput<typeof onSiteHabitatBaselineSchema>[]): number;
/**
 * Calculates the total on-site habitat units after intervention
 * Sums retained/enhanced units from A-1 (via special compensation allowances)
 * + created units from A-2
 * + enhanced units from A-3
 * Corresponds to cell H12 in the Headline Results sheet
 */
export declare function calculateOnSiteHabitatPostIntervention(baselines: v.InferOutput<typeof onSiteHabitatBaselineSchema>[], creations: v.InferOutput<typeof onSiteHabitatCreationSchema>[], enhancements: v.InferOutput<typeof onSiteHabitatEnhancementSchema>[]): number;
/**
 * Calculates the net change in on-site habitat units and percentage
 * Corresponds to cells H16 and I16 in the Headline Results sheet
 */
export declare function calculateOnSiteHabitatNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the total off-site habitat baseline units
 * Sums the totalHabitatUnits from all D-1 baseline entries
 * Corresponds to cell H20 in the Headline Results sheet
 */
export declare function calculateOffSiteHabitatBaseline(baselines: v.InferOutput<typeof offSiteHabitatBaselineSchema>[]): number;
/**
 * Calculates the total off-site habitat units after intervention
 * Sums retained/enhanced units from D-1 + created units from D-2 + enhanced units from D-3
 * Corresponds to cell H24 in the Headline Results sheet
 */
export declare function calculateOffSiteHabitatPostIntervention(baselines: v.InferOutput<typeof offSiteHabitatBaselineSchema>[], creations: v.InferOutput<typeof offSiteHabitatCreationSchema>[], enhancements: v.InferOutput<typeof offSiteHabitatEnhancementSchema>[]): number;
/**
 * Calculates the net change in off-site habitat units and percentage
 * Corresponds to cells H28 and I28 in the Headline Results sheet
 */
export declare function calculateOffSiteHabitatNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the net change in off-site habitat units WITH Spatial Risk Multiplier applied
 * SRM is only applied to off-site gains (positive net change)
 * Corresponds to cells H32 and I32 (merged) in the Headline Results sheet
 * NOTE: there is another hidden column (L) that contains these sums
 */
export declare function calculateOffSiteHabitatNetChangeWithSRM(baselines: v.InferOutput<typeof offSiteHabitatBaselineSchema>[], creations: v.InferOutput<typeof offSiteHabitatCreationSchema>[], enhancements: v.InferOutput<typeof offSiteHabitatEnhancementSchema>[], netChangeUnits: number): number | "N/A";
/**
 * Calculates the total on-site hedgerow baseline units
 * Sums the totalHedgerowUnits from all B-1 baseline entries
 * Corresponds to cell H9 in the Headline Results sheet
 */
export declare function calculateOnSiteHedgerowBaseline(baselines: v.InferOutput<typeof onSiteHedgerowBaselineSchema>[]): number;
/**
 * Calculates the total on-site hedgerow units after intervention
 * Sums retained units from B-1 + created units from B-2 + enhanced units from B-3
 * Corresponds to cell H13 in the Headline Results sheet
 */
export declare function calculateOnSiteHedgerowPostIntervention(baselines: v.InferOutput<typeof onSiteHedgerowBaselineSchema>[], creations: v.InferOutput<typeof onSiteHedgerowCreationSchema>[], enhancements: v.InferOutput<typeof onSiteHedgerowEnhancementSchema>[]): number;
/**
 * Calculates the net change in on-site hedgerow units and percentage
 * Corresponds to cells H17 and J17 in the Headline Results sheet
 */
export declare function calculateOnSiteHedgerowNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the total off-site hedgerow baseline units
 * Sums the totalHedgerowUnits from all E-1 baseline entries
 * Corresponds to cell H21 in the Headline Results sheet
 */
export declare function calculateOffSiteHedgerowBaseline(baselines: v.InferOutput<typeof offSiteHedgerowBaselineSchema>[]): number;
/**
 * Calculates the total off-site hedgerow units after intervention
 * Sums retained/enhanced units from E-1 + created units from E-2 + enhanced units from E-3
 * Corresponds to cell H25 in the Headline Results sheet
 */
export declare function calculateOffSiteHedgerowPostIntervention(baselines: v.InferOutput<typeof offSiteHedgerowBaselineSchema>[], creations: v.InferOutput<typeof offSiteHedgerowCreationSchema>[], enhancements: v.InferOutput<typeof offSiteHedgerowEnhancementSchema>[]): number;
/**
 * Calculates the net change in off-site hedgerow units and percentage
 * Corresponds to cells H29 and I29 in the Headline Results sheet
 */
export declare function calculateOffSiteHedgerowNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the net change in off-site hedgerow units WITH Spatial Risk Multiplier applied
 * SRM is only applied to off-site gains (positive net change)
 * Corresponds to cells H33 and I33 in the Headline Results sheet
 */
export declare function calculateOffSiteHedgerowNetChangeWithSRM(baselines: v.InferOutput<typeof offSiteHedgerowBaselineSchema>[], creations: v.InferOutput<typeof offSiteHedgerowCreationSchema>[], enhancements: v.InferOutput<typeof offSiteHedgerowEnhancementSchema>[], netChangeUnits: number): number | "N/A";
/**
 * Calculates the total on-site watercourse baseline units
 * Sums the totalWatercourseUnits from all C-1 baseline entries
 * Corresponds to cell H10 in the Headline Results sheet
 */
export declare function calculateOnSiteWatercourseBaseline(baselines: v.InferOutput<typeof onSiteWatercourseBaselineSchema>[]): number;
/**
 * Calculates the total on-site watercourse units after intervention
 * Corresponds to cell H14 in the Headline Results sheet
 */
export declare function calculateOnSiteWatercoursePostIntervention(baselines: v.InferOutput<typeof onSiteWatercourseBaselineSchema>[], creations: v.InferOutput<typeof onSiteWatercourseCreationSchema>[], enhancements: v.InferOutput<typeof onSiteWatercourseEnhancementSchema>[]): number;
/**
 * Calculates the net change in on-site watercourse units and percentage
 * Corresponds to cells H18 and J18 in the Headline Results sheet
 */
export declare function calculateOnSiteWatercourseNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the total off-site watercourse baseline units
 * Sums the totalWatercourseUnits from all F-1 baseline entries
 * Corresponds to cell H22 in the Headline Results sheet
 */
export declare function calculateOffSiteWatercourseBaseline(baselines: v.InferOutput<typeof offSiteWatercourseBaselineSchema>[]): number;
/**
 * Calculates the total off-site watercourse units after intervention
 * Sums retained/enhanced units from F-1 + created units from F-2 + enhanced units from F-3
 * Corresponds to cell H26 in the Headline Results sheet
 */
export declare function calculateOffSiteWatercoursePostIntervention(baselines: v.InferOutput<typeof offSiteWatercourseBaselineSchema>[], creations: v.InferOutput<typeof offSiteWatercourseCreationSchema>[], enhancements: v.InferOutput<typeof offSiteWatercourseEnhancementSchema>[]): number;
/**
 * Calculates the net change in off-site watercourse units and percentage
 * Corresponds to cells H30 and I30 in the Headline Results sheet
 */
export declare function calculateOffSiteWatercourseNetChange(baseline: number, postIntervention: number): {
    units: number;
    percentage: number;
};
/**
 * Calculates the net change in off-site watercourse units WITH Spatial Risk Multiplier applied
 * SRM is only applied to off-site gains (positive net change)
 * Corresponds to cells H34 and I34 in the Headline Results sheet
 *
*/
export declare function calculateOffSiteWatercourseNetChangeWithSRM(baselines: v.InferOutput<typeof offSiteWatercourseBaselineSchema>[], creations: v.InferOutput<typeof offSiteWatercourseCreationSchema>[], enhancements: v.InferOutput<typeof offSiteWatercourseEnhancementSchema>[], netChangeUnits: number): number | "N/A";
/**
 * Calculates the combined net unit change across all habitat types
 * Sums on-site and off-site net changes for habitats, hedgerows, and watercourses
 * Corresponds to cells H38, H39, H40 in the Headline Results sheet
 */
export declare function calculateCombinedNetUnitChange(onSiteHabitatNetChange: number, offSiteHabitatNetChange: number, onSiteHedgerowNetChange: number, offSiteHedgerowNetChange: number, onSiteWatercourseNetChange: number, offSiteWatercourseNetChange: number): {
    habitat: number;
    hedgerow: number;
    watercourse: number;
};
/**
 * Calculates the total Spatial Risk Multiplier deductions
 * SRM deductions = the difference between regular net change and net change with SRM applied
 * This represents the units "lost" due to spatial risk
 * Corresponds to cells H44, H45, H46 in the Headline Results sheet
 */
export declare function calculateTotalSRMDeductions(offSiteHabitatNetChange: number, offSiteHabitatNetChangeWithSRM: number | "N/A", offSiteHedgerowNetChange: number, offSiteHedgerowNetChangeWithSRM: number | "N/A", offSiteWatercourseNetChange: number, offSiteWatercourseNetChangeWithSRM: number | "N/A"): {
    habitat: number;
    hedgerow: number;
    watercourse: number;
};
/**
 * Calculates the final total net unit change with SRM adjustments applied
 * This is the ultimate summary metric: combined net change minus SRM deductions
 * Alternatively: sum of all on-site net changes + all off-site net changes WITH SRM
 * Corresponds to cells H50, H51, H52 in the Headline Results sheet
 */
export declare function calculateFinalTotalNetUnitChange(combinedNetUnitChange: ReturnType<typeof calculateCombinedNetUnitChange>, totalSRMDeductions: ReturnType<typeof calculateTotalSRMDeductions>): {
    habitat: number;
    hedgerow: number;
    watercourse: number;
};
export declare function calculateTotalNetPercentageChange(totalNetUnitChange: ReturnType<typeof calculateFinalTotalNetUnitChange>, onSiteHabitatBaseline: number, onSiteHedgerowBaseline: number, onSiteWatercourseBaseline: number): {
    habitat: number;
    hedgerow: number;
    watercourse: number;
};
export declare function headlineResults(features: AllFeatures, tradingSummaries: TradingSummaries, options?: {
    netGainTarget?: number;
}): {
    onSiteHabitatBaseline: number;
    onSiteHabitatPostIntervention: number;
    onSiteHabitatNetChange: {
        units: number;
        percentage: number;
    };
    offSiteHabitatBaseline: number;
    offSiteHabitatPostIntervention: number;
    offSiteHabitatNetChange: {
        units: number;
        percentage: number;
    };
    offSiteHabitatNetChangeWithSRM: number | "N/A";
    onSiteHedgerowBaseline: number;
    onSiteHedgerowPostIntervention: number;
    onSiteHedgerowNetChange: {
        units: number;
        percentage: number;
    };
    offSiteHedgerowBaseline: number;
    offSiteHedgerowPostIntervention: number;
    offSiteHedgerowNetChange: {
        units: number;
        percentage: number;
    };
    offSiteHedgerowNetChangeWithSRM: number | "N/A";
    onSiteWatercourseBaseline: number;
    onSiteWatercoursePostIntervention: number;
    onSiteWatercourseNetChange: {
        units: number;
        percentage: number;
    };
    offSiteWatercourseBaseline: number;
    offSiteWatercoursePostIntervention: number;
    offSiteWatercourseNetChange: {
        units: number;
        percentage: number;
    };
    offSiteWatercourseNetChangeWithSRM: number | "N/A";
    combinedNetUnitChange: {
        habitat: number;
        hedgerow: number;
        watercourse: number;
    };
    totalSRMDeductions: {
        habitat: number;
        hedgerow: number;
        watercourse: number;
    };
    totalNetUnitChange: {
        habitat: number;
        hedgerow: number;
        watercourse: number;
    };
    totalNetPercentageChange: {
        habitat: number;
        hedgerow: number;
        watercourse: number;
    };
    tradingRulesSatisfied: boolean;
    habitatUnitSummary: {
        target: number;
        baselineUnits: number;
        requiredUnits: number;
        unitDeficit: number;
    };
    hedgerowUnitSummary: {
        target: number;
        baselineUnits: number;
        requiredUnits: number;
        unitDeficit: number;
    };
    watercourseUnitSummary: {
        target: number;
        baselineUnits: number;
        requiredUnits: number;
        unitDeficit: number;
    };
};
export type HeadlineResults = ReturnType<typeof headlineResults>;
//# sourceMappingURL=headlineResults.d.ts.map