import { DestroyRef, Injector, type EffectRef, type WritableSignal } from '@angular/core'; import { Subscription, type Observable } from 'rxjs'; export type PartialOrValue = TValue extends object ? Partial : TValue; export type Reducer = (previous: TValue, next: TNext) => PartialOrValue; type ConnectedSignal = { with>(observable: Observable): ConnectedSignal; with(observable: Observable, reducer: Reducer): ConnectedSignal; with>(originSignal: () => TOriginSignalValue): ConnectedSignal; subscription: Subscription; }; /** * Connects a signal to an observable and returns a subscription. The subscription is automatically * unsubscribed when the component is destroyed. If it's not called in an injection context, it must * be called with an injector or DestroyRef. * * * Usage * ```ts * @Component({}) * export class MyComponent { * private dataService = inject(DataService); * * data = signal([] as string[]); * * constructor() { * connect(this.data, this.dataService.data$); * } * } * ``` */ export declare function connect(signal: WritableSignal, injectorOrDestroyRef?: Injector | DestroyRef, useUntracked?: boolean): ConnectedSignal; /** * Connects a signal to another signal value. * @param signal The signal to connect to. * @param originSignal A callback fn that includes a signal call. The signal call will be tracked. * * Usage * ```ts * export class MyComponent { * private dataService = inject(DataService); * * name = signal(''); * * constructor() { * connect(this.name, () => this.dataService.user().name); * } * } * ``` */ export declare function connect(signal: WritableSignal, originSignal: () => TSignalValue): EffectRef; export declare function connect>(signal: WritableSignal, observable: Observable, injectorOrDestroyRef?: Injector | DestroyRef, useUntracked?: boolean): Subscription; export declare function connect(signal: WritableSignal, observable: Observable, reducer: Reducer, injectorOrDestroyRef?: Injector | DestroyRef, useUntracked?: boolean): Subscription; export {};