import * as coreHttp from '@azure/core-http';

export declare class MonitoringClient extends MonitoringClientContext {
    /**
     * Initializes a new instance of the MonitoringClient class.
     * @param credentials - Subscription credentials which uniquely identify client subscription.
     * @param endpoint - The workspace development endpoint, for example
     *                 https://myworkspace.dev.azuresynapse.net.
     * @param options - The parameter options
     */
    constructor(credentials: coreHttp.TokenCredential | coreHttp.ServiceClientCredentials, endpoint: string, options?: MonitoringClientOptionalParams);
    monitoring: MonitoringOperation;
}

export declare class MonitoringClientContext extends coreHttp.ServiceClient {
    endpoint: string;
    apiVersion: string;
    /**
     * Initializes a new instance of the MonitoringClientContext class.
     * @param credentials - Subscription credentials which uniquely identify client subscription.
     * @param endpoint - The workspace development endpoint, for example
     *                 https://myworkspace.dev.azuresynapse.net.
     * @param options - The parameter options
     */
    constructor(credentials: coreHttp.TokenCredential | coreHttp.ServiceClientCredentials, endpoint: string, options?: MonitoringClientOptionalParams);
}

/** Optional parameters. */
export declare interface MonitoringClientOptionalParams extends coreHttp.ServiceClientOptions {
    /** Api Version */
    apiVersion?: string;
    /** Overrides client endpoint. */
    endpoint?: string;
}

/** Optional parameters. */
export declare interface MonitoringGetSparkJobListOptionalParams extends coreHttp.OperationOptions {
    /** Can provide a guid, which is helpful for debugging and to provide better customer support */
    xMsClientRequestId?: string;
}

/** Contains response data for the getSparkJobList operation. */
export declare type MonitoringGetSparkJobListResponse = SparkJobListViewResponse & {
    /** The underlying HTTP response. */
    _response: coreHttp.HttpResponse & {
        /** The response body as text (string format) */
        bodyAsText: string;
        /** The response body as parsed JSON or XML */
        parsedBody: SparkJobListViewResponse;
    };
};

/** Optional parameters. */
export declare interface MonitoringGetSqlJobQueryStringOptionalParams extends coreHttp.OperationOptions {
    /** Can provide a guid, which is helpful for debugging and to provide better customer support */
    xMsClientRequestId?: string;
    filter?: string;
    orderby?: string;
    skip?: string;
}

/** Contains response data for the getSqlJobQueryString operation. */
export declare type MonitoringGetSqlJobQueryStringResponse = SqlQueryStringDataModel & {
    /** The underlying HTTP response. */
    _response: coreHttp.HttpResponse & {
        /** The response body as text (string format) */
        bodyAsText: string;
        /** The response body as parsed JSON or XML */
        parsedBody: SqlQueryStringDataModel;
    };
};

/** Class representing a Monitoring. */
export declare class MonitoringOperation {
    private readonly client;
    /**
     * Initialize a new instance of the class Monitoring class.
     * @param client - Reference to the service client
     */
    constructor(client: MonitoringClient);
    /**
     * Get list of spark applications for the workspace.
     * @param options - The options parameters.
     */
    getSparkJobList(options?: MonitoringGetSparkJobListOptionalParams): Promise<MonitoringGetSparkJobListResponse>;
    /**
     * Get SQL OD/DW Query for the workspace.
     * @param options - The options parameters.
     */
    getSqlJobQueryString(options?: MonitoringGetSqlJobQueryStringOptionalParams): Promise<MonitoringGetSqlJobQueryStringResponse>;
}

export declare interface SparkJob {
    state?: string;
    name?: string;
    submitter?: string;
    compute?: string;
    sparkApplicationId?: string;
    livyId?: string;
    timing?: string[];
    sparkJobDefinition?: string | null;
    pipeline?: SparkJob[] | null;
    jobType?: string;
    submitTime?: Date | null;
    endTime?: Date | null;
    queuedDuration?: string;
    runningDuration?: string;
    totalDuration?: string;
}

export declare interface SparkJobListViewResponse {
    nJobs?: number;
    sparkJobs?: SparkJob[] | null;
}

export declare interface SqlQueryStringDataModel {
    query?: string;
}

export { }
