+BT_HIDDEN
+bt_self_message_iterator_status ctf_fs_iterator_seek_beginning(
+ bt_self_message_iterator *message_iterator);
+
+/* Create and initialize a new, empty ctf_fs_component. */
+
+BT_HIDDEN
+struct ctf_fs_component *ctf_fs_component_create(void);
+
+/*
+ * Search recursively under all paths in `paths_value` (an array of strings),
+ * for CTF traces. For each CTF trace found, create a ctf_fs_trace in
+ * `ctf_fs` representing that trace.
+ */
+
+BT_HIDDEN
+int ctf_fs_component_create_ctf_fs_traces(bt_self_component_source *self_comp,
+ struct ctf_fs_component *ctf_fs,
+ const bt_value *paths_value);
+
+/* Free `ctf_fs` and everything it owns. */
+
+BT_HIDDEN
+void ctf_fs_destroy(struct ctf_fs_component *ctf_fs);
+
+/*
+ * Read and validate parameters taken by the src.ctf.fs plugin.
+ *
+ * - The mandatory `paths` parameter is returned in `*paths`.
+ * - The optional `clock-class-offset-s` and `clock-class-offset-ns`, if
+ * present, are recorded in the `ctf_fs` structure.
+ *
+ * Return true on success, false if any parameter didn't pass validation.
+ */
+
+BT_HIDDEN
+bool read_src_fs_parameters(const bt_value *params,
+ const bt_value **paths, struct ctf_fs_component *ctf_fs);
+
+/*
+ * Generate the port name to be used for a given data stream file group.
+ *
+ * The result must be freed using g_free by the caller.
+ */
+
+BT_HIDDEN
+gchar *ctf_fs_make_port_name(struct ctf_fs_ds_file_group *ds_file_group);
+