FlowExperimentClientContractV1 constructor

FlowExperimentClientContractV1({
  1. required Surface surfaceType,
  2. required FlowDeliveryMode deliveryMode,
  3. required FlowExperimentDescriptor descriptor,
  4. required List<FlowExperimentDocumentContract> documents,
  5. required InstalledCapability installedCapability,
  6. required List<FlowActionBindingFingerprint> actionBindings,
  7. required List<String> installedSignals,
})

Creates and validates a complete baseline closure and capability snapshot.

Implementation

factory FlowExperimentClientContractV1({
  required Surface surfaceType,
  required FlowDeliveryMode deliveryMode,
  required FlowExperimentDescriptor descriptor,
  required List<FlowExperimentDocumentContract> documents,
  required InstalledCapability installedCapability,
  required List<FlowActionBindingFingerprint> actionBindings,
  required List<String> installedSignals,
}) {
  _checkIdentifier(descriptor.id, r'$.descriptor.id');
  _checkPositiveInt(descriptor.version, r'$.descriptor.version');
  _checkPositiveInt(descriptor.minClient, r'$.descriptor.minClient');

  final canonicalDocuments = _canonicalDocuments(documents);
  final canonicalInstalled =
      _canonicalInstalledCapability(installedCapability);
  final canonicalActions = _canonicalActionBindings(actionBindings);
  final canonicalSignals = _canonicalSignals(installedSignals);
  _checkCompleteBaselineClosure(
    surfaceType: surfaceType,
    deliveryMode: deliveryMode,
    descriptor: descriptor,
    documents: canonicalDocuments,
  );

  return FlowExperimentClientContractV1._(
    surfaceType: surfaceType,
    deliveryMode: deliveryMode,
    descriptor: descriptor,
    documents: canonicalDocuments,
    installedCapability: canonicalInstalled,
    actionBindings: canonicalActions,
    installedSignals: canonicalSignals,
  );
}