import type { Logger } from "pino"; import type { TtdHttpClient } from "./ttd-http-client.js"; import type { RateLimiter } from "@cesteral/shared"; import { type RequestContext } from "@cesteral/shared"; import { type TtdEntityType } from "../../mcp-server/tools/utils/entity-mapping.js"; import type { TtdAdvertiser, TtdCampaign, TtdAdGroup, TtdCreative, TtdConversionTracker } from "./types.js"; export type { TtdAdvertiser, TtdCampaign, TtdAdGroup, TtdCreative, TtdConversionTracker }; interface GraphqlQueryOptions { betaFeatures?: string; } interface TtdEntityMap { advertiser: TtdAdvertiser; campaign: TtdCampaign; adGroup: TtdAdGroup; creative: TtdCreative; conversionTracker: TtdConversionTracker; } export declare class TtdService { private readonly logger; private readonly rateLimiter; private readonly httpClient; private readonly graphqlUrl; constructor(logger: Logger, rateLimiter: RateLimiter, httpClient: TtdHttpClient, graphqlUrl?: string); listEntities(entityType: T, filters: Record, pageToken?: string, pageSize?: number, context?: RequestContext): Promise<{ entities: TtdEntityMap[T][]; nextPageToken?: string; }>; getEntity(entityType: T, entityId: string, context?: RequestContext): Promise; createEntity(entityType: T, data: Record, context?: RequestContext, options?: { strictMode?: boolean; }): Promise; updateEntity(entityType: T, entityId: string, data: Record, context?: RequestContext, options?: { strictMode?: boolean; }): Promise; deleteEntity(entityType: TtdEntityType, entityId: string, context?: RequestContext): Promise; testCreateOrUpdate(entityType: TtdEntityType, data: Record, mode: "create" | "update", entityId?: string, context?: RequestContext): Promise<{ valid: boolean; errors?: string[]; }>; bulkCreateEntities(entityType: TtdEntityType, items: Record[], context?: RequestContext): Promise<{ results: Array<{ success: boolean; entity?: unknown; error?: string; }>; }>; bulkUpdateEntities(entityType: TtdEntityType, items: Array<{ entityId: string; data: Record; }>, context?: RequestContext): Promise<{ results: Array<{ success: boolean; entity?: unknown; error?: string; }>; }>; archiveEntities(entityType: TtdEntityType, entityIds: string[], context?: RequestContext): Promise<{ results: Array<{ entityId: string; success: boolean; error?: string; }>; }>; bulkUpdateStatus(entityType: TtdEntityType, entityIds: string[], status: "Available" | "Paused" | "Archived", context?: RequestContext): Promise<{ results: Array<{ entityId: string; success: boolean; error?: string; }>; }>; private updateAvailability; adjustBids(adjustments: Array<{ adGroupId: string; baseBidCpm?: number; maxBidCpm?: number; currencyCode?: string; }>, context?: RequestContext): Promise<{ results: Array<{ adGroupId: string; success: boolean; entity?: unknown; error?: string; }>; }>; graphqlQuery(query: string, variables?: Record, context?: RequestContext, options?: GraphqlQueryOptions): Promise; executeEntityReport(entityType: "adGroup" | "campaign" | "advertiser", entityId: string, reportType: string, context?: RequestContext): Promise; getEntityReportMetadata(entityType: "adGroup" | "campaign" | "advertiser", entityId: string, tile: string, context?: RequestContext): Promise; private bidListGraphql; createBidList(input: Record, context?: RequestContext, selection?: string): Promise; getBidList(bidListId: string, context?: RequestContext, selection?: string): Promise; updateBidList(input: Record, context?: RequestContext, selection?: string): Promise; setBidList(input: Record, context?: RequestContext, selection?: string): Promise; deleteBidList(input: Record, context?: RequestContext): Promise; batchGetBidLists(bidListIds: string[], context?: RequestContext, selection?: string): Promise>; batchUpdateBidLists(items: Record[], context?: RequestContext, selection?: string): Promise>; } //# sourceMappingURL=ttd-service.d.ts.map