import { JsonObject, SingleOrArray } from "../../../types.js";
import { ClaimFormat } from "../models/ClaimFormat.js";
import { W3cCredentialSchema } from "../models/credential/W3cCredentialSchema.js";
import { W3cCredentialStatus } from "../models/credential/W3cCredentialStatus.js";
import { W3cCredentialSubject } from "../models/credential/W3cCredentialSubject.js";
import { W3cIssuer } from "../models/credential/W3cIssuer.js";
import { W3cCredential } from "../models/credential/W3cCredential.js";
import { W3cJsonCredential } from "../models/credential/W3cJsonCredential.js";
import { Jwt } from "../../../crypto/jose/jwt/Jwt.js";

//#region src/modules/vc/jwt-vc/W3cJwtVerifiableCredential.d.ts
interface W3cJwtVerifiableCredentialOptions {
  jwt: Jwt;
}
declare class W3cJwtVerifiableCredential {
  readonly jwt: Jwt;
  private _credential;
  constructor(options: W3cJwtVerifiableCredentialOptions);
  static fromSerializedJwt(serializedJwt: string): W3cJwtVerifiableCredential;
  /**
   * Get the W3cCredential 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 `W3cCredential` interface are implemented as getters
   * on the `W3cJwtVerifiableCredential` class itself, so you can also use this directly
   * instead of accessing the inner `credential` property.
   */
  get credential(): W3cCredential;
  get serializedJwt(): string;
  get context(): (string | JsonObject)[];
  get id(): string | undefined;
  get type(): string[];
  get issuer(): string | W3cIssuer;
  get issuanceDate(): string;
  get expirationDate(): string | undefined;
  get credentialSubject(): SingleOrArray<W3cCredentialSubject>;
  get credentialSchema(): SingleOrArray<W3cCredentialSchema> | undefined;
  get credentialStatus(): W3cCredentialStatus | undefined;
  get issuerId(): string;
  get credentialSchemaIds(): string[];
  get credentialSubjectIds(): string[];
  get contexts(): (string | JsonObject)[];
  /**
   * The {@link ClaimFormat} of the credential. For JWT credentials this is always `jwt_vc`.
   */
  get claimFormat(): ClaimFormat.JwtVc;
  /**
   * Get the encoded variant of the W3C Verifiable Credential. For JWT credentials this is
   * a JWT string.
   */
  get encoded(): string;
  get jsonCredential(): W3cJsonCredential;
}
//#endregion
export { W3cJwtVerifiableCredential, W3cJwtVerifiableCredentialOptions };
//# sourceMappingURL=W3cJwtVerifiableCredential.d.ts.map