import { type AwsCredentialProviderWithMetaData } from '../aws/coreAuth.js'; import { type CustomCommand } from './AbstractCommand.js'; export type ClientConstructor = new (args: any) => T; export interface CustomClientMetadata { clientName: string; } export interface CommandWithInput { input: any; } /** * Base class for Custom AWS service clients */ export declare abstract class AbstractClient { protected customContext: CustomClientContext; config: any; middlewareStack: any; protected commandRegistry: Map>; protected credentials: AwsCredentialProviderWithMetaData; protected region: string | undefined; protected detailsCache: Record>>; protected cache(resourceId: string, type: string, data: any): void; protected getCached(resourceId: string, type: string): any; constructor(options: { credentials: AwsCredentialProviderWithMetaData; region: string | undefined; }, customContext: CustomClientContext); /** * Abstract method that each service client implements to register its commands */ protected abstract registerCommands(): void; protected getCustomClientContext(): CustomClientContext; /** * Register a command implementation */ protected registerCommand(customCommand: CustomCommand): void; /** * Send a command using the registered implementation */ send(command: CommandWithInput): Promise | undefined>; /** * Destroy the client and cleanup resources */ destroy(): void; } //# sourceMappingURL=AbstractClient.d.ts.map