import { Schema, SchemaHandlers, SchemaParameters } from '../schema.js';
import { DeprecatedResult, ExpectedResult, ForwardResult, RedirectResult, TransferTo, Utils, ValidateResult } from '../types.js';
interface ChoiceInfo {
    value: ChoiceValue;
    deprecated?: boolean;
    redirect?: TransferTo;
    forward?: TransferTo;
    /** do not show this value in `expected` */
    hidden?: boolean;
}
type ChoiceValue = undefined | null | boolean | number | string;
interface ChoiceSchemaParameters extends SchemaParameters<ChoiceValue>, SchemaHandlers<ChoiceValue> {
    choices: Array<ChoiceValue | ChoiceInfo>;
}
export declare class ChoiceSchema extends Schema<ChoiceValue, ChoiceSchemaParameters> {
    private _choices;
    constructor(parameters: ChoiceSchemaParameters);
    expected({ descriptor }: Utils): ExpectedResult;
    validate(value: unknown): ValidateResult;
    deprecated(value: ChoiceValue): DeprecatedResult<ChoiceValue>;
    forward(value: ChoiceValue): ForwardResult<ChoiceValue>;
    redirect(value: ChoiceValue): RedirectResult<ChoiceValue>;
}
export {};
