import { AssetUpdatedEvent, ErrorResponse, RunnerEvent, TestPlanRunCompletedEvent, TestPlanRunStartEvent } from './DTOs';
import { ConnectionOptions, Subscription, SubscriptionOptions } from 'nats.ws';
import { BaseClient } from './BaseClient';
export interface RunnerLifetimeEvent {
    RunnerId: string;
    Subject: string;
    Discriminator: string;
}
export declare class SystemClient extends BaseClient {
    constructor(baseSubject: string, options: ConnectionOptions);
    /**
     * Subscribe to the lifetime event.
     * @param listener
     * @param {SubscriptionOptions} options
     * @returns {Subscription}
     */
    subscribeLifetimeEventListener(listener: (error: ErrorResponse | null, message: RunnerLifetimeEvent | null) => void, options?: SubscriptionOptions): Subscription;
    /**
     * Subscribe to the runner updated events for the given Runner ID.
     * Wildcard can be used to receive all runner updated events.
     * @param  {string} runnerId
     * @param  {(error:ErrorResponse|null,message:RunnerEvent|null)=>void} listener
     * @param  {SubscriptionOptions} options?
     */
    subscribeRunnerUpdatedEvents(runnerId: string, listener: (error: ErrorResponse | null, message: RunnerEvent | null) => void, options?: SubscriptionOptions): Subscription;
    /**
     * Subscribe to the test plan run start events for the given Runner and Run ID.
     * Wildcard can be used for the Runner or Run ID to receive all test plan run start events.
     * @param  {string} runnerId
     * @param  {string} runId
     * @param  {(error:ErrorResponse|null,message:TestStepRunStartEventArgs|null)=>void} listener
     * @param  {SubscriptionOptions} options?
     */
    subscribeTestPlanRunStartEventListener(runnerId: string, runId: string, listener: (error: ErrorResponse | null, message: TestPlanRunStartEvent | null) => void, options?: SubscriptionOptions): Subscription;
    /**
     * Subscribe to the test plan run completed events for the given Runner and Run ID.
     * Wildcard can be used for the Runner or Run ID to receive all test plan run completed events.
     * @param  {string} runnerId
     * @param  {string} runId
     * @param  {(error:ErrorResponse|null,message:TestStepRunStartEventArgs|null)=>void} listener
     * @param  {SubscriptionOptions} options?
     */
    subscribeTestPlanRunCompletedEventListener(runnerId: string, runId: string, listener: (error: ErrorResponse | null, message: TestPlanRunCompletedEvent | null) => void, options?: SubscriptionOptions): Subscription;
    /**
     * Subscribe to the asset update events for the given Runner ID.
     * Wildcard can be used to receive all asset update events.
     * @param  {string} runnerId
     * @param  {(error:ErrorResponse|null,message:AssetUpdatedEvent|null)=>void} listener
     * @param  {SubscriptionOptions} options?
     */
    subscribeAssetUpdatedEvents(runnerId: string, listener: (error: ErrorResponse | null, message: AssetUpdatedEvent | null) => void, options?: SubscriptionOptions): Subscription;
}
