import { GeneralItem } from 'lemon-model';
import { DynamoOption } from './dynamo-service';
/**
 * class: QueryResult
 * - result information of query.
 */
export interface DynamoQueryResult<T> {
    list: T[];
    count?: number;
    last?: number;
}
/**
 * feature: `DynamoSimpleQueriable`
 * - simple query capable class.
 */
export interface DynamoSimpleQueriable<T extends GeneralItem> {
    /**
     * simple range query by `partition-key` w/ limit.
     *
     * @param pkey  value of partition-key
     */
    queryAll(pkey: string, limit?: number, isDesc?: boolean): Promise<DynamoQueryResult<T>>;
    /**
     * simple range query by `partition-key` and `range: sort-key` w/ limit.
     *
     * @param pkey  value of partition-key
     * @param from  range start (included)
     * @param to    range end (included)
     * @param limit limit of page
     * @param last  the last evaluated key (as sort-key)
     */
    queryRange(pkey: string, from: number, to: number, limit?: number, last?: number): Promise<DynamoQueryResult<T>>;
}
/**
 * class: `DynamoQueryService`
 * - support simple query like range search.
 */
export declare class DynamoQueryService<T extends GeneralItem> implements DynamoSimpleQueriable<T> {
    protected options: DynamoOption;
    constructor(options: DynamoOption);
    /**
     * say hello of identity.
     */
    hello: () => string;
    queryAll(pkey: string, limit?: number, isDesc?: boolean): Promise<DynamoQueryResult<T>>;
    queryRange(pkey: string, from: number, to: number, limit?: number, last?: number): Promise<DynamoQueryResult<T>>;
    /**
     * query by range of sort-key.
     * NOTE - `dynamodb`의 일부 코드를 이용하여, 간단버전으로 지원함.
     */
    queryRangeBy(pkey: string, from: number, to: number, limit?: number, last?: number, isDesc?: boolean): Promise<DynamoQueryResult<T>>;
    /**
     * query by range of sort-key.
     * NOTE - `dynamodb`의 일부 코드를 이용하여, 간단버전으로 지원함.
     */
    buildQuery(pkey: string, from: number, to: number, limit?: number, last?: number, isDesc?: boolean): any;
}
