/**
 * Utility files for producing Vega ValueRef for marks
 */
import { SignalRef } from 'vega';
import { Channel, PositionChannel } from '../../../channel';
import { ChannelDef, FieldDef, FieldDefBase, FieldName, FieldRefOption, SecondaryFieldDef, TypedFieldDef, ValueOrGradientOrText } from '../../../channeldef';
import { Config } from '../../../config';
import { Mark, MarkDef } from '../../../mark';
import { StackProperties } from '../../../stack';
import { VgValueRef } from '../../../vega.schema';
import { ScaleComponent } from '../../scale/component';
export declare function midPointRefWithPositionInvalidTest(params: MidPointParams & {
    channel: PositionChannel;
}): VgValueRef | VgValueRef[];
export declare function wrapPositionInvalidTest({ fieldDef, channel, markDef, ref }: {
    fieldDef: FieldDef<string>;
    channel: PositionChannel;
    markDef: MarkDef<Mark>;
    ref: VgValueRef;
}): VgValueRef | VgValueRef[];
export declare function fieldInvalidTestValueRef(fieldDef: FieldDef<string>, channel: PositionChannel): {
    value: number;
    field?: undefined;
    test: string;
} | {
    field: {
        group: string;
    };
    value?: undefined;
    test: string;
};
export declare function fieldInvalidPredicate(field: FieldName | FieldDef<string>, invalid?: boolean): string;
export declare function fieldRef(fieldDef: FieldDefBase<string>, scaleName: string, opt: FieldRefOption, encode: {
    offset?: number | VgValueRef;
    band?: number | boolean;
}): VgValueRef;
/**
 * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.
 */
export declare function interpolatedSignalRef({ scaleName, fieldDef, fieldDef2, offset, startSuffix, band }: {
    scaleName: string;
    fieldDef: TypedFieldDef<string>;
    fieldDef2?: SecondaryFieldDef<string>;
    startSuffix?: string;
    offset: number;
    band: number;
}): {
    offset: number;
    scale: string;
    field: string;
} | {
    scale: string;
    field: string;
} | {
    offset: number;
    signal: string;
} | {
    signal: string;
};
export interface MidPointParams {
    channel: Channel;
    channelDef: ChannelDef;
    channel2Def?: ChannelDef<SecondaryFieldDef<string>>;
    markDef: MarkDef<Mark>;
    config: Config;
    scaleName: string;
    scale: ScaleComponent;
    stack?: StackProperties;
    offset?: number;
    defaultRef: VgValueRef | (() => VgValueRef);
}
/**
 * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.
 */
export declare function midPoint({ channel, channelDef, channel2Def, markDef, config, scaleName, scale, stack, offset, defaultRef }: MidPointParams): VgValueRef;
/**
 * Convert special "width" and "height" values in Vega-Lite into Vega value ref.
 */
export declare function widthHeightValueRef(channel: Channel, value: ValueOrGradientOrText | SignalRef): import("vega-typings/types").SignalRef | {
    value: ValueOrGradientOrText;
} | {
    field: {
        group: string;
    };
};
//# sourceMappingURL=valueref.d.ts.map