import { AuthenticatedAction } from "../classes/actions/authenticatedAction";
import { FilterHelper } from "../modules/filterHelper";
import { APIData } from "../modules/apiData";
import { ActionPermission } from "../models/Permission";
import { ParamsFrom } from "actionhero";
export declare class SchedulesList extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly modelId: {
            readonly required: false;
        };
        readonly limit: {
            readonly required: true;
            readonly default: 100;
            readonly formatter: typeof APIData.ensureNumber;
        };
        readonly offset: {
            readonly required: true;
            readonly default: 0;
            readonly formatter: typeof APIData.ensureNumber;
        };
        readonly state: {
            readonly required: false;
        };
        readonly order: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureArray;
            readonly default: readonly [readonly ["name", "desc"], readonly ["createdAt", "desc"]];
        };
    };
    runWithinTransaction({ params, }: {
        params: ParamsFrom<SchedulesList>;
    }): Promise<{
        total: number;
        schedules: {
            id: string;
            name: string;
            state: "ready" | "draft";
            sourceId: string;
            incremental: boolean;
            recurring: boolean;
            refreshEnabled: boolean;
            locked: string;
            confirmRecords: boolean;
            supportIncrementalSchedule: boolean;
            options: import("../modules/optionHelper").OptionHelper.SimpleOptions;
            filters: FilterHelper.FiltersWithKey[];
            recurringFrequency: number;
            createdAt: number;
            updatedAt: number;
        }[];
    }>;
}
export declare class ScheduleRun extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly id: {
            readonly required: true;
        };
    };
    runWithinTransaction({ params }: {
        params: ParamsFrom<ScheduleRun>;
    }): Promise<{
        run: {
            id: string;
            creatorId: string;
            creatorName: string;
            creatorType: "group" | "task" | "schedule" | "property" | "grouparooModel" | "teamMember";
            state: "stopped" | "running" | "complete" | "draft";
            percentComplete: number;
            importsCreated: number;
            recordsCreated: number;
            recordsImported: number;
            error: string;
            highWaterMark: import("../models/Run").HighWaterMark;
            sourceOffset: string | number;
            memberLimit: number;
            memberOffset: number;
            method: string;
            destinationId: string;
            createdAt: number;
            updatedAt: number;
            completedAt: number;
        };
    }>;
}
export declare class SchedulesRun extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly scheduleIds: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureArray;
        };
        readonly modelId: {
            readonly required: false;
        };
    };
    runWithinTransaction({ params }: {
        params: ParamsFrom<SchedulesRun>;
    }): Promise<{
        runs: {
            id: string;
            creatorId: string;
            creatorName: string;
            creatorType: "group" | "task" | "schedule" | "property" | "grouparooModel" | "teamMember";
            state: "stopped" | "running" | "complete" | "draft";
            percentComplete: number;
            importsCreated: number;
            recordsCreated: number;
            recordsImported: number;
            error: string;
            highWaterMark: import("../models/Run").HighWaterMark;
            sourceOffset: string | number;
            memberLimit: number;
            memberOffset: number;
            method: string;
            destinationId: string;
            createdAt: number;
            updatedAt: number;
            completedAt: number;
        }[];
    }>;
}
export declare class ScheduleCreate extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly name: {
            readonly required: false;
        };
        readonly sourceId: {
            readonly required: true;
        };
        readonly recurring: {
            readonly required: true;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly confirmRecords: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly state: {
            readonly required: false;
        };
        readonly refreshEnabled: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly incremental: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly options: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureObject;
        };
        readonly recurringFrequency: {
            readonly required: true;
            readonly default: 0;
            readonly formatter: typeof APIData.ensureNumber;
        };
        readonly filters: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureArray;
        };
    };
    runWithinTransaction({ params, }: {
        params: ParamsFrom<ScheduleCreate>;
    }): Promise<{
        schedule: {
            id: string;
            name: string;
            state: "ready" | "draft";
            sourceId: string;
            incremental: boolean;
            recurring: boolean;
            refreshEnabled: boolean;
            locked: string;
            confirmRecords: boolean;
            supportIncrementalSchedule: boolean;
            options: import("../modules/optionHelper").OptionHelper.SimpleOptions;
            filters: FilterHelper.FiltersWithKey[];
            recurringFrequency: number;
            createdAt: number;
            updatedAt: number;
        };
        pluginOptions: {
            key: string;
            description: string;
            required: boolean;
            type: string;
            options: {
                key: string;
                description?: string;
                examples?: any[];
            }[];
        }[];
    }>;
}
export declare class ScheduleEdit extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly id: {
            readonly required: true;
        };
        readonly name: {
            readonly required: false;
        };
        readonly sourceId: {
            readonly required: false;
        };
        readonly recurring: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly refreshEnabled: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly incremental: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly confirmRecords: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureBoolean;
        };
        readonly state: {
            readonly required: false;
        };
        readonly options: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureObject;
        };
        readonly recurringFrequency: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureNumber;
        };
        readonly filters: {
            readonly required: false;
            readonly formatter: typeof APIData.ensureArray;
        };
    };
    runWithinTransaction({ params }: {
        params: ParamsFrom<ScheduleEdit>;
    }): Promise<{
        schedule: {
            id: string;
            name: string;
            state: "ready" | "draft";
            sourceId: string;
            incremental: boolean;
            recurring: boolean;
            refreshEnabled: boolean;
            locked: string;
            confirmRecords: boolean;
            supportIncrementalSchedule: boolean;
            options: import("../modules/optionHelper").OptionHelper.SimpleOptions;
            filters: FilterHelper.FiltersWithKey[];
            recurringFrequency: number;
            createdAt: number;
            updatedAt: number;
        };
        pluginOptions: {
            key: string;
            description: string;
            required: boolean;
            type: string;
            options: {
                key: string;
                description?: string;
                examples?: any[];
            }[];
        }[];
    }>;
}
export declare class ScheduleFilterOptions extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly id: {
            readonly required: true;
        };
    };
    runWithinTransaction({ params, }: {
        params: ParamsFrom<ScheduleFilterOptions>;
    }): Promise<{
        options: import("..").SourceFilterMethodResponseRow[];
        optionDescriptions: {
            [key: string]: string;
        };
    }>;
}
export declare class ScheduleView extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly id: {
            readonly required: true;
        };
    };
    runWithinTransaction({ params }: {
        params: ParamsFrom<ScheduleView>;
    }): Promise<{
        schedule: {
            id: string;
            name: string;
            state: "ready" | "draft";
            sourceId: string;
            incremental: boolean;
            recurring: boolean;
            refreshEnabled: boolean;
            locked: string;
            confirmRecords: boolean;
            supportIncrementalSchedule: boolean;
            options: import("../modules/optionHelper").OptionHelper.SimpleOptions;
            filters: FilterHelper.FiltersWithKey[];
            recurringFrequency: number;
            createdAt: number;
            updatedAt: number;
        };
        pluginOptions: {
            key: string;
            description: string;
            required: boolean;
            type: string;
            options: {
                key: string;
                description?: string;
                examples?: any[];
            }[];
        }[];
    }>;
}
export declare class ScheduleDestroy extends AuthenticatedAction {
    name: string;
    description: string;
    outputExample: {};
    permission: ActionPermission;
    inputs: {
        readonly id: {
            readonly required: true;
        };
    };
    runWithinTransaction({ params, }: {
        params: ParamsFrom<ScheduleDestroy>;
    }): Promise<{
        success: boolean;
    }>;
}
