///
import { DaprClient } from "../..";
import IClient from "../../interfaces/Client/IClient";
import { ActorRuntimeOptions } from "../../types/actors/ActorRuntimeOptions";
import Class from "../../types/Class";
import AbstractActor from "./AbstractActor";
import ActorManager from "./ActorManager";
/**
* Creates instances of "Actor" and activates and deactivates "Actor"
*/
export default class ActorRuntime {
private static instance;
private readonly daprClient;
private actorManagers;
private constructor();
static getInstanceByDaprClient(daprClient: DaprClient): ActorRuntime;
static getInstance(client: IClient): ActorRuntime;
registerActor(actorCls: Class): void;
getRegisteredActorTypes(): string[];
getActorRuntimeOptions(): ActorRuntimeOptions;
setActorRuntimeOptions(options: ActorRuntimeOptions): void;
clearActorManagers(): void;
getActorManager(actorTypeName: string): ActorManager;
/**
* Invokes a method on the actor from the runtime
* This method will open the manager for the actor type and get the matching object
* It will then invoke the method on this object
*
* @param actorTypeName
* @param actorId
* @param actorMethodName
* @param payload
* @returns
*/
invoke(actorTypeName: string, actorId: string, actorMethodName: string, requestBody?: Buffer): Promise;
/**
* Fires a reminder for the actor
*
* @param actorTypeName the name fo the actor type
* @param actorId the actor id
* @param name the name of the reminder
* @param requestBody the body passed to the reminder callback
*/
fireReminder(actorTypeName: string, actorId: string, name: string, requestBody?: Buffer): Promise;
/**
* Fires a timer for the actor
*
* @param actorTypeName the name fo the actor type
* @param actorId the actor id
* @param name the name of the timer
* @param requestBody the body passed to the timer callback
*/
fireTimer(actorTypeName: string, actorId: string, name: string, requestBody?: Buffer): Promise;
deactivate(actorTypeName: string, actorId: string): Promise;
}