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 { CRMAddressFields } from "./crm-address.ts"; import type { ExtendedCreditEmailFields } from "./extended-credit-email.ts"; export interface ExtendedCreditInvoiceGroupFields { auto_enroll: boolean; bill_to_address: CRMAddressFields; customer_po_number: string; email: ExtendedCreditEmailFields; emails: string[]; id: string; liable_address: CRMAddressFields; name: string; sold_to_address: CRMAddressFields; } export interface ExtendedCreditInvoiceGroupDeleteAdAccountsParams { ad_account_id: string; [key: string]: unknown; } export interface ExtendedCreditInvoiceGroupCreateAdAccountsParams { ad_account_id: string; [key: string]: unknown; } export interface ExtendedCreditInvoiceGroupUpdateParams { emails?: string[]; name?: string; [key: string]: unknown; } export function extendedCreditInvoiceGroupNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as ExtendedCreditInvoiceGroupFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: ExtendedCreditInvoiceGroupUpdateParams) => client.post(`${id}`, params as Record), delete: () => client.delete(`${id}`, {}), adAccounts: { __path: `${id}/ad_accounts`, __brand: undefined as unknown as AdAccountFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/ad_accounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: ExtendedCreditInvoiceGroupCreateAdAccountsParams) => client.post(`${id}/ad_accounts`, params as Record), delete: (params: ExtendedCreditInvoiceGroupDeleteAdAccountsParams) => client.delete(`${id}/ad_accounts`, params as Record ?? {}), }, }; }