import { APIResource } from "../../resource.js";
import * as Core from "../../core.js";
import * as PlansAPI from "./plans.js";
export declare class ExternalPlanID extends APIResource {
    /**
     * This endpoint can be used to update the `external_plan_id`, and `metadata` of an
     * existing plan.
     *
     * Other fields on a plan are currently immutable.
     */
    update(otherExternalPlanId: string, body: ExternalPlanIDUpdateParams, options?: Core.RequestOptions): Core.APIPromise<PlansAPI.Plan>;
    /**
     * This endpoint is used to fetch [plan](/core-concepts##plan-and-price) details
     * given an external_plan_id identifier. It returns information about the prices
     * included in the plan and their configuration, as well as the product that the
     * plan is attached to.
     *
     * If multiple plans are found to contain the specified external_plan_id, the
     * active plans will take priority over archived ones, and among those, the
     * endpoint will return the most recently created plan.
     *
     * ## Serialized prices
     *
     * Orb supports a few different pricing models out of the box. Each of these models
     * is serialized differently in a given [Price](/core-concepts#plan-and-price)
     * object. The `model_type` field determines the key for the configuration object
     * that is present. A detailed explanation of price types can be found in the
     * [Price schema](/core-concepts#plan-and-price). "
     */
    fetch(externalPlanId: string, options?: Core.RequestOptions): Core.APIPromise<PlansAPI.Plan>;
}
export interface ExternalPlanIDUpdateParams {
    /**
     * An optional user-defined ID for this plan resource, used throughout the system
     * as an alias for this Plan. Use this field to identify a plan by an existing
     * identifier in your system.
     */
    external_plan_id?: string | null;
    /**
     * User-specified key/value pairs for the resource. Individual keys can be removed
     * by setting the value to `null`, and the entire metadata mapping can be cleared
     * by setting `metadata` to `null`.
     */
    metadata?: {
        [key: string]: string | null;
    } | null;
}
export declare namespace ExternalPlanID {
    export { type ExternalPlanIDUpdateParams as ExternalPlanIDUpdateParams };
}
//# sourceMappingURL=external-plan-id.d.ts.map