import { SchedulerServiceTaskScheduleDefinition } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
/**
 * The configuration parameters for a single Microsoft Graph provider.
 *
 * @public
 */
export type MicrosoftGraphProviderConfig = {
    /**
     * Identifier of the provider which will be used i.e. at the location key for ingested entities.
     */
    id: string;
    /**
     * The prefix of the target that this matches on, e.g.
     * "https://graph.microsoft.com/v1.0", with no trailing slash.
     */
    target: string;
    /**
     * The auth authority used.
     *
     * E.g. "https://login.microsoftonline.com"
     */
    authority?: string;
    /**
     * The tenant whose org data we are interested in.
     */
    tenantId: string;
    /**
     * The OAuth client ID to use for authenticating requests.
     * If specified, ClientSecret must also be specified
     */
    clientId?: string;
    /**
     * The OAuth client secret to use for authenticating requests.
     * If specified, ClientId must also be specified
     */
    clientSecret?: string;
    /**
     * The filter to apply to extract users.
     *
     * E.g. "accountEnabled eq true and userType eq 'member'"
     */
    userFilter?: string;
    /**
     * The fields to be fetched on query.
     *
     * E.g. ["id", "displayName", "description"]
     */
    userSelect?: string[];
    /**
     * The "expand" argument to apply to users.
     *
     * E.g. "manager".
     */
    userExpand?: string;
    /**
     * The path to the users endpoint. Defaults to "/users".
     *
     * E.g. "/users"
     */
    userPath?: string;
    /**
     * The filter to apply to extract users by groups memberships.
     *
     * E.g. "displayName eq 'Backstage Users'"
     */
    userGroupMemberFilter?: string;
    /**
     * The search criteria to apply to extract users by groups memberships.
     *
     * E.g. "\"displayName:-team\"" would only match groups which contain '-team'
     */
    userGroupMemberSearch?: string;
    /**
     * The path to the groups endpoint. Defaults to "/groups".
     *
     * E.g. "/groups"
     */
    userGroupMemberPath?: string;
    /**
     * The "expand" argument to apply to groups.
     *
     * E.g. "member".
     */
    groupExpand?: string;
    /**
     * The filter to apply to extract groups.
     *
     * E.g. "securityEnabled eq false and mailEnabled eq true"
     */
    groupFilter?: string;
    /**
     * The search criteria to apply to extract groups.
     *
     * E.g. "\"displayName:-team\"" would only match groups which contain '-team'
     */
    groupSearch?: string;
    /**
     * The fields to be fetched on query.
     *
     * E.g. ["id", "displayName", "description"]
     */
    groupSelect?: string[];
    /**
     * The path to the groups endpoint. Defaults to "/groups".
     *
     * E.g. "/groups"
     */
    groupPath?: string;
    /**
     * Whether to ingest groups that are members of the found/filtered/searched groups.
     * Default value is `false`.
     */
    groupIncludeSubGroups?: boolean;
    /**
     * By default, the Microsoft Graph API only provides the basic feature set
     * for querying. Certain features are limited to advanced query capabilities
     * (see https://docs.microsoft.com/en-us/graph/aad-advanced-queries)
     * and need to be enabled.
     *
     * Some features like `$expand` are not available for advanced queries, though.
     */
    queryMode?: 'basic' | 'advanced';
    /**
     * Set to false to not load user photos.
     * This can be useful for huge organizations.
     */
    loadUserPhotos?: boolean;
    /**
     * Schedule configuration for refresh tasks.
     */
    schedule?: SchedulerServiceTaskScheduleDefinition;
};
/**
 * Parses configuration.
 *
 * @param config - The root of the msgraph config hierarchy
 *
 * @public
 * @deprecated Replaced by not exported `readProviderConfigs` and kept for backwards compatibility only.
 */
export declare function readMicrosoftGraphConfig(config: Config): MicrosoftGraphProviderConfig[];
/**
 * Parses all configured providers.
 *
 * @param config - The root of the msgraph config hierarchy
 *
 * @public
 */
export declare function readProviderConfigs(config: Config): MicrosoftGraphProviderConfig[];
/**
 * Parses a single configured provider by id.
 *
 * @param id - the id of the provider to parse
 * @param config - The root of the msgraph config hierarchy
 *
 * @public
 */
export declare function readProviderConfig(id: string, config: Config): MicrosoftGraphProviderConfig;
