import { Connection } from '@salesforce/core';
import { AsyncCreatable } from '@salesforce/kit';
import { PackageVersionDependencyOptions, DependencyGraphNode } from '../interfaces';
import { VersionNumber } from './versionNumber';
export declare const VERSION_BEING_BUILT = "VERSION_BEING_BUILT";
export declare class PackageVersionDependency extends AsyncCreatable<PackageVersionDependencyOptions> {
    options: PackageVersionDependencyOptions;
    private connection;
    private project?;
    private userPackageVersionId;
    private verbose;
    private edgeDirection;
    private resolvedPackageVersionCreateRequestId;
    private allPackageVersionId;
    constructor(options: PackageVersionDependencyOptions);
    init(): Promise<void>;
    /**
     * Returns a DependencyDotProducer that can be used to produce a DOT code representation of the package dependency graph.
     */
    getDependencyDotProducer(): Promise<DependencyDotProducer>;
    private getTransitiveDependencyGraph;
    private createFlatDependencyGraph;
    /**
     * Resolves id input to a 08c. User can input a 08c or 04t.
     * Currently a 04t is not supported in filtering the Package2VersionCreateRequest. So a user's input of 04t will be resolved to a 05i and then a 08c.
     */
    private resolvePackageCreateRequestId;
    private query05iFrom04t;
    private query08cFrom05i;
    private isValidPackageVersion;
    private verifyCreateRequesIdExistsOnDevHub;
    private isTransitiveDependenciesCalculated;
}
export declare class DependencyDotProducer {
    private dependencyGraphString;
    private verbose;
    private edgeDirection;
    private resolvedPackageVersionId;
    private subscriberPackageVersionId;
    private connection;
    private dependencyGraphData;
    private selectedNodeIds;
    constructor(connection: Connection, dependencyGraphString: string, verbose: boolean, edgeDirection: 'root-first' | 'root-last', resolvedPackageVersionId: string);
    private static throwErrorOnInvalidRecord;
    init(): Promise<void>;
    produce(): string;
    private addSelectedNodeIds;
    private createDependencyGraphNodes;
    /**
     * Creates a single dependency graph node.
     * All nodes in the json are 04t... or VERSION_BEING_BUILT and requires different queries to create the node
     */
    private createSingleDependencyGraphNode;
    private createVersionBeingBuiltNode;
    private createNormalDependencyNode;
    private createDependencyGraphEdges;
    /**
     * Builds a DOT node with a label containing the package name and version
     *
     * @param node the node id and label
     */
    private buildDotNode;
    private addColorToSelectedNode;
    /**
     * Builds a DOT edge line of the form fromNode -> toNode
     *
     * @param edge the edge to build where the target node depends on the source node in the json
     */
    private buildDotEdge;
}
/**
 * A class that represents a package dependency node.
 * Given a PackageRequestId (08c), PackageName, SubscriberPackageVersionId (04t), and version (MajorVersion.MinorVersion.PatchVersion.BuildNumber) it will build a node of the package dependency.
 */
export declare class PackageDependencyNode extends AsyncCreatable<DependencyGraphNode> {
    options: DependencyGraphNode;
    readonly packageName: string;
    readonly subscriberPackageVersionId: string;
    readonly version: VersionNumber;
    constructor(options: DependencyGraphNode);
    getVersion(): string;
    protected init(): Promise<void>;
}
