import { Logger } from "../../logger/Logger.js";
import { VersionString } from "../../utils/version.js";
import { UpdateToVersion } from "./updates.js";
import { AgentContext } from "../../agent/context/AgentContext.js";
import { StorageVersionRecord } from "./repository/StorageVersionRecord.js";
import { StorageVersionRepository } from "./repository/StorageVersionRepository.js";

//#region src/storage/migration/StorageUpdateService.d.ts
declare class StorageUpdateService {
  private logger;
  private storageVersionRepository;
  constructor(logger: Logger, storageVersionRepository: StorageVersionRepository);
  isUpToDate(agentContext: AgentContext, updateToVersion?: UpdateToVersion): Promise<boolean>;
  hasStorageVersionRecord(agentContext: AgentContext): Promise<boolean>;
  getCurrentStorageVersion(agentContext: AgentContext): Promise<VersionString>;
  static get frameworkStorageVersion(): "0.5";
  setCurrentStorageVersion(agentContext: AgentContext, storageVersion: VersionString): Promise<void>;
  /**
   * Retrieve the update record, creating it if it doesn't exist already.
   *
   * The storageVersion will be set to the INITIAL_STORAGE_VERSION if it doesn't exist yet,
   * as we can assume the wallet was created before the update record existed
   */
  getStorageVersionRecord(agentContext: AgentContext): Promise<StorageVersionRecord>;
}
//#endregion
export { StorageUpdateService };
//# sourceMappingURL=StorageUpdateService.d.ts.map