import { z } from 'zod';
/**
 * Schema for when a workflow attached to a campaign should run.
 *
 * Mirrors the `runsWhen` values accepted by the backend's
 * `validateCampaignWorkflow` schema.
 */
export declare const CampaignWorkflowRunsWhenSchema: z.ZodEnum<{
    installed: "installed";
    enrolled: "enrolled";
    claimed: "claimed";
    redeemed: "redeemed";
    updated: "updated";
    scanned: "scanned";
    scheduled: "scheduled";
}>;
/**
 * Defines when a workflow attached to a campaign should run.
 */
export type CampaignWorkflowRunsWhen = z.infer<typeof CampaignWorkflowRunsWhenSchema>;
/**
 * Schema for the body accepted by attach/update on the campaign workflows sub-endpoint.
 */
export declare const CampaignWorkflowInputSchema: z.ZodObject<{
    workflowId: z.ZodString;
    runsWhen: z.ZodEnum<{
        installed: "installed";
        enrolled: "enrolled";
        claimed: "claimed";
        redeemed: "redeemed";
        updated: "updated";
        scanned: "scanned";
        scheduled: "scheduled";
    }>;
    schedule: z.ZodOptional<z.ZodNullable<z.ZodObject<{
        when: z.ZodUnion<readonly [z.ZodEnum<{
            daily: "daily";
            "daily-except-weekends": "daily-except-weekends";
            weekly: "weekly";
            monthly: "monthly";
        }>, z.ZodLiteral<"">]>;
        weekday: z.ZodString;
        monthday: z.ZodString;
        time: z.ZodString;
    }, z.core.$loose>>>;
}, z.core.$loose>;
/**
 * Body accepted by attach/update on the campaign workflows sub-endpoint.
 */
export type CampaignWorkflowInput = z.infer<typeof CampaignWorkflowInputSchema>;
/**
 * Schema for a workflow attachment on a campaign.
 *
 * Returned by `client.campaigns.workflows.getAll(...)`. When fetched via `getAll` the
 * `workflow` field is populated with the workflow entity itself.
 */
export declare const CampaignWorkflowSchema: z.ZodObject<{
    id: z.ZodString;
    campaignId: z.ZodString;
    workflowId: z.ZodString;
    runsWhen: z.ZodEnum<{
        installed: "installed";
        enrolled: "enrolled";
        claimed: "claimed";
        redeemed: "redeemed";
        updated: "updated";
        scanned: "scanned";
        scheduled: "scheduled";
    }>;
    schedule: z.ZodNullable<z.ZodObject<{
        when: z.ZodUnion<readonly [z.ZodEnum<{
            daily: "daily";
            "daily-except-weekends": "daily-except-weekends";
            weekly: "weekly";
            monthly: "monthly";
        }>, z.ZodLiteral<"">]>;
        weekday: z.ZodString;
        monthday: z.ZodString;
        time: z.ZodString;
    }, z.core.$loose>>;
    workflow: z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        organizationId: z.ZodString;
        scannerAppId: z.ZodNullable<z.ZodString>;
        name: z.ZodString;
        description: z.ZodString;
        code: z.ZodString;
        packages: z.ZodArray<z.ZodString>;
        createdDate: z.ZodCoercedDate<unknown>;
    }, z.core.$loose>>;
}, z.core.$loose>;
/**
 * A workflow attachment on a campaign.
 */
export type CampaignWorkflow = z.infer<typeof CampaignWorkflowSchema>;
