import { JsonObject, SingleOrArray } from "../../../types.js";
import { ClaimFormat } from "../models/ClaimFormat.js";
import { W3cJsonLdVerifiableCredential } from "../data-integrity/models/W3cJsonLdVerifiableCredential.js";
import { Jwt } from "../../../crypto/jose/jwt/Jwt.js";
import { W3cJwtVerifiableCredential } from "./W3cJwtVerifiableCredential.js";
import { W3cHolder } from "../models/presentation/W3cHolder.js";
import { W3cPresentation } from "../models/presentation/W3cPresentation.js";

//#region src/modules/vc/jwt-vc/W3cJwtVerifiablePresentation.d.ts
interface W3cJwtVerifiablePresentationOptions {
  jwt: Jwt;
}
declare class W3cJwtVerifiablePresentation {
  readonly jwt: Jwt;
  private _presentation;
  constructor(options: W3cJwtVerifiablePresentationOptions);
  static fromSerializedJwt(serializedJwt: string): W3cJwtVerifiablePresentation;
  /**
   * Get the W3cPresentation from the JWT payload. This does not include the JWT wrapper,
   * and thus is not suitable for sharing. If you need a JWT, use the `serializedJwt` property.
   *
   * All properties and getters from the `W3cPresentation` interface are implemented as getters
   * on the `W3cJwtVerifiablePresentation` class itself, so you can also use this directly
   * instead of accessing the inner `presentation` property.
   */
  get presentation(): W3cPresentation;
  get serializedJwt(): string;
  get context(): (string | JsonObject)[];
  get id(): string | undefined;
  get type(): string[];
  get holder(): string | W3cHolder | undefined;
  get verifiableCredential(): SingleOrArray<W3cJwtVerifiableCredential | W3cJsonLdVerifiableCredential>;
  get holderId(): string | null;
  /**
   * The {@link ClaimFormat} of the presentation. For JWT presentations this is always `jwt_vp`.
   */
  get claimFormat(): ClaimFormat.JwtVp;
  /**
   * Get the encoded variant of the W3C Verifiable Presentation. For JWT presentations this is
   * a JWT string.
   */
  get encoded(): string;
}
//#endregion
export { W3cJwtVerifiablePresentation, W3cJwtVerifiablePresentationOptions };
//# sourceMappingURL=W3cJwtVerifiablePresentation.d.ts.map