From c537e0ceeee60f783219a0609894c2112238d00f Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 4 Aug 2026 20:38:12 +0000
Subject: [PATCH 1/5] Prepare Swift interface update
From 56629a191cf80ab24a33b3e44a0f5f9a50dd9338 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 07:05:30 +0200
Subject: [PATCH 2/5] Update tvos Swift interfaces (#15)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
.../DeclarativeConfiguration.swiftinterface | 176 ++++++++++++
...eclarativeConfigurationCore.swiftinterface | 253 ++++++++++++++++++
.../tvos/FunctionalBuilder.swiftinterface | 13 +
.../tvos/FunctionalClosures.swiftinterface | 236 ++++++++++++++++
.../FunctionalConfigurator.swiftinterface | 38 +++
.../tvos/FunctionalKeyPath.swiftinterface | 162 +++++++++++
.../FunctionalModification.swiftinterface | 14 +
7 files changed, 892 insertions(+)
create mode 100644 .agents/interfaces/tvos/DeclarativeConfiguration.swiftinterface
create mode 100644 .agents/interfaces/tvos/DeclarativeConfigurationCore.swiftinterface
create mode 100644 .agents/interfaces/tvos/FunctionalBuilder.swiftinterface
create mode 100644 .agents/interfaces/tvos/FunctionalClosures.swiftinterface
create mode 100644 .agents/interfaces/tvos/FunctionalConfigurator.swiftinterface
create mode 100644 .agents/interfaces/tvos/FunctionalKeyPath.swiftinterface
create mode 100644 .agents/interfaces/tvos/FunctionalModification.swiftinterface
diff --git a/.agents/interfaces/tvos/DeclarativeConfiguration.swiftinterface b/.agents/interfaces/tvos/DeclarativeConfiguration.swiftinterface
new file mode 100644
index 0000000..403e859
--- /dev/null
+++ b/.agents/interfaces/tvos/DeclarativeConfiguration.swiftinterface
@@ -0,0 +1,176 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name DeclarativeConfiguration -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+@_exported import DeclarativeConfigurationCore
+import Foundation
+@_exported import FunctionalClosures
+import Swift
+import SwiftMarkerProtocols
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+@dynamicMemberLookup public struct Builder : DeclarativeConfigurationCore.ConfigurationContainer {
+ @usableFromInline
+ internal var initialValue: () -> Base
+ @_hasStorage public var configurator: DeclarativeConfiguration.Configurator {
+ get
+ }
+ @inlinable public var base: Base {
+ get { initialValue() }
+ }
+ @inlinable public init(_ initialValue: @autoclosure @escaping () -> Base) {
+ self.init(
+ initialValue: initialValue,
+ configurator: .empty
+ )
+ }
+ public init(initialValue: @escaping () -> Base, configurator: DeclarativeConfiguration.Configurator)
+ @inlinable public func build() -> Base { configurator.configured(base) }
+ @inlinable public func apply() where Base : AnyObject { _ = build() }
+ @inlinable public func commit() -> DeclarativeConfiguration.Builder { .init(build()) }
+ @inlinable public func combined(with configurator: DeclarativeConfiguration.Configurator) -> DeclarativeConfiguration.Builder {
+ Builder(
+ initialValue: initialValue,
+ configurator: configurator.combined(with: configurator)
+ )
+ }
+ public func transform(_ transform: @escaping (Base) -> Base) -> DeclarativeConfiguration.Builder
+ @inlinable public func modify(_ transform: @escaping (inout Base) -> Swift.Void) -> DeclarativeConfiguration.Builder {
+ Builder(
+ initialValue: initialValue,
+ configurator: configurator.modify(transform)
+ )
+ }
+}
+public protocol BuilderProvider {
+}
+extension DeclarativeConfiguration.BuilderProvider {
+ @inlinable public var builder: DeclarativeConfiguration.Builder {
+ get { .init(self) }
+ }
+}
+extension ObjectiveC.NSObject : DeclarativeConfiguration.BuilderProvider {
+}
+@dynamicMemberLookup public struct Configurator : DeclarativeConfigurationCore.ConfigurationContainer {
+ @usableFromInline
+ internal var storage: any DeclarativeConfigurationCore.ConfigurationStorage
+ public init(storage: any DeclarativeConfigurationCore.ConfigurationStorage)
+ @inlinable public init() {
+ self.init(storage: DefaultConfigurationStorage())
+ }
+ @inlinable public init(config configuration: (DeclarativeConfiguration.Configurator) -> DeclarativeConfiguration.Configurator) {
+ self = configuration(.empty)
+ }
+ @inlinable public func configure(_ base: inout Base) {
+ base = configured(base)
+ }
+ public func configure(_ base: Base) where Base : AnyObject
+ public func configured(_ base: Base) -> Base
+ public func combined(with configurator: DeclarativeConfiguration.Configurator) -> DeclarativeConfiguration.Configurator
+ public func transform(_ transform: @escaping (Base) -> Base) -> DeclarativeConfiguration.Configurator
+ public func modify(_ transform: @escaping (inout Base) -> Swift.Void) -> DeclarativeConfiguration.Configurator
+ @inlinable public static var empty: DeclarativeConfiguration.Configurator {
+ get {
+ .init(storage: DefaultConfigurationStorage())
+ }
+ }
+ @inlinable public static func modify(_ transform: @escaping (inout Base) -> Swift.Void) -> DeclarativeConfiguration.Configurator {
+ empty.modify(transform)
+ }
+ @inlinable public static func transform(_ transform: @escaping (Base) -> Base) -> DeclarativeConfiguration.Configurator {
+ empty.transform(transform)
+ }
+ @inlinable public static subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks>.Callable {
+ get {
+ empty[dynamicMember: keyPath]
+ }
+ }
+ @inlinable public static subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks>.Callable where Base == Wrapped? {
+ get {
+ empty[dynamicMember: keyPath]
+ }
+ }
+ @inlinable public static subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks>.NonCallable {
+ get {
+ empty[dynamicMember: keyPath]
+ }
+ }
+ @inlinable public static subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks>.NonCallable where Base == Wrapped? {
+ get {
+ empty[dynamicMember: keyPath]
+ }
+ }
+}
+extension DeclarativeConfiguration.Configurator where Base : SwiftMarkerProtocols._OptionalProtocol {
+ public static var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks>.CallableIfLet {
+ get
+ }
+ public static func ifNil(_ newValue: Base) -> DeclarativeConfiguration.Configurator
+}
+extension DeclarativeConfigurationCore.AnyConfigurationContainer {
+ public static func config(_ config: DeclarativeConfiguration.Configurator) -> DeclarativeConfigurationCore.AnyConfigurationContainer
+}
+public protocol CallAsFunctionConfigurableProtocol : DeclarativeConfiguration._BaseConfigurableProtocol {
+}
+extension DeclarativeConfiguration.CallAsFunctionConfigurableProtocol {
+ @discardableResult
+ @inlinable public func callAsFunction(config configuration: (Self.Config) -> Self.Config) -> Self {
+ configuration(.empty).configured(self)
+ }
+}
+public protocol CustomConfigurableProtocol : DeclarativeConfiguration._BaseConfigurableProtocol {
+}
+extension DeclarativeConfiguration.CustomConfigurableProtocol {
+ @inlinable public func configured(using configuration: (Self.Config) -> Self.Config) -> Self {
+ configured(using: configuration(.empty))
+ }
+ @inlinable public func configured(using configurator: Self.Config) -> Self {
+ configurator.configured(self)
+ }
+ @inlinable public mutating func configure(using configuration: (Self.Config) -> Self.Config) {
+ self = configured(using: configuration(.empty))
+ }
+ @inlinable public mutating func configure(using configurator: Self.Config) {
+ self = configured(using: configurator)
+ }
+}
+extension DeclarativeConfiguration.CustomConfigurableProtocol where Self : AnyObject {
+ @inlinable public func configure(using configuration: (Self.Config) -> Self.Config) {
+ configure(using: configuration(.empty))
+ }
+ @inlinable public func configure(using configurator: Self.Config) {
+ configurator.configure(self)
+ }
+}
+public protocol _BaseConfigurableProtocol {
+}
+extension DeclarativeConfiguration._BaseConfigurableProtocol {
+ public typealias Config = DeclarativeConfiguration.Configurator
+}
+extension DeclarativeConfiguration.Builder {
+ @available(*, deprecated, message: "Use `.combined(with: builder.configurator)` instead.\nThis API will be removed in v1.0.0.")
+ @inlinable public func combined(with builder: DeclarativeConfiguration.Builder) -> DeclarativeConfiguration.Builder {
+ combined(with: builder.configurator)
+ }
+ @available(*, deprecated, renamed: "modify", message: "This API will be removed in v1.0.0.")
+ @inlinable public func set(_ transform: @escaping (inout Base) -> Swift.Void) -> DeclarativeConfiguration.Builder {
+ modify(transform)
+ }
+ @available(*, deprecated, message: "Use `modify` and capture arguments explicitly instead.\nThis API is likely to be removed in v1.0.0")
+ @inlinable public func reinforce(_ args: repeat each Arg, transform: @escaping (inout Base, repeat each Arg) -> Swift.Void) -> DeclarativeConfiguration.Builder {
+ commit().modify { transform(&$0, repeat each args) }
+ }
+}
+extension DeclarativeConfiguration.Configurator {
+ @available(*, deprecated, renamed: "modify", message: "This API will be removed in v1.0.0.")
+ @inlinable public func set(_ transform: @escaping (inout Base) -> Swift.Void) -> DeclarativeConfiguration.Configurator {
+ modify(transform)
+ }
+ @available(*, deprecated, renamed: "transform", message: "This API will be removed in v1.0.0.")
+ @inlinable public func appendingConfiguration(_ configuration: @escaping (Base) -> Base) -> DeclarativeConfiguration.Configurator {
+ modify { $0 = configuration($0) }
+ }
+}
+extension ObjectiveC.NSObject : DeclarativeConfiguration.CustomConfigurableProtocol {}
+extension ObjectiveC.NSObject : DeclarativeConfiguration.CallAsFunctionConfigurableProtocol {}
diff --git a/.agents/interfaces/tvos/DeclarativeConfigurationCore.swiftinterface b/.agents/interfaces/tvos/DeclarativeConfigurationCore.swiftinterface
new file mode 100644
index 0000000..6f328d4
--- /dev/null
+++ b/.agents/interfaces/tvos/DeclarativeConfigurationCore.swiftinterface
@@ -0,0 +1,253 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name DeclarativeConfigurationCore -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+import Foundation
+import IssueReporting
+import KeyPathsExtensions
+import Swift
+import SwiftMarkerProtocols
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+public enum ConfigurationBlocks where Container : DeclarativeConfigurationCore.ConfigurationContainer {
+ @dynamicMemberLookup public struct Callable {
+ public typealias Blocks = DeclarativeConfigurationCore.ConfigurationBlocks
+ public typealias ScopedContainer = DeclarativeConfigurationCore.AnyConfigurationContainer
+ @usableFromInline
+ internal var container: Container
+ @usableFromInline
+ internal var keyPath: Swift.WritableKeyPath
+ @usableFromInline
+ internal init(container: Container, keyPath: Swift.WritableKeyPath)
+ public func peek(_ operation: @escaping (Value) -> Swift.Void) -> Container
+ public func transform(_ transform: @escaping (Value) -> Value) -> Container
+ public func modify(_ transform: @escaping (inout Value) -> Swift.Void) -> Container
+ public func callAsFunction(_ value: Value) -> Container
+ public func scope(_ config: (DeclarativeConfigurationCore.ConfigurationBlocks.Callable.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable.ScopedContainer) -> Container
+ public func configure(using config: DeclarativeConfigurationCore.ConfigurationBlocks.Callable.ScopedContainer) -> Container
+ @available(*, deprecated, message: "Use `.ifLet.scope` instead.")
+ public func ifLetScope(_ config: @escaping (DeclarativeConfigurationCore.ConfigurationBlocks.Callable.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable.ScopedContainer) -> Container where Value == Wrapped?
+ @inlinable public subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable {
+ get {
+ Callable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable {
+ get {
+ NonCallable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ }
+ @dynamicMemberLookup public struct CallableIfLet {
+ public typealias Value = Wrapped?
+ public typealias Blocks = DeclarativeConfigurationCore.ConfigurationBlocks
+ public typealias ScopedContainer = DeclarativeConfigurationCore.AnyConfigurationContainer
+ @usableFromInline
+ internal var container: Container
+ @usableFromInline
+ internal var keyPath: Swift.WritableKeyPath.CallableIfLet.Value>
+ @usableFromInline
+ internal init(container: Container, keyPath: Swift.WritableKeyPath.CallableIfLet.Value>)
+ public func peek(_ operation: @escaping (Wrapped) -> Swift.Void) -> Container
+ public func transform(_ transform: @escaping (Wrapped) -> Wrapped) -> Container
+ public func modify(_ transform: @escaping (inout Wrapped) -> Swift.Void) -> Container
+ public func callAsFunction(_ newValue: Wrapped) -> Container
+ public func callAsFunction(else defaultValue: Wrapped) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable
+ public func scope(_ config: @escaping (DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet.ScopedContainer) -> Container
+ public func configure(using config: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet.ScopedContainer) -> Container
+ @inlinable public subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ get {
+ CallableIfLet(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet {
+ get {
+ NonCallableIfLet(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ }
+ @dynamicMemberLookup public struct NonCallable {
+ public typealias Blocks = DeclarativeConfigurationCore.ConfigurationBlocks
+ public typealias ScopedContainer = DeclarativeConfigurationCore.AnyConfigurationContainer
+ @usableFromInline
+ internal var container: Container
+ @usableFromInline
+ internal var keyPath: Swift.KeyPath
+ @usableFromInline
+ internal init(container: Container, keyPath: Swift.KeyPath)
+ public func peek(_ operation: @escaping (Value) -> Swift.Void) -> Container
+ public func scope(_ config: (DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable.ScopedContainer) -> Container
+ public func configure(using config: DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable.ScopedContainer) -> Container
+ @available(*, deprecated, message: "Use `.ifLet.scope` instead.")
+ public func ifLetScope(_ config: @escaping (DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable.ScopedContainer) -> Container where Value == Wrapped?
+ @inlinable public subscript(dynamicMember keyPath: Swift.ReferenceWritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable {
+ get {
+ Callable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable {
+ get {
+ NonCallable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.ReferenceWritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable where Value == Wrapped? {
+ get {
+ Callable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable where Value == Wrapped? {
+ get {
+ NonCallable(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ }
+ @dynamicMemberLookup public struct NonCallableIfLet {
+ public typealias Value = Wrapped?
+ public typealias Blocks = DeclarativeConfigurationCore.ConfigurationBlocks
+ public typealias ScopedContainer = DeclarativeConfigurationCore.AnyConfigurationContainer
+ @usableFromInline
+ internal var container: Container
+ @usableFromInline
+ internal var keyPath: Swift.KeyPath.NonCallableIfLet.Value>
+ @usableFromInline
+ internal init(container: Container, keyPath: Swift.KeyPath.NonCallableIfLet.Value>)
+ public func peek(_ operation: @escaping (DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet.Value) -> Swift.Void) -> Container
+ @available(*, unavailable, message: "Not available for non-writable key path")
+ public func callAsFunction(else defaultValue: Wrapped) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable
+ public func scope(_ config: @escaping (DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet.ScopedContainer) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet.ScopedContainer) -> Container
+ public func configured(using config: DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet.ScopedContainer) -> Container
+ @inlinable public subscript(dynamicMember keyPath: Swift.ReferenceWritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ get {
+ CallableIfLet(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet {
+ get {
+ NonCallableIfLet(
+ container: self.container,
+ keyPath: self.keyPath.appending(path: keyPath)
+ )
+ }
+ }
+ }
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.Callable where Value : SwiftMarkerProtocols._OptionalProtocol {
+ public var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ get
+ }
+ public func ifNil(_ value: Value) -> Container
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable where Value : SwiftMarkerProtocols._OptionalProtocol {
+ public var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet {
+ get
+ }
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet where Wrapped : SwiftMarkerProtocols._OptionalProtocol {
+ public var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ get
+ }
+ public func ifNil(_ value: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet.Value) -> Container
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet where Wrapped : SwiftMarkerProtocols._OptionalProtocol {
+ public var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet {
+ get
+ }
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.Callable {
+ public func ifLet(_ keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet
+ public func ifLet(_ keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable {
+ public func ifLet(_ keyPath: Swift.ReferenceWritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet
+ public func ifLet(_ keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ public func ifLet(_ keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet
+ public func ifLet(_ keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet {
+ public func ifLet(_ keyPath: Swift.ReferenceWritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet
+ public func ifLet(_ keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.Callable {
+ public func callAsFunction(ifLet newValue: Value?) -> Container
+}
+extension DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ public func callAsFunction(ifLet newValue: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet.Value?) -> Container
+}
+public protocol ConfigurationContainer {
+ associatedtype Base
+}
+extension DeclarativeConfigurationCore.ConfigurationContainer {
+ public typealias Blocks = DeclarativeConfigurationCore.ConfigurationBlocks
+}
+extension DeclarativeConfigurationCore.ConfigurationContainer where Self.Base : SwiftMarkerProtocols._OptionalProtocol {
+ public var ifLet: DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet {
+ get
+ }
+ public func ifNil(_ newValue: Self.Base) -> Self
+}
+extension DeclarativeConfigurationCore.ConfigurationContainer {
+ public func ifLet(_ keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.CallableIfLet
+ public func ifLet(_ keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallableIfLet
+ @inlinable public subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable {
+ get {
+ .init(container: self, keyPath: keyPath)
+ }
+ }
+ @inlinable public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable {
+ get {
+ .init(container: self, keyPath: keyPath)
+ }
+ }
+ public subscript(dynamicMember keyPath: Swift.WritableKeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.Callable where Self.Base == Wrapped? {
+ get
+ }
+ public subscript(dynamicMember keyPath: Swift.KeyPath) -> DeclarativeConfigurationCore.ConfigurationBlocks.NonCallable where Self.Base == Wrapped? {
+ get
+ }
+}
+@dynamicMemberLookup public struct AnyConfigurationContainer : DeclarativeConfigurationCore.ConfigurationContainer {
+ internal let underlyingContainer: any DeclarativeConfigurationCore.ConfigurationContainer
+ public init(_ underlyingContainer: any DeclarativeConfigurationCore.ConfigurationContainer)
+}
+public protocol ConfigurationStorage {
+ associatedtype Base
+}
+public struct DefaultConfigurationStorage : DeclarativeConfigurationCore.ConfigurationStorage {
+ internal var items: [any DeclarativeConfigurationCore._ConfigurationItem]
+ public init()
+}
+@inlinable public func reduce(_ value: Value, with transform: (inout Value) -> Swift.Void) -> Value {
+ var _value = value
+ transform(&_value)
+ return _value
+}
diff --git a/.agents/interfaces/tvos/FunctionalBuilder.swiftinterface b/.agents/interfaces/tvos/FunctionalBuilder.swiftinterface
new file mode 100644
index 0000000..2335f7b
--- /dev/null
+++ b/.agents/interfaces/tvos/FunctionalBuilder.swiftinterface
@@ -0,0 +1,13 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name FunctionalBuilder -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+@_exported import DeclarativeConfiguration
+import Swift
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+@available(*, deprecated, message: "FunctionalBuilder module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias Builder = DeclarativeConfiguration.Builder
+@available(*, deprecated, message: "FunctionalBuilder module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias BuilderProvider = DeclarativeConfiguration.BuilderProvider
diff --git a/.agents/interfaces/tvos/FunctionalClosures.swiftinterface b/.agents/interfaces/tvos/FunctionalClosures.swiftinterface
new file mode 100644
index 0000000..79689d0
--- /dev/null
+++ b/.agents/interfaces/tvos/FunctionalClosures.swiftinterface
@@ -0,0 +1,236 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name FunctionalClosures -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+import Swift
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+public enum HandlerContainerBehaviour {
+ case resetting
+ case preceding
+ case appending
+ @_semantics("derived_enum_equals") @_implements(Swift.Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: FunctionalClosures.HandlerContainerBehaviour, _ b: FunctionalClosures.HandlerContainerBehaviour) -> Swift.Bool
+ public func hash(into hasher: inout Swift.Hasher)
+ public var hashValue: Swift.Int {
+ get
+ }
+}
+@available(macOS 14.0.0, iOS 17.0.0, tvOS 17.0.0, watchOS 10.0.0, *)
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class _Handler {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @usableFromInline
+ @_hasInitialValue internal var action: ((repeat each T) -> Swift.Void)?
+ public init(action: ((repeat each T) -> Swift.Void)?)
+ @inlinable public mutating func callAsFunction(perform action: ((repeat each T) -> Swift.Void)?) {
+ self.action = action
+ }
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures._Handler.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures._Handler.Container
+ public var projectedValue: ((repeat each T) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ input: repeat each T)
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+public typealias Handler = FunctionalClosures.Handler1
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class Handler1 {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @usableFromInline
+ @_hasInitialValue internal var action: ((Input) -> Swift.Void)?
+ public init(action: ((Input) -> Swift.Void)?)
+ @inlinable public mutating func callAsFunction(perform action: ((Input) -> Swift.Void)?) {
+ self.action = action
+ }
+ @available(*, deprecated, message: "This API will be removed,\nconsider using redeclaration with `(Input) -> Output` signature function.\nFeel free to discuss the API here\nhttps://github.com/CaptureContext/swift-declarative-configuration/issues/1")
+ @inlinable public mutating func callAsFunction(_ behaviour: FunctionalClosures.Handler1.Container.Behaviour, perform action: ((Input) -> Swift.Void)?) {
+ switch behaviour {
+ case .resetting:
+ self.action = action
+ case .preceding:
+ let oldAction = self.action
+ self.action = { input in
+ action?(input)
+ oldAction?(input)
+ }
+ case .appending:
+ let oldAction = self.action
+ self.action = { input in
+ action?(input)
+ oldAction?(input)
+ }
+ }
+ }
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.Handler1.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.Handler1.Container
+ public var projectedValue: ((Input) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ input: Input)
+ public func callAsFunction() where Input == ()
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class Handler2 {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @_hasInitialValue internal var action: ((T0, T1) -> Swift.Void)?
+ public init(action: ((T0, T1) -> Swift.Void)?)
+ public mutating func callAsFunction(perform action: ((T0, T1) -> Swift.Void)?)
+ @available(*, deprecated, message: "This API will be removed,\nconsider using redeclaration with `(Input) -> Output` signature function.\nFeel free to discuss the API here\nhttps://github.com/MakeupStudio/swift-declarative-configuration/issues/1")
+ public mutating func callAsFunction(_ behaviour: FunctionalClosures.Handler2.Container.Behaviour, perform action: ((T0, T1) -> Swift.Void)?)
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.Handler2.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.Handler2.Container
+ public var projectedValue: ((T0, T1) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ t0: T0, _ t1: T1)
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class Handler3 {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @_hasInitialValue internal var action: ((T0, T1, T2) -> Swift.Void)?
+ public init(action: ((T0, T1, T2) -> Swift.Void)?)
+ public mutating func callAsFunction(perform action: ((T0, T1, T2) -> Swift.Void)?)
+ @available(*, deprecated, message: "This API will be removed,\nconsider using redeclaration with `(Input) -> Output` signature function.\nFeel free to discuss the API here\nhttps://github.com/MakeupStudio/swift-declarative-configuration/issues/1")
+ public mutating func callAsFunction(_ behaviour: FunctionalClosures.Handler3.Container.Behaviour, perform action: ((T0, T1, T2) -> Swift.Void)?)
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.Handler3.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.Handler3.Container
+ public var projectedValue: ((T0, T1, T2) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ t0: T0, _ t1: T1, _ t2: T2)
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class Handler4 {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @_hasInitialValue internal var action: ((T0, T1, T2, T3) -> Swift.Void)?
+ public init(action: ((T0, T1, T2, T3) -> Swift.Void)?)
+ public mutating func callAsFunction(perform action: ((T0, T1, T2, T3) -> Swift.Void)?)
+ @available(*, deprecated, message: "This API will be removed,\nconsider using redeclaration with `(Input) -> Output` signature function.\nFeel free to discuss the API here\nhttps://github.com/MakeupStudio/swift-declarative-configuration/issues/1")
+ public mutating func callAsFunction(_ behaviour: FunctionalClosures.Handler4.Container.Behaviour, perform action: ((T0, T1, T2, T3) -> Swift.Void)?)
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.Handler4.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.Handler4.Container
+ public var projectedValue: ((T0, T1, T2, T3) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ t0: T0, _ t1: T1, _ t2: T2, _ t3: T3)
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo, our advice is to use Combine/Observation instead")
+@propertyWrapper public class Handler5 {
+ public struct Container {
+ public typealias Behaviour = FunctionalClosures.HandlerContainerBehaviour
+ @_hasInitialValue internal var action: ((T0, T1, T2, T3, T4) -> Swift.Void)?
+ public init(action: ((T0, T1, T2, T3, T4) -> Swift.Void)?)
+ public mutating func callAsFunction(perform action: ((T0, T1, T2, T3, T4) -> Swift.Void)?)
+ @available(*, deprecated, message: "This API will be removed,\nconsider using redeclaration with `(Input) -> Output` signature function.\nFeel free to discuss the API here\nhttps://github.com/MakeupStudio/swift-declarative-configuration/issues/1")
+ public mutating func callAsFunction(_ behaviour: FunctionalClosures.Handler5.Container.Behaviour, perform action: ((T0, T1, T2, T3, T4) -> Swift.Void)?)
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.Handler5.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.Handler5.Container
+ public var projectedValue: ((T0, T1, T2, T3, T4) -> Swift.Void)? {
+ get
+ set
+ }
+ public func callAsFunction(_ t0: T0, _ t1: T1, _ t2: T2, _ t3: T3, _ t4: T4)
+ @objc deinit
+}
+@available(macOS 14.0.0, iOS 17.0.0, tvOS 17.0.0, watchOS 10.0.0, *)
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo")
+@propertyWrapper public class _DataSource {
+ public struct Container {
+ @usableFromInline
+ internal var action: (repeat each T) -> Output
+ public init(action: @escaping (repeat each T) -> Output)
+ @inlinable public mutating func callAsFunction(perform action: @escaping (repeat each T) -> Output) {
+ self.action = action
+ }
+ }
+ public init(wrappedValue: FunctionalClosures._DataSource.Container)
+ public var wrappedValue: FunctionalClosures._DataSource.Container
+ @inlinable public var projectedValue: (repeat each T) -> Output {
+ get { wrappedValue.action }
+ set { wrappedValue.action = newValue }
+ }
+ @inlinable public func callAsFunction(_ args: repeat each T) -> Output? {
+ projectedValue(repeat each args)
+ }
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo")
+@propertyWrapper public class DataSource {
+ public struct Container {
+ @usableFromInline
+ internal var action: (Input) -> Output
+ public init(action: @escaping (Input) -> Output)
+ @inlinable public mutating func callAsFunction(perform action: @escaping (Input) -> Output) {
+ self.action = action
+ }
+ }
+ public init(wrappedValue: FunctionalClosures.DataSource.Container)
+ public var wrappedValue: FunctionalClosures.DataSource.Container
+ @inlinable public var projectedValue: (Input) -> Output {
+ get { wrappedValue.action }
+ set { wrappedValue.action = newValue }
+ }
+ @inlinable public func callAsFunction(_ input: Input) -> Output? {
+ projectedValue(input)
+ }
+ @inlinable public func callAsFunction() -> Output where Input == () {
+ projectedValue(())
+ }
+ @objc deinit
+}
+@available(*, deprecated, message: "If you use this functionality, consider copying sources and please submit an issue to the repo")
+@propertyWrapper public class OptionalDataSource {
+ public struct Container {
+ @usableFromInline
+ @_hasInitialValue internal var action: ((Input) -> Output)?
+ public init(action: ((Input) -> Output)?)
+ @inlinable public mutating func callAsFunction(perform action: ((Input) -> Output)?) {
+ self.action = action
+ }
+ }
+ public init()
+ public init(wrappedValue: FunctionalClosures.OptionalDataSource.Container)
+ @_hasInitialValue public var wrappedValue: FunctionalClosures.OptionalDataSource.Container
+ @inlinable public var projectedValue: ((Input) -> Output)? {
+ get { wrappedValue.action }
+ set { wrappedValue.action = newValue }
+ }
+ @inlinable public func callAsFunction(_ input: Input) -> Output? {
+ projectedValue?(input)
+ }
+ @inlinable public func callAsFunction() -> Output? where Input == () {
+ projectedValue?(())
+ }
+ @objc deinit
+}
+extension FunctionalClosures.HandlerContainerBehaviour : Swift.Equatable {}
+extension FunctionalClosures.HandlerContainerBehaviour : Swift.Hashable {}
diff --git a/.agents/interfaces/tvos/FunctionalConfigurator.swiftinterface b/.agents/interfaces/tvos/FunctionalConfigurator.swiftinterface
new file mode 100644
index 0000000..7885765
--- /dev/null
+++ b/.agents/interfaces/tvos/FunctionalConfigurator.swiftinterface
@@ -0,0 +1,38 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name FunctionalConfigurator -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+@_exported import DeclarativeConfiguration
+import Foundation
+import Swift
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+@available(*, deprecated, message: "FunctionalConfigurator module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias Configurator = DeclarativeConfiguration.Configurator
+public protocol ___ConfigInitializableProtocol_DEPRECATED : DeclarativeConfiguration.CallAsFunctionConfigurableProtocol {
+ init()
+}
+@available(*, deprecated, message: "Use `DefaultConfigurableProtocol` instead.\n\nFunctionalConfigurator module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias ConfigInitializable = FunctionalConfigurator.___ConfigInitializableProtocol_DEPRECATED
+extension FunctionalConfigurator.___ConfigInitializableProtocol_DEPRECATED {
+ @available(*, deprecated, message: "Use `.init().configured(using: config) instead\n\nFunctionalConfigurator module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+ public init(config configurator: Self.Config)
+}
+public protocol ___CustomConfigurableProtocol_DEPRECATED : DeclarativeConfiguration.CustomConfigurableProtocol {
+ init()
+}
+@available(*, deprecated, message: "Use `DefaultConfigurableProtocol` or `CustomConfigurableProtocol` instead.\n\nFunctionalConfigurator module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias CustomConfigurable = FunctionalConfigurator.___CustomConfigurableProtocol_DEPRECATED
+public protocol ___ConfigInitializableNSObject_DEPRECATED : ObjectiveC.NSObjectProtocol {
+}
+@available(*, deprecated, message: "Use CallAsFunctionConfigurableProtocol instead.\n\nFunctionalConfigurator module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead")
+public typealias __ConfigInitializableNSObject = FunctionalConfigurator.___ConfigInitializableNSObject_DEPRECATED
+extension FunctionalConfigurator.___ConfigInitializableNSObject_DEPRECATED where Self : ObjectiveC.NSObject {
+ @available(*, deprecated, renamed: "init(unsafeConfig:)")
+ @_disfavoredOverload public init(config configuration: (Self.Config) -> Self.Config)
+ @available(*, deprecated, renamed: "init(unsafeConfig:)")
+ @_disfavoredOverload public init(config configurator: Self.Config)
+}
+extension ObjectiveC.NSObject : FunctionalConfigurator.___ConfigInitializableNSObject_DEPRECATED {
+}
diff --git a/.agents/interfaces/tvos/FunctionalKeyPath.swiftinterface b/.agents/interfaces/tvos/FunctionalKeyPath.swiftinterface
new file mode 100644
index 0000000..14b5210
--- /dev/null
+++ b/.agents/interfaces/tvos/FunctionalKeyPath.swiftinterface
@@ -0,0 +1,162 @@
+// swift-interface-format-version: 1.0
+// swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
+// swift-module-flags: -target arm64-apple-tvos13.0-simulator -enable-objc-interop -swift-version 6 -O -module-name FunctionalKeyPath -package-name swift_declarative_configuration
+// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
+@_exported import DeclarativeConfigurationCore
+import Swift
+import _Concurrency
+import _StringProcessing
+import _SwiftConcurrencyShims
+@available(*, deprecated, renamed: "ValuePath", message: "FunctionalKeyPath module is deprecated and will be removed in v1.0.0\nUse `import DeclarativeConfiguration` instead.")
+public typealias FunctionalKeyPath = FunctionalKeyPath.__ValuePath_DEPRECATED
+public struct __ValuePath_DEPRECATED {
+ @usableFromInline
+ internal let _embed: (Value, Root) -> Root
+ @usableFromInline
+ internal let _extract: (Root) -> Value
+ public init(embed: @escaping (Value, Root) -> Root, extract: @escaping (Root) -> Value)
+}
+@available(*, deprecated, message: "Consider using KeyPaths or copying sources instead.\nhttps://github.com/capturecontext/swift-keypaths-extensions\ncan help with combining optional keypaths while keeping hashability.\nhttps://github.com/pointfreeco/swift-case-paths can help with\nboth simple optional keypaths and enum case paths (CasePaths).\nValuePaths are likely to be removed in v1.0.0")
+public typealias ValuePath = FunctionalKeyPath.__ValuePath_DEPRECATED
+extension FunctionalKeyPath.__ValuePath_DEPRECATED {
+ @inlinable public func embed(_ value: Value, in root: Root) -> Root {
+ _embed(value, root)
+ }
+ @inlinable public func embed(_ value: Value, in root: Root) where Root : AnyObject {
+ _ = _embed(value, root)
+ }
+ @inlinable public func embed(_ value: Value, in root: inout Root) {
+ root = embed(value, in: root)
+ }
+ @inlinable public func extract(from root: Root) -> Value {
+ _extract(root)
+ }
+ @inlinable public init(_ keyPath: Swift.WritableKeyPath) {
+ self.init(
+ embed: { value, root in
+ var root = root
+ root[keyPath: keyPath] = value
+ return root
+ },
+ extract: { root in
+ root[keyPath: keyPath]
+ }
+ )
+ }
+ @inlinable public static func getonly(_ keyPath: Swift.KeyPath) -> FunctionalKeyPath.__ValuePath_DEPRECATED {
+ __ValuePath_DEPRECATED(
+ embed: { _, root in
+ root
+ },
+ extract: { root in
+ root[keyPath: keyPath]
+ }
+ )
+ }
+ @inlinable public func unwrapped