import { AuthorizationRequestPayload, AuthorizationRequestState, AuthorizationResponsePayload, AuthorizationResponseState, ClaimPayloadCommonOpts, ClientMetadataOpts, IRPSessionManager, PresentationDefinitionWithLocation, PresentationVerificationCallback, RequestObjectPayload, ResponseMode, ResponseURIType, SupportedVersion, VerifiablePresentationTypeFormat, VerifiedAuthorizationResponse, VerifyJwtCallback, VPTokenLocation } from '@sphereon/did-auth-siop';
import { ExternalIdentifierOIDFEntityIdOpts, IIdentifierResolution, ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution';
import { IAgentContext, ICredentialIssuer, ICredentialVerifier, IDIDManager, IKeyManager, IPluginMethodMap, IResolver } from '@veramo/core';
import { AdditionalClaims, DcqlQueryREST, HasherSync, W3CVerifiablePresentation } from '@sphereon/ssi-types';
import { Resolvable } from 'did-resolver';
import { DIDDocument } from '@sphereon/did-uni-client';
import { EventEmitter } from 'events';
import { IPresentationDefinition } from '@sphereon/pex';
import { IDIDOptions } from '@sphereon/ssi-sdk-ext.did-utils';
import { IPresentationExchange } from '@sphereon/ssi-sdk.presentation-exchange';
import { VerifyCallback } from '@sphereon/wellknown-dids-client';
import { AuthorizationRequestStateStatus } from '@sphereon/ssi-sdk.siopv2-oid4vp-common';
import { IPDManager, VersionControlMode } from '@sphereon/ssi-sdk.pd-manager';
import { CheckLinkedDomain } from '@sphereon/did-auth-siop-adapter';
import { ISDJwtPlugin } from '@sphereon/ssi-sdk.sd-jwt';
import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service';
import { JwtIssuer } from '@sphereon/oid4vc-common';
import { ImDLMdoc } from '@sphereon/ssi-sdk.mdl-mdoc';
import { ICredentialValidation, SchemaValidation } from '@sphereon/ssi-sdk.credential-validation';
export declare enum VerifiedDataMode {
    NONE = "none",
    VERIFIED_PRESENTATION = "vp",
    CREDENTIAL_SUBJECT_FLATTENED = "cs-flat"
}
export interface ISIOPv2RP extends IPluginMethodMap {
    siopCreateAuthRequestURI(createArgs: ICreateAuthRequestArgs, context: IRequiredContext): Promise<string>;
    siopCreateAuthRequestPayloads(createArgs: ICreateAuthRequestArgs, context: IRequiredContext): Promise<IAuthorizationRequestPayloads>;
    siopGetAuthRequestState(args: IGetAuthRequestStateArgs, context: IRequiredContext): Promise<AuthorizationRequestState | undefined>;
    siopGetAuthResponseState(args: IGetAuthResponseStateArgs, context: IRequiredContext): Promise<AuthorizationResponseStateWithVerifiedData | undefined>;
    siopUpdateAuthRequestState(args: IUpdateRequestStateArgs, context: IRequiredContext): Promise<AuthorizationRequestState>;
    siopDeleteAuthState(args: IDeleteAuthStateArgs, context: IRequiredContext): Promise<boolean>;
    siopVerifyAuthResponse(args: IVerifyAuthResponseStateArgs, context: IRequiredContext): Promise<VerifiedAuthorizationResponse>;
    siopImportDefinitions(args: ImportDefinitionsArgs, context: IRequiredContext): Promise<void>;
    siopGetRedirectURI(args: IGetRedirectUriArgs, context: IRequiredContext): Promise<string | undefined>;
}
export interface ISiopv2RPOpts {
    defaultOpts?: IRPDefaultOpts;
    instanceOpts?: IPEXInstanceOptions[];
}
export interface IRPDefaultOpts extends IRPOptions {
}
export interface ICreateAuthRequestArgs {
    definitionId: string;
    correlationId: string;
    responseURIType: ResponseURIType;
    responseURI: string;
    responseRedirectURI?: string;
    jwtIssuer?: JwtIssuer;
    requestByReferenceURI?: string;
    nonce?: string;
    state?: string;
    claims?: ClaimPayloadCommonOpts;
}
export interface IGetAuthRequestStateArgs {
    correlationId: string;
    definitionId: string;
    errorOnNotFound?: boolean;
}
export interface IGetAuthResponseStateArgs {
    correlationId: string;
    definitionId: string;
    errorOnNotFound?: boolean;
    progressRequestStateTo?: AuthorizationRequestStateStatus;
    includeVerifiedData?: VerifiedDataMode;
}
export interface IUpdateRequestStateArgs {
    definitionId: string;
    correlationId: string;
    state: AuthorizationRequestStateStatus;
    error?: string;
}
export interface IDeleteAuthStateArgs {
    correlationId: string;
    definitionId: string;
}
export interface IVerifyAuthResponseStateArgs {
    authorizationResponse: string | AuthorizationResponsePayload;
    definitionId?: string;
    correlationId: string;
    audience?: string;
    presentationDefinitions?: PresentationDefinitionWithLocation | PresentationDefinitionWithLocation[];
    dcqlQuery?: DcqlQueryREST;
}
export interface IDefinitionPair {
    definitionPayload: IPresentationDefinition;
    dcqlPayload?: DcqlQueryREST;
}
export interface ImportDefinitionsArgs {
    definitions: Array<IDefinitionPair>;
    tenantId?: string;
    version?: string;
    versionControlMode?: VersionControlMode;
}
export interface IGetRedirectUriArgs {
    correlationId: string;
    definitionId?: string;
    state?: string;
}
export interface IAuthorizationRequestPayloads {
    authorizationRequest: AuthorizationRequestPayload;
    requestObject?: string;
    requestObjectDecoded?: RequestObjectPayload;
}
export interface IPEXDefinitionPersistArgs extends IPEXInstanceOptions {
    definition: IPresentationDefinition;
    ttl?: number;
}
export interface ISiopRPInstanceArgs {
    definitionId?: string;
    responseRedirectURI?: string;
}
export interface IPEXInstanceOptions extends IPEXOptions {
    rpOpts?: IRPOptions;
}
export interface IRPOptions {
    responseMode?: ResponseMode;
    supportedVersions?: SupportedVersion[];
    sessionManager?: IRPSessionManager;
    clientMetadataOpts?: ClientMetadataOpts;
    expiresIn?: number;
    eventEmitter?: EventEmitter;
    credentialOpts?: CredentialOpts;
    verificationPolicies?: VerificationPolicies;
    identifierOpts: ISIOPIdentifierOptions;
    verifyJwtCallback?: VerifyJwtCallback;
    responseRedirectUri?: string;
}
export interface IPEXOptions {
    presentationVerifyCallback?: PresentationVerificationCallback;
    definitionId: string;
    version?: string;
    tenantId?: string;
}
export type VerificationPolicies = {
    schemaValidation: SchemaValidation;
};
export interface PerDidResolver {
    didMethod: string;
    resolver: Resolvable;
}
export interface IAuthRequestDetails {
    rpDIDDocument?: DIDDocument;
    id: string;
    verifiablePresentationMatches: IPresentationWithDefinition[];
    alsoKnownAs?: string[];
}
export interface IPresentationWithDefinition {
    location: VPTokenLocation;
    definition: PresentationDefinitionWithLocation;
    format: VerifiablePresentationTypeFormat;
    presentation: W3CVerifiablePresentation;
}
export interface ISIOPIdentifierOptions extends Omit<IDIDOptions, 'idOpts'> {
    idOpts: ManagedIdentifierOptsOrResult;
    oidfOpts?: ExternalIdentifierOIDFEntityIdOpts;
    checkLinkedDomains?: CheckLinkedDomain;
    wellknownDIDVerifyCallback?: VerifyCallback;
}
export type CredentialOpts = {
    hasher?: HasherSync;
};
export interface AuthorizationResponseStateWithVerifiedData extends AuthorizationResponseState {
    verifiedData?: AdditionalClaims;
}
export type IRequiredContext = IAgentContext<IResolver & IDIDManager & IKeyManager & IIdentifierResolution & ICredentialIssuer & ICredentialValidation & ICredentialVerifier & IPresentationExchange & IPDManager & ISDJwtPlugin & IJwtService & ImDLMdoc>;
//# sourceMappingURL=ISIOPv2RP.d.ts.map