import { Environment } from '@codeware/core/actions';
import { z } from 'zod';
import { Action } from './action-outputs.schema';
type PrettyPartial<T> = {
    [K in keyof T]?: T[K];
} & {};
declare const BasePreviewSchema: z.ZodObject<{
    environment: z.ZodLiteral<"preview">;
    pullRequest: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    environment: "preview";
    pullRequest: number;
}, {
    environment: "preview";
    pullRequest: number;
}>;
export declare const ContextSchema: z.ZodDiscriminatedUnion<"environment", [z.ZodObject<z.objectUtil.extendShape<{
    environment: z.ZodLiteral<"preview">;
    pullRequest: z.ZodNumber;
}, {
    action: z.ZodEnum<["deploy", "destroy"]>;
}>, "strip", z.ZodTypeAny, {
    action: "deploy" | "destroy";
    environment: "preview";
    pullRequest: number;
}, {
    action: "deploy" | "destroy";
    environment: "preview";
    pullRequest: number;
}>, z.ZodObject<z.objectUtil.extendShape<{
    environment: z.ZodLiteral<"production">;
}, {
    action: z.ZodEnum<["deploy"]>;
}>, "strip", z.ZodTypeAny, {
    action: "deploy";
    environment: "production";
}, {
    action: "deploy";
    environment: "production";
}>]>;
export type Context = z.infer<typeof ContextSchema>;
type BasePreview = z.infer<typeof BasePreviewSchema>;
/**
 * A type that is a subset of `Context` and should be used
 * as a flexible context builder by `flyDeployment`.
 *
 * For data safety the context must be validated by `ContextSchema`.
 */
export type BuildingContext = PrettyPartial<{
    action: Exclude<Action, 'skip'>;
    environment: Environment;
} & Pick<BasePreview, 'pullRequest'>>;
export {};
