import React from 'react';
import type { ActionObject, Api, IScopedContext, RendererData, Schema, ScopedComponentType } from 'jamis-core';
import type { ServiceProps } from './types';
export default class Service extends React.Component<ServiceProps> {
    static defaultProps: Partial<ServiceProps>;
    static propsList: Array<string>;
    timer: ReturnType<typeof setTimeout>;
    mounted: boolean;
    socket: any;
    dataProviderUnsubscribe?: Function;
    isAutoRefresh?: boolean;
    /**
     * 正在reload的标识. 当作为form的target时, 会先调用receive -> reload触发ajax, 然后又触发了didUpdate中的ajax
     */
    reloadPromise: Promise<void> | null;
    disposers: (() => void)[];
    constructor(props: ServiceProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: ServiceProps): void;
    componentWillUnmount(): void;
    doAction(action: ActionObject, args: any): Promise<any>;
    initFetch(): Promise<void>;
    runDataProvider: () => Promise<void>;
    runDataProviderUnsubscribe(): void;
    dataProviderSetData(data: any): void;
    fetchWSData(ws: string | Api, data: any): void;
    afterDataFetch(result: any): void;
    afterSchemaFetch(schema: {
        schema?: Schema;
        schemaData?: Record<string, any>;
    }): void;
    initInterval: (schema: any) => any;
    reload(subpath?: string, query?: any, ctx?: RendererData, silent?: boolean): Promise<void>;
    runSchemaProvider: () => Promise<void>;
    silentReload(target?: string, query?: any): Promise<void>;
    receive(values: object): void;
    handleQuery(query: any): void;
    reloadTarget(target: string, data?: any): void;
    handleDialogConfirm(values: object[], action: ActionObject, ctx: any, targets: Array<any>): void;
    handleDialogClose(confirmed?: boolean): void;
    openFeedback(dialog: any, ctx: any): Promise<unknown>;
    handleAction(e: React.UIEvent<any> | void, action: ActionObject, data: object, throwErrors?: boolean, delegate?: IScopedContext): void;
    handleChange(value: any, name: string, submit?: boolean, changePristine?: boolean): void;
    renderBody(): JSX.Element | null;
    render(): JSX.Element;
}
export declare class ServiceRenderer extends Service {
    static contextType: React.Context<IScopedContext<ScopedComponentType>>;
    constructor(props: ServiceProps, context: IScopedContext);
    reload(subpath?: string, query?: any, ctx?: any, silent?: boolean): any;
    receive(values: any, subPath?: string): void;
    componentWillUnmount(): void;
    reloadTarget(target: string, data?: any): void;
    setData(values: object): void;
}
