import Signal from "@rbxts/lemon-signal";
import { BaseAction } from "./base-action";
import { type RawInput } from "./common";
export declare abstract class BaseStandardAction extends BaseAction {
    readonly activated: Signal<() => void>;
    readonly deactivated: Signal<() => void>;
    readonly isActive: boolean;
    protected activate(this: Writable<BaseStandardAction>): void;
    protected deactivate(this: Writable<BaseStandardAction>): void;
}
export declare abstract class StandardAction extends BaseStandardAction {
    readonly rawInputs: RawInput[];
    readonly inputQueueing: boolean;
    readonly cooldown: number;
    private lastPress;
    private lastRelease;
    private queuedPresses;
    private queuedReleases;
    constructor(...rawInputs: RawInput[]);
    /** @hidden */
    handleInput(input: InputObject, processed: boolean, isPress?: boolean): void;
    protected supportsInput(input: InputObject): boolean;
    protected rawInputMatches(rawInput: RawInput, input: InputObject): boolean;
}
export declare class StandardActionBuilder extends StandardAction {
    /** Sets the ID of the action */
    setID(this: Writable<StandardActionBuilder>, id: string | number): StandardActionBuilder;
    /** Sets whether the action is activated when gameProcessedEvent is true */
    setProcessed(this: Writable<StandardActionBuilder>, processed: boolean): StandardActionBuilder;
    /** Sets whether inputs pressed while cooldown is active are queued to be activated when the cooldown is over */
    setInputQueueing(this: Writable<StandardActionBuilder>, inputQueueing: boolean): StandardActionBuilder;
    /** Sets a time to wait between each activation of the action */
    setCooldown(this: Writable<StandardActionBuilder>, cooldown: number): StandardActionBuilder;
}
