import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AdAccountFields } from "./ad-account.ts"; import type { AdSetFields } from "./ad-set.ts"; import type { CampaignFields } from "./campaign.ts"; export interface AdStudyCellFields { ad_entities_count: number; ad_ids: string[]; control_percentage: number; id: string; name: string; treatment_percentage: number; } export interface AdStudyCellUpdateParams { adaccounts?: number[]; ads?: string[]; adsets?: string[]; campaigns?: string[]; creation_template?: string; description?: string; name?: string; [key: string]: unknown; } export function adStudyCellNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as AdStudyCellFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: AdStudyCellUpdateParams) => client.post(`${id}`, params as Record), adaccounts: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/adaccounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), adsets: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/adsets`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), campaigns: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/campaigns`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), }; }