import { ElementPosition, Signal, TNode } from '@tempots/dom';
import { ArrayController, Controller } from '../controller/controller';
export type ListInputPayload<T> = {
    list: ArrayController<T[]>;
    item: Controller<T>;
    position: ElementPosition;
    remove: () => void;
    move: (direction: MoveDirection) => void;
    canMove: (direction: MovableDirection) => Signal<boolean>;
    cannotMove: (direction: MovableDirection) => Signal<boolean>;
};
export type MoveDirection = 'up' | 'down' | 'first' | 'last';
export type MovableDirection = 'up' | 'down';
export declare function ListInput<T>(controller: ArrayController<T[]>, element: (payload: ListInputPayload<T>) => TNode, separator?: (pos: ElementPosition) => TNode): import("@tempots/dom").Renderable<import("@tempots/dom").DOMContext>;
