import { CredentialDataSupplier, VcIssuer } from '@sphereon/oid4vci-issuer';
import { IOID4VCIServerOpts, OID4VCIServer } from '@sphereon/oid4vci-issuer-server';
import { ExpressSupport } from '@sphereon/ssi-express-support';
import { IOID4VCIIssuer, IIssuerInstanceArgs, IssuerInstance } from '@sphereon/ssi-sdk.oid4vci-issuer';
import { Express } from 'express';
import { IIdentifierResolution } from '@sphereon/ssi-sdk-ext.identifier-resolution';
import { IOID4VCIStore } from '@sphereon/ssi-sdk.oid4vci-issuer-store';
import { IAgentContext, IDIDManager, IKeyManager, IResolver, ICredentialVerifier, ICredentialIssuer } from '@veramo/core';
import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service';

type IRequiredContext = IAgentContext<IPlugins>;
type IPlugins = IDIDManager & IKeyManager & IResolver & IIdentifierResolution & IOID4VCIStore & IOID4VCIIssuer & ICredentialVerifier & ICredentialIssuer & IJwtService;

interface IOID4VCIRestAPIOpts extends IOID4VCIServerOpts {
}
declare class OID4VCIRestAPI {
    private readonly _expressSupport;
    private readonly _context;
    private readonly _opts?;
    private readonly _restApi;
    private readonly _instance;
    private readonly _issuer;
    private readonly _router;
    private _baseUrl;
    private _basePath;
    static init(args: {
        context: IRequiredContext;
        issuerInstanceArgs: IIssuerInstanceArgs;
        credentialDataSupplier?: CredentialDataSupplier;
        expressSupport: ExpressSupport;
        opts?: IOID4VCIRestAPIOpts;
    }): Promise<OID4VCIRestAPI>;
    private readonly OID4VCI_SWAGGER_URL;
    private constructor();
    private setupSwaggerUi;
    get express(): Express;
    get context(): IRequiredContext;
    get opts(): IOID4VCIRestAPIOpts | undefined;
    get restApi(): OID4VCIServer;
    get instance(): IssuerInstance;
    get issuer(): VcIssuer;
    stop(): Promise<boolean>;
}

export { type IOID4VCIRestAPIOpts, type IPlugins, type IRequiredContext, OID4VCIRestAPI };
