import { Uuid } from "../index";
export interface DocumentLayout {
    idDocumentLayout?: Uuid | null;
    context: string;
    name: string;
    code: string;
    description: string;
    asyncData: LayoutAsyncData[];
    styles: LayoutStyle;
    sections: LayoutSection[];
    format: LayoutFormat;
}
export interface LayoutFormat {
    maxPages?: number;
    margin?: {
        top?: number;
        bottom?: number;
        left?: number;
        right?: number;
    };
    size?: 'A4' | 'A5' | 'A6' | 'Letter' | 'Legal';
}
export interface LayoutSection {
    idDocumentLayout?: Uuid | null;
    idDocLaySection?: Uuid | null;
    type: LayoutSectionType;
    asyncData: LayoutAsyncData[];
    styles: LayoutStyle;
    content: any;
}
export declare enum TextLineType {
    TITLE = "title",
    SUBTITLE = "subtitle",
    PARAGRAPH = "paragraph"
}
export interface TextLine {
    type: TextLineType;
    text: string;
    align?: Align;
    styles?: Record<string, string>;
    /** Campo que permite que una linea de texto se genere a partir de un valor de tipo Array */
    sourceCollection?: string;
}
export interface TextContent {
    lines: TextLine[];
}
export interface LayoutSectionText extends LayoutSection {
    type: LayoutSectionType.TEXT;
    content: TextContent;
}
export interface TableContent {
    columns: TableColumn[];
    rowsKey: string;
}
export interface LayoutSectionTable extends LayoutSection {
    type: LayoutSectionType.TABLE;
    content: TableContent;
}
export interface CardsGridContent {
    cards: Card[];
}
export interface LayoutSectionCardsGrid extends LayoutSection {
    type: LayoutSectionType.CARDS_GRID;
    content: CardsGridContent;
}
export interface LayoutSectionSignature extends LayoutSection {
    type: LayoutSectionType.SIGNATURE;
    content: SignatureContent;
}
export interface LayoutSectionRadioButtons extends LayoutSection {
    type: LayoutSectionType.RADIO_BUTTONS;
    content: LayoutSectionRadioButtonsContent;
}
export interface LayoutSectionRadioButtonsContent {
    options?: any[];
}
/**
 * value corresponde al valor de la firma cuando está en modo singable: true.
 */
export interface SignatureContent {
    width?: string;
    height?: string;
    signable?: boolean;
    value?: string;
}
export interface ImageContent {
    src: string;
    alt?: string;
    align?: Align;
    width?: string;
    height?: string;
}
export interface LayoutSectionImage extends LayoutSection {
    type: LayoutSectionType.IMAGE;
    content: ImageContent;
}
export declare enum LayoutSectionType {
    TEXT = "text",
    TABLE = "table",
    CARDS_GRID = "cards-grid",
    IMAGE = "image",
    SIGNATURE = "signature",
    RADIO_BUTTONS = "radio_buttons"
}
export declare const LAYOUT_SECTION_TYPES: readonly [LayoutSectionType.TEXT, LayoutSectionType.CARDS_GRID, LayoutSectionType.TABLE, LayoutSectionType.IMAGE, LayoutSectionType.SIGNATURE, LayoutSectionType.RADIO_BUTTONS];
export interface TableColumn {
    header: string;
    key: string;
    width?: string | number;
    align?: Align;
    format?: string;
}
export interface Card {
    title?: string;
    subtitle?: string;
    fields: CardField[];
}
export interface CardField {
    label: string;
    value?: any;
    key?: string;
    format?: string;
}
export interface LayoutAsyncData {
    key: string;
    query: string;
    params: any;
    formatFn?: string;
}
export interface LayoutStyle {
    margins?: number[];
    background?: string;
    typography?: string;
    cssRaw?: string;
    [key: string]: any;
}
export interface LayoutData {
    global: any;
    [sectionId: Uuid]: any;
}
export type Align = 'left' | 'center' | 'right';
