import type { KoaContextWithOIDC } from 'oidc-provider';
import type { Operation } from '../../http/Operation';
import type { Representation } from '../../http/representation/Representation';
import { AsyncHandler } from '../../util/handlers/AsyncHandler';
export type Interaction = NonNullable<KoaContextWithOIDC['oidc']['entities']['Interaction']>;
export interface InteractionHandlerInput {
    /**
     * The operation to execute.
     */
    operation: Operation;
    /**
     * Will be defined if the OIDC library expects us to resolve an interaction it can't handle itself,
     * such as logging a user in.
     */
    oidcInteraction?: Interaction;
}
/**
 * Handler used for IDP interactions.
 * Only supports JSON data.
 */
export declare abstract class InteractionHandler extends AsyncHandler<InteractionHandlerInput, Representation> {
    canHandle({ operation }: InteractionHandlerInput): Promise<void>;
}
