/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import { ClientSDK } from "../lib/sdks.js";
import { Analytics } from "./analytics.js";
import { Apis } from "./apis.js";
import { Identities } from "./identities.js";
import { Internal } from "./internal.js";
import { Keys } from "./keys.js";
import { Permissions } from "./permissions.js";
import { Portal } from "./portal.js";
import { Ratelimit } from "./ratelimit.js";

export class Unkey extends ClientSDK {
  private _analytics?: Analytics;
  get analytics(): Analytics {
    return (this._analytics ??= new Analytics(this._options));
  }

  private _apis?: Apis;
  get apis(): Apis {
    return (this._apis ??= new Apis(this._options));
  }

  private _internal?: Internal;
  get internal(): Internal {
    return (this._internal ??= new Internal(this._options));
  }

  private _identities?: Identities;
  get identities(): Identities {
    return (this._identities ??= new Identities(this._options));
  }

  private _keys?: Keys;
  get keys(): Keys {
    return (this._keys ??= new Keys(this._options));
  }

  private _permissions?: Permissions;
  get permissions(): Permissions {
    return (this._permissions ??= new Permissions(this._options));
  }

  private _portal?: Portal;
  get portal(): Portal {
    return (this._portal ??= new Portal(this._options));
  }

  private _ratelimit?: Ratelimit;
  get ratelimit(): Ratelimit {
    return (this._ratelimit ??= new Ratelimit(this._options));
  }
}
