import { EntityEidType, BasicInfoAtomType, TransformAtomType, VisibleAtomType, ICoordinates, EntityFlagAtomType, EntityOutlinerAtomType } from '../data-type';
/**
 * @interface IAttributes
 * @param {number} cornerRadius
 * @param {number} cornerSplitNum
 * @param {number} baseWidth
 * @param {number} sideWidthScale
 */
export interface IAttributes {
    cornerRadius: number;
    cornerSplitNum: number;
    baseWidth: number;
    sideWidthScale: number;
}
/**
 * @interface ModelerEmbankPolylineAtomType
 * @param {Array<IAttributes>} attributes
 * @param {ICoordinates} coordinates
 * @param {boolean} bClosed
 */
export interface ModelerEmbankPolylineAtomType {
    attributes: Array<IAttributes>;
    coordinates: ICoordinates;
    bClosed: boolean;
}
/**
 * @interface ModelerEmbankAtomType
 * @param {string} baseType
 * @param {number} baseWidth
 * @param {number} baseHeight
 * @param {string} sideType
 * @param {number} sideWidth
 * @param {number} sideWidthScale
 * @param {boolean} bReverseSide
 * @param {boolean} bTwoSide
 * @param {string} fenceType
 * @param {number} fenceWidth
 * @param {number} fenceHeight
 * @param {number} fenceOffset
 * @param {number} cornerRadius
 * @param {number} cornerSplitNum
 * @param {boolean} bUseVertexCorner
 * @param {boolean} bUseVertexSideScale
 * @param {boolean} bUseVertexWidth
 */
export interface ModelerEmbankAtomType {
    baseType: string;
    baseWidth: number;
    baseHeight: number;
    sideType: string;
    sideWidth: number;
    sideWidthScale: number;
    bReverseSide: boolean;
    bTwoSide: boolean;
    fenceType: string;
    fenceWidth: number;
    fenceHeight: number;
    fenceOffset: number;
    cornerRadius: number;
    cornerSplitNum: number;
    bUseVertexCorner: boolean;
    bUseVertexSideScale: boolean;
    bUseVertexWidth: boolean;
}
/**
 * @interface ModelerEmbankType
 * @extends EntityEidType,Partial<BasicInfoAtomType>,Partial<TransformAtomType>,Partial<VisibleAtomType>,Partial<ModelerEmbankPolylineAtomType>,Partial<EntityFlagAtomType>
 * @param {Partial<ModelerEmbankAtomType>} modelerEmbankStyle (optional)
 */
export interface ModelerEmbankType extends EntityEidType, Partial<BasicInfoAtomType>, Partial<TransformAtomType>, Partial<VisibleAtomType>, Partial<ModelerEmbankPolylineAtomType>, Partial<EntityFlagAtomType>, Partial<EntityOutlinerAtomType> {
    modelerEmbankStyle?: Partial<ModelerEmbankAtomType>;
}
/**
 * @interface IGenerate
 * @param {Partial<ModelerEmbankAtomType>} ModelerEmbankAtom (optional)
 * @param {Partial<ModelerEmbankPolylineAtomType>} ModelerEmbankPolylineAtom (optional)
 * @param {Partial<BasicInfoAtomType>} BasicInfoAtom (optional)
 * @param {Partial<TransformAtomType>} TransformAtom (optional)
 * @param {Partial<VisibleAtomType>} VisibleAtom (optional)
 * @param {Partial<EntityFlagAtomType>} EntityFlagAtom (optional)
 */
export interface IGenerate {
    ModelerEmbankAtom?: Partial<ModelerEmbankAtomType>;
    ModelerEmbankPolylineAtom?: Partial<ModelerEmbankPolylineAtomType>;
    BasicInfoAtom?: Partial<BasicInfoAtomType>;
    TransformAtom?: Partial<TransformAtomType>;
    VisibleAtom?: Partial<VisibleAtomType>;
    EntityFlagAtom?: Partial<EntityFlagAtomType>;
    EntityOutlinerAtom?: Partial<EntityOutlinerAtomType>;
}
