import * as _stryker_mutator_api_plugin from '@stryker-mutator/api/plugin';
import { Injector, PluginContext, PluginKind } from '@stryker-mutator/api/plugin';
import { StrykerOptions } from '@stryker-mutator/api/core';
import { Ignorer, NodePath } from '@stryker-mutator/api/ignore';

var $schema = "http://json-schema.org/draft-07/schema";
var type = "object";
var title = "LogIgnorerOptions";
var additionalProperties = false;
var properties = {
	logignore: {
		description: "Configuration for @sgohlke/stryker-log-ignorer",
		title: "IgnorerOptions",
		additionalProperties: false,
		type: "object",
		"default": {
		},
		properties: {
			objectNames: {
				description: "Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]",
				type: "array",
				items: {
					type: "string"
				},
				"default": [
					"console"
				]
			}
		}
	}
};
var logIgnorerOptions = {
	$schema: $schema,
	type: type,
	title: title,
	additionalProperties: additionalProperties,
	properties: properties
};

declare const ___schema_log_ignorer_options_json_$schema: typeof $schema;
declare const ___schema_log_ignorer_options_json_additionalProperties: typeof additionalProperties;
declare const ___schema_log_ignorer_options_json_properties: typeof properties;
declare const ___schema_log_ignorer_options_json_title: typeof title;
declare const ___schema_log_ignorer_options_json_type: typeof type;
declare namespace ___schema_log_ignorer_options_json {
  export { ___schema_log_ignorer_options_json_$schema as $schema, ___schema_log_ignorer_options_json_additionalProperties as additionalProperties, logIgnorerOptions as default, ___schema_log_ignorer_options_json_properties as properties, ___schema_log_ignorer_options_json_title as title, ___schema_log_ignorer_options_json_type as type };
}

/**
 * Configuration for @sgohlke/stryker-log-ignorer
 */
interface IgnorerOptions {
    /**
     * Specify the object names of the logger objects to be ignored. Defaults to ["console"]
     */
    objectNames?: string[];
}
interface LogIgnorerOptions extends StrykerOptions {
    logignore?: IgnorerOptions;
}
declare class LogIgnorer implements Ignorer {
    static inject: readonly ["options"];
    protected readonly options?: IgnorerOptions;
    constructor(options?: Partial<LogIgnorerOptions>);
    shouldIgnore(path: NodePath): string | undefined;
}
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
declare namespace logIgnorerFactory {
    var inject: ["$injector"];
}
declare function createLogIgnorerFactory(): {
    (injector: Injector<PluginContext>): LogIgnorer;
    inject: ['$injector'];
};
declare const strykerPlugins: _stryker_mutator_api_plugin.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
declare const strykerValidationSchema: typeof ___schema_log_ignorer_options_json;

export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
