import type { Model, ModelStatic, FindOptions, Attributes } from 'sequelize'; export type CacheResult = { hit: true; data: T; } | { hit: false; data: null; }; export interface KythiaFindOptions extends FindOptions> { noCache?: boolean; customCacheKey?: string; ttl?: number; cacheTags?: string[]; } export interface KythiaFindOrCreateOptions { where: Partial>; defaults?: Partial>; noCache?: boolean; } export interface KythiaCountOptions { where?: Partial>; noCache?: boolean; customCacheKey?: string; ttl?: number; } export interface KythiaModelStatic extends ModelStatic { getCache(this: ModelStatic, options: KythiaFindOptions): Promise; getAllCache(this: ModelStatic, options?: KythiaFindOptions): Promise; findOrCreateCache(this: ModelStatic, options: KythiaFindOrCreateOptions): Promise<[T, boolean]>; countCache(this: ModelStatic, options?: KythiaCountOptions): Promise; invalidateByTags(tags: string[]): Promise; clearCache(key: string): Promise; setCacheEntry(key: string, data: T, ttl?: number, tags?: string[]): Promise; getCachedEntry(key: string, include?: unknown): Promise>; getCacheKey(queryIdentifier: unknown): string; normalizeQueryOptions(options: unknown): unknown; autoBoot(sequelize: unknown): Promise; } export interface KythiaModelWithAssociations extends KythiaModelStatic { associate(models: Record): void; } export type KythiaAttributes = M extends Model ? A : never; export type KythiaCreationAttributes = M extends Model ? C : never; //# sourceMappingURL=Sequelize.d.ts.map