import type { AuthAdapter, AuthSession, SignInCredentials, SignInResult } from './auth-adapter';
/**
 * Deterministic local auth (EC-150) for the in-memory persistence mode: the
 * whole sign-in → role-enforcement → sign-out flow works offline, in tests,
 * and in fixtures with zero backend setup. User ids are the canonical
 * `DEV_USERS` ids from `@elytracms/core/persistence`, which the seeded
 * `projectMembers` fixtures reference — so `admin@example.com` is admin,
 * `editor@…` editor, `viewer@…` viewer on every sample project.
 *
 * Dev credentials (fixed, documented, local-only):
 * - admin@example.com  / elytra-admin
 * - editor@example.com / elytra-editor
 * - viewer@example.com / elytra-viewer
 *
 * Adminness is the `projectMembers` role, not a global flag — project creation
 * is config/CLI-owned now (AD-11), so there is no in-studio `create-projects`
 * capability to grant.
 *
 * The session survives reloads via injected storage (defaults to
 * `sessionStorage` in the browser, an in-memory map elsewhere).
 */
export declare const LOCAL_DEV_CREDENTIALS: readonly [{
    readonly user: {
        readonly id: "user_admin";
        readonly email: "admin@example.com";
        readonly name: "Ada Admin";
    };
    readonly password: "elytra-admin";
}, {
    readonly user: {
        readonly id: "user_editor";
        readonly email: "editor@example.com";
        readonly name: "Edi Editor";
    };
    readonly password: "elytra-editor";
}, {
    readonly user: {
        readonly id: "user_viewer";
        readonly email: "viewer@example.com";
        readonly name: "Vio Viewer";
    };
    readonly password: "elytra-viewer";
}];
/** The storage slice the adapter needs (sessionStorage-compatible). */
export interface SessionStore {
    getItem(key: string): string | null;
    setItem(key: string, value: string): void;
    removeItem(key: string): void;
}
export declare class LocalAuthAdapter implements AuthAdapter {
    private readonly store;
    constructor(store?: SessionStore);
    currentSession(): Promise<AuthSession | null>;
    signIn(credentials: SignInCredentials): Promise<SignInResult>;
    signUp(): Promise<SignInResult>;
    signOut(): Promise<void>;
}
