import { MablSymbol } from '../MablSymbol';
import { ConditionOptions } from '../actions/ConditionAction';
export type ConditionDescriptor = ComparisonConditionDescriptor | EvaluatePresenceConditionDescriptor | TruthyConditionDescriptor | AIPromptConditionDescriptor;
export declare enum ConditionType {
    AIPrompt = "ai_prompt",
    Comparison = "comparison",
    Presence = "presence",
    Truthy = "truthy"
}
export declare const AssertionConditionField: {
    readonly Equals: "equals";
    readonly Present: "present";
    readonly NotPresent: "not_present";
    readonly DoesNotEqual: "does_not_equal";
    readonly Contains: "contains";
    readonly DoesNotContain: "does_not_contain";
    readonly StartsWith: "starts_with";
    readonly StartsWithout: "starts_without";
    readonly EndsWith: "ends_with";
    readonly EndsWithout: "ends_without";
    readonly GreaterThan: "greater_than";
    readonly LessThan: "less_than";
    readonly MatchesRegex: "matches_regex";
    readonly GreaterThanOrEquals: "greater_than_or_equals";
    readonly LessThanOrEquals: "less_than_or_equals";
    readonly AIPrompt: "ai_prompt";
};
export type AssertionConditionField = (typeof AssertionConditionField)[keyof typeof AssertionConditionField];
export type ComparisonType = Exclude<AssertionConditionField, 'present' | 'not_present' | 'ai_prompt'>;
export declare function isComparisonType(text: string): text is ComparisonType;
export interface ComparisonConditionDescriptor {
    conditionType: ConditionType.Comparison;
    comparisonType: ComparisonType;
    comparatorValue: string | MablSymbol;
    caseInsensitive?: boolean;
}
export declare function getOptionalComparisonType(descriptor?: ConditionDescriptor): ComparisonType | undefined;
export declare function getOptionalComparatorValue(descriptor?: ConditionDescriptor): string | undefined;
export declare function getOptionalConditionOptions(descriptor?: ConditionDescriptor): ConditionOptions | undefined;
export declare function isPresenceCondition(value: ConditionDescriptor): value is EvaluatePresenceConditionDescriptor;
export declare function isAIPromptCondition(value: ConditionDescriptor): value is AIPromptConditionDescriptor;
export declare function isAbsenceExpected(value: ConditionDescriptor): boolean;
export declare enum PresenceEvaluationType {
    NOT_PRESENT = "not_present",
    PRESENT = "present"
}
export declare namespace PresenceEvaluationType {
    function fromString(value: string): PresenceEvaluationType;
}
export interface EvaluatePresenceConditionDescriptor {
    conditionType: ConditionType.Presence;
    presenceType: PresenceEvaluationType;
}
export interface TruthyConditionDescriptor {
    conditionType: ConditionType.Truthy;
}
export interface AIPromptConditionDescriptor {
    conditionType: ConditionType.AIPrompt;
    userPrompt: string;
    metaPrompt?: string;
    criteria?: string[];
}
type AssertionCondition = 'Equals' | 'Present' | 'NotPresent' | 'DoesNotEqual' | 'Contains' | 'DoesNotContain' | 'StartsWith' | 'StartsWithout' | 'EndsWith' | 'EndsWithout' | 'GreaterThan' | 'LessThan' | 'GreaterThanOrEquals' | 'LessThanOrEquals' | 'MatchesRegex' | 'AIPrompt';
export type AssertionStepName = `Assert${AssertionCondition}`;
export declare function getAssertionConditionFieldFromDescriptor(conditionDescriptor?: ConditionDescriptor): AssertionConditionField | undefined;
export declare const AssertionStepNameToField: Record<AssertionStepName, AssertionConditionField>;
export declare const AssertionConditionFieldToStepName: Record<AssertionConditionField, AssertionStepName>;
export {};
//# sourceMappingURL=ConditionDescriptor.d.ts.map