import { DeleteItemInput, PutItemInput, ReturnItemCollectionMetrics, UpdateItemInput } from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { ModelConstructor } from '../../model';
import { DynamoRx } from '../dynamo-rx';
import { RequestConditionFunction } from '../expression';
import { ConditionExpressionDefinitionFunction } from '../expression/type';
import { StandardRequest } from './standard.request';
export declare abstract class WriteRequest<T, I extends DeleteItemInput | PutItemInput | UpdateItemInput, R extends WriteRequest<T, I, R>> extends StandardRequest<T, I, R> {
    protected constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>);
    returnItemCollectionMetrics(returnItemCollectionMetrics: ReturnItemCollectionMetrics): R;
    onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunction<R, T, K>;
    /**
     * @param conditionDefFns
     */
    onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): R;
    returnValues(returnValues: 'NONE' | 'ALL_OLD'): R;
    exec(): Observable<void>;
}
