package org.dbsp.sqlCompiler.circuit.operator;

import org.dbsp.sqlCompiler.compiler.TableMetadata;
import org.dbsp.sqlCompiler.compiler.errors.SourcePositionRange;
import org.dbsp.sqlCompiler.compiler.frontend.calciteCompiler.ProgramIdentifier;
import org.dbsp.sqlCompiler.ir.type.DBSPType;
import org.dbsp.sqlCompiler.ir.type.derived.DBSPTypeStruct;
import org.dbsp.sqlCompiler.ir.type.user.DBSPTypeUser;

public interface IInputOperator {
    TableMetadata getMetadata();
    DBSPOperator asOperator();
    ProgramIdentifier getTableName();
    SourcePositionRange getSourcePosition();
    /** Type of output data; does not include unused fields */
    DBSPType getDataOutputType();
    DBSPTypeStruct getOriginalRowType();
    /** Type of handle used for this operator when inserted in the circuit */
    DBSPTypeUser getHandleType();
}
