import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { TenantAwareRepository } from '../../../common/repositories/tenant-aware.repository';
import { QueryEntity } from '../../../entities/query.entity';
import { type VisibleUserIds } from '../../../common/auth/row-visibility';
export declare class QueryRepository extends TenantAwareRepository<QueryEntity> {
    constructor(repo: Repository<QueryEntity>, cls: ClsService);
    findByIdWithRelations(id: string): Promise<QueryEntity | null>;
    getNextQueryNumber(): Promise<string>;
    findPaginatedScoped(opts: {
        page?: number;
        limit?: number;
        search?: string;
        filters?: {
            stage?: string;
            destinationId?: string;
            sourceId?: string;
        };
        visibleUserIds: VisibleUserIds;
    }): Promise<{
        items: QueryEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findAvailable(visibleUserIds: VisibleUserIds): Promise<QueryEntity[]>;
    countByStage(visibleUserIds: VisibleUserIds, filters?: {
        destinationId?: string;
        sourceId?: string;
        search?: string;
    }): Promise<Record<string, number>>;
    isVisibleTo(id: string, visibleUserIds: VisibleUserIds): Promise<boolean>;
}
