import { QueryRepository } from './repositories/query.repository';
import { CreateQueryDto, UpdateQueryDto } from './dto';
import { QueryStage } from '../../entities/query.entity';
import { AuditService } from '../audit/audit.service';
import { QuoteService } from './quote.service';
export declare class QueryService {
    private readonly repo;
    private readonly auditService;
    private readonly quoteService;
    constructor(repo: QueryRepository, auditService: AuditService, quoteService: QuoteService);
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
    }, filters?: {
        stage?: string;
        destinationId?: string;
        sourceId?: string;
        assignedTo?: string;
    }): Promise<{
        items: import("../../entities/query.entity").QueryEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findAvailable(): Promise<import("../../entities/query.entity").QueryEntity[]>;
    findById(id: string): Promise<import("../../entities/query.entity").QueryEntity>;
    private resolveUserNames;
    getStageCounts(): Promise<Record<string, number>>;
    create(dto: CreateQueryDto): Promise<{
        id: string;
        query_number: string;
        message: string;
    }>;
    private findLinkedBookingId;
    update(id: string, dto: UpdateQueryDto): Promise<{
        id: string;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    changeStage(id: string, stage: QueryStage): Promise<{
        id: string;
        stage: QueryStage;
        message: string;
    }>;
    duplicate(id: string): Promise<{
        id: string;
        query_number: any;
        message: string;
    }>;
}
