/// <reference types="esri-runtime-sdk" />
import type UtilityElement from "esri-runtime-sdk/UtilityElement";
import type UtilityNamedTraceConfiguration from "esri-runtime-sdk/UtilityNamedTraceConfiguration";
import type UtilityNetwork from "esri-runtime-sdk/UtilityNetwork";
import type UtilityTraceResult from "esri-runtime-sdk/UtilityTraceResult";
import type { Command } from "../Command.js";
import { CommandRegistry } from "../CommandRegistry.js";
import type { Operation } from "../Operation.js";
import { OperationRegistry } from "../OperationRegistry.js";
import type { HasMaps, MapsFeatureResultArgs, HasMapsAndFeatures } from "../common.js";
/**
 * Arguments relating to a utility network.
 */
export interface HasUtilityNetwork {
    /**
     * The utility network involved in the operation.
     */
    utilityNetwork: UtilityNetwork;
}
/**
 * Results from a completed trace.
 */
export interface TraceCompletedArgs extends UtilityNetworkArgs {
    /**
     * Results from the trace.
     */
    traceResults: UtilityTraceResult[];
    /**
     * The configuration that was used to get these results.
     */
    traceConfiguration: UtilityNamedTraceConfiguration;
}
/**
 * Arguments for the runTrace operation.
 */
export interface NetworkTraceArgs extends UtilityNetworkArgs {
    /**
     * The start point(s) to use for the trace.
     */
    startPoints: UtilityElement[];
    /**
     * The barriers to use for the trace (optional).
     */
    barriers?: UtilityElement[];
    /**
     * The configuration to use for the trace.
     */
    traceConfiguration: UtilityNamedTraceConfiguration;
}
/**
 * Arguments for the getUtilityElementsFromFeatures operation.
 */
export interface GetUtilityElementsArgs extends HasUtilityNetwork, HasMapsAndFeatures {
}
/**
 * Arguments relating to a utility network.
 */
export interface UtilityNetworkArgs extends HasUtilityNetwork, HasMaps {
}
/**
 * Commands relating to utility networks.
 */
export declare class UtilityNetworkCommands extends CommandRegistry {
    protected readonly _prefix = "utility-network";
    /**
     * Displays the UI panel to perform a named trace. Mobile only. Only
     * available to VertiGIS Networks customers.
     *
     * @mobileOnly
     */
    get showTracePanel(): Command;
}
/**
 * Operations relating to utility networks.
 */
export declare class UtilityNetworkOperations extends OperationRegistry {
    protected readonly _prefix = "utility-network";
    /**
     * Runs a trace on a utility network. Mobile only. Only available to
     * VertiGIS Networks customers.
     *
     * @mobileOnly
     */
    get runTrace(): Operation<NetworkTraceArgs, TraceCompletedArgs>;
    /**
     * Gets a list of UtilityElements from a list of Features. Mobile only. Only
     * available to VertiGIS Networks customers.
     *
     * @mobileOnly
     */
    get getUtilityElementsFromFeatures(): Operation<GetUtilityElementsArgs, UtilityElement[]>;
    /**
     * Gets feature results args from trace results, to display in the results
     * list for example.
     *
     * @mobileOnly
     */
    get featureResultsFromTrace(): Operation<TraceCompletedArgs, MapsFeatureResultArgs>;
    /**
     * Returns a list of available named traces from the specified network.
     * Mobile only. Only available to VertiGIS Networks customers.
     *
     * @mobileOnly
     */
    get getNamedTraces(): Operation<UtilityNetworkArgs, UtilityNamedTraceConfiguration[]>;
}
