module metagraph_optimization
import Base.show
import Base.==
import Base.in

include("tasks.jl")
include("nodes.jl")
include("graph.jl")
include("task_functions.jl")
include("node_functions.jl")
include("graph_functions.jl")
include("graph_optimizations.jl")
include("import.jl")

export Node, Edge, ComputeTaskNode, DataTaskNode, DAG
export AbstractTask, AbstractComputeTask, AbstractDataTask, DataTask, ComputeTaskP, ComputeTaskS1, ComputeTaskS2, ComputeTaskV, ComputeTaskU, ComputeTaskSum, FusedComputeTask
export make_node, make_edge, insert_node, insert_edge, is_entry_node, is_exit_node, parents, children, compute, data, compute_effort, compute_intensity, get_exit_node, is_valid
export node_fusion, node_reduction, node_split, generate_options
export importTxt

export ==, in, show

end # module metagraph_optimization