import { ButtonShape, ButtonView } from '@dvn/alaca/components/dvn-button/models';
import { ImagePosition, TitlePosition } from '@dvn/alaca/components/dvn-card-header/models';
import { ImagePlaceholderType, ImageShape } from '@dvn/alaca/components/dvn-image/models';
import { Scale, Tint } from '@dvn/alaca/theme';
import { BaseField } from '@dvn/core/doldurma/src/BaseField';
import { UIAction } from './actions';
import { DataModel } from './data-model';
export interface CardAction {
  name: string;
  label?: string;
  scale?: Scale;
  shape?: ButtonShape;
  tint?: Tint;
  view?: ButtonView;
  iconName?: string;
  buttonType?: 'button' | 'icon-button';
  componentTag?: string;
}
export interface CardConfig {
  header?: {
    title?: {
      fieldId: string;
      position?: TitlePosition;
    };
    cover?: {
      fieldId: string;
      placeholder?: string;
      size?: number;
      aspectRatio?: number;
    };
    image?: {
      fieldId: string;
      placeholderFieldId?: string;
      placeholderType?: ImagePlaceholderType;
      size?: number;
      shape?: ImageShape;
      position?: ImagePosition;
    };
    actions?: UIAction<CardAction>[];
    subtitleActions?: UIAction<CardAction>[];
  };
  body?: {
    fields: {
      fieldId?: string;
      fieldDisplay?: BaseField;
      customViewTag?: string;
      [key: string]: any;
    }[];
  };
  footer?: {
    actions?: UIAction<CardAction>[];
    customViewTag?: string;
  };
}
export interface CardItem {
  header: {
    title?: string;
    titlePosition?: TitlePosition;
    coverSrc?: string;
    coverPlaceholder?: string;
    coverAspectRatio?: number;
    coverSize?: number;
    imageSrc?: string;
    imageSize?: number;
    imageShape?: ImageShape;
    imagePlaceholderValue?: string;
    imagePlaceholderType?: 'source' | 'text';
    imagePosition?: ImagePosition;
    name?: string;
    actions?: UIAction<CardAction>[];
    subtitleActions?: UIAction<CardAction>[];
  };
  body: {
    fields: {
      customViewTag?: string;
      label: string;
      field: BaseField;
      value: any;
      meta: any;
    }[];
  };
  footer: {
    actions?: UIAction<CardAction>[];
    customViewTag?: string;
    customViewTagMeta?: any;
  };
}
export declare function generateCardItem(listConfig: CardConfig, fields: BaseField[], item: DataModel): CardItem;
