import { BaseRecord, Tags } from "../../../storage/BaseRecord.js";
import { W3cVerifiableCredential } from "../models/credential/W3cVerifiableCredential.js";

//#region src/modules/vc/repository/W3cCredentialRecord.d.ts
interface W3cCredentialRecordOptions {
  id?: string;
  createdAt?: Date;
  credential: W3cVerifiableCredential;
  tags: CustomW3cCredentialTags;
}
type CustomW3cCredentialTags = {
  /**
   * Expanded types are used for JSON-LD credentials to allow for filtering on the expanded type.
   */
  expandedTypes?: Array<string>;
};
type DefaultW3cCredentialTags = {
  issuerId: string;
  subjectIds: Array<string>;
  schemaIds: Array<string>;
  contexts: Array<string>;
  givenId?: string;
  claimFormat: W3cVerifiableCredential['claimFormat'];
  proofTypes?: Array<string>;
  cryptosuites?: Array<string>;
  types: Array<string>;
  algs?: Array<string>;
};
declare class W3cCredentialRecord extends BaseRecord<DefaultW3cCredentialTags, CustomW3cCredentialTags> {
  static readonly type = "W3cCredentialRecord";
  readonly type = "W3cCredentialRecord";
  credential: W3cVerifiableCredential;
  constructor(props: W3cCredentialRecordOptions);
  getTags(): Tags<DefaultW3cCredentialTags, CustomW3cCredentialTags>;
  /**
   * This overwrites the default clone method for records
   * as the W3cRecord has issues with the default clone method
   * due to how W3cJwtVerifiableCredential is implemented. This is
   * a temporary way to make sure the clone still works, but ideally
   * we find an alternative.
   */
  clone(): this;
  /**
   * encoded is convenience method added to all credential records
   */
  get encoded(): string | Record<string, any>;
}
//#endregion
export { CustomW3cCredentialTags, DefaultW3cCredentialTags, W3cCredentialRecord, W3cCredentialRecordOptions };
//# sourceMappingURL=W3cCredentialRecord.d.ts.map