import { AxiosResponse } from 'axios'; import { Logger } from 'pino'; import { IPermitConfig } from '../config'; import { ConditionSetCreate, ConditionSetRead, ConditionSetRuleCreate, ConditionSetRuleRead, ConditionSetRuleRemove, ConditionSetType, ConditionSetUpdate, ResourceCreate, ResourceRead, ResourceUpdate, RoleAssignmentCreate, RoleAssignmentRead, RoleAssignmentRemove, RoleCreate, RoleRead, RoleUpdate, TenantCreate, TenantRead, TenantUpdate, UserCreate, UserRead, UserUpdate } from '../openapi'; /** * This interface contains *read actions* that goes outside * of your local network and queries permit.io cloud api. * You should be aware that these actions incur some cross-cloud latency. */ export interface IReadApis { listUsers(): Promise; listRoles(): Promise; getUser(userId: string): Promise; getTenant(tenantId: string): Promise; getRole(roleId: string): Promise; getAssignedRoles(user: string, tenant?: string): Promise; listConditionSets(type: string, page: number, per_page: number): Promise; listConditionSetsRules(page: number, per_page: number): Promise; } /** * This interface contains *write actions* (or mutations) that manipulate remote * state by calling the permit.io api. These api calls goes *outside* your local network. * You should be aware that these actions incur some cross-cloud latency. */ export interface IWriteApis { createUser(user: UserCreate): Promise; updateUser(userId: string, user: UserUpdate): Promise; syncUser(user: UserCreate): Promise; deleteUser(userId: string): Promise>; createTenant(tenant: TenantCreate): Promise; updateTenant(tenantId: string, tenant: TenantUpdate): Promise; deleteTenant(tenantId: string): Promise>; listTenants(page?: number): Promise; createRole(role: RoleCreate): Promise; updateRole(roleId: string, role: RoleUpdate): Promise; deleteRole(roleId: string): Promise>; assignRole(assignedRole: RoleAssignmentCreate): Promise; unassignRole(removedRole: RoleAssignmentRemove): Promise>; createResource(resource: ResourceCreate): Promise; updateResource(resourceId: string, resource: ResourceUpdate): Promise; deleteResource(resourceId: string): Promise>; createConditionSet(conditionSet: ConditionSetCreate): Promise; updateConditionSet(conditionSetId: string, conditionSet: ConditionSetUpdate): Promise; deleteConditionSet(conditionSetId: string): Promise>; assignConditionSetRule(conditionSetRule: ConditionSetRuleCreate): Promise; unassignConditionSetRule(conditionSetRule: ConditionSetRuleRemove): Promise>; } export interface IPermitApi extends IReadApis, IWriteApis { } export interface IApiClient { api: IPermitApi; } export declare class ApiClient implements IReadApis, IWriteApis, IApiClient { #private; private config; private logger; private project; private environment; private scope; private users; private tenants; private roles; private conditionSets; private conditionSetRules; private roleAssignments; private resources; constructor(config: IPermitConfig, logger: Logger); private getScope; listUsers(): Promise; listRoles(): Promise; listConditionSets(type: ConditionSetType, page: number, perPage: number): Promise; listConditionSetsRules(page: number, perPage: number): Promise; getUser(userId: string): Promise; getTenant(tenantId: string): Promise; listTenants(page?: number): Promise; getRole(roleId: string): Promise; getAssignedRoles(user: string, tenant?: string): Promise; createResource(resource: ResourceCreate): Promise; updateResource(resourceId: string, resource: ResourceUpdate): Promise; deleteResource(resourceId: string): Promise>; createUser(user: UserCreate): Promise; syncUser(user: UserCreate): Promise; updateUser(userId: string, user: UserUpdate): Promise; deleteUser(userId: string): Promise>; createTenant(tenant: TenantCreate): Promise; updateTenant(tenantId: string, tenant: TenantUpdate): Promise; deleteTenant(tenantId: string): Promise>; createRole(role: RoleCreate): Promise; updateRole(roleId: string, role: RoleUpdate): Promise; deleteRole(roleId: string): Promise>; assignRole(assignedRole: RoleAssignmentCreate): Promise; unassignRole(removedRole: RoleAssignmentRemove): Promise>; createConditionSet(conditionSet: ConditionSetCreate): Promise; updateConditionSet(conditionSetId: string, conditionSet: ConditionSetUpdate): Promise; deleteConditionSet(conditionSetId: string): Promise>; assignConditionSetRule(conditionSetRule: ConditionSetRuleCreate): Promise; unassignConditionSetRule(conditionSetRule: ConditionSetRuleRemove): Promise>; get api(): IPermitApi; getMethods(): IApiClient; }