import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs'; import { PartialObserver } from 'rxjs/Observer'; import { Command, ObservableOrValue } from './Interfaces'; export declare type ExecutionAction = (parameter: any) => ObservableOrValue; export declare type InterrogationAction = (condition: T, parameter?: any) => boolean; export declare class ObservableCommand extends Subscription implements Command { protected readonly executeAction: ExecutionAction; protected readonly interrogationAction: InterrogationAction; private condition; private initialCondition; static coerceCondition(condition: T): boolean; protected isExecutingSubject: BehaviorSubject; protected conditionSubject: BehaviorSubject; protected canExecuteSubject: BehaviorSubject; protected requestsSubject: Subject; protected resultsSubject: Subject; protected thrownErrorsSubject: Subject; constructor(executeAction: ExecutionAction, interrogationAction?: InterrogationAction, condition?: Observable | undefined, initialCondition?: TCondition | undefined); readonly isExecutingObservable: Observable; readonly isExecuting: boolean; readonly conditionObservable: Observable; readonly canExecuteObservable: Observable; readonly conditionValue: TCondition | undefined; readonly canExecute: boolean; isCommand(): boolean; canExecuteFor(parameter: any): boolean; observeExecution(parameter?: any): Observable; execute(parameter?: any, observer?: PartialObserver): Subscription; execute(parameter?: any, next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription; readonly requests: Observable; readonly results: Observable; readonly thrownErrors: Observable; } export declare function command(): Command; export declare function command(execute: ExecutionAction): Command; export declare function command(canExecute: Observable, execute?: ExecutionAction): Command; export declare function command(execute: ExecutionAction, canExecute: Observable): Command; export declare function command(execute: ExecutionAction, condition: Observable, interrogation: InterrogationAction, initialCondition?: TCondition): Command;