import { Simulation } from '../../simulation/simulation';
import { ActionType } from './action-type';
import { Buff } from '../buff.enum';
import { CraftingAction } from './crafting-action';
export declare abstract class BuffAction extends CraftingAction {
    getType(): ActionType;
    abstract getDuration(simulation: Simulation): number;
    canBeClipped(): boolean;
    execute(simulation: Simulation): void;
    _canBeUsed(simulationState: Simulation): boolean;
    getDurabilityCost(simulationState: Simulation): number;
    _getSuccessRate(simulationState: Simulation): number;
    skipOnFail(): boolean;
    /**
     * Override this method if the buff overrides other buffs (steady hands for instance).
     * Don't forget to add super.getOverrides() to the array you'll return
     * @returns {Buff | null}
     */
    getOverrides(): Buff[];
    abstract getBuff(): Buff;
    abstract getInitialStacks(): number;
    protected abstract getTick(): ((simulation: Simulation, linear?: boolean, action?: CraftingAction) => void) | undefined;
    protected getOnExpire(): ((simulation: Simulation, linear?: boolean) => void) | undefined;
    private getAppliedBuff;
}
