type KeyValue = {[key: string]: T}; type Profile = any; export interface CoamClientOptions { baseUrl?: string; timeout?: number; accessToken?: string; retryAttempts?: number; retryDelayInMs?: number; retryOnForbidden?: boolean; debugFunction?: (message?: any, ...optionalParams: any[]) => void; errorFunction?: (message?: any, ...optionalParams: any[]) => void; } interface GroupPrimitiveArray { groups: GroupPrimitive[]; } interface GroupPrimitive { name: string; description: string; id: number; created_by?: string; created_at?: string; } interface Group extends GroupPrimitive { members: GroupMember[]; resources: Resource[]; permissions: KeyValue; } interface GroupMember { principal: string; is_admin: boolean; roles: string[]; description?: string; } interface ResourceArray { resources: Resource[]; } interface Resource { resource_type: string; resource_identifier: string; } interface ResourceIdentifierPermissions { identifier: string; permissions: string[]; resource_type: string; } interface ResourceTypeIdentifierPermissions { [resource_type: string]: Array<{ identifier: string; permissions: string[]; }> } interface RoleArray { roles: Role[] } interface Role { name: string; description: string; permissions: ResourceTypePermissionDescription[]; id: string; created_at?: string; } interface ResourceTypePermissionDescription { resource_type: string; name: string; description: string; } interface CanonicalPrincipalPrimitiveArrayObject { canonical_principals: CanonicalPrincipalPrimitive[]; } interface CanonicalPrincipalPrimitive { is_client?: boolean; account_id?: string; canonical_principal: string; is_pending: boolean; profiles: Profile[]; } interface Principal { groups: PrincipalGroup[]; permissions: KeyValue; canonical_principal: string; is_client: boolean; is_pending: boolean; profile?: Profile; account_id?: string; } interface PrincipalGroup { name: string; description: string; id: string; created_by?: string; created_at?: string; is_admin: boolean; } interface ByResourceSearchResult { canonical_principals: CanonicalPrincipalSearchResult[]; } interface CanonicalPrincipalSearchResult { canonical_principal: string; resource_type: string; is_client: boolean; permissions: KeyValue; } export declare class CoamClient { constructor(options: CoamClientOptions); buildGroupUrlFromId(groupId: string): string; hasPermission(principal: string, resourceType: string, resourceIdentifier: string, permission: string): Promise; grantRoleToPrincipal(groupUrl: string, principal: string, roleName: string): Promise; getGroupInfo(groupUrl: string): Promise; setAdminFlag(groupId: string, principal: string, isAdmin: boolean): Promise; removeUserRole(groupId: string, principal: string, role: string): Promise; addUserRole(groupId: string, principal: string, role: string): Promise; modifyUserRoles(groupId: string, principal: string, rolesChanges: string): Promise; addGroupMember(groupId: string, principal: string, isAdmin: boolean): Promise; removeGroupMember(groupId: string, principal: string): Promise; getRoles(): Promise; findPrincipals(query: string): Promise; getPrincipal(principal: string): Promise; createGroup(name: string, description: string): Promise; removeGroup(groupId: string): Promise; findGroups(resourceType?: string, resourceIdentifier?: string, accountId?: string, forAccountId?: string, relationAccountId?: string, isEssentialGroup?: boolean, offset?: number, limit?: number, q?: string): Promise; removeResourceFromGroup(groupId: string, resourceType: string, resourceId: string): Promise; addResourceToGroup(groupId: string, resourceType: string, resourceId: string): Promise; getUserPermissionsForResourceType(principal: string, resourceType: string, include: boolean, permissionFilters: string[]): Promise; getUserPermissionsForResourceTypes(principal: string, resourceTypes: string[], include: boolean, permissionFilters: string[]): Promise; getUsersWithPermission(resourceType: string, resourceIdentifier: string, permission: string): Promise; getUsersWithResource(resourceType: string, permissionFilters: string[]): Promise; createGroupWithUser(principalToCreateGroup: string, principalToAddToGroup: string, groupName: string, groupDescription: string, rolesToAdd: string[], resourcesToAdd: { resourceType: string, resourceId: string }[]): Promise; group56(principal: string): Promise; } export declare function buildGroupUrlFromId(groupId: string): string; export declare function hasPermission(accessToken: string, principal: string, resourceType: string, resourceIdentifier: string, permission: string): Promise; export declare function grantRoleToPrincipal(accessToken: string, groupUrl: string, principal: string, roleName: string): Promise; export declare function getGroupInfo(accessToken: string, groupUrl: string): Promise; export declare function setAdminFlag(accessToken: string, groupId: string, principal: string, isAdmin: boolean): Promise; export declare function removeUserRole(accessToken: string, groupId: string, principal: string, role: string): Promise; export declare function addUserRole(accessToken: string, groupId: string, principal: string, role: string): Promise; export declare function modifyUserRoles(accessToken: string, groupId: string, principal: string, rolesChanges: string): Promise; export declare function addGroupMember(accessToken: string, groupId: string, principal: string, isAdmin: boolean): Promise; export declare function removeGroupMember(accessToken: string, groupId: string, principal: string): Promise; export declare function getRoles(accessToken: string): Promise; export declare function findPrincipals(accessToken: string, query: string): Promise; export declare function getPrincipal(accessToken: string, principal: string): Promise; export declare function createGroup(accessToken: string, name: string, description: string): Promise; export declare function removeGroup(accessToken: string, groupId: string): Promise; export declare function findGroups(accessToken: string, resourceType?: string, resourceIdentifier?: string, accountId?: string, forAccountId?: string, relationAccountId?: string, isEssentialGroup?: boolean, offset?: number, limit?: number, q?: string): Promise; export declare function removeResourceFromGroup(accessToken: string, groupId: string, resourceType: string, resourceId: string): Promise; export declare function addResourceToGroup(accessToken: string, groupId: string, resourceType: string, resourceId: string): Promise; export declare function getUserPermissionsForResourceType(principal: string, resourceType: string, include: boolean, permissionFilters: string[]): Promise; export declare function getUserPermissionsForResourceTypes(principal: string, resourceTypes: string[], include: boolean, permissionFilters: string[]): Promise; export declare function getUsersWithPermission(accessToken: string, resourceType: string, resourceIdentifier: string, permission: string): Promise; export declare function getUsersWithResource(accessToken: string, resourceType: string, permissionFilters: string[]): Promise; export declare function createGroupWithUser(accessToken: string, principalToCreateGroup: string, principalToAddToGroup: string, groupName: string, groupDescription: string, rolesToAdd: string[], resourcesToAdd: { resourceType: string, resourceId: string }[]): Promise; export declare function group56(principal: string): Promise;