import { Engine } from '../engine'; import { Document } from './document'; import { Query } from './method/query'; import { RangeQuery } from './method/range-query'; import { Scan } from './method/scan'; import { ModelOptions } from './option'; export interface ReadableParams { table: string; hashKey: H; rangeKey?: RK; options?: ModelOptions; } export declare abstract class Readable { protected readonly table: string; protected readonly hash: H; protected readonly range?: R; protected readonly options: ModelOptions; protected engine: Engine; protected constructor(params: ReadableParams); /** * Get `Query`(Hash) * @param {S[H]} hash * @returns {Query} */ query(hash: S[H]): Query; /** * Get `RangeQuery`(Range) * @todo consider RangeReadable. RangeModel, SecondaryIndex use this * @param {S[H]} hash * @returns {Query} */ rangeQuery(hash: S[H]): RangeQuery; /** * Get `Scan` * @returns {Scan} */ scan(): Scan; /** * SetEngine * @param {ReadableParams} params * @protected */ protected setEngine(params: ReadableParams): void; /** * Create document * @param {S} item * @param {boolean} exists - Set true if you convinced, it exists on database * @returns {Document} * @protected */ protected createDocument(item: any, exists?: boolean): Document; /** * Operate query * @param params * @returns {Promise} * @private */ private doQuery; /** * Operate scan * @param params * @returns {Promise} */ private doScan; }