import * as rxjs from 'rxjs';
import { Rest } from '@abp/ng.core';
import * as i0 from '@angular/core';

interface GetPermissionListResultDto {
    entityDisplayName?: string;
    groups: PermissionGroupDto[];
}
interface GetResourcePermissionDefinitionListResultDto {
    permissions?: ResourcePermissionDefinitionDto[];
}
interface GetResourcePermissionListResultDto {
    permissions?: ResourcePermissionGrantInfoDto[];
}
interface GetResourcePermissionWithProviderListResultDto {
    permissions?: ResourcePermissionWithProdiverGrantInfoDto[];
}
interface GetResourceProviderListResultDto {
    providers?: ResourceProviderDto[];
}
interface GrantedResourcePermissionDto {
    name?: string;
    displayName?: string;
}
interface PermissionGrantInfoDto {
    name?: string;
    displayName?: string;
    parentName?: string;
    isGranted: boolean;
    allowedProviders: string[];
    grantedProviders: ProviderInfoDto[];
}
interface PermissionGroupDto {
    name?: string;
    displayName?: string;
    permissions: PermissionGrantInfoDto[];
    displayNameKey?: string;
    displayNameResource?: string;
}
interface ProviderInfoDto {
    providerName?: string;
    providerKey?: string;
}
interface ResourcePermissionDefinitionDto {
    name?: string;
    displayName?: string;
}
interface ResourcePermissionGrantInfoDto {
    providerName?: string;
    providerKey?: string;
    providerDisplayName?: string;
    providerNameDisplayName?: string;
    permissions?: GrantedResourcePermissionDto[];
}
interface ResourcePermissionWithProdiverGrantInfoDto {
    name?: string;
    displayName?: string;
    providers?: string[];
    isGranted?: boolean;
}
interface ResourceProviderDto {
    name?: string;
    displayName?: string;
}
interface SearchProviderKeyInfo {
    providerKey?: string;
    providerDisplayName?: string;
}
interface SearchProviderKeyListResultDto {
    keys?: SearchProviderKeyInfo[];
}
interface UpdatePermissionDto {
    name?: string;
    isGranted: boolean;
}
interface UpdatePermissionsDto {
    permissions: UpdatePermissionDto[];
}
interface UpdateResourcePermissionsDto {
    providerName?: string;
    providerKey?: string;
    permissions?: string[];
}

declare class PermissionsService {
    private restService;
    apiName: string;
    deleteResource: (resourceName: string, resourceKey: string, providerName: string, providerKey: string, config?: Partial<Rest.Config>) => rxjs.Observable<void>;
    get: (providerName: string, providerKey: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetPermissionListResultDto>;
    getByGroup: (groupName: string, providerName: string, providerKey: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetPermissionListResultDto>;
    getResource: (resourceName: string, resourceKey: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetResourcePermissionListResultDto>;
    getResourceByProvider: (resourceName: string, resourceKey: string, providerName: string, providerKey: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetResourcePermissionWithProviderListResultDto>;
    getResourceDefinitions: (resourceName: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetResourcePermissionDefinitionListResultDto>;
    getResourceProviderKeyLookupServices: (resourceName: string, config?: Partial<Rest.Config>) => rxjs.Observable<GetResourceProviderListResultDto>;
    searchResourceProviderKey: (resourceName: string, serviceName: string, filter: string, page: number, config?: Partial<Rest.Config>) => rxjs.Observable<SearchProviderKeyListResultDto>;
    update: (providerName: string, providerKey: string, input: UpdatePermissionsDto, config?: Partial<Rest.Config>) => rxjs.Observable<void>;
    updateResource: (resourceName: string, resourceKey: string, input: UpdateResourcePermissionsDto, config?: Partial<Rest.Config>) => rxjs.Observable<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<PermissionsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PermissionsService>;
}

export { PermissionsService };
export type { GetPermissionListResultDto, GetResourcePermissionDefinitionListResultDto, GetResourcePermissionListResultDto, GetResourcePermissionWithProviderListResultDto, GetResourceProviderListResultDto, GrantedResourcePermissionDto, PermissionGrantInfoDto, PermissionGroupDto, ProviderInfoDto, ResourcePermissionDefinitionDto, ResourcePermissionGrantInfoDto, ResourcePermissionWithProdiverGrantInfoDto, ResourceProviderDto, SearchProviderKeyInfo, SearchProviderKeyListResultDto, UpdatePermissionDto, UpdatePermissionsDto, UpdateResourcePermissionsDto };
