import { IPluginMethodMap, IAgentContext, IResolver, IAgentPlugin } from '@veramo/core';
import { VerifyCallback, IDomainLinkageValidation, IDidConfigurationResource, IResourceValidation } from '@sphereon/wellknown-dids-client';

interface IWellKnownDidVerifier extends IPluginMethodMap {
    registerSignatureVerification(args: IRegisterSignatureVerificationArgs, context: IRequiredContext): Promise<void>;
    removeSignatureVerification(args: IRemoveSignatureVerificationArgs, context: IRequiredContext): Promise<boolean>;
    verifyDomainLinkage(args: IVerifyDomainLinkageArgs, context: IRequiredContext): Promise<IDomainLinkageValidation>;
    verifyDidConfigurationResource(args: IVerifyDidConfigurationResourceArgs, context: IRequiredContext): Promise<IResourceValidation>;
}
interface IWellKnownDidVerifierOptionsArgs {
    signatureVerifications?: Record<string, VerifyCallback>;
    onlyVerifyServiceDids?: boolean;
}
interface IRegisterSignatureVerificationArgs {
    callbackName: string;
    signatureVerification: VerifyCallback;
}
interface IRemoveSignatureVerificationArgs {
    callbackName: string;
}
interface IVerifyDomainLinkageArgs {
    did: string;
    signatureVerification: VerifyCallback | string;
    onlyVerifyServiceDids?: boolean;
}
interface IVerifyDidConfigurationResourceArgs {
    signatureVerification: VerifyCallback | string;
    configuration?: IDidConfigurationResource;
    origin?: string;
    did?: string;
}
type IRequiredContext = IAgentContext<IResolver>;

/**
 * {@inheritDoc IWellKnownDidVerifier}
 */
declare class WellKnownDidVerifier implements IAgentPlugin {
    readonly schema: any;
    readonly methods: IWellKnownDidVerifier;
    private readonly signatureVerifications;
    private readonly onlyVerifyServiceDids;
    constructor(args?: IWellKnownDidVerifierOptionsArgs);
    /** {@inheritDoc IWellKnownDidVerifier.registerSignatureVerification} */
    private registerSignatureVerification;
    /** {@inheritDoc IWellKnownDidVerifier.removeSignatureVerification} */
    private removeSignatureVerification;
    /** {@inheritDoc IWellKnownDidVerifier.verifyDomainLinkage} */
    private verifyDomainLinkage;
    /** {@inheritDoc IWellKnownDidVerifier.verifyDidConfigurationResource} */
    private verifyDidConfigurationResource;
    private getSignatureVerification;
}

/**
 * @public
 */
declare const schema: any;

export { type IRegisterSignatureVerificationArgs, type IRemoveSignatureVerificationArgs, type IRequiredContext, type IVerifyDidConfigurationResourceArgs, type IVerifyDomainLinkageArgs, type IWellKnownDidVerifier, type IWellKnownDidVerifierOptionsArgs, WellKnownDidVerifier, schema };
