import { ArchbaseEntityTransformer, ArchbaseRemoteApiClient, ArchbaseRemoteApiService } from '@archbase/data'; import { CapabilityDependencyTreeDto, LoggedUserPermissionsDto, ResouceActionPermissionDto, ResoucePermissionsWithTypeDto, ResourceDto, ResourcePermissionsDto, ResourceRegisterDto } from './SecurityDomain'; import { SecurityType } from './SecurityType'; export declare class ArchbaseResourceService extends ArchbaseRemoteApiService implements ArchbaseEntityTransformer { constructor(client: ArchbaseRemoteApiClient); protected configureHeaders(): Record; transform(entity: ResourceDto): ResourceDto; protected getEndpoint(): string; getId(entity: ResourceDto): string; isNewRecord(entity: ResourceDto): boolean; getAllPermissionsAvailable(): Promise; getPermissionsBySecurityId(securityId: string, type: SecurityType): Promise; /** * Tudo de que uma capacidade depende, direta e indiretamente. * *

Sob demanda, e não dentro do catálogo: o fecho de centenas de capacidades numa resposta só * custaria mais do que a informação vale. As dependências **diretas** já vêm em * `PermissionWithTypesDto.requires`. * *

Devolve `null` quando o backend não tem o endpoint (archbase-security anterior a 3.4), em vez * de estourar. Quem chama distingue "não depende de nada" de "não deu para saber" — se a diferença * for engolida, a tela deixa de oferecer as dependências e ninguém entende por quê. */ getCapabilityDependencies(actionId: string): Promise; createPermission(securityId: string, actionId: string, type: SecurityType): Promise; deletePermission(permissionId: string): Promise; /** * Tudo que o usuário logado alcança, em uma requisição. * *

Existe porque a pergunta "o que esta pessoa pode?" não tinha resposta barata: o caminho por * recurso (`/permissions/{resourceName}`) obriga uma requisição por recurso, e quem monta um menu * precisa da resposta para dezenas deles. Sem isto, o produto desiste de perguntar e mostra tudo * para todo mundo. * *

Devolve `null` quando o backend não tem o endpoint (archbase-security anterior a * 3.2.3), em vez de estourar. Quem chama distingue "não pode nada" de "não deu para saber" — os * dois viram mapa vazio se a diferença for engolida, e é assim que uma tela passa a esconder o * que deveria mostrar. */ findLoggedUserPermissions(): Promise; /** * O que o usuário logado pode NESTE recurso — **a leitura que o `registerResource` não é**. * *

O backend marca esta rota como `selfService`: qualquer autenticado lê as próprias * permissões sem ser administrador. É a contraparte de leitura do `POST /register`, que * escreve o catálogo e por isso exige admin (`ArchbaseSecurityAdminEndpoint` sem * `selfService`).

* *

Devolve o mesmo `ResourcePermissionsDto` do registro, de propósito: quem chama troca um * pelo outro sem tocar em mais nada. Recurso ainda não cadastrado responde `permissions: []` em * vez de 404 — para quem só quer saber o que pode, "nada concedido" e "nada cadastrado" dão no * mesmo.

*/ findLoggedUserResourcePermissions(resourceName: string): Promise; registerResource(resourceRegister: ResourceRegisterDto): Promise; }