import { MongoCollectionClass } from '../../common/mongo-collection.js';
import { type Agency, type CreateAgencyDto, type UpdateAgencyDto } from '@tmlmobilidade/types';
import { IndexDescription } from 'mongodb';
import { z } from 'zod';
declare class AgenciesClass extends MongoCollectionClass<Agency, CreateAgencyDto, UpdateAgencyDto> {
    private static _instance;
    protected createSchema: z.ZodSchema;
    protected updateSchema: z.ZodSchema;
    private constructor();
    static getInstance(): Promise<AgenciesClass>;
    findByCode(code: string): Promise<import("mongodb").WithId<{
        _id: string;
        created_at: number & {
            __brand: "UnixTimestamp";
        };
        created_by: string | null;
        is_locked: boolean;
        updated_at: number & {
            __brand: "UnixTimestamp";
        };
        code: string;
        name: string;
        alerts_map: Partial<Record<"ACCIDENT" | "CONSTRUCTION" | "DEMONSTRATION" | "MEDICAL_EMERGENCY" | "POLICE_ACTIVITY" | "STRIKE" | "TECHNICAL_ISSUE" | "WEATHER" | "ABUSIVE_PARKING" | "DRIVER_ABSENCE" | "DRIVER_ISSUE" | "HIGH_PASSENGER_LOAD" | "NETWORK_UPDATE" | "ROAD_ISSUE" | "TRAFFIC_JAM" | "PUBLIC_DISORDER" | "VEHICLE_ISSUE", Partial<Record<"ACCESSIBILITY_ISSUE" | "ADDITIONAL_SERVICE" | "DETOUR" | "MODIFIED_SERVICE" | "NO_SERVICE" | "REDUCED_SERVICE" | "SIGNIFICANT_DELAYS" | "STOP_MOVED" | "REALTIME_INFO_ISSUE" | "ON_BOARD_SALE_ISSUE", Partial<Record<"agency" | "lines" | "stops" | "rides", boolean>>>>>>;
        contact_emails_pta: string[];
        contact_emails_pto: string[];
        fare_url: string;
        financials: {
            price_per_km: number;
            vkm_per_month: number[];
        };
        operation_start_date: import("@tmlmobilidade/types").OperationalDate | null;
        phone: string;
        public_email: string;
        public_name: string;
        short_name: string;
        timezone: string;
        website_url: string;
        updated_by?: string | undefined;
        validation_rules?: any;
    }>>;
    updateByCode(code: string, fields: Partial<Agency>): Promise<import("mongodb").UpdateResult<{
        _id: string;
        created_at: number & {
            __brand: "UnixTimestamp";
        };
        created_by: string | null;
        is_locked: boolean;
        updated_at: number & {
            __brand: "UnixTimestamp";
        };
        code: string;
        name: string;
        alerts_map: Partial<Record<"ACCIDENT" | "CONSTRUCTION" | "DEMONSTRATION" | "MEDICAL_EMERGENCY" | "POLICE_ACTIVITY" | "STRIKE" | "TECHNICAL_ISSUE" | "WEATHER" | "ABUSIVE_PARKING" | "DRIVER_ABSENCE" | "DRIVER_ISSUE" | "HIGH_PASSENGER_LOAD" | "NETWORK_UPDATE" | "ROAD_ISSUE" | "TRAFFIC_JAM" | "PUBLIC_DISORDER" | "VEHICLE_ISSUE", Partial<Record<"ACCESSIBILITY_ISSUE" | "ADDITIONAL_SERVICE" | "DETOUR" | "MODIFIED_SERVICE" | "NO_SERVICE" | "REDUCED_SERVICE" | "SIGNIFICANT_DELAYS" | "STOP_MOVED" | "REALTIME_INFO_ISSUE" | "ON_BOARD_SALE_ISSUE", Partial<Record<"agency" | "lines" | "stops" | "rides", boolean>>>>>>;
        contact_emails_pta: string[];
        contact_emails_pto: string[];
        fare_url: string;
        financials: {
            price_per_km: number;
            vkm_per_month: number[];
        };
        operation_start_date: import("@tmlmobilidade/types").OperationalDate | null;
        phone: string;
        public_email: string;
        public_name: string;
        short_name: string;
        timezone: string;
        website_url: string;
        updated_by?: string | undefined;
        validation_rules?: any;
    }>>;
    protected getCollectionIndexes(): IndexDescription[];
    protected getCollectionName(): string;
    protected getEnvName(): string;
}
/**
 * @deprecated This class is deprecated and will be removed in the future.
 * Use `@tmlmobilidade/go-interfaces-go-db` instead.
 */
export declare const agencies: AgenciesClass;
export {};
