import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AdRuleEvaluationSpecFields } from "./ad-rule-evaluation-spec.ts"; import type { AdRuleExecutionSpecFields } from "./ad-rule-execution-spec.ts"; import type { AdRuleHistoryFields } from "./ad-rule-history.ts"; import type { AdRuleScheduleSpecFields } from "./ad-rule-schedule-spec.ts"; import type { UserFields } from "./user.ts"; export interface AdRuleFields { account_id: string; created_by: UserFields; created_time: string; disable_error_code: number; evaluation_spec: AdRuleEvaluationSpecFields; execution_spec: AdRuleExecutionSpecFields; id: string; name: string; schedule_spec: AdRuleScheduleSpecFields; status: string; updated_time: string; } export interface AdRuleListHistoryParams { action?: string; hide_no_changes?: boolean; object_id?: string; [key: string]: unknown; } export interface AdRuleUpdateParams { evaluation_spec?: Record; execution_spec?: Record; name?: string; schedule_spec?: Record; status?: string; [key: string]: unknown; } export function adRuleNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as AdRuleFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: AdRuleUpdateParams) => client.post(`${id}`, params as Record), delete: () => client.delete(`${id}`, {}), createExecute: (params: Record) => client.post>(`${id}/execute`, params as Record), history: (opts: { fields: F; params?: AdRuleListHistoryParams }) => new Cursor>(client, `${id}/history`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createPreview: (params: Record) => client.post(`${id}/preview`, params as Record), }; }