import { ManifestVersion } from "../../manifest/ManifestTypes" import { Effects } from "../../types" import { Utils } from "../../util" import { WrapperDataContract } from "../../wrapperData/wrapperDataContract" export class Migration { constructor( readonly wrapperDataContract: WrapperDataContract, readonly options: { version: Version up: (opts: { effects: Effects; utils: Utils }) => Promise down: (opts: { effects: Effects; utils: Utils }) => Promise }, ) {} static of( wrapperDataContract: WrapperDataContract, options: { version: Version up: (opts: { effects: Effects; utils: Utils }) => Promise down: (opts: { effects: Effects; utils: Utils }) => Promise }, ) { return new Migration(wrapperDataContract, options) } async up(opts: { effects: Effects; utils: Utils }) { this.up(opts) } async down(opts: { effects: Effects; utils: Utils }) { this.down(opts) } }