import type { DefaultElements, MakeRequest, MetaSysProps } from '../common-types';
import { type AiActionInvocationType, type AiActionInvocation } from './ai-action-invocation';
export declare enum StatusFilter {
    ALL = "all",
    PUBLISHED = "published"
}
export declare enum VariableType {
    RESOURCE_LINK = "ResourceLink",
    TEXT = "Text",
    STANDARD_INPUT = "StandardInput",
    LOCALE = "Locale",
    MEDIA_REFERENCE = "MediaReference",
    REFERENCE = "Reference",
    SMART_CONTEXT = "SmartContext"
}
export declare enum EntityTypeEntry {
    ENTRY = "Entry"
}
export type ReferenceVariableConfiguration = {
    allowedEntities: Array<EntityTypeEntry>;
};
export type VariableConfiguration = {
    strict: boolean;
    in: Array<string>;
} | ReferenceVariableConfiguration;
export type Variable = {
    configuration?: VariableConfiguration;
    description?: string;
    name?: string;
    type: VariableType;
    id: string;
};
export type Instruction = {
    variables: Array<Variable>;
    template: string;
};
export type Configuration = {
    modelType: string;
    modelTemperature: number;
};
export type AiActionTestCase = {
    type?: 'Text';
    value?: string;
} | {
    type?: 'Reference';
    value?: {
        entityPath?: string;
        entityType?: 'Entry';
        entityId?: string;
    };
};
export type SysLinkUserOrApp = {
    sys: {
        id: string;
        linkType: 'User' | 'App';
        type: 'Link';
    };
};
export interface AiActionQueryOptions {
    limit?: number;
    skip?: number;
    status?: StatusFilter;
}
export type AiActionProps = {
    sys: MetaSysProps & {
        type: 'AiAction';
        space: {
            sys: {
                id: string;
            };
        };
        publishedBy?: SysLinkUserOrApp;
        updatedBy: SysLinkUserOrApp;
        createdBy: SysLinkUserOrApp;
        publishedVersion?: number;
        version: number;
        publishedAt?: string;
        updatedAt: string;
        createdAt: string;
        id: string;
    };
    name: string;
    description: string;
    configuration: Configuration;
    instruction: Instruction;
    testCases?: Array<AiActionTestCase>;
};
export type CreateAiActionProps = Pick<Omit<AiActionProps, 'sys'>, 'name' | 'description' | 'configuration' | 'instruction' | 'testCases'>;
export interface AiAction extends AiActionProps, DefaultElements<AiActionProps> {
    update(): Promise<AiAction>;
    delete(): Promise<void>;
    publish(): Promise<AiAction>;
    unpublish(): Promise<AiAction>;
    invoke(environmentId: string, payload: AiActionInvocationType): Promise<AiActionInvocation>;
}
export declare function wrapAiAction(makeRequest: MakeRequest, data: AiActionProps): AiAction;
export declare const wrapAiActionCollection: (makeRequest: MakeRequest, data: import("../common-types").CollectionProp<AiActionProps>) => import("../common-types").Collection<AiAction, AiActionProps>;
