/**
 * @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 { WriteRequest } from '../write.request';
import { PutResponse } from './put.response';
declare type PutRequestReturnT<T> = Omit<Omit<PutRequest<T>, 'exec'>, 'execFullResponse'> & {
    exec(): Promise<T>;
    execFullResponse(): Promise<PutResponse<T>>;
};
/**
 * Request class for the PutItem operation.
 */
export declare class PutRequest<T> extends WriteRequest<T, DynamoDB.PutItemInput, DynamoDB.PutItemOutput, PutRequest<T>> {
    protected readonly logger: Logger;
    constructor(dynamoDBWrapper: DynamoDbWrapper, modelClazz: ModelConstructor<T>, item: T);
    /**
     * Adds a condition expression to the request, which makes sure the item will only be saved if the id does not exist
     */
    ifNotExists(predicate?: boolean): PutRequest<T>;
    returnValues(returnValues: 'ALL_OLD'): PutRequestReturnT<T>;
    returnValues(returnValues: 'NONE'): PutRequest<T>;
    protected doRequest(params: DynamoDB.PutItemInput): Promise<DynamoDB.PutItemOutput>;
}
export {};
