import { DynamicModule } from '@nestjs/common';

declare function RestateService(name: string): (constructor: Function) => void;
declare function RestateObject(): (constructor: Function) => void;
declare function RestateWorkflow(name: string): (constructor: Function) => void;
declare function RestateHandler(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;

interface RestateModuleOptions {
    services?: Function[];
    objects?: Function[];
    workflows?: Function[];
}
declare const RESTATE_CLIENT = "RESTATE_CLIENT";
declare class RestateModule {
    static forRoot(options: {
        url: string;
        listenerPort?: number;
    }): Promise<DynamicModule>;
    static forFeature(options: RestateModuleOptions): Promise<DynamicModule>;
}

export { RESTATE_CLIENT, RestateHandler, RestateModule, RestateObject, RestateService, RestateWorkflow };
