// Generated by dts-bundle v0.7.3 // Dependencies for this module: // reflect-metadata declare module 'doric' { export * from 'doric/lib/src/runtime/global'; export * from 'doric/lib/src/ui/index.ui'; export * from "doric/lib/src/widget/index.widget"; export * from 'doric/lib/src/native/index.native'; export * from "doric/lib/src/util/index.util"; export * from "doric/lib/src/pattern/index.pattern"; } declare module 'doric/lib/src/runtime/global' { export * from 'reflect-metadata'; export type BridgeContext = { [index: string]: { [index: string]: (args?: any) => Promise; }; }; global { const context: BridgeContext; const Environment: { platform: "Android" | "iOS" | "Qt" | "h5"; platformVersion: string; appName: string; appVersion: string; libVersion: string; screenWidth: number; screenHeight: number; }; function Entry(constructor: { new (...args: any[]): {}; }): any; } export {}; } declare module 'doric/lib/src/ui/index.ui' { export * from 'doric/lib/src/ui/view'; export * from 'doric/lib/src/ui/panel'; export * from 'doric/lib/src/ui/animation'; } declare module 'doric/lib/src/widget/index.widget' { export * from 'doric/lib/src/widget/layouts'; export * from 'doric/lib/src/widget/text'; export * from 'doric/lib/src/widget/image'; export * from 'doric/lib/src/widget/list'; export * from 'doric/lib/src/widget/slider'; export * from 'doric/lib/src/widget/scroller'; export * from 'doric/lib/src/widget/refreshable'; export * from 'doric/lib/src/widget/flowlayout'; export * from 'doric/lib/src/widget/input'; export * from 'doric/lib/src/widget/nestedSlider'; export * from 'doric/lib/src/widget/draggable'; } declare module 'doric/lib/src/native/index.native' { export * from 'doric/lib/src/native/modal'; export * from 'doric/lib/src/native/navbar'; export * from 'doric/lib/src/native/navigator'; export * from 'doric/lib/src/native/network'; export * from 'doric/lib/src/native/storage'; export * from 'doric/lib/src/native/popover'; export * from 'doric/lib/src/native/animate'; } declare module 'doric/lib/src/util/index.util' { export * from 'doric/lib/src/util/color'; export * from 'doric/lib/src/util/gravity'; export * from 'doric/lib/src/util/layoutconfig'; export * from 'doric/lib/src/util/log'; export * from 'doric/lib/src/util/types'; export * from 'doric/lib/src/util/uniqueId'; } declare module 'doric/lib/src/pattern/index.pattern' { export * from 'doric/lib/src/pattern/candies'; export * from 'doric/lib/src/pattern/provider'; export * from 'doric/lib/src/pattern/mvvm'; } declare module 'doric/lib/src/ui/view' { import { Color, GradientColor } from "doric/lib/src/util/color"; import { Modeling, Model } from "doric/lib/src/util/types"; import { BridgeContext } from "doric/lib/src/runtime/global"; import { LayoutConfig } from 'doric/lib/src/util/layoutconfig'; import { IAnimation } from "doric/lib/src/ui/animation"; export function Property(target: Object, propKey: string): void; export interface IView { width?: number; height?: number; backgroundColor?: Color | GradientColor; corners?: number | { leftTop?: number; rightTop?: number; leftBottom?: number; rightBottom?: number; }; border?: { width: number; color: Color; }; shadow?: { color: Color; opacity: number; radius: number; offsetX: number; offsetY: number; }; /** * float [0,..1] */ alpha?: number; hidden?: boolean; padding?: { left?: number; right?: number; top?: number; bottom?: number; }; layoutConfig?: LayoutConfig; onClick?: Function; identifier?: string; /**++++++++++transform++++++++++*/ translationX?: number; translationY?: number; scaleX?: number; scaleY?: number; /** * float [0,..1] */ pivotX?: number; /** * float [0,..1] */ pivotY?: number; /** * rotation*PI */ rotation?: number; } export type NativeViewModel = { id: string; type: string; props: { [index: string]: Model; }; }; export abstract class View implements Modeling, IView { width: number; height: number; x: number; y: number; backgroundColor?: Color | GradientColor; corners?: number | { leftTop?: number; rightTop?: number; leftBottom?: number; rightBottom?: number; }; border?: { width: number; color: Color; }; shadow?: { color: Color; opacity: number; radius: number; offsetX: number; offsetY: number; }; alpha?: number; hidden?: boolean; viewId: string; padding?: { left?: number; right?: number; top?: number; bottom?: number; }; layoutConfig?: LayoutConfig; onClick?: Function; superview?: Superview; callbacks: Map; constructor(); /** Anchor start*/ get left(): number; set left(v: number); get right(): number; set right(v: number); get top(): number; set top(v: number); get bottom(): number; set bottom(v: number); get centerX(): number; get centerY(): number; set centerX(v: number); set centerY(v: number); get dirtyProps(): { [index: string]: Model; }; nativeViewModel: NativeViewModel; onPropertyChanged(propKey: string, oldV: Model, newV: Model): void; clean(): void; isDirty(): boolean; responseCallback(id: string, ...args: any): any; toModel(): NativeViewModel; let(block: (it: this) => void): void; also(block: (it: this) => void): this; apply(config: IView): this; in(group: Group): this; nativeChannel(context: any, name: string): (args?: any) => Promise; getWidth(context: BridgeContext): Promise; getHeight(context: BridgeContext): Promise; getLocationOnScreen(context: BridgeContext): Promise<{ x: number; y: number; }>; /**++++++++++transform++++++++++*/ translationX?: number; translationY?: number; scaleX?: number; scaleY?: number; pivotX?: number; pivotY?: number; rotation?: number; /**----------transform----------*/ doAnimation(context: BridgeContext, animation: IAnimation): Promise; } export abstract class Superview extends View { subviewById(id: string): View | undefined; abstract allSubviews(): Iterable; isDirty(): boolean; clean(): void; toModel(): NativeViewModel; } export abstract class Group extends Superview { readonly children: View[]; allSubviews(): View[]; addChild(view: View): void; } } declare module 'doric/lib/src/ui/panel' { import { View, Group } from "doric/lib/src/ui/view"; import { Root } from 'doric/lib/src/widget/layouts'; import { BridgeContext } from 'doric/lib/src/runtime/global'; export function NativeCall(target: Panel, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor; export abstract class Panel { context: BridgeContext; onCreate(): void; onDestroy(): void; onShow(): void; onHidden(): void; abstract build(rootView: Group): void; addHeadView(v: View): void; allHeadViews(): IterableIterator; removeHeadView(v: View | string): void; clearHeadViews(): void; getRootView(): Root; getInitData(): object | undefined; } } declare module 'doric/lib/src/ui/animation' { import { Modeling, Model } from "doric/lib/src/util/types"; export type AnimatedKey = "translationX" | "translationY" | "scaleX" | "scaleY" | "rotation" | "pivotX" | "pivotY"; export enum RepeatMode { RESTART = 1, REVERSE = 2 } export interface IAnimation extends Modeling { duration: number; delay?: number; } export interface Changeable { fromValue: number; toValue: number; key: AnimatedKey; repeatCount?: number; repeatMode?: RepeatMode; } export enum FillMode { /** * The receiver is removed from the presentation when the animation is completed. */ Removed = 0, /** * The receiver remains visible in its final state when the animation is completed. */ Forward = 1, /** * The receiver clamps values before zero to zero when the animation is completed. */ Backward = 2, /** * The receiver clamps values at both ends of the object’s time space */ Both = 3 } export enum TimingFunction { /** * The system default timing function. Use this function to ensure that the timing of your animations matches that of most system animations. */ Default = 0, /** * Linear pacing, which causes an animation to occur evenly over its duration. */ Linear = 1, /** * Ease-in pacing, which causes an animation to begin slowly and then speed up as it progresses. */ EaseIn = 2, /** * Ease-out pacing, which causes an animation to begin quickly and then slow as it progresses. */ EaseOut = 3, /** * Ease-in-ease-out pacing, which causes an animation to begin slowly, accelerate through the middle of its duration, and then slow again before completing. */ EaseInEaseOut = 4 } abstract class Animation implements IAnimation { changeables: Map; duration: number; repeatCount?: number; repeatMode?: RepeatMode; delay?: number; fillMode: FillMode; timingFunction?: TimingFunction; toModel(): { type: string; delay: number | undefined; duration: number; changeables: { key: AnimatedKey; fromValue: number; toValue: number; }[]; repeatCount: number | undefined; repeatMode: RepeatMode | undefined; fillMode: FillMode; timingFunction: TimingFunction | undefined; }; } export class ScaleAnimation extends Animation { constructor(); set fromScaleX(v: number); get fromScaleX(): number; set toScaleX(v: number); get toScaleX(): number; set fromScaleY(v: number); get fromScaleY(): number; set toScaleY(v: number); get toScaleY(): number; } export class TranslationAnimation extends Animation { constructor(); set fromTranslationX(v: number); get fromTranslationX(): number; set toTranslationX(v: number); get toTranslationX(): number; set fromTranslationY(v: number); get fromTranslationY(): number; set toTranslationY(v: number); get toTranslationY(): number; } export class RotationAnimation extends Animation { constructor(); set fromRotation(v: number); get fromRotation(): number; set toRotation(v: number); get toRotation(): number; } export class AnimationSet implements IAnimation { _duration: number; delay?: number; addAnimation(anim: IAnimation): void; get duration(): number; set duration(v: number); toModel(): { animations: Model; delay: number | undefined; }; } export {}; } declare module 'doric/lib/src/widget/layouts' { import { Group, IView, View } from "doric/lib/src/ui/view"; import { Gravity } from "doric/lib/src/util/gravity"; export interface IStack extends IView { } export class Stack extends Group implements IStack { } export class Root extends Stack { } class LinearLayout extends Group { space?: number; gravity?: Gravity; } export interface IVLayout extends IView { space?: number; gravity?: Gravity; } export class VLayout extends LinearLayout implements VLayout { } export interface IHLayout extends IView { space?: number; gravity?: Gravity; } export class HLayout extends LinearLayout implements IHLayout { } export function stack(views: View[]): Stack; export function hlayout(views: View[]): HLayout; export function vlayout(views: View[]): VLayout; export {}; } declare module 'doric/lib/src/widget/text' { import { IView, View } from "doric/lib/src/ui/view"; import { Color } from "doric/lib/src/util/color"; import { Gravity } from "doric/lib/src/util/gravity"; export interface IText extends IView { text?: string; textColor?: Color; textSize?: number; maxLines?: number; textAlignment?: Gravity; } export class Text extends View implements IText { text?: string; textColor?: Color; textSize?: number; maxLines?: number; textAlignment?: Gravity; } export function text(config: IText): Text; } declare module 'doric/lib/src/widget/image' { import { IView, View } from "doric/lib/src/ui/view"; export enum ScaleType { ScaleToFill = 0, ScaleAspectFit = 1, ScaleAspectFill = 2 } export interface IImage extends IView { imageUrl?: string; imageBase64?: string; scaleType?: ScaleType; isBlur?: boolean; loadCallback?: (image: { width: number; height: number; } | undefined) => void; } export class Image extends View implements IImage { imageUrl?: string; imageBase64?: string; scaleType?: ScaleType; isBlur?: boolean; loadCallback?: (image: { width: number; height: number; } | undefined) => void; } export function image(config: IImage): Image; } declare module 'doric/lib/src/widget/list' { import { View, Superview, IView, NativeViewModel } from "doric/lib/src/ui/view"; import { Stack } from "doric/lib/src/widget/layouts"; export class ListItem extends Stack { /** * Set to reuse native view */ identifier?: string; } export interface IList extends IView { renderItem: (index: number) => ListItem; itemCount: number; batchCount?: number; } export class List extends Superview implements IList { allSubviews(): IterableIterator | ListItem[]; itemCount: number; renderItem: (index: number) => ListItem; batchCount: number; onLoadMore?: () => void; loadMore?: boolean; loadMoreView?: ListItem; reset(): void; isDirty(): boolean; toModel(): NativeViewModel; } export function list(config: IList): List; export function listItem(item: View): ListItem; } declare module 'doric/lib/src/widget/slider' { import { Superview, View, IView } from "doric/lib/src/ui/view"; import { Stack } from "doric/lib/src/widget/layouts"; import { BridgeContext } from "doric/lib/src/runtime/global"; export class SlideItem extends Stack { /** * Set to reuse native view */ identifier?: string; } export interface ISlider extends IView { renderPage: (index: number) => SlideItem; itemCount: number; batchCount?: number; onPageSlided?: (index: number) => void; } export class Slider extends Superview implements ISlider { allSubviews(): IterableIterator; itemCount: number; renderPage: (index: number) => SlideItem; batchCount: number; onPageSlided?: (index: number) => void; isDirty(): boolean; slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise; getSlidedPage(context: BridgeContext): Promise; } export function slideItem(item: View): SlideItem; export function slider(config: ISlider): Slider; } declare module 'doric/lib/src/widget/scroller' { import { Superview, View, IView, NativeViewModel } from 'doric/lib/src/ui/view'; export function scroller(content: View): Scroller; export interface IScroller extends IView { content: View; } export class Scroller extends Superview implements IScroller { content: View; allSubviews(): View[]; toModel(): NativeViewModel; } } declare module 'doric/lib/src/widget/refreshable' { import { View, Superview, IView, NativeViewModel } from "doric/lib/src/ui/view"; import { List } from "doric/lib/src/widget/list"; import { Scroller } from "doric/lib/src/widget/scroller"; import { BridgeContext } from "doric/lib/src/runtime/global"; export interface IRefreshable extends IView { content: View; header?: View; onRefresh?: () => void; } export class Refreshable extends Superview implements IRefreshable { content: List | Scroller; header?: View; onRefresh?: () => void; allSubviews(): View[]; setRefreshable(context: BridgeContext, refreshable: boolean): Promise; setRefreshing(context: BridgeContext, refreshing: boolean): Promise; isRefreshable(context: BridgeContext): Promise; isRefreshing(context: BridgeContext): Promise; toModel(): NativeViewModel; } export function refreshable(config: IRefreshable): Refreshable; export interface IPullable { startAnimation(): void; stopAnimation(): void; setPullingDistance(distance: number): void; } export function pullable(v: View, config: IPullable): View; } declare module 'doric/lib/src/widget/flowlayout' { import { Stack } from 'doric/lib/src/widget/layouts'; import { IView, Superview, View, NativeViewModel } from 'doric/lib/src/ui/view'; export class FlowLayoutItem extends Stack { /** * Set to reuse native view */ identifier?: string; } export interface IFlowLayout extends IView { renderItem: (index: number) => FlowLayoutItem; itemCount: number; batchCount?: number; columnCount?: number; columnSpace?: number; rowSpace?: number; } export class FlowLayout extends Superview implements IFlowLayout { allSubviews(): IterableIterator | FlowLayoutItem[]; columnCount: number; columnSpace?: number; rowSpace?: number; itemCount: number; renderItem: (index: number) => FlowLayoutItem; batchCount: number; onLoadMore?: () => void; loadMore?: boolean; loadMoreView?: FlowLayoutItem; reset(): void; isDirty(): boolean; toModel(): NativeViewModel; } export function flowlayout(config: IFlowLayout): FlowLayout; export function flowItem(item: View): FlowLayoutItem; } declare module 'doric/lib/src/widget/input' { import { View, IView } from "doric/lib/src/ui/view"; import { Color } from "doric/lib/src/util/color"; import { Gravity } from "doric/lib/src/util/gravity"; import { BridgeContext } from "doric/lib/src/runtime/global"; export interface IInput extends IView { text?: string; textColor?: Color; textSize?: number; hintText?: string; hintTextColor?: Color; multilines?: boolean; textAlignment?: Gravity; onTextChange?: (text: string) => void; onFocusChange?: (focused: boolean) => void; } export class Input extends View implements IInput { text?: string; textColor?: Color; textSize?: number; hintText?: string; hintTextColor?: Color; multiline?: boolean; textAlignment?: Gravity; onTextChange?: (text: string) => void; onFocusChange?: (focused: boolean) => void; getText(context: BridgeContext): Promise; setSelection(context: BridgeContext, start: number, end?: number): Promise; requestFocus(context: BridgeContext): Promise; releaseFocus(context: BridgeContext): Promise; } export function input(config: IInput): Input; } declare module 'doric/lib/src/widget/nestedSlider' { import { Group, View } from 'doric/lib/src/ui/view'; import { BridgeContext } from 'doric/lib/src/runtime/global'; export class NestedSlider extends Group { onPageSlided?: (index: number) => void; addSlideItem(view: View): void; slidePage(context: BridgeContext, page: number, smooth?: boolean): Promise; getSlidedPage(context: BridgeContext): Promise; } } declare module 'doric/lib/src/widget/draggable' { import { View } from "doric/lib/src/ui/view"; import { IStack, Stack } from "doric/lib/src/widget/layouts"; export interface IDraggable extends IStack { onDrag?: (x: number, y: number) => void; } export class Draggable extends Stack implements IDraggable { onDrag?: (x: number, y: number) => void; } export function draggable(config: IDraggable, views: View[]): Draggable; } declare module 'doric/lib/src/native/modal' { import { BridgeContext } from "doric/lib/src/runtime/global"; import { Gravity } from "doric/lib/src/util/gravity"; export function modal(context: BridgeContext): { toast: (msg: string, gravity?: Gravity) => void; alert: (arg: string | { title: string; msg: string; okLabel?: string | undefined; }) => Promise; confirm: (arg: string | { title: string; msg: string; okLabel?: string | undefined; cancelLabel?: string | undefined; }) => Promise; prompt: (arg: { title?: string | undefined; msg?: string | undefined; okLabel?: string | undefined; cancelLabel?: string | undefined; text?: string | undefined; defaultText?: string | undefined; }) => Promise; }; } declare module 'doric/lib/src/native/navbar' { import { BridgeContext } from "doric/lib/src/runtime/global"; import { Color } from "doric/lib/src/util/color"; export function navbar(context: BridgeContext): { isHidden: () => Promise; setHidden: (hidden: boolean) => Promise; setTitle: (title: string) => Promise; setBgColor: (color: Color) => Promise; }; } declare module 'doric/lib/src/native/navigator' { import { BridgeContext } from "doric/lib/src/runtime/global"; export function navigator(context: BridgeContext): { push: (scheme: string, config?: { alias?: string | undefined; animated?: boolean | undefined; extra?: object | undefined; } | undefined) => Promise; pop: (animated?: boolean) => Promise; }; } declare module 'doric/lib/src/native/network' { import { BridgeContext } from "doric/lib/src/runtime/global"; export interface IRequest { url?: string; method?: "get" | "post" | "put" | "delete"; headers?: { [index: string]: string; }; params?: { [index: string]: string; }; data?: object | string; timeout?: number; } export interface IResponse { data: any; status: number; headers?: { [index: string]: string; }; } export function network(context: BridgeContext): { request: (config: IRequest) => Promise; get: (url: string, config?: IRequest | undefined) => Promise; post: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; put: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; delete: (url: string, data?: string | object | undefined, config?: IRequest | undefined) => Promise; }; } declare module 'doric/lib/src/native/storage' { import { BridgeContext } from "doric/lib/src/runtime/global"; export function storage(context: BridgeContext): { setItem: (key: string, value: string, zone?: string | undefined) => Promise; getItem: (key: string, zone?: string | undefined) => Promise; remove: (key: string, zone?: string | undefined) => Promise; clear: (zone: string) => Promise; }; } declare module 'doric/lib/src/native/popover' { import { BridgeContext } from "doric/lib/src/runtime/global"; import { View } from "doric/lib/src/ui/view"; export function popover(context: BridgeContext): { show: (view: View) => Promise; dismiss: (view?: View | undefined) => Promise; }; } declare module 'doric/lib/src/native/animate' { import { BridgeContext } from "doric/lib/src/runtime/global"; /** * Only supports x,y,width,height,corner(just for four corners),rotation,bgColor, * @param panel @see Panel */ export function animate(context: BridgeContext): (args: { animations: () => void; duration: number; }) => Promise; } declare module 'doric/lib/src/util/color' { import { Modeling } from "doric/lib/src/util/types"; /** * Store color as format AARRGGBB or RRGGBB */ export class Color implements Modeling { static BLACK: Color; static DKGRAY: Color; static GRAY: Color; static LTGRAY: Color; static WHITE: Color; static RED: Color; static GREEN: Color; static BLUE: Color; static YELLOW: Color; static CYAN: Color; static MAGENTA: Color; static TRANSPARENT: Color; _value: number; constructor(v: number); static parse(str: string): Color; static safeParse(str: string, defVal?: Color): Color; alpha(v: number): Color; toModel(): number; } export enum GradientOrientation { /** draw the gradient from the top to the bottom */ TOP_BOTTOM = 0, /** draw the gradient from the top-right to the bottom-left */ TR_BL = 1, /** draw the gradient from the right to the left */ RIGHT_LEFT = 2, /** draw the gradient from the bottom-right to the top-left */ BR_TL = 3, /** draw the gradient from the bottom to the top */ BOTTOM_TOP = 4, /** draw the gradient from the bottom-left to the top-right */ BL_TR = 5, /** draw the gradient from the left to the right */ LEFT_RIGHT = 6, /** draw the gradient from the top-left to the bottom-right */ TL_BR = 7 } export interface GradientColor { start: Color; end: Color; orientation: GradientOrientation; } } declare module 'doric/lib/src/util/gravity' { import { Modeling } from "doric/lib/src/util/types"; export const LEFT: number; export const RIGHT: number; export const TOP: number; export const BOTTOM: number; export const CENTER_X: number; export const CENTER_Y: number; export const CENTER: number; export class Gravity implements Modeling { val: number; left(): Gravity; right(): Gravity; top(): Gravity; bottom(): Gravity; center(): Gravity; centerX(): Gravity; centerY(): Gravity; toModel(): number; static Center: Gravity; static Left: Gravity; static Right: Gravity; static Top: Gravity; static Bottom: Gravity; } export function gravity(): Gravity; } declare module 'doric/lib/src/util/layoutconfig' { import { Gravity } from "doric/lib/src/util/gravity"; import { Modeling } from "doric/lib/src/util/types"; export enum LayoutSpec { /** * Depends on what's been set on width or height. */ JUST = 0, /** * Depends on it's content. */ FIT = 1, /** * Extend as much as parent let it take. */ MOST = 2 } export interface LayoutConfig { widthSpec?: LayoutSpec; heightSpec?: LayoutSpec; margin?: { left?: number; right?: number; top?: number; bottom?: number; }; alignment?: Gravity; weight?: number; } export class LayoutConfigImpl implements LayoutConfig, Modeling { widthSpec?: LayoutSpec; heightSpec?: LayoutSpec; margin?: { left?: number; right?: number; top?: number; bottom?: number; }; alignment?: Gravity; weight?: number; fit(): this; most(): this; just(): this; configWidth(w: LayoutSpec): this; configHeight(h: LayoutSpec): this; configMargin(m: { left?: number; right?: number; top?: number; bottom?: number; }): this; configAlignment(a: Gravity): this; configWeight(w: number): this; toModel(): { widthSpec: LayoutSpec | undefined; heightSpec: LayoutSpec | undefined; margin: { left?: number | undefined; right?: number | undefined; top?: number | undefined; bottom?: number | undefined; } | undefined; alignment: number | undefined; weight: number | undefined; }; } export function layoutConfig(): LayoutConfigImpl; } declare module 'doric/lib/src/util/log' { export function log(...args: any): void; export function loge(...message: any): void; export function logw(...message: any): void; } declare module 'doric/lib/src/util/types' { export interface Modeling { toModel(): Model; } export function obj2Model(obj: Model): Model; type _M = string | number | boolean | Modeling | { [index: string]: Model; } | undefined; export type Model = _M | Array<_M>; export type Binder = (v: T) => void; export class Mutable { get: () => T; set: (v: T) => void; bind(binder: Binder): void; static of(v: E): Mutable; } export {}; } declare module 'doric/lib/src/util/uniqueId' { export function uniqueId(prefix: string): string; } declare module 'doric/lib/src/pattern/candies' { export function take(target: T): (block: (p: T) => void) => void; export function takeNonNull(target?: T): (block: (p: T) => R) => R | undefined; export function takeNull(target?: T): (block: () => R) => R | undefined; export function takeLet(target: T): (block: (p: T) => R | undefined) => R | undefined; export function takeAlso(target: T): (block: (p: T) => void) => T; export function takeIf(target: T): (predicate: (t: T) => boolean) => T | undefined; export function takeUnless(target: T): (predicate: (t: T) => boolean) => T | undefined; export function repeat(action: (count: number) => void): (times: number) => void; } declare module 'doric/lib/src/pattern/provider' { export type Observer = (v: T) => void; export type Updater = (v: T) => T; export interface IObservable { addObserver(observer: Observer): void; removeObserver(observer: Observer): void; update(updater: Updater): void; } export class Observable implements IObservable { constructor(provider: IProvider, clz: { new (...args: any[]): M; }); addObserver(observer: Observer): void; removeObserver(observer: Observer): void; update(updater: Updater): void; } export interface IProvider { provide(obj: Object): void; acquire(clz: { new (...args: any[]): T; }): T | undefined; remove(clz: { new (...args: any[]): T; }): void; clear(): void; observe(clz: { new (...args: any[]): T; }): Observable; } export class Provider implements IProvider { provide(obj: Object): void; acquire(clz: { new (...args: any[]): T; }): T | undefined; remove(clz: new (...args: any[]) => T): void; clear(): void; observe(clz: new (...args: any[]) => T): Observable; } } declare module 'doric/lib/src/pattern/mvvm' { import { Group } from "doric/lib/src/ui/view"; import { Panel } from "doric/lib/src/ui/panel"; export abstract class ViewHolder { abstract build(root: Group): void; } export type Setter = (state: M) => void; export abstract class ViewModel { constructor(obj: M, v: V); getState(): M; updateState(setter: Setter): void; attach(view: Group): void; abstract onAttached(state: M, vh: V): void; abstract onBind(state: M, vh: V): void; } export type ViewModelClass = new (m: M, v: V) => ViewModel; export type ViewHolderClass = new () => V; export abstract class VMPanel extends Panel { abstract getViewModelClass(): ViewModelClass; abstract getState(): M; abstract getViewHolderClass(): ViewHolderClass; getViewModel(): ViewModel | undefined; build(root: Group): void; } }