import * as v from 'valibot';
import { type Habitat } from './habitats';
import { type BroadHabitat } from './broadHabitats';
import { type BaselineHabitatType, type CreationHabitatType, type EnhancedHabitatType } from './habitatTypes';
import type { Condition } from './conditions';
import { type StrategicSignificance, type StrategicSignificanceDescription } from './strategicSignificanceSchema';
import { type SuggestedTradingActions } from './distinctivenessCategories';
import type { BespokeCompensation } from './bespokeCompensation';
/**
 * Like `v.transform`, but silently passes the input through unchanged if the
 * callback throws. Used by the *UncheckedSchema variants so that a row with a
 * missing lookup (e.g. an unknown habitat type) yields `undefined` derived
 * fields instead of failing the whole row.
 */
export declare function safeTransform<I, O>(fn: (input: I) => O): v.TransformAction<I, O>;
export declare const areaSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.ToMinValueAction<number, 0>]>;
export declare const lengthSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.ToMinValueAction<number, 0>]>;
export declare const freeTextSchema: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
export declare const yearsSchema: v.UnionSchema<[v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.ToMinValueAction<number, 0>, v.ToMaxValueAction<number, 30>]>, v.LiteralSchema<"30+", undefined>], undefined>;
export declare function isValidHabitat(broadHabitat: BroadHabitat, habitatType: BaselineHabitatType | CreationHabitatType | EnhancedHabitatType): boolean;
export declare function isValidIrreplaceable(broadHabitat: BroadHabitat, habitatType: BaselineHabitatType | CreationHabitatType | EnhancedHabitatType, irreplaceable: boolean): boolean;
export declare function isValidCondition(broadHabitat: BroadHabitat, habitatType: BaselineHabitatType | CreationHabitatType | EnhancedHabitatType, condition: Condition): boolean;
type EnrichedHabitatData = {
    _habitat: Habitat;
    distinctiveness: Habitat['distinctivenessCategory'];
    distinctivenessScore: Habitat['distinctivenessScore'];
    conditionScore: Habitat['conditions'][Condition];
    strategicSignificanceCategory: StrategicSignificance['significance'];
    strategicSignificanceMultiplier: StrategicSignificance['multiplier'];
    requiredAction: SuggestedTradingActions;
};
export declare const enrichWithHabitatData: <Data extends {
    broadHabitat: BroadHabitat;
    habitatType: BaselineHabitatType | CreationHabitatType | EnhancedHabitatType;
    strategicSignificance: StrategicSignificanceDescription;
    irreplaceableHabitat?: boolean;
}>(data: Data) => Data & EnrichedHabitatData;
export declare const enrichWithCreationData: <Data extends {
    broadHabitat: BroadHabitat;
    habitatType: BaselineHabitatType | CreationHabitatType | EnhancedHabitatType;
    condition: string;
}>(data: Data) => Data & {
    timeToTargetCondition: any;
};
export declare function addTotalHabitatUnits<Data extends {
    irreplaceableHabitat: boolean;
    requiredAction: SuggestedTradingActions;
    area: number;
    areaRetained: number;
    areaEnhanced: number;
    bespokeCompensationAgreed: BespokeCompensation;
    baselineUnitsRetained: number;
    baselineUnitsEnhanced: number;
    distinctivenessScore: number;
    conditionScore: number;
    strategicSignificanceMultiplier: number;
}>(data: Data): Data & {
    totalHabitatUnits: number;
};
export {};
//# sourceMappingURL=schemaUtils.d.ts.map