import { GridEasingFunctionType_$type } from "./GridEasingFunctionType";
import { GridAnimationPhaseSettings as GridAnimationPhaseSettings_internal } from "./GridAnimationPhaseSettings";
import { ensureBool, ensureEnum } from "igniteui-webcomponents-core";
/**
 * This class is used to group the settings to define an animation phase.
*/
export class IgcGridAnimationPhaseSettings {
    createImplementation() {
        return new GridAnimationPhaseSettings_internal();
    }
    /**
     * @hidden
     */
    get i() {
        return this._implementation;
    }
    onImplementationCreated() {
    }
    constructor() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    _provideImplementation(i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    /**
     * The duration of an animation, in milliseconds
    */
    get durationMilliseconds() {
        return this.i.l;
    }
    set durationMilliseconds(v) {
        this.i.l = +v;
    }
    /**
     * The amount of time to delay an animation, in milliseconds.
    */
    get holdInitialMilliseconds() {
        return this.i.m;
    }
    set holdInitialMilliseconds(v) {
        this.i.m = +v;
    }
    /**
     * The amount of time to delay each item animating, in milliseconds
    */
    get perItemDelayMilliseconds() {
        return this.i.n;
    }
    set perItemDelayMilliseconds(v) {
        this.i.n = +v;
    }
    /**
     * The amount of time each item animating should take, in milliseconds
    */
    get subItemDurationMilliseconds() {
        return this.i.o;
    }
    set subItemDurationMilliseconds(v) {
        this.i.o = +v;
    }
    /**
     * The desired amount of time each item animating should take, in milliseconds
    */
    get desiredSubItemDurationMilliseconds() {
        return this.i.k;
    }
    set desiredSubItemDurationMilliseconds(v) {
        this.i.k = +v;
    }
    /**
     * Configures whether all items animating should finish simultaneously
    */
    get shouldItemsFinishSimultaneously() {
        return this.i.e;
    }
    set shouldItemsFinishSimultaneously(v) {
        this.i.e = ensureBool(v);
    }
    /**
     * Configures the Easing function used to animate the individual items
    */
    get easingFunctionType() {
        return this.i.c;
    }
    set easingFunctionType(v) {
        this.i.c = ensureEnum(GridEasingFunctionType_$type, v);
    }
    findByName(name) {
        return null;
    }
}
//# sourceMappingURL=igc-grid-animation-phase-settings.js.map
