import { type APIPromise, APIResource, type FetchParams } from "../../core";
import type { Metadata, Problem, Role } from "../../types";
export type ListMerchantRolesResponse = {
    items: Role[];
};
export type CreateMerchantRoleParams = {
    /**
     * User-defined name of the role.
     */
    name: string;
    /**
     * User's permissions.
     */
    permissions: string[];
    metadata?: Metadata;
    /**
     * User-defined description of the role.
     */
    description?: string;
};
export type UpdateMerchantRoleParams = {
    /**
     * User-defined name of the role.
     */
    name?: string;
    /**
     * User's permissions.
     */
    permissions?: string[];
    /**
     * User-defined description of the role.
     */
    description?: string;
};
export declare class Roles extends APIResource {
    /**
     * List merchant's custom roles.
     */
    list(merchantCode: string, params?: FetchParams): APIPromise<ListMerchantRolesResponse, Problem>;
    /**
     * Create a custom role for the merchant. Roles are defined by the set of permissions that they grant to the members that they are assigned to.
     */
    create(merchantCode: string, body: CreateMerchantRoleParams, params?: FetchParams): APIPromise<Role, Problem>;
    /**
     * Retrieve a custom role by ID.
     */
    get(merchantCode: string, roleId: string, params?: FetchParams): APIPromise<Role, Problem>;
    /**
     * Delete a custom role.
     */
    delete(merchantCode: string, roleId: string, params?: FetchParams): APIPromise<void, Problem>;
    /**
     * Update a custom role.
     */
    update(merchantCode: string, roleId: string, body: UpdateMerchantRoleParams, params?: FetchParams): APIPromise<Role, Problem>;
}
//# sourceMappingURL=index.d.cts.map