import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api';
import { LoggerService, DiscoveryService, AuthService, UserInfoService, HttpAuthService, AuditorService, LifecycleService, PermissionsRegistryService, PermissionsService } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
import express, { Router } from 'express';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { PluginIdProvider, RBACProvider } from '@backstage-community/plugin-rbac-node';
export { PluginIdProvider } from '@backstage-community/plugin-rbac-node';
import { PolicyExtensionPoint } from '@backstage/plugin-permission-node/alpha';

/**
 * @public
 */
interface RouterOptions {
    logger: LoggerService;
    config: Config;
}
/**
 * @public
 */
declare function createRouter(options: RouterOptions): Promise<express.Router>;

/**
 * @public
 */
type EnvOptions = {
    config: Config;
    logger: LoggerService;
    discovery: DiscoveryService;
    permissions: PermissionEvaluator;
    auth: AuthService;
    userInfo: UserInfoService;
    httpAuth: HttpAuthService;
    auditor: AuditorService;
    lifecycle: LifecycleService;
    permissionsRegistry: PermissionsRegistryService;
    policy: PolicyExtensionPoint;
};
/**
 * @public
 */
type RBACRouterOptions = {
    config: Config;
    logger: LoggerService;
    auth: AuthService;
    httpAuth: HttpAuthService;
    permissions: PermissionsService;
    permissionsRegistry: PermissionsRegistryService;
    auditor: AuditorService;
};
/**
 * @public
 */
declare class PolicyBuilder {
    static build(env: EnvOptions, pluginIdProvider?: PluginIdProvider, rbacProviders?: Array<RBACProvider>): Promise<Router>;
}

/**
 * @public
 * RBAC plugin
 *
 */
declare const rbacPlugin: _backstage_backend_plugin_api.BackendFeature;

export { type EnvOptions, PolicyBuilder, type RBACRouterOptions, type RouterOptions, createRouter, rbacPlugin as default };
