/**
 * Abstraction over the ASL query language used for path references and
 * state field emission.
 *
 * The dialect is immutable and set once per compilation via CompileOptions.
 */
export interface PathDialect {
    /**
     * The QueryLanguage value for the top-level ASL definition.
     * undefined means no explicit QueryLanguage field (JSONPath mode).
     * Note: JSONata is the compiler default; JSONPath is used when explicitly requested.
     */
    readonly queryLanguage: 'JSONPath' | 'JSONata' | undefined;
    /** Build a path for storing a task/pass output variable. e.g. `$.varName` or `$varName` */
    resultPath(varName: string): string;
    /** The ResultPath value meaning "discard output" (fire-and-forget). */
    resultPathDiscard(): null;
    /** Build a path reference for a variable. e.g. `$.varName` or `$varName` */
    variablePath(varName: string): string;
    /** Root path for the step function input parameter. `$` or `$states.input` */
    inputRoot(): string;
    /** Root path for the execution context. `$$` or `$states.context` */
    contextRoot(): string;
    /** Path to the current state's result. `$` or `$states.result` */
    statesResult(): string;
    /** Path to the error output in a Catch handler. `$.error` or `$states.errorOutput` */
    statesErrorOutput(): string;
    /** ResultPath for temp storage of destructured parallel output. */
    parallelTempResultPath(): string;
    /** InputPath for extracting the i-th element from the parallel temp. */
    parallelElementInputPath(index: number): string;
    /** Whether destructured parallel results need a Pass chain (JSONPath) or use Assign (JSONata). */
    needsParallelPassChain(): boolean;
    /**
     * Build the assignment fields for destructured parallel results (JSONata only).
     * JSONPath returns {} (Pass chain handles it). JSONata returns { Assign: { ... } }.
     */
    emitParallelAssignment(bindings: readonly {
        name: string;
        index: number;
    }[]): Record<string, unknown>;
    /** The context path for the current Map iteration item value. */
    mapItemValuePath(): string;
    /** Build a key for a dynamic (jsonpath/intrinsic) value in Parameters/Arguments. */
    dynamicKey(name: string): string;
    /** Whether the Map state needs an ItemSelector for captured variables. */
    needsItemSelector(): boolean;
    /** Wrap a dynamic path value for use in Parameters/Arguments values. */
    wrapDynamicValue(path: string): string;
    /**
     * Build a Parameters/Arguments entry for wrapping an intrinsic/dynamic value.
     * JSONPath: `{ "keyName.$": intrinsicPath }`
     * JSONata: `{ "keyName": "{% intrinsicPath %}" }`
     */
    wrapIntrinsicResult(keyName: string, intrinsicPath: string): Record<string, unknown>;
    /**
     * Emit the fields for assigning a state's result to a variable.
     * JSONPath: `{ ResultPath: "$.varName" }`
     * JSONata: `{ Assign: { varName: "{% $states.result %}" } }`
     */
    emitResultAssignment(varName: string): Record<string, unknown>;
    /**
     * Emit the fields for discarding a state's result.
     * JSONPath: `{ ResultPath: null }`
     * JSONata: `{}` (omit both ResultPath and Assign)
     */
    emitResultDiscard(): Record<string, unknown>;
    /**
     * Emit the Parameters/Arguments field.
     * JSONPath: `{ Parameters: params }`
     * JSONata: `{ Arguments: params }`
     */
    emitParameters(params: Record<string, unknown>): Record<string, unknown>;
    /**
     * Emit the items path field for a Map state.
     * JSONPath: `{ ItemsPath: path }`
     * JSONata: `{ Items: "{% path %}" }`
     */
    emitItemsPath(path: string): Record<string, unknown>;
    /**
     * Emit the catch error assignment fields.
     * JSONPath: `{ ResultPath: "$.paramName" }`
     * JSONata: `{ Assign: { paramName: "{% $states.errorOutput %}" } }`
     */
    emitCatchAssignment(paramName: string): Record<string, unknown>;
    /**
     * Emit the fields for returning a variable path from a Pass state.
     * JSONPath: `{ InputPath: path }`
     * JSONata: `{ Output: "{% path %}" }`
     */
    emitReturnPath(path: string): Record<string, unknown>;
    /**
     * Emit the output field for a Pass state (object literal or intrinsic result).
     * JSONPath: `{ Parameters: params }`
     * JSONata: `{ Output: params }` (Pass states use Output, not Arguments)
     */
    emitPassOutput(params: Record<string, unknown>): Record<string, unknown>;
    /**
     * Emit a dynamic (path-based) wait field.
     * JSONPath: `{ SecondsPath: path }` or `{ TimestampPath: path }`
     * JSONata: `{ Seconds: "{% path %}" }` or `{ Timestamp: "{% path %}" }`
     */
    emitDynamicWaitField(field: 'Seconds' | 'Timestamp', path: string): Record<string, unknown>;
    /**
     * Emit a dynamic task timeout or heartbeat field.
     * JSONPath: `{ TimeoutSecondsPath: path }` or `{ HeartbeatSecondsPath: path }`
     * JSONata: `{ TimeoutSeconds: "{% path %}" }` or `{ HeartbeatSeconds: "{% path %}" }`
     */
    emitDynamicTimeout(field: 'TimeoutSeconds' | 'HeartbeatSeconds', path: string): Record<string, unknown>;
    /**
     * Emit a dynamic fail cause field.
     * JSONPath: `{ CausePath: path }`
     * JSONata: `{ Cause: "{% path %}" }`
     */
    emitDynamicFailCause(path: string): Record<string, unknown>;
    /** Whether this dialect uses JSONata Condition expressions for Choice rules. */
    isJsonata(): boolean;
    /**
     * Extract the top-level variable name from a variable path.
     * JSONPath: `$.result` → `result`
     * JSONata: `$result` → `result`
     */
    extractVarName(path: string): string | null;
}
export declare class JsonPathDialect implements PathDialect {
    readonly queryLanguage: undefined;
    resultPath(varName: string): string;
    resultPathDiscard(): null;
    variablePath(varName: string): string;
    inputRoot(): string;
    contextRoot(): string;
    statesResult(): string;
    statesErrorOutput(): string;
    parallelTempResultPath(): string;
    parallelElementInputPath(index: number): string;
    needsParallelPassChain(): boolean;
    emitParallelAssignment(_bindings: readonly {
        name: string;
        index: number;
    }[]): Record<string, unknown>;
    mapItemValuePath(): string;
    dynamicKey(name: string): string;
    needsItemSelector(): boolean;
    wrapDynamicValue(path: string): string;
    wrapIntrinsicResult(keyName: string, intrinsicPath: string): Record<string, unknown>;
    emitResultAssignment(varName: string): Record<string, unknown>;
    emitResultDiscard(): Record<string, unknown>;
    emitParameters(params: Record<string, unknown>): Record<string, unknown>;
    emitItemsPath(path: string): Record<string, unknown>;
    emitCatchAssignment(paramName: string): Record<string, unknown>;
    emitReturnPath(path: string): Record<string, unknown>;
    emitPassOutput(params: Record<string, unknown>): Record<string, unknown>;
    emitDynamicWaitField(field: 'Seconds' | 'Timestamp', path: string): Record<string, unknown>;
    emitDynamicTimeout(field: 'TimeoutSeconds' | 'HeartbeatSeconds', path: string): Record<string, unknown>;
    emitDynamicFailCause(path: string): Record<string, unknown>;
    isJsonata(): boolean;
    extractVarName(path: string): string | null;
}
export declare class JsonataDialect implements PathDialect {
    readonly queryLanguage: "JSONata";
    resultPath(varName: string): string;
    resultPathDiscard(): null;
    variablePath(varName: string): string;
    inputRoot(): string;
    contextRoot(): string;
    statesResult(): string;
    statesErrorOutput(): string;
    parallelTempResultPath(): string;
    parallelElementInputPath(index: number): string;
    needsParallelPassChain(): boolean;
    emitParallelAssignment(bindings: readonly {
        name: string;
        index: number;
    }[]): Record<string, unknown>;
    mapItemValuePath(): string;
    dynamicKey(name: string): string;
    needsItemSelector(): boolean;
    wrapDynamicValue(path: string): string;
    wrapIntrinsicResult(keyName: string, intrinsicPath: string): Record<string, unknown>;
    emitResultAssignment(varName: string): Record<string, unknown>;
    emitResultDiscard(): Record<string, unknown>;
    emitParameters(params: Record<string, unknown>): Record<string, unknown>;
    emitItemsPath(path: string): Record<string, unknown>;
    emitCatchAssignment(paramName: string): Record<string, unknown>;
    emitReturnPath(path: string): Record<string, unknown>;
    emitPassOutput(params: Record<string, unknown>): Record<string, unknown>;
    emitDynamicWaitField(field: 'Seconds' | 'Timestamp', path: string): Record<string, unknown>;
    emitDynamicTimeout(field: 'TimeoutSeconds' | 'HeartbeatSeconds', path: string): Record<string, unknown>;
    emitDynamicFailCause(path: string): Record<string, unknown>;
    isJsonata(): boolean;
    extractVarName(path: string): string | null;
}
/** Singleton instance for the JSONPath dialect. */
export declare const JSON_PATH_DIALECT: PathDialect;
/** Singleton instance for the JSONata dialect. */
export declare const JSONATA_DIALECT: PathDialect;
//# sourceMappingURL=pathDialect.d.ts.map