import { NamespaceAdapter } from '../index.js'; type SequelizeModel = { findOne: (options: { where: unknown; attributes?: string[]; raw?: boolean; }) => Promise | null>; }; type SequelizeLiteral = unknown; type SequelizeHelpers = { /** Sequelize.where() — creates a WHERE condition */ where: (left: SequelizeLiteral, right: unknown) => unknown; /** Sequelize.fn() — wraps a SQL function */ fn: (fnName: string, ...args: SequelizeLiteral[]) => SequelizeLiteral; /** Sequelize.col() — references a column */ col: (columnName: string) => SequelizeLiteral; }; /** * Create a namespace adapter for Sequelize * * @example * ```ts * import { Sequelize } from "sequelize"; * import { createNamespaceGuard } from "namespace-guard"; * import { createSequelizeAdapter } from "namespace-guard/adapters/sequelize"; * import { User, Organization } from "./models"; * * const guard = createNamespaceGuard( * { * reserved: ["admin", "api", "settings"], * sources: [ * { name: "user", column: "handle", scopeKey: "id" }, * { name: "organization", column: "slug", scopeKey: "id" }, * ], * }, * createSequelizeAdapter({ user: User, organization: Organization }) * ); * * // For case-insensitive matching, pass Sequelize helpers: * // createSequelizeAdapter( * // { user: User, organization: Organization }, * // { where: Sequelize.where, fn: Sequelize.fn, col: Sequelize.col } * // ) * ``` */ declare function createSequelizeAdapter(models: Record, helpers?: SequelizeHelpers): NamespaceAdapter; export { createSequelizeAdapter };