import { Schema as S } from 'effect'
export class Pending extends S.TaggedClass<Pending>("Pending")("Pending", {}){
approve(): Approved {
return new Approved({})
}
reject(reason: string): Rejected {
return new Rejected({reason})
}
}
export class Approved extends S.TaggedClass<Approved>("Approved")("Approved", {}){}
export class Rejected extends S.TaggedClass<Rejected>("Rejected")("Rejected", {
reason: S.String
}){}
export const LicenseState = S.Union(Pending, Approved, Rejected)
export type LicenseState = typeof LicenseState.Type
// ^? = type LicenseState = never
import { Schema as S } from 'effect'
export class Pending extends S.TaggedClass<Pending>("Pending")("Pending", {}){
approve(): Approved {
return new Approved({})
}
reject(reason: string): Rejected {
return new Rejected({reason})
}
}
export class Approved extends S.TaggedClass<Approved>("Approved")("Approved", {}){}
export class Rejected extends S.TaggedClass<Rejected>("Rejected")("Rejected", {
reason: S.String
}){}
export const LicenseState = S.Union(Pending, Approved, Rejected)
export type LicenseState = typeof LicenseState.Type
// ^? = type LicenseState = never