import { Plugin } from 'postcss';

declare enum Mode {
    combined = "combined",
    override = "override",
    diff = "diff"
}
declare enum Source {
    ltr = "ltr",
    rtl = "rtl"
}
type ModeValue = `${Mode}`;
type SourceValue = `${Source}`;
type strings = string | string[];
interface PluginStringMap {
    name?: string;
    search: strings;
    replace: strings;
}
interface DeclarationPluginProcessor {
    expr: RegExp;
    action: (prop: string, value: string, context: object) => object;
}
type DeclarationPlugin = {
    name: string;
    priority: number;
    processors: DeclarationPluginProcessor[];
};
type PrefixSelectorTransformer = (prefix: string, selector: string) => string | void;
interface PluginOptions {
    mode?: ModeValue;
    ltrPrefix?: strings;
    rtlPrefix?: strings;
    bothPrefix?: strings;
    prefixSelectorTransformer?: PrefixSelectorTransformer;
    safeBothPrefix?: boolean;
    ignorePrefixedRules?: boolean;
    source?: SourceValue;
    processUrls?: boolean;
    processRuleNames?: boolean;
    processKeyFrames?: boolean;
    processEnv?: boolean;
    useCalc?: boolean;
    stringMap?: PluginStringMap[];
    greedy?: boolean;
    aliases?: Record<string, string>;
    processDeclarationPlugins?: DeclarationPlugin[];
    runOnExit?: boolean;
}

declare function postcssRTLCSS(options?: PluginOptions): Plugin;
export = postcssRTLCSS
