import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as MembersAPI from 'cloudflaredev/resources/accounts/members';
import * as Shared from 'cloudflaredev/resources/shared';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflaredev/pagination';
export declare class Members extends APIResource {
    /**
     * Add a user to the list of members for this account.
     */
    create(params: MemberCreateParams, options?: Core.RequestOptions): Core.APIPromise<UserWithInviteCode>;
    /**
     * Modify an account member.
     */
    update(memberId: string, params: MemberUpdateParams, options?: Core.RequestOptions): Core.APIPromise<Shared.Member>;
    /**
     * List all members of an account.
     */
    list(params: MemberListParams, options?: Core.RequestOptions): Core.PagePromise<MemberListResponsesV4PagePaginationArray, MemberListResponse>;
    /**
     * Remove a member from an account.
     */
    delete(memberId: string, params: MemberDeleteParams, options?: Core.RequestOptions): Core.APIPromise<MemberDeleteResponse | null>;
    /**
     * Get information about a specific member of an account.
     */
    get(memberId: string, params: MemberGetParams, options?: Core.RequestOptions): Core.APIPromise<Shared.Member>;
}
export declare class MemberListResponsesV4PagePaginationArray extends V4PagePaginationArray<MemberListResponse> {
}
/**
 * Whether the user is a member of the organization or has an inivitation pending.
 */
export type Status = 'member' | 'invited';
export interface UserWithInviteCode {
    /**
     * Membership identifier tag.
     */
    id: string;
    /**
     * Roles assigned to this member.
     */
    roles: Array<UserWithInviteCode.Role>;
    status: unknown;
    user: UserWithInviteCode.User;
    /**
     * The unique activation code for the account membership.
     */
    code?: string;
}
export declare namespace UserWithInviteCode {
    interface Role {
        /**
         * Role identifier tag.
         */
        id: string;
        /**
         * Description of role's permissions.
         */
        description: string;
        /**
         * Role name.
         */
        name: string;
        permissions: Role.Permissions;
    }
    namespace Role {
        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;
        }
    }
    interface User {
        /**
         * The contact email address of the user.
         */
        email: string;
        /**
         * Identifier
         */
        id?: string;
        /**
         * User's first name
         */
        first_name?: string | null;
        /**
         * User's last name
         */
        last_name?: string | null;
        /**
         * Indicates whether two-factor authentication is enabled for the user account.
         * Does not apply to API authentication.
         */
        two_factor_authentication_enabled?: boolean;
    }
}
export interface MemberListResponse {
    /**
     * Identifier
     */
    id: string;
    /**
     * The contact email address of the user.
     */
    email: string;
    /**
     * Member Name.
     */
    name: string | null;
    /**
     * Roles assigned to this Member.
     */
    roles: Array<Shared.Role>;
    /**
     * A member's status in the organization.
     */
    status: 'accepted' | 'invited';
}
export interface MemberDeleteResponse {
    /**
     * Identifier
     */
    id: string;
}
export interface MemberCreateParams {
    /**
     * Path param:
     */
    account_id: string;
    /**
     * Body param: The contact email address of the user.
     */
    email: string;
    /**
     * Body param: Array of roles associated with this member.
     */
    roles: Array<string>;
    /**
     * Body param:
     */
    status?: 'accepted' | 'pending';
}
export interface MemberUpdateParams {
    /**
     * Path param:
     */
    account_id: string;
    /**
     * Body param: Roles assigned to this member.
     */
    roles: Array<MemberUpdateParams.Role>;
}
export declare namespace MemberUpdateParams {
    interface Role {
        /**
         * Role identifier tag.
         */
        id: string;
    }
}
export interface MemberListParams extends V4PagePaginationArrayParams {
    /**
     * Path param:
     */
    account_id: string;
    /**
     * Query param: Direction to order results.
     */
    direction?: 'asc' | 'desc';
    /**
     * Query param: Field to order results by.
     */
    order?: 'user.first_name' | 'user.last_name' | 'user.email' | 'status';
    /**
     * Query param: A member's status in the account.
     */
    status?: 'accepted' | 'pending' | 'rejected';
}
export interface MemberDeleteParams {
    account_id: string;
}
export interface MemberGetParams {
    account_id: string;
}
export declare namespace Members {
    export import Status = MembersAPI.Status;
    export import UserWithInviteCode = MembersAPI.UserWithInviteCode;
    export import MemberListResponse = MembersAPI.MemberListResponse;
    export import MemberDeleteResponse = MembersAPI.MemberDeleteResponse;
    export import MemberListResponsesV4PagePaginationArray = MembersAPI.MemberListResponsesV4PagePaginationArray;
    export import MemberCreateParams = MembersAPI.MemberCreateParams;
    export import MemberUpdateParams = MembersAPI.MemberUpdateParams;
    export import MemberListParams = MembersAPI.MemberListParams;
    export import MemberDeleteParams = MembersAPI.MemberDeleteParams;
    export import MemberGetParams = MembersAPI.MemberGetParams;
}
//# sourceMappingURL=members.d.ts.map