import { Model, Sequelize, ModelStatic } from 'sequelize'; /** * Sequelize model for Flipper features. * Represents a feature flag with a unique key. */ export declare class FlipperFeatureModel extends Model { id: number; key: string; createdAt: Date; updatedAt: Date; gates?: FlipperGateModel[]; } /** * Sequelize model for Flipper gates. * Represents the gate configuration (boolean, actor, group, percentage, etc.) for a feature. */ export declare class FlipperGateModel extends Model { id: number; featureKey: string; key: string; value: string | null; createdAt: Date; updatedAt: Date; feature?: FlipperFeatureModel; } /** * Options for creating Flipper models. */ export interface CreateFlipperModelsOptions { featureTableName?: string; gateTableName?: string; timestamps?: boolean; underscored?: boolean; } /** * Return type for createFlipperModels */ export interface FlipperModels { Feature: ModelStatic; Gate: ModelStatic; } /** * Factory function to create Flipper Sequelize models. * * This sets up the Feature and Gate models with their associations. * By default, uses 'flipper_features' and 'flipper_gates' table names. * * @param sequelize - The Sequelize instance * @param options - Configuration options for table names and behavior * @returns Object with Feature and Gate models * * @example * const sequelize = new Sequelize('mysql://user:pass@localhost/db') * const { Feature, Gate } = createFlipperModels(sequelize) * await Feature.sync() // Create tables if they don't exist */ export declare function createFlipperModels(sequelize: Sequelize, options?: CreateFlipperModelsOptions): FlipperModels; //# sourceMappingURL=Models.d.ts.map