import * as fc from "fast-check"; import { InvariantCampaign } from "./campaign-types.js"; export interface CampaignSchedulingTarget { readonly actors: readonly string[]; readonly key: string; readonly requiresActiveContract?: boolean; readonly weight: number; } export type ScheduledCampaignSlot = { readonly kind: "probe"; } | { readonly actor: string; readonly kind: "target"; readonly targetKey: string; }; /** * Generates exact-depth scheduling inputs with fast-check's seed and shrink * support while delegating all eligibility decisions to the pure scheduler. */ export declare function createCampaignScheduleArbitrary(init: { readonly depth: number; readonly hasActiveContract: boolean; readonly targets: readonly CampaignSchedulingTarget[]; }): fc.Arbitrary; /** * Projects a public invariant campaign definition onto generated scheduling * slots. Targets without explicit actors use every configured actor in stable * name order, allowing lightweight read/probe targets to share the campaign * actor matrix. */ export declare function createInvariantCampaignScheduleArbitrary(campaign: InvariantCampaign, options?: { readonly hasActiveContract?: boolean; }): fc.Arbitrary; export declare function scheduleCampaignSlots(init: { readonly actorRolls: readonly number[]; readonly depth: number; readonly hasActiveContract: boolean; readonly targetRolls: readonly number[]; readonly targets: readonly CampaignSchedulingTarget[]; }): readonly ScheduledCampaignSlot[];