import { TaskRunner } from '@backstage/backend-tasks'; import { UserEntity, GroupEntity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { EntityProvider, EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { User, Group, UserApiListUsersRequest, GroupApiListGroupsRequest } from '@okta/okta-sdk-nodejs'; import { Logger } from 'winston'; /** * A user object from the Okta API. * @public */ type OktaUser = User; /** * A group object from the Okta API. * @public */ type OktaGroup = Group; /** * Filter users from the Okta API from being included in the catalog. * @public */ type OktaUserFilter = (user: OktaUser) => boolean; /** * Filter groups from the Okta API from being included in the catalog. * @public */ type OktaGroupFilter = (group: OktaGroup) => boolean; /** * Transform users from the Okta API into user entities for the catalog. * @public */ type OktaUserTransformer = (user: OktaUser) => UserEntity; /** * Transform groups from the Okta API into user entities for the catalog. * @public */ type OktaGroupTransformer = (group: OktaGroup) => GroupEntity; /** * Request parameters for Okta list users resource. * @public */ type OktaListUsersRequest = UserApiListUsersRequest; /** * Request parameters for Okta list groups resource. * @public */ type OktaListGroupsRequest = GroupApiListGroupsRequest; /** * Hook function run before adding entities to the catalog, for example, to enrich user entities * with group data or vice versa. * @public */ type HookBeforeMutation = (users: UserEntity[], groups: GroupEntity[]) => [UserEntity[], GroupEntity[]]; /** * Discovers users and groups from an Okta instance. * @public */ declare class OktaOrgDiscoveryEntityProvider implements EntityProvider { private readonly logger; private readonly scheduleFn; private readonly client; private connection?; private readonly id?; private readonly listUsersRequest; private readonly listGroupsRequest; private readonly userFilter; private readonly groupFilter; private readonly userTransformer; private readonly groupTransformer; private readonly hookBeforeMutation?; static fromConfig(config: Config, options: { logger: Logger; schedule?: TaskRunner; listUsersRequest?: UserApiListUsersRequest; listGroupsRequest?: GroupApiListGroupsRequest; userFilter?: OktaUserFilter; groupFilter?: OktaGroupFilter; userTransformer: OktaUserTransformer; groupTransformer: OktaGroupTransformer; hookBeforeMutation?: HookBeforeMutation; }): OktaOrgDiscoveryEntityProvider[]; private constructor(); getProviderName(): string; connect(connection: EntityProviderConnection): Promise; private createScheduleFn; private refresh; private createGroup; private createUser; } export { type HookBeforeMutation, type OktaGroup, type OktaGroupFilter, type OktaGroupTransformer, type OktaListGroupsRequest, type OktaListUsersRequest, OktaOrgDiscoveryEntityProvider, type OktaUser, type OktaUserFilter, type OktaUserTransformer };