import type { BasicMetaSysProps, DefaultElements, GetSpaceEnvironmentParams, GetWorkflowParams, Link, MakeRequest, PaginationQueryOptions, SysLink } from '../common-types';
export type WorkflowSysProps = Pick<BasicMetaSysProps, 'id' | 'version' | 'createdAt' | 'createdBy' | 'updatedAt' | 'updatedBy'> & {
    type: 'Workflow';
    space: SysLink;
    environment: SysLink;
    completedBy?: SysLink;
    completedAt?: string;
    deletedBy?: SysLink;
    deletedAt?: string;
    entity: Link<'Entry'>;
    workflowDefinition: Link<'WorkflowDefinition'>;
};
export type WorkflowProps = {
    sys: WorkflowSysProps;
    stepId?: string;
};
export type CreateWorkflowProps = Omit<WorkflowProps, 'sys'> & {
    entity: Link<'Entry'>;
    workflowDefinition: Link<'WorkflowDefinition'>;
};
export type UpdateWorkflowProps = Omit<WorkflowProps, 'sys'> & {
    sys: Pick<WorkflowSysProps, 'version'>;
};
export type CreateWorkflowParams = GetSpaceEnvironmentParams;
export type UpdateWorkflowParams = GetWorkflowParams;
export type DeleteWorkflowParams = GetWorkflowParams & {
    version: number;
};
export type CompleteWorkflowParams = DeleteWorkflowParams;
type WorkflowApi = {
    update(): Promise<Workflow>;
    get(): Promise<Workflow>;
    delete(): Promise<void>;
    complete(): Promise<void>;
};
type OrderQueryParam = 'sys.updatedAt' | '-sys.updatedAt' | 'sys.createdAt' | '-sys.createdAt';
export interface Workflow extends WorkflowProps, DefaultElements<WorkflowProps>, WorkflowApi {
}
export type WorkflowQueryOptions = Omit<PaginationQueryOptions, 'order'> & {
    'stepId[in]'?: string;
    /** Find workflows filtered by the Entity type (Entry) */
    'sys.entity.sys.linkType'?: string;
    /** Find workflows containing the specified, comma-separated entities. Requires `sys.entity.sys.linkType` */
    'sys.entity.sys.id[in]'?: string;
    'sys.workflowDefinition.sys.id'?: string;
    /**
     * Order workflows by
     * @default -sys.createdAt
     * */
    order?: OrderQueryParam;
};
/**
 * @internal
 */
export default function createWorkflowApi(makeRequest: MakeRequest): WorkflowApi;
/**
 * @internal
 */
export declare function wrapWorkflow(makeRequest: MakeRequest, data: WorkflowProps): Workflow;
/**
 * @internal
 */
export declare const wrapWorkflowCollection: (makeRequest: MakeRequest, data: import("..").CollectionProp<WorkflowProps>) => import("..").Collection<Workflow, WorkflowProps>;
export {};
