import { JsonObject, SingleOrArray } from "../../../../types.js";
import { W3cCredentialSchema } from "./W3cCredentialSchema.js";
import { W3cCredentialStatus } from "./W3cCredentialStatus.js";
import { W3cCredentialSubject, W3cCredentialSubjectOptions } from "./W3cCredentialSubject.js";
import { W3cIssuer, W3cIssuerOptions } from "./W3cIssuer.js";

//#region src/modules/vc/models/credential/W3cCredential.d.ts
interface W3cCredentialOptions {
  context?: Array<string | JsonObject>;
  id?: string;
  type: Array<string>;
  issuer: string | W3cIssuerOptions;
  issuanceDate: string;
  expirationDate?: string;
  credentialSubject: SingleOrArray<W3cCredentialSubjectOptions>;
  credentialStatus?: W3cCredentialStatus;
  credentialSchema?: SingleOrArray<W3cCredentialSchema>;
}
declare class W3cCredential {
  constructor(options: W3cCredentialOptions);
  context: Array<string | JsonObject>;
  id?: string;
  type: Array<string>;
  issuer: string | W3cIssuer;
  issuanceDate: string;
  expirationDate?: string;
  credentialSubject: SingleOrArray<W3cCredentialSubject>;
  credentialSchema?: SingleOrArray<W3cCredentialSchema>;
  credentialStatus?: W3cCredentialStatus;
  get issuerId(): string;
  get credentialSchemaIds(): string[];
  get credentialSubjectIds(): string[];
  get contexts(): Array<string | JsonObject>;
  static fromJson(json: Record<string, unknown>): W3cCredential;
}
//#endregion
export { W3cCredential, W3cCredentialOptions };
//# sourceMappingURL=W3cCredential.d.ts.map