import { AbstractControl } from "@angular/forms";
import { Observable } from "rxjs";
import { CommandCreator, ICommand } from "./command.model";
import { type Signal } from "@angular/core";
/** Determines whether the arg object is of type `Command`. */
export declare function isCommand(arg: unknown): arg is ICommand;
/** Determines whether the arg object is of type `CommandCreator`. */
export declare function isCommandCreator(arg: unknown): arg is CommandCreator;
export interface CanExecuteFormOptions {
    /** Determines whether to check for validity. (defaults: true) */
    validity?: boolean;
    /** Determines whether to check whether UI has been touched. (defaults: true) */
    dirty?: boolean;
}
/** Get can execute from form validity/pristine as an observable. */
export declare function canExecuteFromNgForm(form: AbstractControl, options?: CanExecuteFormOptions): Observable<boolean>;
/** Can executed based on valid/dirty signal inputs. */
export declare function canExecuteFromSignals(signals: {
    valid: Signal<boolean>;
    dirty: Signal<boolean>;
}, options?: CanExecuteFormOptions): Signal<boolean>;
