import { PluginObject } from 'vue';
import { ModulVue } from '../../utils/vue/vue';
export interface MRepeaterItem {
}
export interface MRepeaterOperations {
    canAdd: boolean;
    canDelete: boolean;
}
export interface MRepeaterItemProps<T = MRepeaterItem> {
    item: T;
    index: number;
}
export interface MRepeaterRowProps<T = MRepeaterItem> extends MRepeaterItemProps<T> {
    canDelete: boolean;
}
export interface MRepeaterRowListeners {
    onDelete(): void;
}
export declare class MRepeater extends ModulVue {
    readonly list: MRepeaterItem[];
    readonly addButtonLabel?: string;
    readonly deleteButtonLabel?: string;
    readonly emptyMessage?: string;
    readonly tag: string;
    readonly itemKey?: string;
    readonly operations: MRepeaterOperations;
    readonly minItemCount: number;
    readonly maxItemCount: number;
    mounted(): void;
    onAddBtnClick(): void;
    onDeleteBtnClick(index: number): void;
    getRowProps(item: MRepeaterItem, index: number): MRepeaterRowProps;
    getRowListeners(item: MRepeaterItem, index: number): MRepeaterRowListeners;
    getItemKey(item: MRepeaterItem, index: number): unknown | number;
    getItemProps(item: MRepeaterItem, index: number): MRepeaterItemProps;
    get addBtnLabel(): string;
    get deleteBtnLabel(): string;
    get canAdd(): boolean;
    get canDelete(): boolean;
    get itemTag(): string;
    get hasRowSlot(): boolean;
}
declare const RepeaterPlugin: PluginObject<any>;
export default RepeaterPlugin;
//# sourceMappingURL=repeater.d.ts.map