import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as Shared from 'cloudflaredev/resources/shared';
import * as AccountsAPI from 'cloudflaredev/resources/accounts/accounts';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflaredev/pagination';
export declare class Memberships extends APIResource {
    /**
     * Accept or reject this account invitation.
     */
    update(membershipId: string, body: MembershipUpdateParams, options?: Core.RequestOptions): Core.APIPromise<MembershipUpdateResponse>;
    /**
     * List memberships of accounts the user can access.
     */
    list(query?: MembershipListParams, options?: Core.RequestOptions): Core.PagePromise<MembershipsV4PagePaginationArray, Membership>;
    list(options?: Core.RequestOptions): Core.PagePromise<MembershipsV4PagePaginationArray, Membership>;
    /**
     * Remove the associated member from an account.
     */
    delete(membershipId: string, options?: Core.RequestOptions): Core.APIPromise<MembershipDeleteResponse>;
    /**
     * Get a specific membership.
     */
    get(membershipId: string, options?: Core.RequestOptions): Core.APIPromise<MembershipGetResponse>;
}
export declare class MembershipsV4PagePaginationArray extends V4PagePaginationArray<Membership> {
}
export interface Membership {
    /**
     * Membership identifier tag.
     */
    id?: string;
    account?: AccountsAPI.Account;
    /**
     * Enterprise only. Indicates whether or not API access is enabled specifically for
     * this user on a given account.
     */
    api_access_enabled?: boolean | null;
    /**
     * The unique activation code for the account membership.
     */
    code?: string;
    /**
     * All access permissions for the user at the account.
     */
    permissions?: Membership.Permissions;
    /**
     * List of role names for the user at the account.
     */
    roles?: Array<string>;
    /**
     * Status of this membership.
     */
    status?: 'accepted' | 'pending' | 'rejected';
}
export declare namespace Membership {
    /**
     * All access permissions for the user at the account.
     */
    interface Permissions {
        analytics?: Shared.PermissionGrant;
        billing?: Shared.PermissionGrant;
        cache_purge?: Shared.PermissionGrant;
        dns?: Shared.PermissionGrant;
        dns_records?: Shared.PermissionGrant;
        lb?: Shared.PermissionGrant;
        logs?: Shared.PermissionGrant;
        organization?: Shared.PermissionGrant;
        ssl?: Shared.PermissionGrant;
        waf?: Shared.PermissionGrant;
        zone_settings?: Shared.PermissionGrant;
        zones?: Shared.PermissionGrant;
    }
}
export type MembershipUpdateResponse = unknown | string | null;
export interface MembershipDeleteResponse {
    /**
     * Membership identifier tag.
     */
    id?: string;
}
export type MembershipGetResponse = unknown | string | null;
export interface MembershipUpdateParams {
    /**
     * Whether to accept or reject this account invitation.
     */
    status: 'accepted' | 'rejected';
}
export interface MembershipListParams extends V4PagePaginationArrayParams {
    account?: MembershipListParams.Account;
    /**
     * Direction to order memberships.
     */
    direction?: 'asc' | 'desc';
    /**
     * Account name
     */
    name?: string;
    /**
     * Field to order memberships by.
     */
    order?: 'id' | 'account.name' | 'status';
    /**
     * Status of this membership.
     */
    status?: 'accepted' | 'pending' | 'rejected';
}
export declare namespace MembershipListParams {
    interface Account {
        /**
         * Account name
         */
        name?: string;
    }
}
//# sourceMappingURL=memberships.d.ts.map