import { DeleteItemInput, GetItemInput, PutItemInput, QueryInput, ScanInput, UpdateItemInput } from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { Metadata } from '../../decorator/metadata/metadata';
import { ModelConstructor } from '../../model/model-constructor';
import { DynamoRx } from '../dynamo-rx';
export declare abstract class BaseRequest<T, I extends DeleteItemInput | GetItemInput | PutItemInput | QueryInput | ScanInput | UpdateItemInput> {
    readonly dynamoRx: DynamoRx;
    readonly params: I;
    readonly modelClazz: ModelConstructor<T>;
    readonly metadata: Metadata<T>;
    constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>, tableName: string);
    abstract execFullResponse(): Observable<any>;
    abstract exec(): Observable<T[] | T | null | void>;
}
