/**
 * Copyright (c) Adaptavist, Inc.
 */
import { GenericProps } from '../../utilities';
import { HTMLAttributes } from 'react';
export declare type ITransfer = Omit<HTMLAttributes<HTMLDivElement>, 'placeholder' | 'onChange'> & GenericProps & {
    /**
     * When provided, this will be displayed on the left column of the transfer. If the keys provided on the `selectedKeys` matches an of the data in the `dataSource`, they will be added to the right column
     */
    dataSource?: ITransferItem[];
    /**
     * Disable any action on both columns
     */
    disabled?: boolean;
    /**
     * The width specified will be applied to both transfer. To specify for each, provide the values in an array. e.g ['leftWidth', 'rightWidth']
     */
    width?: string | [string, string];
    /**
     * The height specified will be applied to both transfer. To specify for each, provide the values in an array. e.g ['leftHeight', 'rightHeight']
     */
    height?: string | [string, string];
    /**
     * The placeholder specified will be applied to both transfer. To specify for each, provide the values in an array. e.g ['leftPlaceholder', 'rightPlaceholder']
     */
    placeholder?: string | [string, string];
    headerTitle?: [string, string];
    /**
     * When provided, any item found in the `dataSource` will be displayed on the right column
     */
    rightColumnKeys?: string[];
    /**
     * A callback function which is executed when an item is elected on both columns
     */
    onSelectChange?: (props: IOnSelectChange) => void;
    /**
     * An executed callback function when an item is transferred from either column
     */
    onChange?: (props: IOnChange) => void;
    /**
     * Remove or keep search input field. Default is `true`
     */
    showSearch?: boolean;
    /**
     * Remove or keep count for selected items on the header. Default is `true`
     */
    showSelectedCount?: boolean;
    /**
     * Remove or keep select all checkbox on the header. Default is `true`
     */
    showSelectAll?: boolean;
    /**
     * Customized CSS class
     */
    className?: string;
    /**
     * Customized inline style
     */
    style?: React.CSSProperties;
};
export interface IOnChange {
    direction: 'left' | 'right';
    rightColumnKeys: string[];
    selectedKeys: string[];
}
export interface IOnSelectChange {
    leftColumnKeys: string[];
    rightColumnKeys: string[];
}
export interface ITransferItem {
    key: string;
    title: string;
    description?: string;
    disabled?: boolean;
}
export declare type ITransferSection = Omit<ITransfer, 'headerTitle' | 'width' | 'height'> & GenericProps & {
    width?: string;
    height?: string;
    headerTitle: string;
    placeholder: string;
    selectedKeys: string[];
    onTransferChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
    onSelectAll: (event: React.ChangeEvent<HTMLInputElement>) => void;
    testId: string;
};
