import type CircuitLocation from "../../../../networks/support/CircuitLocation.js";
import type { JSONSupport } from "../../../../core/JSONSupport.js";
import type { CircuitLocationProperties } from "../../../../networks/support/CircuitLocation.js";

/** @since 5.0 */
export interface QueryCircuitsParametersProperties extends Partial<Pick<QueryCircuitsParameters, "locationType" | "returnConsumerCircuits">> {
  /**
   * The start or stop location of the circuit to query.
   *
   * @since 5.0
   */
  location?: CircuitLocationProperties | null;
}

/** @since 5.0 */
export default class QueryCircuitsParameters extends JSONSupport {
  constructor(properties?: QueryCircuitsParametersProperties);
  /**
   * The start or stop location of the circuit to query.
   *
   * @since 5.0
   */
  get location(): CircuitLocation | null | undefined;
  set location(value: CircuitLocationProperties | null | undefined);
  /**
   * The type of location to query circuits by.
   *
   * @since 5.0
   */
  accessor locationType: "start" | "stop" | "all" | null | undefined;
  /**
   * If false, returns only the immediate circuits passing through
   *   the specified location. Otherwise, returns all the circuits that consume the immediate circuits.
   *
   * @default false
   * @since 5.0
   */
  accessor returnConsumerCircuits: boolean;
}