import { ClientResponseDto } from '../dto/client-response.dto';
import { CreateClientDto } from '../dto/create-client.dto';
import { PaginatedClientDto } from '../dto/paginated-client.dto';
import { UpdateClientDto } from '../dto/update-client.dto';
import { PlanDataDto } from '../dto/plan-data.dto';
import { PlanResponseDto } from '../dto/plan.dto';
import { PaginatedResponseDto } from 'common/utils/paginated-response.dto';
import { UserResponseDto } from 'modules/user/dto/user-response.dto';
export declare abstract class BaseClientService {
    abstract createClient(createClientDto: CreateClientDto): Promise<ClientResponseDto>;
    abstract getClientById(clientId: string): Promise<ClientResponseDto>;
    abstract updateClient(clientId: string, updateData: UpdateClientDto): Promise<ClientResponseDto>;
    abstract deleteClient(clientId: string): Promise<boolean>;
    abstract getAllClients(page?: number, limit?: number): Promise<PaginatedClientDto>;
    abstract linkUserToClient(clientId: string, userEmail: string): Promise<boolean>;
    abstract unlinkUserFromClient(clientId: string, userId: number): Promise<boolean>;
    abstract getClientUsers(clientId: string, page: number, limit: number): Promise<PaginatedResponseDto<UserResponseDto>>;
    abstract validateUserLinkLimit(clientId: string): Promise<boolean>;
    abstract upgradeUserToClient(userId: number, planData: PlanDataDto): Promise<ClientResponseDto>;
    abstract getClientPlan(clientId: string): Promise<PlanResponseDto>;
    abstract updateClientPlan(clientId: string, planDataDto: PlanDataDto): Promise<PlanResponseDto>;
}
