import {Client} from 'rpc-websockets';

interface ExecuteArgs {
  command: string;
  [key: string]: any;
}

export class IsolateSocket extends Client {
  public isolateId: number | string = 0;
  public async executeSocketCommand(args: ExecuteArgs) {
    // call an RPC method with parameters
    return this.call(`ext.flutter.driver`, {
      ...args,
      isolateId: this.isolateId,
    }) as Promise<{
      isError: boolean;
      response: any;
    }>;
  }
}
