import { EntityEidType, BasicInfoAtomType, TransformAtomType, AssetAtomType, VisibleAtomType, EntityFlagAtomType, EntityOutlinerAtomType } from '../data-type';
import { MaterialAtomType } from './material';
/**
 * @interface SkeletalType
 * @extends EntityEidType,Partial<BasicInfoAtomType>,Partial<TransformAtomType>,Partial<VisibleAtomType>,Partial<MaterialAtomType>,Partial<AssetAtomType>,Partial<SkeletalMeshAtomType>,Partial<EntityFlagAtomType>
 */
export interface SkeletalType extends EntityEidType, Partial<BasicInfoAtomType>, Partial<TransformAtomType>, Partial<VisibleAtomType>, Partial<MaterialAtomType>, Partial<AssetAtomType>, Partial<SkeletalMeshAtomType>, Partial<EntityFlagAtomType>, Partial<EntityOutlinerAtomType> {
}
/**
 * @interface IPlayInterval
 * @param {number} min
 * @param {number} max
 */
interface IPlayInterval {
    min: number;
    max: number;
}
/**
 * @interface SkeletalMeshAtomType
 * @param {number} animSequenceIndex
 * @param {boolean} bPause
 * @param {boolean} bLoop
 * @param {number} playRate
 * @param {IPlayInterval} playInterval
 * @param {Array<string>} animSequences
 */
export interface SkeletalMeshAtomType {
    animSequenceIndex: number;
    bPause: boolean;
    bLoop: boolean;
    playRate: number;
    playInterval: IPlayInterval;
    animSequences: Array<string>;
}
/**
 * @interface IGenerate
 * @param {Partial<SkeletalMeshAtomType>} SkeletalMeshAtom (optional)
 * @param {Partial<AssetAtomType>} AssetAtom (optional)
 * @param {Partial<BasicInfoAtomType>} BasicInfoAtom (optional)
 * @param {Partial<TransformAtomType>} TransformAtom (optional)
 * @param {Partial<MaterialAtomType>} MaterialAtom (optional)
 * @param {Partial<VisibleAtomType>} VisibleAtom (optional)
 * @param {Partial<EntityFlagAtomType>} EntityFlagAtom (optional)
 * @param {Partial<IExtraQueryInfo>} extraQueryInfo (optional)
 * @param {Partial<IOperations>} operations (optional)
 */
export interface IGenerate {
    SkeletalMeshAtom?: Partial<SkeletalMeshAtomType>;
    AssetAtom?: Partial<AssetAtomType>;
    BasicInfoAtom?: Partial<BasicInfoAtomType>;
    TransformAtom?: Partial<TransformAtomType>;
    MaterialAtom?: Partial<MaterialAtomType>;
    VisibleAtom?: Partial<VisibleAtomType>;
    EntityFlagAtom?: Partial<EntityFlagAtomType>;
    EntityOutlinerAtom?: Partial<EntityOutlinerAtomType>;
    extraQueryInfo?: Partial<IExtraQueryInfo>;
    operations?: Partial<IOperations>;
}
/**
 * @interface IOperations
 * @param {number} setPlayPosition
 */
export interface IOperations {
    setPlayPosition: number;
}
/**
 * @interface IExtraQueryInfo
 * @param {Record<string, any>} animSequenceLength
 */
export interface IExtraQueryInfo {
    animSequenceLength: Record<string, any>;
}
export {};
