import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as OrganizationsAPI from 'cloudflaredev/resources/user/organizations';
import * as Shared from 'cloudflaredev/resources/shared';
import * as MembersAPI from 'cloudflaredev/resources/accounts/members';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflaredev/pagination';
export declare class Organizations extends APIResource {
    /**
     * Lists organizations the user is associated with.
     */
    list(query?: OrganizationListParams, options?: Core.RequestOptions): Core.PagePromise<OrganizationsV4PagePaginationArray, Organization>;
    list(options?: Core.RequestOptions): Core.PagePromise<OrganizationsV4PagePaginationArray, Organization>;
    /**
     * Removes association to an organization.
     */
    delete(organizationId: string, options?: Core.RequestOptions): Core.APIPromise<OrganizationDeleteResponse>;
    /**
     * Gets a specific organization the user is associated with.
     */
    get(organizationId: string, options?: Core.RequestOptions): Core.APIPromise<OrganizationGetResponse>;
}
export declare class OrganizationsV4PagePaginationArray extends V4PagePaginationArray<Organization> {
}
export interface Organization {
    /**
     * Identifier
     */
    id?: string;
    /**
     * Organization name.
     */
    name?: string;
    /**
     * Access permissions for this User.
     */
    permissions?: Array<Shared.Permission>;
    /**
     * List of roles that a user has within an organization.
     */
    roles?: Array<string>;
    /**
     * Whether the user is a member of the organization or has an inivitation pending.
     */
    status?: MembersAPI.Status;
}
export interface OrganizationDeleteResponse {
    /**
     * Identifier
     */
    id?: string;
}
export type OrganizationGetResponse = unknown | string | null;
export interface OrganizationListParams extends V4PagePaginationArrayParams {
    /**
     * Direction to order organizations.
     */
    direction?: 'asc' | 'desc';
    /**
     * Whether to match all search requirements or at least one (any).
     */
    match?: 'any' | 'all';
    /**
     * Organization name.
     */
    name?: string;
    /**
     * Field to order organizations by.
     */
    order?: 'id' | 'name' | 'status';
    /**
     * Whether the user is a member of the organization or has an inivitation pending.
     */
    status?: 'member' | 'invited';
}
export declare namespace Organizations {
    export import Organization = OrganizationsAPI.Organization;
    export import OrganizationDeleteResponse = OrganizationsAPI.OrganizationDeleteResponse;
    export import OrganizationGetResponse = OrganizationsAPI.OrganizationGetResponse;
    export import OrganizationsV4PagePaginationArray = OrganizationsAPI.OrganizationsV4PagePaginationArray;
    export import OrganizationListParams = OrganizationsAPI.OrganizationListParams;
}
//# sourceMappingURL=organizations.d.ts.map