/**
 * @module store-requests
 */
import * as DynamoDB from 'aws-sdk/clients/dynamodb';
import { Logger } from '../../../logger/logger';
import { ModelConstructor } from '../../../model/model-constructor';
import { Omit } from '../../../model/omit.type';
import { DynamoDbWrapper } from '../../dynamo-db-wrapper';
import { RequestUpdateFunction } from '../../expression/type/update-expression-definition-chain';
import { UpdateExpressionDefinitionFunction } from '../../expression/type/update-expression-definition-function';
import { WriteRequest } from '../write.request';
import { UpdateResponse } from './update.response';
declare type UpdateRequestReturnT<T> = Omit<Omit<UpdateRequest<T>, 'exec'>, 'execFullResponse'> & {
    exec(): Promise<T>;
    execFullResponse(): Promise<UpdateResponse<T>>;
};
declare type UpdateRequestReturnPartialT<T> = Omit<Omit<UpdateRequest<T>, 'exec'>, 'execFullResponse'> & {
    exec(): Promise<Partial<T>>;
    execFullResponse(): Promise<UpdateResponse<T>>;
};
/**
 * Request class for the UpdateItem operation.
 */
export declare class UpdateRequest<T> extends WriteRequest<T, DynamoDB.UpdateItemInput, DynamoDB.UpdateItemOutput, UpdateRequest<T>> {
    protected readonly logger: Logger;
    constructor(dynamoDBWrapper: DynamoDbWrapper, modelClazz: ModelConstructor<T>, partitionKey: any, sortKey?: any);
    /**
     * create and add a single update operation
     * @example req.updateAttribute('path.to.attr').set('newVal')
     */
    updateAttribute<K extends keyof T>(attributePath: K): RequestUpdateFunction<UpdateRequest<T>, T, K>;
    /**
     * add multiple update operations comma separated
     * @example req.operations(update('path.to.attr).set('newVal'), ... )
     */
    operations(...updateDefFns: UpdateExpressionDefinitionFunction[]): UpdateRequest<T>;
    returnValues(returnValues: 'ALL_OLD' | 'ALL_NEW'): UpdateRequestReturnT<T>;
    returnValues(returnValues: 'UPDATED_OLD' | 'UPDATED_NEW'): UpdateRequestReturnPartialT<T>;
    returnValues(returnValues: 'NONE'): UpdateRequest<T>;
    protected doRequest(params: DynamoDB.UpdateItemInput): Promise<DynamoDB.UpdateItemOutput>;
}
export {};
