using SALTBase
using AbbreviatedTypes
using Test

# Define a concrete subtype of AbstractMaxwellSolver for the test purspose.
struct DefaultMXS <: AbstractMaxwellSolver end
Base.similar(::DefaultMXS) = DefaultMXS()
Base.size(::DefaultMXS) = (0,0)

function SALTBase.init_mxsolver!(mxsolver::DefaultMXS, ω::Number, ε::AbsVecNumber) end
function SALTBase.mxsolve!(x::AbsVecComplexF, mxsolver::DefaultMXS, b::AbsVecNumber) end
function SALTBase.mxsolve_transpose!(x::AbsVecComplexF, mxsolver::DefaultMXS, b::AbsVecNumber) end
function SALTBase.mxapply!(b::AbsVecComplexF, mxsolver::DefaultMXS, x::AbsVecNumber) end
function SALTBase.abs2_interp!(abs2ψ::AbsVecReal, mxsolver::DefaultMXS, ψ::AbsVecNumber) end

include("util.jl")
include("gain.jl")
include("lasing.jl")
