/** @module @airtable/blocks/models: Record Coloring */ /** */
import { ObjectValues } from '../private_utils';
import Field from './field';
import View from './view';
/**
 * An enum of the different types of {@link recordColoring.modes}
 *
 * @hidden
 * @alias recordColoring.ModeTypes
 */
export declare const ModeTypes: {
    /**
     * @alias recordColoring.ModeTypes.NONE
     */
    NONE: "none";
    /**
     * @alias recordColoring.ModeTypes.BY_SELECT_FIELD
     */
    BY_SELECT_FIELD: "bySelectField";
    /**
     * @alias recordColoring.ModeTypes.BY_VIEW
     */
    BY_VIEW: "byView";
};
/**
 * @hidden
 */
export declare type RecordColorModeType = ObjectValues<typeof ModeTypes>;
/** */
interface NoRecordColorMode {
    /** */
    type: typeof ModeTypes.NONE;
}
/** */
interface BySelectFieldRecordColorMode {
    /** */
    type: typeof ModeTypes.BY_SELECT_FIELD;
    /** */
    selectField: Field;
}
/** */
interface ByViewRecordColorMode {
    /** */
    type: typeof ModeTypes.BY_VIEW;
    /** */
    view: View;
}
/** */
export declare type RecordColorMode = NoRecordColorMode | BySelectFieldRecordColorMode | ByViewRecordColorMode;
export declare const serialize: (mode: RecordColorMode) => string;
/**
 * Record coloring config creators.
 *
 * @alias recordColoring.modes
 * @example
 * ```js
 * import {recordColoring} from '@airtable/blocks/models';
 * import {useRecords} from '@airtable/blocks/ui';
 *
 * // no record coloring:
 * const recordColorMode = recordColoring.modes.none();
 * // color by select field:
 * const recordColorMode = recordColoring.modes.bySelectField(someSelectField);
 * // color from view:
 * const recordColorMode = recordColoring.modes.byView(someView);
 *
 * // with useRecords:
 * const queryResult = useRecords(table, { recordColorMode })
 *
 * // with a query result:
 * const queryResult = table.selectRecords({ recordColorMode });
 * ```
 */
export declare const modes: {
    /**
     * Returns a {@link RecordColorMode} that represents no record coloring.
     *
     * @alias recordColoring.modes.none
     */
    none(): NoRecordColorMode;
    /**
     * Returns a {@link RecordColorMode} that colors records by the specified Select field.
     *
     * @alias recordColoring.modes.bySelectField
     * @param selectField
     */
    bySelectField(selectField: Field): BySelectFieldRecordColorMode;
    /**
     * Returns a {@link RecordColorMode} that colors records by the specified View.
     *
     * @alias recordColoring.modes.byView
     * @param view
     */
    byView(view: View): ByViewRecordColorMode;
};
export {};
