import { CollectionCacheConfig, SmrtCollection, SmrtListOptions, SmrtSelectedRow, SmrtSelectField, SmrtWhereClause } from '@happyvertical/smrt-core'; import { Campaign } from '../models/Campaign.js'; import { CampaignCustomerPage, CampaignCustomerSummary, CampaignReportingPage, CampaignStatus, ListCampaignReportingByCustomerOptions, ListCampaignsByCustomerOptions } from '../types.js'; export declare const MAX_CAMPAIGN_CUSTOMER_PAGE_SIZE = 100; export declare const MAX_CAMPAIGN_CUSTOMER_BATCH_SIZE = 100; export declare class CampaignCollection extends SmrtCollection { static readonly _itemClass: typeof Campaign; get(filter: string | SmrtWhereClause, options?: { cache?: CollectionCacheConfig | false; }): Promise; list[]>(options: SmrtListOptions & { select: Select; include?: never; }): Promise[]>; list(options?: Omit, 'select'> & { select?: undefined; }): Promise; findByCampaignKey(campaignKey: string, tenantId?: string | null): Promise; findByStatus(status: CampaignStatus): Promise; /** * List one tenant/customer lane newest-first using a stable UUID tiebreaker. * Null start times follow all scheduled rows on every supported database. */ listByCustomer(tenantId: string | null, customerId: string, options?: ListCampaignsByCustomerOptions): Promise; /** * Return one bounded customer page with its complete read-only reporting * projection. Channels and immutable evidence are aggregated in two grouped * reads, independent of page size; no campaign callback or lazy load runs. */ listReportingByCustomer(tenantId: string | null, customerId: string, options?: ListCampaignReportingByCustomerOptions): Promise; private projectReportingPage; private loadChannelMixRows; private loadMetricRows; private listByCustomerInTransaction; /** * Summarize a bounded customer batch with one scope check and one grouped * aggregate query. Every requested customer receives a row, including zeros. */ summarizeByCustomers(tenantId: string | null, customerIds: string[]): Promise; private summarizeByCustomersInTransaction; private inCustomerReadTransaction; private listScheduledLane; private listNullStartLane; } export default CampaignCollection; //# sourceMappingURL=CampaignCollection.d.ts.map