import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AdFields } from "./ad.ts"; import type { AdAccountFields } from "./ad-account.ts"; import type { AdCreativeFields } from "./ad-creative.ts"; import type { AdSetFields } from "./ad-set.ts"; import type { CampaignFields } from "./campaign.ts"; export interface AdLabelFields { account: AdAccountFields; created_time: string; id: string; name: string; updated_time: string; } export interface AdLabelUpdateParams { name?: string; [key: string]: unknown; } export function adLabelNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as AdLabelFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: AdLabelUpdateParams) => client.post(`${id}`, params as Record), delete: () => client.delete(`${id}`, {}), adcreatives: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/adcreatives`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), ads: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/ads`, 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()), }; }