import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as MembershipsAPI from 'cloudflare/resources/memberships';
import * as AccountsAPI from 'cloudflare/resources/accounts/accounts';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/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?: 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;
        }
    }
}
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;
    }
}
export declare namespace Memberships {
    export import Membership = MembershipsAPI.Membership;
    export import MembershipUpdateResponse = MembershipsAPI.MembershipUpdateResponse;
    export import MembershipDeleteResponse = MembershipsAPI.MembershipDeleteResponse;
    export import MembershipGetResponse = MembershipsAPI.MembershipGetResponse;
    export import MembershipsV4PagePaginationArray = MembershipsAPI.MembershipsV4PagePaginationArray;
    export import MembershipUpdateParams = MembershipsAPI.MembershipUpdateParams;
    export import MembershipListParams = MembershipsAPI.MembershipListParams;
}
//# sourceMappingURL=memberships.d.ts.map