// This file was auto-generated by Fern from our API Definition.

import type { BaseClientOptions } from "../../../../BaseClient.js";
import { type NormalizedClientOptionsWithAuth, normalizeClientOptionsWithAuth } from "../../../../BaseClient.js";
import { AdminsClient } from "../resources/admins/client/Client.js";
import { AiContentClient } from "../resources/aiContent/client/Client.js";
import { ArticlesClient } from "../resources/articles/client/Client.js";
import { AwayStatusReasonsClient } from "../resources/awayStatusReasons/client/Client.js";
import { BrandsClient } from "../resources/brands/client/Client.js";
import { CallsClient } from "../resources/calls/client/Client.js";
import { CompaniesClient } from "../resources/companies/client/Client.js";
import { ContactsClient } from "../resources/contacts/client/Client.js";
import { ConversationsClient } from "../resources/conversations/client/Client.js";
import { CustomChannelEventsClient } from "../resources/customChannelEvents/client/Client.js";
import { CustomObjectInstancesClient } from "../resources/customObjectInstances/client/Client.js";
import { DataAttributesClient } from "../resources/dataAttributes/client/Client.js";
import { DataEventsClient } from "../resources/dataEvents/client/Client.js";
import { DataExportClient } from "../resources/dataExport/client/Client.js";
import { EmailsClient } from "../resources/emails/client/Client.js";
import { ExportClient } from "../resources/export/client/Client.js";
import { HelpCenterClient } from "../resources/helpCenter/client/Client.js";
import { InternalArticlesClient } from "../resources/internalArticles/client/Client.js";
import { JobsClient } from "../resources/jobs/client/Client.js";
import { MacrosClient } from "../resources/macros/client/Client.js";
import { MessagesClient } from "../resources/messages/client/Client.js";
import { NewsClient } from "../resources/news/client/Client.js";
import { NotesClient } from "../resources/notes/client/Client.js";
import { SegmentsClient } from "../resources/segments/client/Client.js";
import { SubscriptionTypesClient } from "../resources/subscriptionTypes/client/Client.js";
import { SwitchClient } from "../resources/switch/client/Client.js";
import { TagsClient } from "../resources/tags/client/Client.js";
import { TeamsClient } from "../resources/teams/client/Client.js";
import { TicketStatesClient } from "../resources/ticketStates/client/Client.js";
import { TicketsClient } from "../resources/tickets/client/Client.js";
import { TicketTypeAttributesClient } from "../resources/ticketTypeAttributes/client/Client.js";
import { TicketTypesClient } from "../resources/ticketTypes/client/Client.js";
import { VisitorsClient } from "../resources/visitors/client/Client.js";
import { WorkflowsClient } from "../resources/workflows/client/Client.js";

export declare namespace UnstableClient {
    export interface Options extends BaseClientOptions {}
}

export class UnstableClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<UnstableClient.Options>;
    protected _admins: AdminsClient | undefined;
    protected _aiContent: AiContentClient | undefined;
    protected _articles: ArticlesClient | undefined;
    protected _awayStatusReasons: AwayStatusReasonsClient | undefined;
    protected _export: ExportClient | undefined;
    protected _helpCenter: HelpCenterClient | undefined;
    protected _internalArticles: InternalArticlesClient | undefined;
    protected _companies: CompaniesClient | undefined;
    protected _notes: NotesClient | undefined;
    protected _contacts: ContactsClient | undefined;
    protected _subscriptionTypes: SubscriptionTypesClient | undefined;
    protected _tags: TagsClient | undefined;
    protected _conversations: ConversationsClient | undefined;
    protected _customChannelEvents: CustomChannelEventsClient | undefined;
    protected _customObjectInstances: CustomObjectInstancesClient | undefined;
    protected _dataAttributes: DataAttributesClient | undefined;
    protected _dataEvents: DataEventsClient | undefined;
    protected _dataExport: DataExportClient | undefined;
    protected _workflows: WorkflowsClient | undefined;
    protected _jobs: JobsClient | undefined;
    protected _macros: MacrosClient | undefined;
    protected _messages: MessagesClient | undefined;
    protected _news: NewsClient | undefined;
    protected _segments: SegmentsClient | undefined;
    protected _switch: SwitchClient | undefined;
    protected _calls: CallsClient | undefined;
    protected _teams: TeamsClient | undefined;
    protected _ticketStates: TicketStatesClient | undefined;
    protected _ticketTypeAttributes: TicketTypeAttributesClient | undefined;
    protected _ticketTypes: TicketTypesClient | undefined;
    protected _tickets: TicketsClient | undefined;
    protected _visitors: VisitorsClient | undefined;
    protected _brands: BrandsClient | undefined;
    protected _emails: EmailsClient | undefined;

    constructor(options: UnstableClient.Options = {}) {
        this._options = normalizeClientOptionsWithAuth(options);
    }

    public get admins(): AdminsClient {
        return (this._admins ??= new AdminsClient(this._options));
    }

    public get aiContent(): AiContentClient {
        return (this._aiContent ??= new AiContentClient(this._options));
    }

    public get articles(): ArticlesClient {
        return (this._articles ??= new ArticlesClient(this._options));
    }

    public get awayStatusReasons(): AwayStatusReasonsClient {
        return (this._awayStatusReasons ??= new AwayStatusReasonsClient(this._options));
    }

    public get export(): ExportClient {
        return (this._export ??= new ExportClient(this._options));
    }

    public get helpCenter(): HelpCenterClient {
        return (this._helpCenter ??= new HelpCenterClient(this._options));
    }

    public get internalArticles(): InternalArticlesClient {
        return (this._internalArticles ??= new InternalArticlesClient(this._options));
    }

    public get companies(): CompaniesClient {
        return (this._companies ??= new CompaniesClient(this._options));
    }

    public get notes(): NotesClient {
        return (this._notes ??= new NotesClient(this._options));
    }

    public get contacts(): ContactsClient {
        return (this._contacts ??= new ContactsClient(this._options));
    }

    public get subscriptionTypes(): SubscriptionTypesClient {
        return (this._subscriptionTypes ??= new SubscriptionTypesClient(this._options));
    }

    public get tags(): TagsClient {
        return (this._tags ??= new TagsClient(this._options));
    }

    public get conversations(): ConversationsClient {
        return (this._conversations ??= new ConversationsClient(this._options));
    }

    public get customChannelEvents(): CustomChannelEventsClient {
        return (this._customChannelEvents ??= new CustomChannelEventsClient(this._options));
    }

    public get customObjectInstances(): CustomObjectInstancesClient {
        return (this._customObjectInstances ??= new CustomObjectInstancesClient(this._options));
    }

    public get dataAttributes(): DataAttributesClient {
        return (this._dataAttributes ??= new DataAttributesClient(this._options));
    }

    public get dataEvents(): DataEventsClient {
        return (this._dataEvents ??= new DataEventsClient(this._options));
    }

    public get dataExport(): DataExportClient {
        return (this._dataExport ??= new DataExportClient(this._options));
    }

    public get workflows(): WorkflowsClient {
        return (this._workflows ??= new WorkflowsClient(this._options));
    }

    public get jobs(): JobsClient {
        return (this._jobs ??= new JobsClient(this._options));
    }

    public get macros(): MacrosClient {
        return (this._macros ??= new MacrosClient(this._options));
    }

    public get messages(): MessagesClient {
        return (this._messages ??= new MessagesClient(this._options));
    }

    public get news(): NewsClient {
        return (this._news ??= new NewsClient(this._options));
    }

    public get segments(): SegmentsClient {
        return (this._segments ??= new SegmentsClient(this._options));
    }

    public get switch(): SwitchClient {
        return (this._switch ??= new SwitchClient(this._options));
    }

    public get calls(): CallsClient {
        return (this._calls ??= new CallsClient(this._options));
    }

    public get teams(): TeamsClient {
        return (this._teams ??= new TeamsClient(this._options));
    }

    public get ticketStates(): TicketStatesClient {
        return (this._ticketStates ??= new TicketStatesClient(this._options));
    }

    public get ticketTypeAttributes(): TicketTypeAttributesClient {
        return (this._ticketTypeAttributes ??= new TicketTypeAttributesClient(this._options));
    }

    public get ticketTypes(): TicketTypesClient {
        return (this._ticketTypes ??= new TicketTypesClient(this._options));
    }

    public get tickets(): TicketsClient {
        return (this._tickets ??= new TicketsClient(this._options));
    }

    public get visitors(): VisitorsClient {
        return (this._visitors ??= new VisitorsClient(this._options));
    }

    public get brands(): BrandsClient {
        return (this._brands ??= new BrandsClient(this._options));
    }

    public get emails(): EmailsClient {
        return (this._emails ??= new EmailsClient(this._options));
    }
}
