import { IHttpClient } from "./IHttpClient";
import { Endpoint } from "./Endpoint";
import { IRoleActions } from "./IRole";
/**
 * A role determines what actions allowed to be performed by {@link User | users} on a
 * {@link Project | project}.
 */
export declare class Role extends Endpoint {
    private _data;
    projectId: string;
    /**
     * @param data - Raw role data received from the server. For more information, see
     *   {@link https://cloud.opendesign.com/docs//pages/server/api.html#Project | Open Cloud Projects API}.
     * @param projectId - Owner project ID.
     * @param httpClient - HTTP client instance used to send requests to the REST API server.
     */
    constructor(data: any, projectId: string, httpClient: IHttpClient);
    /**
     * Role description.
     */
    get description(): string;
    set description(value: string);
    /**
     * Raw role data received from the server. For more information, see
     * {@link https://cloud.opendesign.com/docs//pages/server/api.html#Project | Open Cloud Projects API}.
     *
     * @readonly
     */
    get data(): any;
    set data(value: any);
    /**
     * Role name.
     */
    get name(): string;
    set name(value: string);
    /**
     * Role actions are allowed to be performed.
     */
    get permissions(): IRoleActions;
    set permissions(value: IRoleActions);
    /**
     * Reloads role data from the server.
     */
    checkout(): Promise<this>;
    /**
     * Updates role data on the server.
     *
     * @param data - Raw role data. For more information, see
     *   {@link https://cloud.opendesign.com/docs//pages/server/api.html#Project | Open Cloud Projects API}.
     */
    update(data: any): Promise<this>;
    /**
     * Deletes a role from the project.
     *
     * @returns Returns the raw data of a deleted role. For more information, see
     *   {@link https://cloud.opendesign.com/docs//pages/server/api.html#Project | Open Cloud Projects API}.
     */
    delete(): Promise<any>;
    /**
     * Saves role properties changes to the server. Call this method to update role data on the server
     * after any property changes.
     */
    save(): Promise<this>;
}
