// SPDX-FileCopyrightText: 2026 FocusFlow contributors
// SPDX-License-Identifier: AGPL-3.0-only

/// Implements Persistence Contract behavior for the Scheduler Core package.
library;

// Adapter-neutral persistence contract helpers.
//
// This file defines stable field names and encoding conventions that document
// codecs and future adapters should use. It deliberately does not serialize
// domain models or import a database client.

import '../domain/time_contracts.dart';
part 'persistence_contract/collections/persistence_collections.dart';
part 'persistence_contract/indexes/persistence_index_direction.dart';
part 'persistence_contract/indexes/persistence_index_field.dart';
part 'persistence_contract/indexes/persistence_index_spec.dart';
part 'persistence_contract/indexes/repository_query_names.dart';
part 'persistence_contract/indexes/persistence_index_catalog.dart';
part 'persistence_contract/payloads/persistence_payload_limits.dart';
part 'persistence_contract/payloads/persistence_guard_result.dart';
part 'persistence_contract/payloads/persistence_payload_guard.dart';
part 'persistence_contract/conventions/persistence_date_time_convention.dart';
part 'persistence_contract/conventions/persistence_civil_date_convention.dart';
part 'persistence_contract/conventions/persistence_wall_time_convention.dart';
part 'persistence_contract/conventions/persistence_enum_name.dart';
part 'persistence_contract/fields/core/document_fields.dart';
part 'persistence_contract/fields/tasks/task_document_fields.dart';
part 'persistence_contract/fields/tasks/task_activity_document_fields.dart';
part 'persistence_contract/fields/tasks/task_statistics_document_fields.dart';
part 'persistence_contract/fields/projects/project_document_fields.dart';
part 'persistence_contract/fields/projects/project_statistics_document_fields.dart';
part 'persistence_contract/fields/time/clock_time_document_fields.dart';
part 'persistence_contract/fields/locked_time/locked_block_recurrence_document_fields.dart';
part 'persistence_contract/fields/locked_time/locked_block_document_fields.dart';
part 'persistence_contract/fields/locked_time/locked_block_override_document_fields.dart';
part 'persistence_contract/fields/application/owner_settings_document_fields.dart';
part 'persistence_contract/fields/application/backlog_staleness_document_fields.dart';
part 'persistence_contract/fields/application/notice_acknowledgement_document_fields.dart';
part 'persistence_contract/fields/application/application_operation_document_fields.dart';
part 'persistence_contract/fields/scheduling/scheduling_snapshot_document_fields.dart';
part 'persistence_contract/fields/scheduling/scheduling_window_document_fields.dart';
part 'persistence_contract/fields/time/time_interval_document_fields.dart';
part 'persistence_contract/fields/scheduling/scheduling_notice_document_fields.dart';
part 'persistence_contract/fields/scheduling/scheduling_change_document_fields.dart';
part 'persistence_contract/fields/scheduling/scheduling_overlap_document_fields.dart';
part 'persistence_contract/persistence_document_field_sets.dart';

/// V1 document-schema version.
const v1SchemaVersion = 1;
