import { EmailTemplatePayload, EmailTemplatesTypes } from "../../containers/pages/Settings/EmailTemplates/types";
import { FetchResponse, ServiceRequester } from "../service-requester";
import { ApiKeyState, ApiKeysResponse, ChangePasswordPayload, DefaultEntityParams, EmailTemplateResponse, EvaluateActionsRequestPayload, EvaluateIrnsActionsResponse, GetApiKeysParams, GroupCreatePayload, GroupMembersPayload, GroupMembersResponse, GroupResponse, GroupsResponse, PoliciesResponse, PolicyCreatePayload, PolicyUpdatePayload, Pool, PoolCreatePayload, PoolUpdatePayload, PoolsParams, PoolsResponse, ResetPasswordPayload, ResourceCreatePayload, ResourceCreateResponse, ResourcePolicyResponse, ResourcePolicyUpdatePayload, ResourcesParams, ResourcesResponse, UpdateGroupPayload, UserCreatePayload, UserGroupsResponse, UserPoliciesQueryParams, UserResponse, UserUpdatePayload, UsersQueryParams, UsersResponse } from "./types";
export declare class IamcoreClient {
    private http;
    constructor(urlPrefix: string, serviceRequester?: ServiceRequester);
    evaluateActions(payload: EvaluateActionsRequestPayload): Promise<FetchResponse<Record<string, string[]>>>;
    evaluateIrnsActions(payload: EvaluateActionsRequestPayload): Promise<FetchResponse<Record<string, EvaluateIrnsActionsResponse>>>;
    getResourcePolicy(resourceId: string): Promise<FetchResponse<ResourcePolicyResponse>>;
    createResource(data: ResourceCreatePayload): Promise<FetchResponse<ResourceCreateResponse>>;
    updateResourcePolicy(resourceId: string, data: ResourcePolicyUpdatePayload): Promise<FetchResponse<void>>;
    getTemplate(tenantID: string, type: EmailTemplatesTypes): Promise<FetchResponse<EmailTemplateResponse>>;
    updateTemplate(tenantID: string, type: EmailTemplatesTypes, data: EmailTemplatePayload): Promise<FetchResponse<void>>;
    deleteResource(resourceId: string): Promise<FetchResponse<void>>;
    getUsers(params?: UsersQueryParams): Promise<FetchResponse<UsersResponse>>;
    getUser(id: string): Promise<FetchResponse<UserResponse>>;
    getCurrentUser(): Promise<FetchResponse<UserResponse>>;
    getCurrentUserIrn(): Promise<FetchResponse<{
        data: string;
    }>>;
    getCurrentUserGroups(): Promise<FetchResponse<UserGroupsResponse>>;
    leaveGroup(groupId: string): Promise<FetchResponse<void>>;
    changeUserPassword(userId: string, changePasswordPayload: ChangePasswordPayload): Promise<FetchResponse<void>>;
    deleteUser(userId: string): Promise<FetchResponse<void>>;
    evaluate(resources: string[], action: string): Promise<FetchResponse<void>>;
    attachUserPoliciesBulk(userId: string, policyIDs: string[]): Promise<FetchResponse<void>>;
    addUserGroups(groupIds: string[], id: string): Promise<FetchResponse<void>>;
    createUser(userData: UserCreatePayload): Promise<FetchResponse<UserResponse>>;
    updateUser(userData: UserUpdatePayload, id: string): Promise<FetchResponse<void>>;
    resetUserPassword(userId: string, data: ResetPasswordPayload): Promise<FetchResponse<void>>;
    attachUserPolicies(userId: string, policyIDs: string[]): Promise<FetchResponse<void>>;
    availableUserPolicies(userId: string, query?: DefaultEntityParams): Promise<FetchResponse<PoliciesResponse>>;
    getUserPolicies(userId: string, query?: UserPoliciesQueryParams): Promise<FetchResponse<PoliciesResponse>>;
    detachUserPoliciesBulk(userId: string, policyIDs: string[]): Promise<FetchResponse<void>>;
    updateUserResourcePolicy(userId: string, payload: ResourcePolicyUpdatePayload): Promise<FetchResponse<void>>;
    getUserResourcePolicy(userId: string): Promise<FetchResponse<ResourcePolicyResponse>>;
    createGroup(data: GroupCreatePayload): Promise<FetchResponse<GroupResponse>>;
    joinGroupBulk(groupId: string, data: GroupMembersPayload): Promise<FetchResponse<void>>;
    attachGroupPoliciesBulk(groupId: string, policyIDs: string[]): Promise<FetchResponse<void>>;
    getGroups(query?: DefaultEntityParams): Promise<FetchResponse<GroupsResponse>>;
    deleteGroup(groupId: string): Promise<FetchResponse<void>>;
    updateGroup(groupId: string, data: UpdateGroupPayload): Promise<FetchResponse<void>>;
    updateGroupResourcePolicy(groupId: string, data: ResourcePolicyUpdatePayload): Promise<FetchResponse<void>>;
    getGroupMembers(groupId: string): Promise<FetchResponse<GroupMembersResponse>>;
    leaveGroupBulk(groupId: string, payload: GroupMembersPayload): Promise<FetchResponse<void>>;
    getAvailableGroupUsers(groupId: string): Promise<FetchResponse<UsersResponse>>;
    detachGroupPoliciesBulk(groupId: string, policyIDs: string[]): Promise<FetchResponse<void>>;
    getGroupPolicies(groupId: string, query?: DefaultEntityParams): Promise<FetchResponse<PoliciesResponse>>;
    availableGroupPolicies(groupId: string, query?: DefaultEntityParams): Promise<FetchResponse<PoliciesResponse>>;
    getGroupResourcePolicy(groupId: string): Promise<FetchResponse<ResourcePolicyResponse>>;
    getPolicies(query?: DefaultEntityParams): Promise<FetchResponse<PoliciesResponse>>;
    deletePolicy(policyId: string): Promise<FetchResponse<void>>;
    createPolicy(policy: PolicyCreatePayload): Promise<FetchResponse<void>>;
    updatePolicy(policyId: string, policy: PolicyUpdatePayload): Promise<FetchResponse<void>>;
    getResources(params: ResourcesParams): Promise<FetchResponse<ResourcesResponse>>;
    getPools(params: PoolsParams): Promise<FetchResponse<PoolsResponse>>;
    getPool(poolId: string): Promise<FetchResponse<Pool>>;
    deletePool(poolId: string): Promise<FetchResponse<void>>;
    updatePool(poolId: string, data: PoolUpdatePayload): Promise<FetchResponse<void>>;
    createPool(data: PoolCreatePayload): Promise<FetchResponse<Pool>>;
    getApiKeys(principalId: string, params?: GetApiKeysParams): Promise<FetchResponse<ApiKeysResponse>>;
    createApiKey(principalId: string): Promise<FetchResponse<void>>;
    updateApiKeyState(principalId: string, apiKeyId: string, state: ApiKeyState): Promise<FetchResponse<void>>;
    updateGroupMetadata(groupId: string, metadata: Record<string, any>): Promise<FetchResponse<void>>;
    updateUserMetadata(userId: string, metadata: Record<string, any>): Promise<FetchResponse<void>>;
    updateCurrentUserMetadata(metadata: Record<string, any>): Promise<FetchResponse<void>>;
}
