import { TenantConnectionService } from '@/modules/tenant/tenant-connection.service';
import { BaseTenantService } from '@/common/base/service/base-crud.service';
import { PosSyncBatch } from './entities/pos-sync-batch.entity';
import { PosSyncMutation } from './entities/pos-sync-mutation.entity';
import { PosSyncConflict } from './entities/pos-sync-conflict.entity';
import { PosDevice } from '../devices/entities/pos-device.entity';
export declare class PosSyncService extends BaseTenantService<PosSyncBatch> {
    protected readonly tenantConnectionService: TenantConnectionService;
    protected entity: typeof PosSyncBatch;
    constructor(tenantConnectionService: TenantConnectionService);
    recordPushBatch(data: any): Promise<{
        batch_status: string;
        batch_id: number;
        results: any[];
    }>;
    listMutations(filters: {
        status?: string;
        device_id?: number;
        store_id?: number;
        entity?: string;
        search?: string;
    }): Promise<PosSyncMutation[]>;
    listConflicts(filters: {
        status?: string;
        device_id?: number;
        store_id?: number;
        type?: string;
        search?: string;
    }): Promise<PosSyncConflict[]>;
    dashboard(filters: {
        store_id?: number;
        device_id?: number;
    }): Promise<{
        filters: {
            store_id?: number;
            device_id?: number;
        };
        batches: Record<string, number>;
        mutations: Record<string, number>;
        conflicts: Record<string, number>;
        recent_failures: PosSyncMutation[];
        stale_devices: PosDevice[];
    }>;
    pullDelta(filters: {
        device_id?: number;
        store_id?: number;
        since_mutation_id?: number;
        entity?: string;
        limit?: number;
    }): Promise<{
        mutations: {
            mutation_id: number;
            client_mutation_id: string;
            entity_name: string;
            entity_local_id: string;
            entity_server_id: number;
            action: string;
            payload_json: Record<string, unknown>;
            status: string;
            server_applied_at: Date;
        }[];
        has_more: boolean;
        last_mutation_id: number;
    }>;
    retryMutation(mutationId: number): Promise<{
        mutation_id: number;
        status: string;
        entity_server_id: number;
        retried_at: string;
        error_message?: undefined;
    } | {
        mutation_id: number;
        status: string;
        error_message: string;
        retried_at: string;
        entity_server_id?: undefined;
    }>;
    resolveConflict(conflictId: number, data: {
        resolution?: string;
        resolved_by_user_id?: number;
        resolution_note?: string;
        use_client_payload?: boolean;
    }): Promise<{
        conflict_id: number;
        status: string;
        message: string;
        resolution_status?: undefined;
        resolved_at?: undefined;
        entity_name?: undefined;
        local_id?: undefined;
        server_id?: undefined;
    } | {
        conflict_id: number;
        resolution_status: string;
        resolved_at: Date;
        entity_name: string;
        local_id: string;
        server_id: number;
        status?: undefined;
        message?: undefined;
    }>;
    private applyMutation;
    private applyCreateSale;
    private applySaleInventoryMovements;
    private resolveInventoryLocationId;
    private toNumber;
    private rowsToCountMap;
}
