import { APIResource, type RequestOptions, type WithResponse } from "../../core";
import type { Metadata, 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;
};
/**
 * API resource for the Roles endpoints.
 *
 * Endpoints to manage custom roles. Custom roles allow you to tailor roles from individual permissions to match your needs. Once created, you can assign your custom roles to your merchant account members using the memberships.
 */
export declare class Roles extends APIResource {
    /**
     * List merchant's custom roles.
     */
    list(merchantCode: string, options?: RequestOptions): Promise<ListMerchantRolesResponse>;
    listWithResponse(merchantCode: string, options?: RequestOptions): Promise<WithResponse<ListMerchantRolesResponse>>;
    /**
     * 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, options?: RequestOptions): Promise<Role>;
    createWithResponse(merchantCode: string, body: CreateMerchantRoleParams, options?: RequestOptions): Promise<WithResponse<Role>>;
    /**
     * Retrieve a custom role by ID.
     */
    get(merchantCode: string, roleId: string, options?: RequestOptions): Promise<Role>;
    getWithResponse(merchantCode: string, roleId: string, options?: RequestOptions): Promise<WithResponse<Role>>;
    /**
     * Delete a custom role.
     */
    delete(merchantCode: string, roleId: string, options?: RequestOptions): Promise<void>;
    deleteWithResponse(merchantCode: string, roleId: string, options?: RequestOptions): Promise<WithResponse<void>>;
    /**
     * Update a custom role.
     */
    update(merchantCode: string, roleId: string, body: UpdateMerchantRoleParams, options?: RequestOptions): Promise<Role>;
    updateWithResponse(merchantCode: string, roleId: string, body: UpdateMerchantRoleParams, options?: RequestOptions): Promise<WithResponse<Role>>;
}
//# sourceMappingURL=index.d.ts.map