import type { Rule } from 'eslint';
import type { FromSchema, JSONSchema } from 'json-schema-to-ts';
import type { LintRule as BaseLintRule, LintRuleMeta as BaseLintRuleMeta } from '@atlaskit/eslint-utils/create-rule';
export interface LintRule<Schema extends JSONSchema, Config> extends Omit<BaseLintRule, 'meta' | 'create'> {
    meta: LintRuleMeta<Schema>;
    create(context: Rule.RuleContext, config: Config): Rule.RuleListener;
    /**
     * Unsure why the eslint typings include this when the docs
     * say the schema should be in meta.
     */
    schema?: never;
}
export interface LintRuleMeta<Schema extends JSONSchema> extends Omit<BaseLintRuleMeta, 'schema'> {
    schema: Schema;
}
export declare const createLintRuleWithTypedConfig: <Schema extends JSONSchema & {
    type: 'object';
}, Config = FromSchema<Schema>>(rule: LintRule<Schema, Config>) => Rule.RuleModule;
