import { APIResource } from "../../core/resource.mjs";
import * as AuditLogsAPI from "./audit-logs.mjs";
import { AuditLogListParams, AuditLogs, BaseAuditLogs } from "./audit-logs.mjs";
import * as InvitesAPI from "./invites.mjs";
import { BaseInvites, Invite, InviteEditParams, Invites, InvitesSinglePage } from "./invites.mjs";
import * as OrganizationsAPI from "./organizations.mjs";
import { BaseOrganizations, Organization, OrganizationDeleteResponse, OrganizationGetResponse, OrganizationListParams, Organizations, OrganizationsV4PagePaginationArray } from "./organizations.mjs";
import * as SubscriptionsAPI from "./subscriptions.mjs";
import { BaseSubscriptions, SubscriptionDeleteResponse, SubscriptionUpdateParams, SubscriptionUpdateResponse, Subscriptions } from "./subscriptions.mjs";
import * as TenantsAPI from "./tenants.mjs";
import { BaseTenants, Tenants } from "./tenants.mjs";
import * as BillingAPI from "./billing/billing.mjs";
import { BaseBilling, Billing } from "./billing/billing.mjs";
import * as SpectrumAnalyticsAPI from "./spectrum-analytics/spectrum-analytics.mjs";
import { BaseSpectrumAnalytics, SpectrumAnalytics } from "./spectrum-analytics/spectrum-analytics.mjs";
import * as TokensAPI from "./tokens/tokens.mjs";
import { BaseTokens, TokenCreateParams, TokenCreateResponse, TokenDeleteResponse, TokenListParams, TokenUpdateParams, TokenVerifyResponse, Tokens } from "./tokens/tokens.mjs";
import { APIPromise } from "../../core/api-promise.mjs";
import { RequestOptions } from "../../internal/request-options.mjs";
export declare class BaseUser extends APIResource {
    static readonly _key: readonly ['user'];
    /**
     * Edit part of your user details.
     *
     * @example
     * ```ts
     * const response = await client.user.edit();
     * ```
     */
    edit(body: UserEditParams, options?: RequestOptions): APIPromise<UserEditResponse>;
    /**
     * Retrieves detailed information about the currently authenticated user, including
     * email, name, and account memberships.
     *
     * @example
     * ```ts
     * const user = await client.user.get();
     * ```
     */
    get(options?: RequestOptions): APIPromise<UserGetResponse>;
}
export declare class User extends BaseUser {
    auditLogs: AuditLogsAPI.AuditLogs;
    billing: BillingAPI.Billing;
    invites: InvitesAPI.Invites;
    organizations: OrganizationsAPI.Organizations;
    spectrumAnalytics: SpectrumAnalyticsAPI.SpectrumAnalytics;
    subscriptions: SubscriptionsAPI.Subscriptions;
    tenants: TenantsAPI.Tenants;
    tokens: TokensAPI.Tokens;
}
export interface UserEditResponse {
    /**
     * Identifier of the user.
     */
    id: string;
    /**
     * Current email address of the user.
     */
    email: string;
    /**
     * Lists the betas that the user is participating in.
     */
    betas?: Array<string>;
    /**
     * The country in which the user lives.
     */
    country?: string | null;
    /**
     * User's first name
     */
    first_name?: string | null;
    /**
     * Indicates whether user has any business zones
     */
    has_business_zones?: boolean;
    /**
     * Indicates whether user has any enterprise zones
     */
    has_enterprise_zones?: boolean;
    /**
     * Indicates whether user has any pro zones
     */
    has_pro_zones?: boolean;
    /**
     * User's last name
     */
    last_name?: string | null;
    organizations?: Array<OrganizationsAPI.Organization>;
    /**
     * Indicates whether user has been suspended
     */
    suspended?: boolean;
    /**
     * User's telephone number
     */
    telephone?: string | null;
    /**
     * Indicates whether two-factor authentication is enabled for the user account.
     * Does not apply to API authentication.
     */
    two_factor_authentication_enabled?: boolean;
    /**
     * Indicates whether two-factor authentication is required by one of the accounts
     * that the user is a member of.
     */
    two_factor_authentication_locked?: boolean;
    /**
     * The zipcode or postal code where the user lives.
     */
    zipcode?: string | null;
}
export interface UserGetResponse {
    /**
     * Identifier of the user.
     */
    id: string;
    /**
     * Current email address of the user.
     */
    email: string;
    /**
     * Lists the betas that the user is participating in.
     */
    betas?: Array<string>;
    /**
     * The country in which the user lives.
     */
    country?: string | null;
    /**
     * User's first name
     */
    first_name?: string | null;
    /**
     * Indicates whether user has any business zones
     */
    has_business_zones?: boolean;
    /**
     * Indicates whether user has any enterprise zones
     */
    has_enterprise_zones?: boolean;
    /**
     * Indicates whether user has any pro zones
     */
    has_pro_zones?: boolean;
    /**
     * User's last name
     */
    last_name?: string | null;
    organizations?: Array<OrganizationsAPI.Organization>;
    /**
     * Indicates whether user has been suspended
     */
    suspended?: boolean;
    /**
     * User's telephone number
     */
    telephone?: string | null;
    /**
     * Indicates whether two-factor authentication is enabled for the user account.
     * Does not apply to API authentication.
     */
    two_factor_authentication_enabled?: boolean;
    /**
     * Indicates whether two-factor authentication is required by one of the accounts
     * that the user is a member of.
     */
    two_factor_authentication_locked?: boolean;
    /**
     * The zipcode or postal code where the user lives.
     */
    zipcode?: string | null;
}
export interface UserEditParams {
    /**
     * The country in which the user lives.
     */
    country?: string | null;
    /**
     * User's first name
     */
    first_name?: string | null;
    /**
     * User's last name
     */
    last_name?: string | null;
    /**
     * User's telephone number
     */
    telephone?: string | null;
    /**
     * The zipcode or postal code where the user lives.
     */
    zipcode?: string | null;
}
export declare namespace User {
    export { type UserEditResponse as UserEditResponse, type UserGetResponse as UserGetResponse, type UserEditParams as UserEditParams, };
    export { AuditLogs as AuditLogs, BaseAuditLogs as BaseAuditLogs, type AuditLogListParams as AuditLogListParams, };
    export { Billing as Billing, BaseBilling as BaseBilling };
    export { Invites as Invites, BaseInvites as BaseInvites, type Invite as Invite, type InvitesSinglePage as InvitesSinglePage, type InviteEditParams as InviteEditParams, };
    export { Organizations as Organizations, BaseOrganizations as BaseOrganizations, type Organization as Organization, type OrganizationDeleteResponse as OrganizationDeleteResponse, type OrganizationGetResponse as OrganizationGetResponse, type OrganizationsV4PagePaginationArray as OrganizationsV4PagePaginationArray, type OrganizationListParams as OrganizationListParams, };
    export { SpectrumAnalytics as SpectrumAnalytics, BaseSpectrumAnalytics as BaseSpectrumAnalytics };
    export { Subscriptions as Subscriptions, BaseSubscriptions as BaseSubscriptions, type SubscriptionUpdateResponse as SubscriptionUpdateResponse, type SubscriptionDeleteResponse as SubscriptionDeleteResponse, type SubscriptionUpdateParams as SubscriptionUpdateParams, };
    export { Tenants as Tenants, BaseTenants as BaseTenants };
    export { Tokens as Tokens, BaseTokens as BaseTokens, type TokenCreateResponse as TokenCreateResponse, type TokenDeleteResponse as TokenDeleteResponse, type TokenVerifyResponse as TokenVerifyResponse, type TokenCreateParams as TokenCreateParams, type TokenUpdateParams as TokenUpdateParams, type TokenListParams as TokenListParams, };
}
//# sourceMappingURL=user.d.mts.map