import { Repository } from 'typeorm';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { NestAuthPermission } from '../entities/permission.entity';
import { AuthConfigService } from '../../core/services/auth-config.service';
import { IUpdatePermissionInput } from '@ackplus/nest-auth-contracts';
export declare class PermissionService {
    private permissionRepository;
    private authConfigService;
    private readonly eventEmitter;
    constructor(permissionRepository: Repository<NestAuthPermission>, authConfigService: AuthConfigService, eventEmitter: EventEmitter2);
    private getDefaultRoleGuard;
    private resolveAndValidateGuard;
    createPermission(data: {
        name: string;
        guard?: string;
        description?: string;
        category?: string;
    }): Promise<NestAuthPermission>;
    getPermissions(options?: {
        search?: string;
        category?: string;
        guard?: string;
        limit?: number;
    }): Promise<NestAuthPermission[]>;
    getPermissionByName(name: string, guard?: string): Promise<NestAuthPermission | null>;
    getPermissionsByGuard(guard: string): Promise<NestAuthPermission[]>;
    getGuards(): Promise<string[]>;
    getPermissionById(id: string): Promise<NestAuthPermission>;
    updatePermission(id: string, data: IUpdatePermissionInput): Promise<NestAuthPermission>;
    deletePermission(id: string): Promise<void>;
    searchPermissions(query: string, guard?: string, limit?: number): Promise<NestAuthPermission[]>;
    getCategories(): Promise<string[]>;
    createPermissions(permissions: Array<{
        name: string;
        description?: string;
        guard?: string;
        category?: string;
        metadata?: Record<string, any>;
    }>): Promise<NestAuthPermission[]>;
}
//# sourceMappingURL=permission.service.d.ts.map