export interface CampaignPiece {
  id: string;
  roleIdx: number;
  role: string;
  format: string;
  title: string;
  hook: string;
  body: string;
  cta: string;
  variants: unknown[];
}

export interface Campaign {
  id: string;
  profileId: string | null;
  productId: string;
  productName?: string;
  objective: string;
  sequence: Array<{ role: string; [key: string]: unknown }>;
  pieces: CampaignPiece[];
  status: string;
  createdAt: string;
}

export interface ModuleState {
  activeProfileId: string | null;
  products?: Array<{ id: string; name: string; [key: string]: unknown }>;
  briefing?: Record<string, unknown>;
  models?: { pack?: string; research?: string; [key: string]: string };
  apiKey?: string;
}

export function generateCampaign(
  state: ModuleState,
  productId: string,
  objective: string
): Promise<Campaign>;
