import { types } from 'cassandra-driver'; export interface SaveOptions { ttl?: number; if_not_exist?: boolean; } export interface BaseModelStatic { new (props: T): BaseModel & T; syncDB(callback?: (err: Error | null, result: boolean) => void): void; findAsync(query: FindQuery, options: FindQueryOptions & { raw: true; }): Promise; findAsync(query: FindQuery, options?: FindQueryOptions): Promise[]>; findOneAsync(query: FindQuery, options?: FindQueryOptions): Promise>; updateAsync(query: FindQuery, updateValue: Partial, options?: UpdateOptions): Promise; deleteAsync(query: FindQuery, options?: DeleteOptions): Promise; } export interface BaseModel extends BaseModelStatic { saveAsync(options?: SaveOptions): Promise; toJSON(): T; } export declare type FindQuery = { [KEY in keyof Entity]?: Entity[KEY] | CqlOperatorOptions; } & CqlPaginationOptions; export interface FindQueryOptions { select?: (string | keyof T)[]; materialized_view?: string; } export interface CqlPaginationOptions { $orderby?: { $asc?: keyof Entity | Array; $desc?: keyof Entity | Array; }; $limit?: number; } export interface CqlOperatorOptions { $eq?: T; $ne?: T; $isnt?: T; $gt?: T; $lt?: T; $gte?: T; $lte?: T; $in?: T[]; $like?: string; $token?: T; $contains?: string; $contains_key?: string[]; } export interface UpdateOptions { ttl?: number; if_exists?: boolean; conditions?: { [P in keyof T]?: T[P]; }; } export interface DeleteOptions { if_exists?: boolean; }