import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api';

/**
 * Used to provide a list of pluginIDs on which a permission well-known endpoint is to be searched.
 * @public
 */
interface PluginIdProvider {
    getPluginIds: () => string[];
}
/**
 * @public
 */
interface RBACProvider {
    getProviderName(): string;
    connect(connection: RBACProviderConnection): Promise<void>;
    refresh(): Promise<void>;
}
/**
 * @public
 */
interface RBACProviderConnection {
    applyRoles(roles: string[][]): Promise<void>;
    applyPermissions(permissions: string[][]): Promise<void>;
}

/**
 * An extension point the exposes the ability to configure additional PluginIDProviders.
 *
 * @public
 */
declare const pluginIdProviderExtensionPoint: _backstage_backend_plugin_api.ExtensionPoint<PluginIdProviderExtensionPoint>;
/**
 * The interface for {@link pluginIdProviderExtensionPoint}.
 *
 * @public
 */
type PluginIdProviderExtensionPoint = {
    addPluginIdProvider(pluginIdProvider: PluginIdProvider): void;
};
/**
 * @public
 */
declare const rbacProviderExtensionPoint: _backstage_backend_plugin_api.ExtensionPoint<RBACProviderExtensionPoint>;
/**
 * @public
 */
type RBACProviderExtensionPoint = {
    addRBACProvider(...providers: Array<RBACProvider | Array<RBACProvider>>): void;
};

export { type PluginIdProvider, type PluginIdProviderExtensionPoint, type RBACProvider, type RBACProviderConnection, type RBACProviderExtensionPoint, pluginIdProviderExtensionPoint, rbacProviderExtensionPoint };
