import { z } from 'zod';
import { ConnectorOrigin } from '../type-enums';
export interface LegacyOutputParameterInterface {
    [key: string]: string;
}
export type SupportedOutputTypes = 'string' | 'number' | 'boolean' | 'array' | 'null';
export interface OutputItemParameterInterface {
    type: SupportedOutputTypes | Array<SupportedOutputTypes>;
    description?: string;
    required?: boolean;
}
export interface ArrayOutputParameterInterface extends OutputItemParameterInterface {
    type: 'array';
    items: OutputParameterInterface;
}
export interface NumberOutputParameterInterface extends OutputItemParameterInterface {
    type: 'number' | Array<'number' | 'null'>;
    minimum?: number;
    maximum?: number;
}
export interface OutputParameterInterface {
    [key: string]: OutputItemParameterInterface | ArrayOutputParameterInterface | NumberOutputParameterInterface;
}
interface BaseInputParameter {
    name: string;
    description?: string;
    required?: boolean;
}
export interface ValueInputParameter extends BaseInputParameter {
    type: 'string' | 'number' | 'boolean';
}
export interface SimpleArrayInputParameter extends BaseInputParameter {
    type: 'simple-array';
    itemType: 'string' | 'number' | 'boolean';
}
export interface ArrayInputParameter extends BaseInputParameter {
    type: 'array';
    items: Array<InputParameterInterface>;
}
export interface UnknownInputParameter extends BaseInputParameter {
    type: 'unknown';
}
export type InputParameterInterface = ValueInputParameter | SimpleArrayInputParameter | ArrayInputParameter | UnknownInputParameter;
export interface ActionInterface {
    identifier: string;
    version: string;
    tenantIdentifier: string;
    name: string;
    description?: string;
    connectorIdentifier: string;
    config: {
        [key: string]: {
            [key: string]: string | object;
        } | string | object;
    };
    inputParameters: Array<InputParameterInterface>;
    outputParameters: LegacyOutputParameterInterface | OutputParameterInterface;
    mode?: ConnectorOrigin;
    createdAt: Date;
}
export type CreateActionInterface = Omit<ActionInterface, 'mode' | 'createdAt'>;
export declare const ActionSchema: z.ZodObject<{
    identifier: z.ZodString;
    version: z.ZodString;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    config: z.ZodRecord<z.ZodString, z.ZodAny>;
    inputParameters: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        type: z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
            unknown: "unknown";
            array: "array";
            "simple-array": "simple-array";
        }>;
        required: z.ZodOptional<z.ZodBoolean>;
        itemType: z.ZodOptional<z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
        }>>;
        items: z.ZodOptional<z.ZodArray<z.ZodAny>>;
    }, z.core.$strip>>;
    outputParameters: z.ZodRecord<z.ZodString, z.ZodAny>;
    mode: z.ZodOptional<z.ZodEnum<typeof ConnectorOrigin>>;
    createdAt: z.ZodOptional<z.ZodDate>;
    updatedAt: z.ZodOptional<z.ZodDate>;
}, z.core.$strip>;
export {};
