import { noChange, TemplateResult } from 'lit';
import { AsyncDirective } from 'lit/async-directive.js';
import { AppUser } from '../model/spa-model.js';
/**
* Base class for auth directives - handles store subscription
*/
declare abstract class AuthDirectiveBase extends AsyncDirective {
private subscription?;
protected user?: AppUser;
protected authCheckComplete: boolean;
disconnected(): void;
reconnected(): void;
protected subscribe(): void;
protected abstract computeValue(): TemplateResult | string | typeof noChange;
}
/**
* ifAuth - renders content only if user is logged in
*
* @example
* ${ifAuth(html``)}
* ${ifAuth(html``, html``)}
*/
declare class IfAuthDirective extends AuthDirectiveBase {
private content?;
private fallback?;
render(content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
protected computeValue(): TemplateResult | string;
}
/**
* ifRole - renders content only if user has at least one of the specified roles
*
* @example
* ${ifRole('admin', html``)}
* ${ifRole(['admin', 'editor'], html``, html`Read only`)}
*/
declare class IfRoleDirective extends AuthDirectiveBase {
private roles;
private content?;
private fallback?;
render(roles: string | string[], content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
protected computeValue(): TemplateResult | string;
}
/**
* ifNotAuth - renders content only if user is NOT logged in
*
* @example
* ${ifNotAuth(html``)}
*/
declare class IfNotAuthDirective extends AuthDirectiveBase {
private content?;
private fallback?;
render(content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
protected computeValue(): TemplateResult | string;
}
export declare const ifAuth: (content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult;
export declare const ifRole: (roles: string | string[], content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult;
export declare const ifNotAuth: (content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult;
export {};
//# sourceMappingURL=auth-directives.d.ts.map