import * as types from "./basic_types"

export type AudioAttenuationModel =
    | "NO_ATTENUATION"
    | "INVERSE_DISTANCE"
    | "LINEAR_DISTANCE"
    | "EXPONENTIAL_DISTANCE";

export type AvatarSkeleton =
    | "UNKNOWN"
    | "SKG_DEFAULT"
    | "SKG_RPM_MALE"
    | "SKG_RPM_FEMALE";

export type CollectibleType =
    | "GEM"
    | "INCREMENT_TIME"
    | "DECREMENT_TIME"
    | "MANDATORY";

export type EasingType =
    | "LINEAR"
    | "EASE_IN_OUT_ELASTIC"
    | "EASE_OUT_BACK"
    | "EASE_OUT_ELASTIC"
    | "EASE_IN_QUAD"
    | "EASE_OUT_QUAD"
    | "EASE_IN_OUT_QUAD"
    | "EASE_IN_CUBIC"
    | "EASE_OUT_CUBIC"
    | "EASE_IN_OUT_CUBIC"
    | "EASE_OUT_EXPO"
    | "EASE_STEP_HOLD_PREV"
    | "EASE_STEP_HOLD_NEXT";

export type KeyframeAnimatedState =
    | "PLAYING"
    | "PAUSED";

export type KeyframeAnimatedBeforeStartBehavior =
    | "SPAWN_VALUES"
    | "FIRST_KEYFRAME"
    | "DO_NOT_SET";

export type KeyframeAnimatedAfterEndBehavior =
    | "LAST_KEYFRAME"
    | "DO_NOT_SET";

export type LogicGateType =
    | "UNDEFINED"
    | "OR"
    | "AND"
    | "NOT";

export type ParticleBlendMode =
    | "ALPHA_BLEND"
    | "ADDITIVE"
    | "DITHER";

export type ParticleCollisionMode =
    | "NONE"
    | "BOUNCE"
    | "DIE";

export type ParticleBillboardAlignMode =
    | "VIEW"
    | "VIEW_Y"
    | "VIEW_Y_ALIGNED";

export type ParticleEmitterShape =
    | "BOX"
    | "SPHERE"
    | "SPHERE_SURFACE"
    | "MESH"
    | "MESH_VERTS";

export type LoopBehaviour =
    | "RESTART"
    | "REVERSE";

export type RenderOverlayAxis =
    | "X"
    | "Y"
    | "Z";

export type RenderOverlayLayer = {
    texture?: string;
    metallic?: number;
    roughness?: number;
    axis?: RenderOverlayAxis;
    negateAxis?: boolean;
    scale?: number;
    sharpness?: number;
    smoothNormal?: number;
}

export type VisibleInPlayOnlyType =
    | "PLAY_ONLY"
    | "CREATE_ONLY";

export type ObjectReferenceType =
    | "UNDEFINED"
    | "PREFAB_INDEX"
    | "OBJECT_ID";

export type ObjectReference = {
    type?: ObjectReferenceType;
    prefabIndex?: number;
    objectID?: number;
}

export type PrefabSpawnerSpawnRule =
    | "START_WHEN_EMPTY"
    | "CONTINOUS"
    | "SPAWN_ONCE";

export type PrefabSpawnerIntervalRule =
    | "DEFAULT"
    | "RANDOMIZE";

export type PrefabSpawnAmountRule =
    | "DEFAULT"
    | "RANDOMIZE";

export type AdProvider =
    | "UNKNOWN"
    | "PRECISIONX";

