import { Driver, Session } from "neo4j-driver";
export declare function getDriver(): Driver;
export declare function getSession(): Session;
export declare function closeDriver(): Promise<void>;
/**
 * Thrown by getUserTimezone when called without a userId. Caller-bug class —
 * surfaces a missing wire-up rather than letting the read silently widen to
 * an account-wide query that would target a non-deterministic UserProfile row.
 */
export declare class MissingUserIdError extends Error {
    constructor(message: string);
}
/**
 * Fetches the user's IANA timezone from their UserProfile node.
 *
 * UserProfile read doctrine: single-row consumers key reads on
 * (accountId, userId). AccountId-only reads are forbidden here because
 * enforces (accountId, userId) uniqueness — a bare-accountId read
 * would target a non-deterministic row and (in multi-row state) point the
 * caller at a remediation that writes to a different row than the read.
 *
 * Throws MissingUserIdError when userId is empty — caller forgot to thread
 * the live userId from the MCP session.
 * Throws Error when no UserProfile exists for the (accountId, userId) pair.
 * Throws Error when the row exists but timezone is unset — message names
 * the exact UserProfile so the operator can target the same row with
 * profile-update.
 */
export declare function getUserTimezone(accountId: string, userId: string): Promise<string>;
//# sourceMappingURL=neo4j.d.ts.map