import { TMethod } from '@amaui/models';
export interface ISubscribe {
    unsubscribe: () => void;
}
export interface IOptions {
    emit?: {
        priorValue?: boolean;
        copy?: boolean;
        pre?: {
            method?: TMethod;
        };
        post?: {
            method?: TMethod;
        };
    };
}
export interface IAmauiSubscription<T> {
    methods: Array<TMethod>;
    emit(value: T, ...other: any[]): void;
    push(value: T, ...other: any[]): void;
    subscribe(method: TMethod): void;
    unsubscribe(method: TMethod): void;
    [p: string]: any;
}
declare class AmauiSubscription<T = any> implements IAmauiSubscription<T> {
    value?: T;
    options: IOptions;
    methods: Array<TMethod>;
    constructor(value?: T, options?: IOptions);
    get length(): number;
    emit(value: T, ...other: any[]): void;
    push: (value: T, ...other: any[]) => void;
    forEach(...args: any[]): void;
    map(value_?: any): any;
    subscribe(method: TMethod): ISubscribe;
    unsubscribe(method: TMethod): void;
}
export default AmauiSubscription;
