import { z } from 'zod';
import { Trace } from '@voiceflow/base-types';

export declare enum ExtensionType {
    EFFECT = "effect",
    RESPONSE = "response"
}
export type EffectExtension = z.infer<typeof EffectExtension>;
export type ResponseExtension = z.infer<typeof ResponseExtension>;
export type AnyExtension = z.infer<typeof AnyExtension>;
export declare const EffectExtension: z.ZodObject<{
    match: z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => boolean, (...args: unknown[]) => unknown>;
    type: z.ZodLiteral<ExtensionType.EFFECT>;
    name: z.ZodString;
    effect: z.ZodOptional<z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => Promise<void> | void, (...args: unknown[]) => unknown>>;
}, "strip", z.ZodTypeAny, {
    match: (context: {
        trace: Trace.AnyTrace;
    }) => boolean;
    type: ExtensionType.EFFECT;
    name: string;
    effect?: ((context: {
        trace: Trace.AnyTrace;
    }) => Promise<void> | void) | undefined;
}, {
    match: (...args: unknown[]) => unknown;
    type: ExtensionType.EFFECT;
    name: string;
    effect?: ((...args: unknown[]) => unknown) | undefined;
}>;
export declare const ResponseExtension: z.ZodObject<{
    match: z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => boolean, (...args: unknown[]) => unknown>;
    type: z.ZodLiteral<ExtensionType.RESPONSE>;
    name: z.ZodString;
    render: z.ZodOptional<z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
        element: HTMLElement;
    }) => (() => void) | void, (...args: unknown[]) => unknown>>;
}, "strip", z.ZodTypeAny, {
    match: (context: {
        trace: Trace.AnyTrace;
    }) => boolean;
    type: ExtensionType.RESPONSE;
    name: string;
    render?: ((context: {
        trace: Trace.AnyTrace;
        element: HTMLElement;
    }) => (() => void) | void) | undefined;
}, {
    match: (...args: unknown[]) => unknown;
    type: ExtensionType.RESPONSE;
    name: string;
    render?: ((...args: unknown[]) => unknown) | undefined;
}>;
export declare const AnyExtension: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    match: z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => boolean, (...args: unknown[]) => unknown>;
    type: z.ZodLiteral<ExtensionType.EFFECT>;
    name: z.ZodString;
    effect: z.ZodOptional<z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => Promise<void> | void, (...args: unknown[]) => unknown>>;
}, "strip", z.ZodTypeAny, {
    match: (context: {
        trace: Trace.AnyTrace;
    }) => boolean;
    type: ExtensionType.EFFECT;
    name: string;
    effect?: ((context: {
        trace: Trace.AnyTrace;
    }) => Promise<void> | void) | undefined;
}, {
    match: (...args: unknown[]) => unknown;
    type: ExtensionType.EFFECT;
    name: string;
    effect?: ((...args: unknown[]) => unknown) | undefined;
}>, z.ZodObject<{
    match: z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
    }) => boolean, (...args: unknown[]) => unknown>;
    type: z.ZodLiteral<ExtensionType.RESPONSE>;
    name: z.ZodString;
    render: z.ZodOptional<z.ZodEffects<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>, (context: {
        trace: Trace.AnyTrace;
        element: HTMLElement;
    }) => (() => void) | void, (...args: unknown[]) => unknown>>;
}, "strip", z.ZodTypeAny, {
    match: (context: {
        trace: Trace.AnyTrace;
    }) => boolean;
    type: ExtensionType.RESPONSE;
    name: string;
    render?: ((context: {
        trace: Trace.AnyTrace;
        element: HTMLElement;
    }) => (() => void) | void) | undefined;
}, {
    match: (...args: unknown[]) => unknown;
    type: ExtensionType.RESPONSE;
    name: string;
    render?: ((...args: unknown[]) => unknown) | undefined;
}>]>;
//# sourceMappingURL=Extension.dto.d.ts.map