import * as DynamoDB 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';
/**
 * base class for all basic write request classes (DeleteItem, PutItem, UpdateItem
 */
export declare abstract class WriteRequest<T, I extends DynamoDB.DeleteItemInput | DynamoDB.PutItemInput | DynamoDB.UpdateItemInput, R extends WriteRequest<T, I, R>> extends StandardRequest<T, I, R> {
    protected constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>);
    returnItemCollectionMetrics(returnItemCollectionMetrics: DynamoDB.ReturnItemCollectionMetrics): R;
    onlyIfAttribute<K extends keyof T>(attributePath: K): RequestConditionFunction<R, T, K>;
    /**
     * @param conditionDefFns
     * @example writeRequest.onlyIf( attribute('age').eq(23) )
     * @example writeRequest.onlyIf( or( attribute('age').lt(18), attribute('age').gt(65) ) )
     */
    onlyIf(...conditionDefFns: ConditionExpressionDefinitionFunction[]): R;
    returnValues(returnValues: 'NONE' | 'ALL_OLD'): R;
    exec(): Observable<void>;
}
