import type { WebSocketInputWithModels, AuthorizerResponse, WebSocketHandlerReturn, WebSocketMiddlewareChain } from './types';
import type { AmplifyModelType, QueryFactoryResult } from '../../queries/types';
export declare function createWebSocketChain<TTypes extends Record<string, AmplifyModelType>, TReturn = WebSocketHandlerReturn>(config?: {
    enableDebugLogging?: boolean;
    onError?: (error: unknown, middlewareName: string) => void;
}): WebSocketMiddlewareChain<TTypes, TReturn>;
export declare function wrapWebSocketHandler<TTypes extends Record<string, AmplifyModelType>, TReturn extends WebSocketHandlerReturn = WebSocketHandlerReturn>(chain: WebSocketMiddlewareChain<TTypes, TReturn>, handler: (input: WebSocketInputWithModels<TTypes>) => Promise<TReturn>): (event: WebSocketInputWithModels<TTypes>['event'], context: WebSocketInputWithModels<TTypes>['context']) => Promise<TReturn>;
export declare function createAllowPolicy(principalId: string, resourceArn?: string, action?: string, context?: Record<string, string | number | boolean>): AuthorizerResponse;
export declare function createDenyPolicy(principalId: string, resourceArn?: string, action?: string): AuthorizerResponse;
export declare function getModelsFromInput<TTypes extends Record<string, AmplifyModelType>>(input: WebSocketInputWithModels<TTypes>): {
    [K in keyof TTypes]: QueryFactoryResult<K & string, TTypes>;
};
export declare function getModelFromInput<T extends keyof TTypes, TTypes extends Record<string, AmplifyModelType>>(input: WebSocketInputWithModels<TTypes>, modelName: T): QueryFactoryResult<T & string, TTypes>;
//# sourceMappingURL=WebSocketMiddlewareChain.d.ts.map