// Minimal type stubs to satisfy Sequelize type imports

export type WhereOptions = Record<string | symbol, any>;

export type FindOptions = {
  where?: WhereOptions;
  include?: any[];
  order?: any[];
  limit?: number;
  offset?: number;
  attributes?: string[] | { include?: any[]; exclude?: string[] };
  group?: string | string[];
  having?: any;
  transaction?: any;
  lock?: any;
  raw?: boolean;
  paranoid?: boolean;
  distinct?: boolean;
  subQuery?: boolean;
};

export type CreateOptions = { transaction?: any; returning?: boolean };
export type UpdateOptions = { where?: WhereOptions; transaction?: any; returning?: boolean };
export type DestroyOptions = { where?: WhereOptions; transaction?: any; truncate?: boolean };

// These are used as type-only in model declarations
export type InferAttributes<T, _Options extends object = never> = T;
export type InferCreationAttributes<T, _Options extends object = never> = Partial<T>;
export type CreationOptional<T> = T | undefined;

// Sequelize OrderItem type
export type OrderItem = [any, string] | string | any;

// ModelStatic type — used in some places
export type ModelStatic<M> = { new (): M; [key: string]: any };
