import { OystehrClientRequest, RoleCreateParams, RoleCreateResponse, RoleDeleteParams, RoleGetParams, RoleGetResponse, RoleListResponse, RoleUpdateParams, RoleUpdateResponse } from '../..';
import { SDKResource } from '../../client/client';
import { OystehrConfig } from '../../config';
export declare class Role extends SDKResource {
    #private;
    constructor(config: OystehrConfig);
    /**
     * Get a list of all Roles. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).
     *
     * Access Policy Action: `IAM:ListAllRoles`
     * Access Policy Resource: `IAM:Role`
     */
    list(request?: OystehrClientRequest): Promise<RoleListResponse>;
    /**
     * Create a new Role. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).
     *
     * Access Policy Action: `IAM:CreateRole`
     * Access Policy Resource: `IAM:Role`
     */
    create(params: RoleCreateParams, request?: OystehrClientRequest): Promise<RoleCreateResponse>;
    /**
     * Get the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).
     *
     * Access Policy Action: `IAM:GetRole`
     * Access Policy Resource: `IAM:Role`
     */
    get(params: RoleGetParams, request?: OystehrClientRequest): Promise<RoleGetResponse>;
    /**
     * Update the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).
     *
     * Access Policy Action: `IAM:UpdateRole`
     * Access Policy Resource: `IAM:Role`
     */
    update(params: RoleUpdateParams, request?: OystehrClientRequest): Promise<RoleUpdateResponse>;
    /**
     * Delete the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).
     *
     * Access Policy Action: `IAM:DeleteRole`
     * Access Policy Resource: `IAM:Role`
     * Will fail if any entities hold the Role or if Role is assigned as the default patient role for the project
     */
    delete(params: RoleDeleteParams, request?: OystehrClientRequest): Promise<void>;
}
