import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as MembersAPI from 'cloudflare/resources/accounts/members';
import * as RolesAPI from 'cloudflare/resources/accounts/roles';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/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<AccountMemberWithID>;
    /**
     * Modify an account member.
     */
    update(memberId: string, params: MemberUpdateParams, options?: Core.RequestOptions): Core.APIPromise<AccountMember>;
    /**
     * 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<AccountMember>;
}
export declare class MemberListResponsesV4PagePaginationArray extends V4PagePaginationArray<MemberListResponse> {
}
export interface AccountMember {
    /**
     * Membership identifier tag.
     */
    id: string;
    /**
     * Roles assigned to this member.
     */
    roles: Array<AccountMember.Role>;
    status: unknown;
    user: AccountMember.User;
}
export declare namespace AccountMember {
    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?: Permissions.Analytics;
            billing?: Permissions.Billing;
            cache_purge?: Permissions.CachePurge;
            dns?: Permissions.DNS;
            dns_records?: Permissions.DNSRecords;
            lb?: Permissions.Lb;
            logs?: Permissions.Logs;
            organization?: Permissions.Organization;
            ssl?: Permissions.SSL;
            waf?: Permissions.WAF;
            zone_settings?: Permissions.ZoneSettings;
            zones?: Permissions.Zones;
        }
        namespace Permissions {
            interface Analytics {
                read?: boolean;
                write?: boolean;
            }
            interface Billing {
                read?: boolean;
                write?: boolean;
            }
            interface CachePurge {
                read?: boolean;
                write?: boolean;
            }
            interface DNS {
                read?: boolean;
                write?: boolean;
            }
            interface DNSRecords {
                read?: boolean;
                write?: boolean;
            }
            interface Lb {
                read?: boolean;
                write?: boolean;
            }
            interface Logs {
                read?: boolean;
                write?: boolean;
            }
            interface Organization {
                read?: boolean;
                write?: boolean;
            }
            interface SSL {
                read?: boolean;
                write?: boolean;
            }
            interface WAF {
                read?: boolean;
                write?: boolean;
            }
            interface ZoneSettings {
                read?: boolean;
                write?: boolean;
            }
            interface Zones {
                read?: boolean;
                write?: boolean;
            }
        }
    }
    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 AccountMemberWithID {
    /**
     * Membership identifier tag.
     */
    id: string;
    /**
     * Roles assigned to this member.
     */
    roles: Array<AccountMemberWithID.Role>;
    status: unknown;
    user: AccountMemberWithID.User;
    /**
     * The unique activation code for the account membership.
     */
    code?: string;
}
export declare namespace AccountMemberWithID {
    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?: Permissions.Analytics;
            billing?: Permissions.Billing;
            cache_purge?: Permissions.CachePurge;
            dns?: Permissions.DNS;
            dns_records?: Permissions.DNSRecords;
            lb?: Permissions.Lb;
            logs?: Permissions.Logs;
            organization?: Permissions.Organization;
            ssl?: Permissions.SSL;
            waf?: Permissions.WAF;
            zone_settings?: Permissions.ZoneSettings;
            zones?: Permissions.Zones;
        }
        namespace Permissions {
            interface Analytics {
                read?: boolean;
                write?: boolean;
            }
            interface Billing {
                read?: boolean;
                write?: boolean;
            }
            interface CachePurge {
                read?: boolean;
                write?: boolean;
            }
            interface DNS {
                read?: boolean;
                write?: boolean;
            }
            interface DNSRecords {
                read?: boolean;
                write?: boolean;
            }
            interface Lb {
                read?: boolean;
                write?: boolean;
            }
            interface Logs {
                read?: boolean;
                write?: boolean;
            }
            interface Organization {
                read?: boolean;
                write?: boolean;
            }
            interface SSL {
                read?: boolean;
                write?: boolean;
            }
            interface WAF {
                read?: boolean;
                write?: boolean;
            }
            interface ZoneSettings {
                read?: boolean;
                write?: boolean;
            }
            interface Zones {
                read?: boolean;
                write?: boolean;
            }
        }
    }
    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<RolesAPI.Role>;
    /**
     * A member's status in the organization.
     */
    status: 'accepted' | 'invited';
}
export interface MemberDeleteResponse {
    /**
     * Identifier
     */
    id: string;
}
export interface MemberCreateParams {
    /**
     * Path param:
     */
    account_id: unknown;
    /**
     * 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: unknown;
    /**
     * 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: unknown;
    /**
     * 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: unknown;
}
export interface MemberGetParams {
    account_id: unknown;
}
export declare namespace Members {
    export import AccountMember = MembersAPI.AccountMember;
    export import AccountMemberWithID = MembersAPI.AccountMemberWithID;
    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