// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import { APIResource } from '../../../resource';
import * as DestinationsAPI from './destinations';
import {
  DestinationCreateParams,
  DestinationCreateResponse,
  DestinationDeleteParams,
  DestinationDeleteResponse,
  DestinationListParams,
  DestinationListResponse,
  DestinationListResponsesSinglePage,
  DestinationUpdateParams,
  DestinationUpdateResponse,
  Destinations,
} from './destinations';
import * as QueriesAPI from './queries';
import {
  Queries,
  QueryCreateParams,
  QueryCreateResponse,
  QueryListParams,
  QueryListResponse,
  QueryListResponsesSinglePage,
} from './queries';
import * as SharedQueriesAPI from './shared-queries';
import {
  SharedQueries,
  SharedQueryCreateParams,
  SharedQueryCreateResponse,
  SharedQueryGetParams,
  SharedQueryGetResponse,
} from './shared-queries';
import * as TelemetryAPI from './telemetry';
import {
  Telemetry,
  TelemetryKeysParams,
  TelemetryKeysResponse,
  TelemetryKeysResponsesSinglePage,
  TelemetryLiveTailHeartbeatParams,
  TelemetryLiveTailHeartbeatResponse,
  TelemetryLiveTailParams,
  TelemetryLiveTailResponse,
  TelemetryQueryParams,
  TelemetryQueryResponse,
  TelemetryValuesParams,
  TelemetryValuesResponse,
  TelemetryValuesResponsesSinglePage,
} from './telemetry';

export class Observability extends APIResource {
  telemetry: TelemetryAPI.Telemetry = new TelemetryAPI.Telemetry(this._client);
  destinations: DestinationsAPI.Destinations = new DestinationsAPI.Destinations(this._client);
  queries: QueriesAPI.Queries = new QueriesAPI.Queries(this._client);
  sharedQueries: SharedQueriesAPI.SharedQueries = new SharedQueriesAPI.SharedQueries(this._client);
}

Observability.Telemetry = Telemetry;
Observability.TelemetryKeysResponsesSinglePage = TelemetryKeysResponsesSinglePage;
Observability.TelemetryValuesResponsesSinglePage = TelemetryValuesResponsesSinglePage;
Observability.Destinations = Destinations;
Observability.DestinationListResponsesSinglePage = DestinationListResponsesSinglePage;
Observability.Queries = Queries;
Observability.QueryListResponsesSinglePage = QueryListResponsesSinglePage;
Observability.SharedQueries = SharedQueries;

export declare namespace Observability {
  export {
    Telemetry as Telemetry,
    type TelemetryKeysResponse as TelemetryKeysResponse,
    type TelemetryLiveTailResponse as TelemetryLiveTailResponse,
    type TelemetryLiveTailHeartbeatResponse as TelemetryLiveTailHeartbeatResponse,
    type TelemetryQueryResponse as TelemetryQueryResponse,
    type TelemetryValuesResponse as TelemetryValuesResponse,
    TelemetryKeysResponsesSinglePage as TelemetryKeysResponsesSinglePage,
    TelemetryValuesResponsesSinglePage as TelemetryValuesResponsesSinglePage,
    type TelemetryKeysParams as TelemetryKeysParams,
    type TelemetryLiveTailParams as TelemetryLiveTailParams,
    type TelemetryLiveTailHeartbeatParams as TelemetryLiveTailHeartbeatParams,
    type TelemetryQueryParams as TelemetryQueryParams,
    type TelemetryValuesParams as TelemetryValuesParams,
  };

  export {
    Destinations as Destinations,
    type DestinationCreateResponse as DestinationCreateResponse,
    type DestinationUpdateResponse as DestinationUpdateResponse,
    type DestinationListResponse as DestinationListResponse,
    type DestinationDeleteResponse as DestinationDeleteResponse,
    DestinationListResponsesSinglePage as DestinationListResponsesSinglePage,
    type DestinationCreateParams as DestinationCreateParams,
    type DestinationUpdateParams as DestinationUpdateParams,
    type DestinationListParams as DestinationListParams,
    type DestinationDeleteParams as DestinationDeleteParams,
  };

  export {
    Queries as Queries,
    type QueryCreateResponse as QueryCreateResponse,
    type QueryListResponse as QueryListResponse,
    QueryListResponsesSinglePage as QueryListResponsesSinglePage,
    type QueryCreateParams as QueryCreateParams,
    type QueryListParams as QueryListParams,
  };

  export {
    SharedQueries as SharedQueries,
    type SharedQueryCreateResponse as SharedQueryCreateResponse,
    type SharedQueryGetResponse as SharedQueryGetResponse,
    type SharedQueryCreateParams as SharedQueryCreateParams,
    type SharedQueryGetParams as SharedQueryGetParams,
  };
}
