import { JsonObject, SingleOrArray } from "../../../../types.js";
import { W3cV2CredentialSchema, W3cV2CredentialSchemaOptions } from "./W3cV2CredentialSchema.js";
import { W3cV2CredentialStatus, W3cV2CredentialStatusOptions } from "./W3cV2CredentialStatus.js";
import { W3cV2CredentialSubject, W3cV2CredentialSubjectOptions } from "./W3cV2CredentialSubject.js";
import { W3cV2Evidence, W3cV2EvidenceOptions } from "./W3cV2Evidence.js";
import { W3cV2Issuer, W3cV2IssuerOptions } from "./W3cV2Issuer.js";
import { W3cV2JsonCredential } from "./W3cV2JsonCredential.js";
import { W3cV2LocalizedValue, W3cV2LocalizedValueOptions } from "./W3cV2LocalizedValue.js";
import { W3cV2RefreshService, W3cV2RefreshServiceOptions } from "./W3cV2RefreshService.js";
import { W3cV2TermsOfUse, W3cV2TermsOfUseOptions } from "./W3cV2TermsOfUse.js";

//#region src/modules/vc/models/credential/W3cV2Credential.d.ts
interface W3cV2CredentialOptions {
  context?: Array<string | JsonObject>;
  id?: string;
  type: Array<string>;
  name?: string | SingleOrArray<W3cV2LocalizedValueOptions>;
  description?: string | SingleOrArray<W3cV2LocalizedValueOptions>;
  issuer: string | W3cV2IssuerOptions;
  credentialSubject: SingleOrArray<W3cV2CredentialSubjectOptions>;
  validFrom?: string;
  validUntil?: string;
  status?: SingleOrArray<W3cV2CredentialStatusOptions>;
  credentialSchema?: SingleOrArray<W3cV2CredentialSchemaOptions>;
  refreshService?: SingleOrArray<W3cV2RefreshServiceOptions>;
  termsOfUse?: SingleOrArray<W3cV2TermsOfUseOptions>;
  evidence?: SingleOrArray<W3cV2EvidenceOptions>;
  [property: string]: unknown;
}
declare class W3cV2Credential {
  constructor(options: W3cV2CredentialOptions);
  context: Array<string | JsonObject>;
  id?: string;
  type: SingleOrArray<string>;
  name?: string | SingleOrArray<W3cV2LocalizedValue>;
  description?: string | SingleOrArray<W3cV2LocalizedValue>;
  issuer: string | W3cV2Issuer;
  credentialSubject: SingleOrArray<W3cV2CredentialSubject>;
  validFrom?: string;
  validUntil?: string;
  status?: SingleOrArray<W3cV2CredentialStatus>;
  credentialSchema?: SingleOrArray<W3cV2CredentialSchema>;
  refreshService?: SingleOrArray<W3cV2RefreshService>;
  evidence?: SingleOrArray<W3cV2Evidence>;
  termsOfUse?: SingleOrArray<W3cV2TermsOfUse>;
  vc?: never;
  vp?: never;
  [property: string]: unknown;
  get issuerId(): string;
  get credentialSchemaIds(): string[];
  get credentialSubjectIds(): string[];
  get contexts(): Array<string | JsonObject>;
  toJSON(): W3cV2JsonCredential;
}
//#endregion
export { W3cV2Credential, W3cV2CredentialOptions };
//# sourceMappingURL=W3cV2Credential.d.ts.map