import { CreateTableOutput } from 'aws-sdk/clients/dynamodb';
import { AWSError } from 'aws-sdk/lib/error';
import { PromiseResult } from 'aws-sdk/lib/request';
import { DynamoDBClient } from '../../shared/aws/dynamodb';
import { BaseUserInfo, CompleteGettingStartedTaskPayload, UserInfo } from './types';
import { USER_INFO_SORT_KEY } from './model';
export interface UserDatasource {
    createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
    getUserInfo(userId: string): Promise<UserInfo>;
    completeGettingStartedTask(params: CompleteGettingStartedTaskPayload): Promise<UserInfo>;
    insertUserInfoRow(Item: UserInfoDynamoRow): Promise<UserInfo>;
}
export declare class DynamoUserDatasource implements UserDatasource {
    private dynamoClient;
    constructor(dynamoClient?: DynamoDBClient);
    createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
    getUserInfo: (userId: string) => Promise<UserInfo<Date>>;
    completeGettingStartedTask: (params: CompleteGettingStartedTaskPayload) => Promise<UserInfo<Date>>;
    insertUserInfoRow: (Item: UserInfoDynamoRow) => Promise<UserInfo<Date>>;
    private userInfoFromDynamoRow;
}
interface UserInfoDynamoRow extends BaseUserInfo<number> {
    hashKey: string;
    sortKey: typeof USER_INFO_SORT_KEY;
}
declare const dynamoUserDatasource: DynamoUserDatasource;
export default dynamoUserDatasource;
