import { PutItemOutput, ReturnConsumedCapacity, ReturnItemCollectionMetrics } from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { ModelConstructor } from '../../../model/model-constructor';
import { DynamoRx } from '../../dynamo-rx';
import { ConditionExpressionDefinitionFunction } from '../../expression/type/condition-expression-definition-function';
import { RequestConditionFunction } from '../../expression/type/request-condition-function';
import { BaseRequest } from '../base.request';
export declare class PutRequest<T> extends BaseRequest<T, any> {
    constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>, tableName: string, item: T);
    /**
     * Adds a condition expression to the request, which makes sure the item will only be saved if the id does not exist
     * @returns {PutRequest<T>}
     */
    ifNotExists(predicate?: boolean): PutRequest<T>;
    returnConsumedCapacity(level: ReturnConsumedCapacity): PutRequest<T>;
    returnItemCollectionMetrics(returnItemCollectionMetrics: ReturnItemCollectionMetrics): PutRequest<T>;
    returnValues(returnValues: 'NONE' | 'ALL_OLD'): PutRequest<T>;
    whereAttribute(attributePath: keyof T): RequestConditionFunction<PutRequest<T>>;
    where(...conditionDefFns: ConditionExpressionDefinitionFunction[]): PutRequest<T>;
    execFullResponse(): Observable<PutItemOutput>;
    exec(): Observable<void>;
}
