import { BaseRecord, TagsBase } from "../../../storage/BaseRecord.js";
import { DidDocument } from "../domain/DidDocument.js";
import { DidDocumentRole } from "../domain/DidDocumentRole.js";
import { DidDocumentKey } from "../DidsApiOptions.js";
import { DidRecordMetadata } from "./didRecordMetadataTypes.js";

//#region src/modules/dids/repository/DidRecord.d.ts
interface DidRecordProps {
  id?: string;
  did: string;
  role: DidDocumentRole;
  didDocument?: DidDocument;
  createdAt?: Date;
  tags?: CustomDidTags;
  /**
   * The kms key ids associated with the did record. Should only be used
   * when role is {@link DidDocumentRole.Created}
   */
  keys?: DidDocumentKey[];
}
interface CustomDidTags extends TagsBase {
  recipientKeyFingerprints?: string[];
  alternativeDids?: string[];
}
type DefaultDidTags = {
  recipientKeyFingerprints?: string[];
  role: DidDocumentRole;
  method: string;
  legacyUnqualifiedDid?: string;
  methodSpecificIdentifier: string;
  did: string;
};
declare class DidRecord extends BaseRecord<DefaultDidTags, CustomDidTags, DidRecordMetadata> implements DidRecordProps {
  didDocument?: DidDocument;
  did: string;
  role: DidDocumentRole;
  static readonly type = "DidRecord";
  readonly type = "DidRecord";
  /**
   * The kms key ids associated with the DidRecord. Should only be used
   * when role is {@link DidDocumentRole.Created}.
   */
  keys?: DidDocumentKey[];
  constructor(props: DidRecordProps);
  getTags(): {
    role: DidDocumentRole;
    method: string;
    legacyUnqualifiedDid: string | undefined;
    did: string;
    methodSpecificIdentifier: string;
    recipientKeyFingerprints: string[] | undefined;
    alternativeDids?: string[];
  };
}
//#endregion
export { CustomDidTags, DidRecord, DidRecordProps };
//# sourceMappingURL=DidRecord.d.ts.map