import { HttpStatus } from '@nestjs/common';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { DatabaseService } from '../../config';
import { defaultPaginationDto } from '../shared/shared.dto';
import { createLocationDto, updateLocationDto } from './locations.dto';
export declare class LocationsService {
    private readonly db;
    private readonly permissionResolver;
    constructor(db: DatabaseService, permissionResolver: PermissionResolverService);
    private assertGeneralAccess;
    createLocation(data: createLocationDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getLocations(owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getFilteredLocations(owner_id: string, query: defaultPaginationDto, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: any;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getLocationById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateLocation(id: string, data: updateLocationDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteLocation(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            name?: string;
            location_code?: string;
            description?: string;
            status?: "active" | "inactive" | "deleted";
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: {
            usedByMembers: any;
        };
    }>;
}
