import { ObservableLike } from "./Observable.ts";
declare global { interface SymbolConstructor { readonly observable: symbol; }}
if (typeof Symbol.observable === "undefined") { Reflect.set(Symbol, "observable", "@@observable");}
export function isObservableLike<T = unknown>( observableLike: any,): observableLike is ObservableLike<T> { return typeof observableLike === "object" && observableLike !== null && Symbol.observable in observableLike && typeof observableLike[Symbol.observable] === "function";}
export function isIterable<T = unknown>( iterable: any,): iterable is Iterable<T> { return typeof iterable === "object" && iterable !== null && Symbol.iterator in iterable && typeof iterable[Symbol.iterator] === "function";}
export function isAsyncIterable<T = unknown>( iterable: any,): iterable is AsyncIterable<T> { return typeof iterable === "object" && iterable !== null && Symbol.asyncIterator in iterable && typeof iterable[Symbol.asyncIterator] === "function";}