namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Import;
///
/// Materialises entries from a RSLogix export. v1 ships
/// a single implementation () for text/CSV "Database
/// Export" — RSLogix 500's .RSS and RSLogix 5's .RSP binary project files are
/// proprietary and out of scope (no parser ships with libplctag or any community library at
/// the time of writing). The interface exists so a binary parser can slot in later without
/// reshaping the call sites.
///
///
///
/// The deviceHostAddress parameter on is required because RSLogix
/// exports list addresses scoped to a single PLC; the importer needs to stamp every
/// resulting tag with the gateway address that the runtime layer will use to reach
/// it. Multi-device deployments call the importer once per device, then concatenate.
///
///
/// never throws on parse errors when
/// is true (default) — malformed rows
/// are skipped with a structured warning logged via the importer's ILogger, and
/// the counts surface on . With
/// set to false the first malformed row
/// throws .
///
///
public interface IRsLogixImporter
{
///
/// Read the entire and emit one
/// per recognised symbol row.
///
/// Open, readable stream over the RSLogix export. Caller owns it.
///
/// Canonical AB Legacy gateway URI (ab://host[:port]/cip-path) the resulting
/// tags should bind to.
///
/// Filter + safety knobs; null ≡ default options.
RsLogixImportResult Parse(Stream stream, string deviceHostAddress, ImportOptions? options = null);
}