import { type Account, type AuthenticatedAccount } from "../../common/data-format.js";
import type { AccountRow } from "../../connector/row-types.js";
import type { SiteContext } from "../../site-context/site-context.types.js";
import type { InteractiveLoginMethod } from "../auth/auth.types.js";
export declare function findAccountByIdAndEmail(siteContext: Pick<SiteContext, "cn">, payload: {
    id: string;
    email: string;
}): Promise<AccountRow>;
export declare function findAccountByEmail(siteContext: Pick<SiteContext, "cn">, email: string): Promise<AccountRow | undefined>;
export declare function getAccount(siteContext: SiteContext, id: string): Promise<Account>;
export declare function getAuthenticatedAccount(siteContext: SiteContext, id: string): Promise<AuthenticatedAccount>;
export declare function getAllAccounts(siteContext: SiteContext): Promise<Account[]>;
export interface AccountPreferencesInput {
    language?: string;
    currentAuthorNodeId?: string;
}
export declare function setAccountPreferences(siteContext: SiteContext, accountId: string, values: AccountPreferencesInput): Promise<void>;
export declare function updateAccountLoginMethod(siteContext: Pick<SiteContext, "cn">, accountId: string, loginMethod: InteractiveLoginMethod): Promise<void>;
export declare function updateAccountActive(siteContext: Pick<SiteContext, "cn">, accountId: string, active: boolean): Promise<void>;
export interface CreateAccountInput {
    email: string;
    language: string;
    name?: string;
    accountType: "local" | "google";
    roles: string[];
}
export declare function createAccount(siteContext: SiteContext, payload: CreateAccountInput): Promise<Account>;
export declare function insertSpecialAccount(siteContext: Pick<SiteContext, "cn">, payload: {
    email: string;
    name: string;
    loginMethod: "localDev" | "platformAdmin";
}): Promise<string>;
export interface UpdateAccountInput {
    email?: string;
    name?: string;
}
export declare function updateAccount(siteContext: SiteContext, accountId: string, payload: UpdateAccountInput): Promise<Account>;
export declare function deleteAccount(siteContext: SiteContext, accountId: string): Promise<void>;
export declare function isAccountReferenced(siteContext: SiteContext, accountId: string): Promise<boolean>;
export declare function resetAccountPassword(siteContext: SiteContext, accountId: string): Promise<void>;
export declare function changeOwnPassword(siteContext: SiteContext, accountId: string, currentPassword: string, newPassword: string): Promise<void>;
