import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api';
import { RootConfigService } from '@backstage/backend-plugin-api';
import * as _backstage_plugin_permission_common from '@backstage/plugin-permission-common';
import { EntityProvider, EntityProviderConnection } from '@backstage/plugin-catalog-node';

/**
 * kuadrantPlugin backend plugin
 *
 * @public
 */
declare const kuadrantPlugin: _backstage_backend_plugin_api.BackendFeature;

/**
 * Permission definitions for the Kuadrant plugin
 *
 * These permissions control access to PlanPolicy, APIProduct, APIKey,
 * and API key management within the Kuadrant Backstage plugin.
 *
 * Permissions are composable - use them to build custom roles beyond the
 * three reference personas (Platform Engineer, API Owner, API Consumer).
 */
declare const kuadrantPlanPolicyCreatePermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantPlanPolicyReadPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantPlanPolicyUpdatePermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantPlanPolicyDeletePermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantPlanPolicyListPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantAuthPolicyListPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantRateLimitPolicyListPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductCreatePermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductReadOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductReadAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductUpdateOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductUpdateAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductDeleteOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductDeleteAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiProductListPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyCreatePermission: _backstage_plugin_permission_common.ResourcePermission<"apiproduct">;
declare const kuadrantApiKeyReadOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyReadAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyUpdateOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyUpdateAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyDeleteOwnPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyDeleteAllPermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantApiKeyApprovePermission: _backstage_plugin_permission_common.BasicPermission;
declare const kuadrantHttpRouteListPermission: _backstage_plugin_permission_common.BasicPermission;
/**
 * All Kuadrant permissions as an array for easy iteration
 */
declare const kuadrantPermissions: (_backstage_plugin_permission_common.BasicPermission | _backstage_plugin_permission_common.ResourcePermission<"apiproduct">)[];

declare class APIProductEntityProvider implements EntityProvider {
    private readonly k8sClient;
    private connection?;
    private readonly providerId;
    constructor(config: RootConfigService);
    getProviderName(): string;
    connect(connection: EntityProviderConnection): Promise<void>;
    refresh(): Promise<void>;
    private transformToEntity;
}

/**
 * get the apiproduct entity provider instance
 * @public
 */
declare function getAPIProductEntityProvider(): APIProductEntityProvider | null;
/**
 * backend module for apiproduct entity provider
 * @public
 */
declare const catalogModuleApiProductEntityProvider: _backstage_backend_plugin_api.BackendFeature;

/**
 * backend module that registers kuadrant plugin id with rbac
 * this makes kuadrant permissions discoverable in the rbac ui
 *
 * @public
 */
declare const kuadrantRbacModule: _backstage_backend_plugin_api.BackendFeature;

/**
 * Backend feature loader that bundles:
 * - kuadrantPlugin: Main HTTP API router
 * - catalogModuleApiProductEntityProvider: Syncs APIProducts to Backstage catalog
 * - kuadrantRbacModule: Registers Kuadrant with RBAC plugin
 *
 * @public
 */
declare const _default: _backstage_backend_plugin_api.BackendFeature;

export { APIProductEntityProvider, catalogModuleApiProductEntityProvider, _default as default, getAPIProductEntityProvider, kuadrantApiKeyApprovePermission, kuadrantApiKeyCreatePermission, kuadrantApiKeyDeleteAllPermission, kuadrantApiKeyDeleteOwnPermission, kuadrantApiKeyReadAllPermission, kuadrantApiKeyReadOwnPermission, kuadrantApiKeyUpdateAllPermission, kuadrantApiKeyUpdateOwnPermission, kuadrantApiProductCreatePermission, kuadrantApiProductDeleteAllPermission, kuadrantApiProductDeleteOwnPermission, kuadrantApiProductListPermission, kuadrantApiProductReadAllPermission, kuadrantApiProductReadOwnPermission, kuadrantApiProductUpdateAllPermission, kuadrantApiProductUpdateOwnPermission, kuadrantAuthPolicyListPermission, kuadrantHttpRouteListPermission, kuadrantPermissions, kuadrantPlanPolicyCreatePermission, kuadrantPlanPolicyDeletePermission, kuadrantPlanPolicyListPermission, kuadrantPlanPolicyReadPermission, kuadrantPlanPolicyUpdatePermission, kuadrantPlugin, kuadrantRateLimitPolicyListPermission, kuadrantRbacModule };
