import m from "mithril";
import { EnabledWidget, EnabledWidgetAtrrs, Vnode } from './Widget';
import { ViewResult } from './Widget';
import { Stateful } from "./support/State";
export interface OptionClick {
    (buttonIndex: number, newValue: number, states: number[]): void;
}
export interface OptionButtonsAttrs extends EnabledWidgetAtrrs {
    onclick: OptionClick;
    initial?: number | number[];
    transition?: Transitions;
    remoteSet?: (r: RemoteSet) => void;
}
export interface RemoteSet {
    (buttonIndex: number, newValue: number): void;
}
export interface Transitions {
    (buttonIndex: number, newValue: number, states: Stateful[]): number[];
}
export declare class OptionButtons extends EnabledWidget {
    static transitions: {
        [name: string]: Transitions;
    };
    stateAccess: Stateful[];
    setAccessFn: (stateful: Stateful, buttonIndex: number) => void;
    onclick: OptionClick;
    transition: Transitions;
    setButton(buttonIndex: number, newValue: number): void;
    oninit(node: Vnode<OptionButtonsAttrs, this>): void;
    view(node: Vnode<OptionButtonsAttrs, this>): ViewResult;
}
export interface RadioButtonsAttrs extends OptionButtonsAttrs {
}
export declare class RadioButtons extends OptionButtons {
    oninit(node: Vnode<RadioButtonsAttrs, this>): void;
    view(node: Vnode<RadioButtonsAttrs, this>): string | number | boolean | void | m.Vnode<any, any> | m.ChildArray;
}
export interface IconbuttonsAttrs extends EnabledWidgetAtrrs {
    onclick: (buttonIndex: number, newValue: number, states: number[]) => void;
    radioMode: boolean;
}
export declare class IconButtons extends EnabledWidget {
    view(node: Vnode<IconbuttonsAttrs, this>): ViewResult;
}
