import { requireCapability, type MarketingAdapter } from './index.js'

export type SchedulingCapable = {
  scheduleCampaign(campaignId: string, scheduledAt: string): Promise<void>
}

export function asSchedulingCapable(adapter: MarketingAdapter): SchedulingCapable {
  return adapter as MarketingAdapter & SchedulingCapable
}

export async function scheduleCampaign(
  adapter: MarketingAdapter,
  campaignId: string,
  scheduledAt: string,
): Promise<void> {
  requireCapability(adapter, 'scheduling')
  return asSchedulingCapable(adapter).scheduleCampaign(campaignId, scheduledAt)
}
