import * as O from "lonna" ; export type NativeProperty < T > = O . Property < T > ; export type NativeAtom < T > = O . Atom < T > ; export type NativeEventStream < T > = O . EventStream < T > ; export type Lens < A , B > = O . Lens < A , B > ; export type Scope = O . Scope ; export type Predicate < A > = ( value : A ) => boolean ; export type Observable < T > = { } ; export type Atom < T > = { } ; export type Property < T > = { } ; export type EventStream < T > = { } ; export interface Bus < T > extends NativeEventStream < T > { } export type Unsub = ( ) => void ; export function pushAndEnd < T > ( bus , value ) { const nativeBus = bus as O . Bus < T > ; nativeBus . push ( value ) ; nativeBus . end ( ) ; } export function bus < T > ( ) { return O . bus ( ) ; } export function get < A > ( prop ) { return ( prop as O . Property < A > ) . get ( ) ; } export function set < A > ( atom , value ) { ; ( atom as O . Atom < A > ) . set ( value ) ; } export function isAtom ( x ) { return O . isAtom ( x ) ; } export function isProperty ( x ) { return O . isProperty ( x ) ; } export function forEach < V > ( x , fn ) { return ( x as O . Observable < any > ) . forEach ( fn ) ; } export const createScope = O . createScope ; export const mkScope = O . mkScope ; export function view < A , K extends keyof A > ( a , key ) ; export function view < A , K extends keyof A > ( a , key ) ; export function view < A , B > ( a , fn ) ; export function view < A , K extends keyof A > ( a , key ) { return O . view ( a , key ) ; } export function filter < A > ( prop , fn , scope ) ; export function filter < A > ( prop , fn , scope ) ; export function filter < A > ( prop , fn , scope ) { return O . filter ( fn , scope ) ( prop as any ) ; } export const observablesImplementationName = "Lonna" ;