import { type TemplateResult, nothing } from 'lit';
import { DomainEntity, type ApiModel, type DomainProperty } from '@api-client/core/browser.js';
import { ApiModelingScreen } from './ApiModelingScreen.js';
/**
 * A screen for editing API access information.
 * Used in API modeling.
 *
 * Note that unlike configuration components, screens alter the model directly
 * and notify changes as needed (on the model).
 */
export default class ApiModelingAccessScreen extends ApiModelingScreen {
    /**
     * A computed property from the data domain model that has the password semantic tag.
     */
    protected accessor passwordProperty: DomainProperty | null;
    /**
     * A computed property from the data domain model that has the user role semantic tag.
     *
     * TODO:
     * - We should scan the entire data domain for UserRole semantic as likely there might be more than one.
     *   We should recommend the one on the `User` entity if multiple found.
     */
    protected accessor roleProperty: DomainProperty | null;
    protected handleModelChange(model: ApiModel | undefined): void;
    protected analyzeUserEntity(entity: DomainEntity): void;
    protected handleAuthStrategyChange(e: CustomEvent): void;
    protected handleAuthzStrategyChange(e: CustomEvent): void;
    protected handleAccessConfigChange(): void;
    render(): TemplateResult | typeof nothing;
    protected renderAuthentication(model: ApiModel): TemplateResult;
    protected renderPasswordConfirmation(model: ApiModel): TemplateResult | typeof nothing;
    protected renderAuthorization(model: ApiModel): TemplateResult;
    protected renderRoleConfirmation(model: ApiModel): TemplateResult | typeof nothing;
    protected renderApiAccessConfiguration(): TemplateResult;
}
//# sourceMappingURL=ApiModelingAccessScreen.d.ts.map