import { EntityProvider, EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { Config } from '@backstage/config';
import { ResourceTransformer } from '../puppet';
import { SchedulerService, SchedulerServiceTaskRunner, LoggerService } from '@backstage/backend-plugin-api';
/**
 * Reads nodes from [PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html)
 * based on the provided query and registers them as Resource entities in the catalog.
 *
 * @public
 */
export declare class PuppetDbEntityProvider implements EntityProvider {
    private readonly config;
    private readonly logger;
    private readonly scheduleFn;
    private readonly transformer;
    private connection?;
    /**
     * Creates instances of {@link PuppetDbEntityProvider} from a configuration.
     *
     * @param config - The configuration to read provider information from.
     * @param deps - The dependencies for  {@link PuppetDbEntityProvider}.
     *
     * @returns A list of {@link PuppetDbEntityProvider} instances.
     */
    static fromConfig(config: Config, deps: {
        logger: LoggerService;
        schedule?: SchedulerServiceTaskRunner;
        scheduler?: SchedulerService;
        transformer?: ResourceTransformer;
    }): PuppetDbEntityProvider[];
    /**
     * Creates an instance of {@link PuppetDbEntityProvider}.
     *
     * @param config - Configuration of the provider.
     * @param logger - The instance of a {@link @backstage/backend-plugin-api#LoggerService}.
     * @param taskRunner - The instance of {@link @backstage/backend-plugin-api#SchedulerServiceTaskRunner}.
     * @param transformer - A {@link ResourceTransformer} function.
     *
     */
    private constructor();
    /** {@inheritdoc @backstage/plugin-catalog-node#EntityProvider.connect} */
    connect(connection: EntityProviderConnection): Promise<void>;
    /** {@inheritdoc @backstage/plugin-catalog-node#EntityProvider.getProviderName} */
    getProviderName(): string;
    /**
     * Creates a function that can be used to schedule a refresh of the catalog.
     *
     * @param taskRunner - The instance of {@link @backstage/backend-plugin-api#SchedulerServiceTaskRunner}.
     */
    private createScheduleFn;
    /**
     * Refreshes the catalog by reading nodes from PuppetDB and registering them as Resource Entities.
     *
     * @param logger - The instance of a Logger.
     */
    refresh(logger: LoggerService): Promise<void>;
}
