import { W3cCredentialRecord, SdJwtVcRecord, MdocRecord, AgentContext } from '@credo-ts/core';
import type { OpenId4VciCredentialSupported, OpenId4VciIssuerMetadataDisplay, OpenId4VciRequestTokenResponse, OpenId4VciNotificationMetadata } from '@credo-ts/openid4vc';
import type { MetadataDisplay } from '@sphereon/oid4vci-common';
import { CredentialSubjectRecord } from './types';
import { RefreshCredentialMetadata, RefreshStatus } from './refresh/types';
export declare const openId4VcCredentialMetadataKey = "_bifold/openId4VcCredentialMetadata";
export declare const refreshCredentialMetadataKey = "_bifold/refreshCredentialMetadata";
export interface OpenId4VcCredentialMetadata {
    credential: {
        display?: OpenId4VciCredentialSupported['display'];
        order?: OpenId4VciCredentialSupported['order'];
        credential_subject?: CredentialSubjectRecord;
    };
    issuer: {
        display?: OpenId4VciIssuerMetadataDisplay[];
        id: string;
    };
}
export type OpenId4VcCredentialMetadataExtended = Partial<OpenId4VciCredentialSupported & {
    credential_subject: CredentialSubjectRecord;
}>;
export type OpenIDCredentialNotificationMetadata = {
    notificationMetadata?: OpenId4VciNotificationMetadata;
    tokenResponse?: OpenId4VciRequestTokenResponse;
};
export declare function extractOpenId4VcCredentialMetadata(credentialMetadata: Partial<OpenId4VciCredentialSupported & {
    credential_subject: CredentialSubjectRecord;
}>, serverMetadata: {
    display?: MetadataDisplay[];
    id: string;
}): OpenId4VcCredentialMetadata;
/**
 * Gets the OpenId4Vc credential metadata from the given W3C credential record.
 */
export declare function getOpenId4VcCredentialMetadata(credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord): OpenId4VcCredentialMetadata | null;
/**
 * Sets the OpenId4Vc credential metadata on the given W3cCredentialRecord or SdJwtVcRecord.
 *
 * NOTE: this does not save the record.
 */
export declare function setOpenId4VcCredentialMetadata(credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord, metadata: OpenId4VcCredentialMetadata): void;
/**
 * Gets the refresh credential metadata from the given credential record.
 */
export declare function getRefreshCredentialMetadata(credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord): RefreshCredentialMetadata | null;
/**
 * Sets the refresh credential metadata on the given credential record
 *
 * NOTE: this does not save the record.
 */
export declare function setRefreshCredentialMetadata(credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord, metadata: RefreshCredentialMetadata): void;
export declare function deleteRefreshCredentialMetadata(credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord): void;
export declare function persistCredentialRecord(agentContext: AgentContext, record: W3cCredentialRecord | SdJwtVcRecord | MdocRecord): Promise<void>;
export declare function markOpenIDCredentialStatus({ credential, status, agentContext, }: {
    credential: W3cCredentialRecord | SdJwtVcRecord | MdocRecord;
    status: RefreshStatus;
    agentContext: AgentContext;
}): Promise<void>;
export declare const temporaryMetaVanillaObject: OpenIDCredentialNotificationMetadata;
//# sourceMappingURL=metadata.d.ts.map