import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
import type Serverless from 'serverless';
import type Plugin from 'serverless/classes/Plugin';
import type Aws from 'serverless/plugins/aws/provider/awsProvider';
import type { CloudFormationResource } from 'serverless/plugins/aws/provider/awsProvider';
import { SeedConfig } from './config';
declare class ServerlessDynamoDBPlugin implements Plugin {
    private serverless;
    readonly hooks: Record<string, () => Promise<unknown>>;
    readonly commands: Plugin.Commands;
    readonly provider = "aws";
    private readonly config;
    private readonly options;
    constructor(serverless: Serverless, options: Serverless.Options);
    get port(): number;
    get host(): string;
    get stage(): string;
    /**
     * Check if the handler needs to be executed based on stage
     */
    shouldExecute(): boolean;
    dynamodbOptions(): {
        raw: DynamoDBClient;
        doc: DynamoDBDocumentClient;
    };
    migrateHandler(): Promise<void>;
    seedHandler(): Promise<void>;
    removeHandler(): Promise<void>;
    installHandler(): Promise<void>;
    startHandler(): Promise<void>;
    endHandler(): Promise<void>;
    getTableDefinitionsFromStack(stack: Aws.Resources): CloudFormationResource['Properties'][];
    get tableDefinitions(): CloudFormationResource['Properties'][];
    /**
       * Gets the seeding sources
       */
    get seedSources(): SeedConfig[string]['sources'];
    createTable(dbClients: {
        raw: DynamoDBClient;
        doc: DynamoDBDocumentClient;
    }, migration: CloudFormationResource['Properties'] & Record<string, any>): Promise<void>;
}
export = ServerlessDynamoDBPlugin;
