import type { Principal } from './principal.ts'; /** * Definition of an authorization source, which validates a principal into an authorized principal * * @concrete */ export interface Authorizer

{ /** * Authorize inbound principal, verifying it's permission to access the system. * @returns New principal that conforms to the required principal shape */ authorize(principal: P): Promise

| P; }