import { Nullable } from '@moonlightjs/common';
export declare class CollationTypeInfo {
    singularName: string;
    pluralName: string;
    displayName: string;
    description: string;
}
export declare class CollationTypeOptions {
    draftAndPublish: boolean;
    softDelete: boolean;
}
export type CollationTypeAttributeTypeCommon = 'string' | 'text' | 'password' | 'richtext' | 'integer' | 'bigint' | 'float' | 'decimal' | 'enumeration' | 'date' | 'datetime' | 'time' | 'boolean' | 'json';
export type CollationTypeAttributeTypeRelation = 'relation';
export type CollationTypeAttributeTypeMedia = 'media';
export type CollationTypeAttributeType = CollationTypeAttributeTypeCommon | CollationTypeAttributeTypeRelation | CollationTypeAttributeTypeMedia;
export declare class CollationTypeAttributeBase {
    type: CollationTypeAttributeType;
    required: boolean;
    unique: boolean;
    configurable: boolean;
    writable: boolean;
    visible: boolean;
    private: boolean;
}
export declare class CollationTypeAttributeCommonBase extends CollationTypeAttributeBase {
    type: CollationTypeAttributeTypeCommon;
    default: any;
}
export declare class CollationTypeAttributeString extends CollationTypeAttributeCommonBase {
    regex?: Nullable<string>;
    minLength: number;
    maxLength: number;
    default: string;
}
export declare class CollationTypeAttributeNumber extends CollationTypeAttributeCommonBase {
    min?: Nullable<number>;
    max?: Nullable<number>;
    default: number;
}
export declare class CollationTypeAttributeDecimal extends CollationTypeAttributeCommonBase {
    min: number;
    max: number;
    precision: number;
    scale: number;
    default: number;
}
export declare class CollationTypeAttributeBoolean extends CollationTypeAttributeCommonBase {
    default: boolean;
}
export declare class CollationTypeAttributeEnumeration extends CollationTypeAttributeCommonBase {
    enum: string[];
    default: string;
}
export declare class CollationTypeAttributeDate extends CollationTypeAttributeCommonBase {
    default: string;
}
export type CollationTypeAttributeCommon = CollationTypeAttributeString | CollationTypeAttributeNumber | CollationTypeAttributeDecimal | CollationTypeAttributeBoolean | CollationTypeAttributeEnumeration;
export type RelationType = 'oneToOne' | 'manyToOne' | 'oneToMany' | 'manyToMany';
export declare class CollationTypeAttributeRelationBase extends CollationTypeAttributeBase {
    type: CollationTypeAttributeTypeRelation;
    relation: RelationType;
    target: string;
    targetAttribute: string;
}
export declare class CollationTypeAttributeRelationInverse extends CollationTypeAttributeRelationBase {
    inversedBy: string;
}
export declare class CollationTypeAttributeRelationMapped extends CollationTypeAttributeRelationBase {
    mappedBy: string;
}
export type CollationTypeAttributeRelation = CollationTypeAttributeRelationInverse | CollationTypeAttributeRelationMapped;
export declare enum AllowedTypeEnum {
    'images' = 0,
    'files' = 1,
    'videos' = 2,
    'audios' = 3
}
export declare class CollationTypeAttributeMediaBase extends CollationTypeAttributeBase {
    type: CollationTypeAttributeTypeMedia;
    multiple: boolean;
    allowedTypes: AllowedTypeEnum[];
}
export type CollationTypeAttribute = CollationTypeAttributeCommon | CollationTypeAttributeRelation | CollationTypeAttributeMediaBase;
export declare class CollationType {
    uid: string;
    collectionName: string;
    info: CollationTypeInfo;
    options: CollationTypeOptions;
    attributes: Record<string, CollationTypeAttribute>;
}
