import { requestGoogle } from './core.ts'
import type { JsonObject } from './types.ts'
export type YouTubeAnalyticsReportParams = { account: string; ids?: string; startDate: string; endDate: string; metrics: string; dimensions?: string; filters?: string; sort?: string; maxResults?: number; startIndex?: number; currency?: string; includeHistoricalChannelData?: boolean }
export async function queryReport(params: YouTubeAnalyticsReportParams): Promise<JsonObject> { const { ids = 'channel==MINE', startDate, endDate, metrics, dimensions, filters, sort, maxResults, startIndex, currency, includeHistoricalChannelData } = params; if (!startDate) throw new Error('queryReport requires startDate in YYYY-MM-DD format.'); if (!endDate) throw new Error('queryReport requires endDate in YYYY-MM-DD format.'); if (!metrics) throw new Error('queryReport requires metrics.'); return await requestGoogle({ ...params, api: 'youtubeAnalytics', path: '/v2/reports', query: { ids, startDate, endDate, metrics, dimensions, filters, sort, maxResults, startIndex, currency, includeHistoricalChannelData } }) as JsonObject }
/**
* Return the YouTube Analytics helper namespace for channel reports.
* @example
* import youtubeAnalytics from 'kody:@kentcdodds/google/youtube-analytics'
* const report = await youtubeAnalytics().queryReport({ account: 'youtube-brand', startDate: '2026-01-01', endDate: '2026-01-31', metrics: 'views' })
* // => { columnHeaders: [...], rows: [[12345]] }
*/
export default function youtubeAnalytics() { return { queryReport } }