/// <reference types="mongoose/types/aggregate" />
/// <reference types="mongoose/types/callback" />
/// <reference types="mongoose/types/collection" />
/// <reference types="mongoose/types/connection" />
/// <reference types="mongoose/types/cursor" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/error" />
/// <reference types="mongoose/types/expressions" />
/// <reference types="mongoose/types/helpers" />
/// <reference types="mongoose/types/middlewares" />
/// <reference types="mongoose/types/indexes" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/mongooseoptions" />
/// <reference types="mongoose/types/pipelinestage" />
/// <reference types="mongoose/types/populate" />
/// <reference types="mongoose/types/query" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/session" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/validation" />
/// <reference types="mongoose/types/virtuals" />
/// <reference types="mongoose/types/inferschematype" />
import { Schema } from "mongoose";
import type { HiddenBodyKeys } from "../interfaces";
import type { CronjobStatus, RequestMethodType } from "../interfaces/SystemTypes";
import type { IBase } from "./Base";
export declare const weekDays: readonly ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
export type WeekDay = (typeof weekDays)[number];
export declare const cronjobRepeatUnitList: readonly ["minute", "hour", "day", "month", "year"];
export type CronjobRepeatUnit = (typeof cronjobRepeatUnitList)[number];
export type CronjobRequest = {
    url?: string;
    method?: RequestMethodType;
    params?: Record<string, string>;
    headers?: Record<string, string>;
    body?: any;
};
export type CronjobRepeat = {
    range?: number;
    unit?: CronjobRepeatUnit;
};
export type CronjonRepeatCondition = {
    /**
     * Array of hours from 0 to 23
     */
    atHours?: number[];
    /**
     * Array of minutes from 0 to 59
     */
    atMins?: number[];
    /**
     * Array of weekdays
     */
    atWeekDays?: WeekDay[];
    /**
     * Array of days from 1 to 31
     */
    atDays?: number[];
    /**
     * Array of days from 0 to 11
     */
    atMonths?: number[];
};
export type CronjobHistory = {
    runAt: Date;
    status: CronjobStatus;
    responseStatus: string | number;
    message: string;
};
export interface ICronjob extends IBase {
    name?: string;
    url?: string;
    method?: RequestMethodType;
    params?: Record<string, string>;
    headers?: Record<string, string>;
    body?: any;
    nextRunAt?: Date;
    endDate?: Date;
    repeat?: CronjobRepeat;
    repeatCondition?: CronjonRepeatCondition;
    history?: CronjobHistory[];
}
export type CronjobDto = Omit<ICronjob, keyof HiddenBodyKeys>;
export declare const cronjobSchema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    collection: string;
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    history: {
        message?: string;
        status?: "success" | "in_progress" | "failed" | "cancelled";
        responseStatus?: any;
        runAt?: Date;
    }[];
    repeat?: {
        range?: number;
        unit?: "minute" | "hour" | "day" | "month" | "year";
    };
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    url?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    method?: "GET" | "DELETE" | "POST" | "PATCH";
    owner?: import("mongoose").Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    headers?: any;
    body?: any;
    params?: any;
    nextRunAt?: Date;
    endDate?: Date;
    repeatCondition?: {
        atHours: number[];
        atMins: number[];
        atWeekDays: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[];
        atDays: number[];
        atMonths: number[];
    };
}, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    history: {
        message?: string;
        status?: "success" | "in_progress" | "failed" | "cancelled";
        responseStatus?: any;
        runAt?: Date;
    }[];
    repeat?: {
        range?: number;
        unit?: "minute" | "hour" | "day" | "month" | "year";
    };
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    url?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    method?: "GET" | "DELETE" | "POST" | "PATCH";
    owner?: import("mongoose").Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    headers?: any;
    body?: any;
    params?: any;
    nextRunAt?: Date;
    endDate?: Date;
    repeatCondition?: {
        atHours: number[];
        atMins: number[];
        atWeekDays: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[];
        atDays: number[];
        atMonths: number[];
    };
}>> & import("mongoose").FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    history: {
        message?: string;
        status?: "success" | "in_progress" | "failed" | "cancelled";
        responseStatus?: any;
        runAt?: Date;
    }[];
    repeat?: {
        range?: number;
        unit?: "minute" | "hour" | "day" | "month" | "year";
    };
    workspace?: import("mongoose").Types.ObjectId;
    workspaceId?: import("mongoose").Types.ObjectId;
    name?: string;
    slug?: string;
    url?: string;
    project?: import("mongoose").Types.ObjectId;
    projectId?: import("mongoose").Types.ObjectId;
    method?: "GET" | "DELETE" | "POST" | "PATCH";
    owner?: import("mongoose").Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: import("mongoose").Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: import("mongoose").Types.ObjectId;
    updatedById?: import("mongoose").Types.ObjectId;
    deletedBy?: import("mongoose").Types.ObjectId;
    deletedById?: import("mongoose").Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    headers?: any;
    body?: any;
    params?: any;
    nextRunAt?: Date;
    endDate?: Date;
    repeatCondition?: {
        atHours: number[];
        atMins: number[];
        atWeekDays: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[];
        atDays: number[];
        atMonths: number[];
    };
}> & {
    _id: import("mongoose").Types.ObjectId;
}>;
//# sourceMappingURL=Cronjob.d.ts.map