import jsep, { type Expression } from 'jsep';
export interface ObjectExpression extends Expression {
    type: 'ObjectExpression';
    properties: PropertyExpression[];
}
export interface PropertyExpression extends Expression {
    type: 'Property';
    computed: boolean;
    key: AnyExpression;
    value: AnyExpression;
    shorthand: boolean;
}
type AnyExpression = jsep.ArrayExpression | jsep.BinaryExpression | jsep.MemberExpression | jsep.CallExpression | jsep.ConditionalExpression | jsep.Identifier | jsep.Literal | jsep.ThisExpression | jsep.UnaryExpression | ObjectExpression | PropertyExpression;
export declare const METHODS_NOT_SUPPORTED = "Methods are not supported in expressions";
export declare const THIS_NOT_SUPPORTED = "This is not supported in expressions";
export declare function parseExpression(expression: string): AnyExpression;
export type ExpressionContext = {
    currentStateId: string;
    previousStateId?: string;
    currentStateOutput?: unknown;
    sessionMemory: Record<string, unknown>;
    claims: Record<string, unknown>;
    args: Record<string, unknown>;
    vars: Record<string, unknown>;
};
export declare function validateExpression(expression: string): {
    valid: true;
} | {
    valid: false;
    errors: string[];
};
export declare function compileExpression(expression: string): (context: Record<string, unknown>) => unknown;
export declare function expressionToString(_node: jsep.Expression | null, parent?: AnyExpression): string;
export {};
