export interface StateMachineDefinition {
    readonly QueryLanguage?: 'JSONPath' | 'JSONata';
    readonly Comment?: string;
    readonly StartAt: string;
    readonly States: Readonly<Record<string, State>>;
    readonly TimeoutSeconds?: number;
    readonly Version?: string;
}
export type State = TaskState | PassState | ChoiceState | WaitState | FailState | ParallelState | MapState | SucceedState;
export interface StateBase {
    readonly Type: string;
    readonly Comment?: string;
    readonly InputPath?: string;
    readonly OutputPath?: string;
}
export interface TerminalFields {
    readonly Next?: string;
    readonly End?: boolean;
}
export interface TaskState extends StateBase, TerminalFields {
    readonly Type: 'Task';
    readonly Resource: string | Record<string, unknown>;
    readonly Parameters?: Readonly<Record<string, unknown>>;
    readonly Arguments?: Readonly<Record<string, unknown>>;
    readonly ResultPath?: string | null;
    readonly Assign?: Readonly<Record<string, unknown>>;
    readonly Output?: unknown;
    readonly ResultSelector?: Readonly<Record<string, unknown>>;
    readonly TimeoutSeconds?: number | string;
    readonly TimeoutSecondsPath?: string;
    readonly HeartbeatSeconds?: number | string;
    readonly HeartbeatSecondsPath?: string;
    readonly Retry?: readonly RetryRule[];
    readonly Catch?: readonly CatchRule[];
    readonly Credentials?: Readonly<Record<string, unknown>>;
}
export interface PassState extends StateBase, TerminalFields {
    readonly Type: 'Pass';
    readonly Result?: unknown;
    readonly ResultPath?: string | null;
    readonly Parameters?: Readonly<Record<string, unknown>>;
    readonly Arguments?: Readonly<Record<string, unknown>>;
    readonly Assign?: Readonly<Record<string, unknown>>;
    readonly Output?: unknown;
}
export interface ChoiceState extends StateBase {
    readonly Type: 'Choice';
    readonly Choices: readonly ChoiceRule[];
    readonly Default?: string;
}
export interface WaitState extends StateBase, TerminalFields {
    readonly Type: 'Wait';
    readonly Seconds?: number | string;
    readonly Timestamp?: string;
    readonly SecondsPath?: string;
    readonly TimestampPath?: string;
}
export interface FailState {
    readonly Type: 'Fail';
    readonly Comment?: string;
    readonly Error?: string;
    readonly Cause?: string;
    readonly CausePath?: string;
    readonly ErrorPath?: string;
}
export interface ParallelState extends StateBase, TerminalFields {
    readonly Type: 'Parallel';
    readonly Branches: readonly StateMachineDefinition[];
    readonly ResultPath?: string | null;
    readonly Assign?: Readonly<Record<string, unknown>>;
    readonly ResultSelector?: Readonly<Record<string, unknown>>;
    readonly Retry?: readonly RetryRule[];
    readonly Catch?: readonly CatchRule[];
}
export interface MapState extends StateBase, TerminalFields {
    readonly Type: 'Map';
    readonly ItemsPath?: string;
    readonly Items?: string;
    readonly ItemProcessor: StateMachineDefinition & {
        readonly ProcessorConfig?: {
            readonly Mode: 'INLINE' | 'DISTRIBUTED';
            readonly ExecutionType?: 'STANDARD' | 'EXPRESS';
        };
    };
    readonly ItemSelector?: Readonly<Record<string, unknown>>;
    readonly MaxConcurrency?: number;
    readonly ResultPath?: string | null;
    readonly Assign?: Readonly<Record<string, unknown>>;
    readonly ResultSelector?: Readonly<Record<string, unknown>>;
    readonly Parameters?: Readonly<Record<string, unknown>>;
    readonly Arguments?: Readonly<Record<string, unknown>>;
    readonly Retry?: readonly RetryRule[];
    readonly Catch?: readonly CatchRule[];
    readonly ItemReader?: {
        readonly Resource: string;
        readonly ReaderConfig?: Readonly<Record<string, unknown>>;
        readonly Parameters?: Readonly<Record<string, unknown>>;
        readonly Arguments?: Readonly<Record<string, unknown>>;
    };
    readonly ResultWriter?: {
        readonly Resource: string;
        readonly Parameters?: Readonly<Record<string, unknown>>;
        readonly Arguments?: Readonly<Record<string, unknown>>;
    };
    readonly ItemBatcher?: {
        readonly MaxItemsPerBatch?: number;
        readonly MaxInputBytesPerBatch?: number;
        readonly BatchInput?: Readonly<Record<string, unknown>>;
    };
    readonly ToleratedFailurePercentage?: number;
    readonly ToleratedFailureCount?: number;
    readonly Label?: string;
}
export interface SucceedState {
    readonly Type: 'Succeed';
    readonly Comment?: string;
    readonly InputPath?: string;
    readonly OutputPath?: string;
}
export type ChoiceRule = ComparisonRule | NotRule | AndRule | OrRule;
export interface ComparisonRule {
    readonly Variable?: string;
    readonly Condition?: string;
    readonly Next: string;
    readonly StringEquals?: string;
    readonly StringEqualsPath?: string;
    readonly StringGreaterThan?: string;
    readonly StringGreaterThanPath?: string;
    readonly StringGreaterThanEquals?: string;
    readonly StringGreaterThanEqualsPath?: string;
    readonly StringLessThan?: string;
    readonly StringLessThanPath?: string;
    readonly StringLessThanEquals?: string;
    readonly StringLessThanEqualsPath?: string;
    readonly StringMatches?: string;
    readonly NumericEquals?: number;
    readonly NumericEqualsPath?: string;
    readonly NumericGreaterThan?: number;
    readonly NumericGreaterThanPath?: string;
    readonly NumericGreaterThanEquals?: number;
    readonly NumericGreaterThanEqualsPath?: string;
    readonly NumericLessThan?: number;
    readonly NumericLessThanPath?: string;
    readonly NumericLessThanEquals?: number;
    readonly NumericLessThanEqualsPath?: string;
    readonly BooleanEquals?: boolean;
    readonly BooleanEqualsPath?: string;
    readonly TimestampEquals?: string;
    readonly TimestampEqualsPath?: string;
    readonly TimestampGreaterThan?: string;
    readonly TimestampGreaterThanPath?: string;
    readonly TimestampGreaterThanEquals?: string;
    readonly TimestampGreaterThanEqualsPath?: string;
    readonly TimestampLessThan?: string;
    readonly TimestampLessThanPath?: string;
    readonly TimestampLessThanEquals?: string;
    readonly TimestampLessThanEqualsPath?: string;
    readonly IsNull?: boolean;
    readonly IsPresent?: boolean;
    readonly IsNumeric?: boolean;
    readonly IsString?: boolean;
    readonly IsBoolean?: boolean;
    readonly IsTimestamp?: boolean;
}
export interface NotRule {
    readonly Not: ChoiceRule;
    readonly Next: string;
}
export interface AndRule {
    readonly And: readonly ChoiceRule[];
    readonly Next: string;
}
export interface OrRule {
    readonly Or: readonly ChoiceRule[];
    readonly Next: string;
}
export interface RetryRule {
    readonly ErrorEquals: readonly string[];
    readonly IntervalSeconds?: number;
    readonly MaxAttempts?: number;
    readonly BackoffRate?: number;
    readonly MaxDelaySeconds?: number;
    readonly JitterStrategy?: 'FULL' | 'NONE';
}
export interface CatchRule {
    readonly ErrorEquals: readonly string[];
    readonly Next: string;
    readonly ResultPath?: string | null;
    readonly Assign?: Readonly<Record<string, unknown>>;
}
//# sourceMappingURL=types.d.ts.map