import DBSource from "../database/entities/db-source"; import DBSubmission from "../database/entities/db-submission"; import DBComment from "../database/entities/db-comment"; import { SourceSchema } from "../shared/source-interfaces"; export default abstract class Source { protected abstract data: any; readonly abstract schema: SourceSchema; abstract readonly type: string; abstract readonly description: string; /** * Find the next post that this Source has available. */ abstract find(): AsyncGenerator; /** * Builds a new instance of this class, using the given DB data. * Validates/coerces the given DB data against this source's schema. */ createFromDB(src: DBSource): this; }