import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { BudgetTypeEnum_BudgetType } from "../enums/budget_type";
import { BudgetPeriodEnum_BudgetPeriod } from "../enums/budget_period";
import { BudgetDeliveryMethodEnum_BudgetDeliveryMethod } from "../enums/budget_delivery_method";
import { BudgetStatusEnum_BudgetStatus } from "../enums/budget_status";
/**
 * A campaign budget.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.CampaignBudget
 */
export interface CampaignBudget {
    /**
     * Immutable. The resource name of the campaign budget.
     * Campaign budget resource names have the form:
     *
     * `customers/{customer_id}/campaignBudgets/{campaign_budget_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the campaign budget.
     *
     * A campaign budget is created using the CampaignBudgetService create
     * operation and is assigned a budget ID. A budget ID can be shared across
     * different campaigns; the system will then allocate the campaign budget
     * among different campaigns to get optimum results.
     *
     * @generated from protobuf field: optional int64 id = 19;
     */
    id?: bigint;
    /**
     * The name of the campaign budget.
     *
     * When creating a campaign budget through CampaignBudgetService, every
     * explicitly shared campaign budget must have a non-null, non-empty name.
     * Campaign budgets that are not explicitly shared derive their name from the
     * attached campaign's name.
     *
     * The length of this string must be between 1 and 255, inclusive,
     * in UTF-8 bytes, (trimmed).
     *
     * @generated from protobuf field: optional string name = 20;
     */
    name?: string;
    /**
     * The amount of the budget, in the local currency for the account.
     * Amount is specified in micros, where one million is equivalent to one
     * currency unit. Monthly spend is capped at 30.4 times this amount.
     *
     * @generated from protobuf field: optional int64 amount_micros = 21;
     */
    amountMicros?: bigint;
    /**
     * The lifetime amount of the budget, in the local currency for the account.
     * Amount is specified in micros, where one million is equivalent to one
     * currency unit.
     *
     * @generated from protobuf field: optional int64 total_amount_micros = 22;
     */
    totalAmountMicros?: bigint;
    /**
     * Output only. The status of this campaign budget. This field is read-only.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BudgetStatusEnum.BudgetStatus status = 6;
     */
    status: BudgetStatusEnum_BudgetStatus;
    /**
     * The delivery method that determines the rate at which the campaign budget
     * is spent.
     *
     * Defaults to STANDARD if unspecified in a create operation.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod delivery_method = 7;
     */
    deliveryMethod: BudgetDeliveryMethodEnum_BudgetDeliveryMethod;
    /**
     * Specifies whether the budget is explicitly shared. Defaults to true if
     * unspecified in a create operation.
     *
     * If true, the budget was created with the purpose of sharing
     * across one or more campaigns.
     *
     * If false, the budget was created with the intention of only being used
     * with a single campaign. The budget's name and status will stay in sync
     * with the campaign's name and status. Attempting to share the budget with a
     * second campaign will result in an error.
     *
     * A non-shared budget can become an explicitly shared. The same operation
     * must also assign the budget a name.
     *
     * A shared campaign budget can never become non-shared.
     *
     * @generated from protobuf field: optional bool explicitly_shared = 23;
     */
    explicitlyShared?: boolean;
    /**
     * Output only. The number of campaigns actively using the budget.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 reference_count = 24;
     */
    referenceCount?: bigint;
    /**
     * Output only. Indicates whether there is a recommended budget for this campaign budget.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional bool has_recommended_budget = 25;
     */
    hasRecommendedBudget?: boolean;
    /**
     * Output only. The recommended budget amount. If no recommendation is available, this will
     * be set to the budget amount.
     * Amount is specified in micros, where one million is equivalent to one
     * currency unit.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 recommended_budget_amount_micros = 26;
     */
    recommendedBudgetAmountMicros?: bigint;
    /**
     * Immutable. Period over which to spend the budget. Defaults to DAILY if not specified.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BudgetPeriodEnum.BudgetPeriod period = 13;
     */
    period: BudgetPeriodEnum_BudgetPeriod;
    /**
     * Output only. The estimated change in weekly clicks if the recommended budget is applied.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 recommended_budget_estimated_change_weekly_clicks = 27;
     */
    recommendedBudgetEstimatedChangeWeeklyClicks?: bigint;
    /**
     * Output only. The estimated change in weekly cost in micros if the recommended budget is
     * applied. One million is equivalent to one currency unit.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 recommended_budget_estimated_change_weekly_cost_micros = 28;
     */
    recommendedBudgetEstimatedChangeWeeklyCostMicros?: bigint;
    /**
     * Output only. The estimated change in weekly interactions if the recommended budget is
     * applied.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 recommended_budget_estimated_change_weekly_interactions = 29;
     */
    recommendedBudgetEstimatedChangeWeeklyInteractions?: bigint;
    /**
     * Output only. The estimated change in weekly views if the recommended budget is applied.
     *
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 recommended_budget_estimated_change_weekly_views = 30;
     */
    recommendedBudgetEstimatedChangeWeeklyViews?: bigint;
    /**
     * Immutable. The type of the campaign budget.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BudgetTypeEnum.BudgetType type = 18;
     */
    type: BudgetTypeEnum_BudgetType;
}
declare class CampaignBudget$Type extends MessageType<CampaignBudget> {
    constructor();
    create(value?: PartialMessage<CampaignBudget>): CampaignBudget;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CampaignBudget): CampaignBudget;
    internalBinaryWrite(message: CampaignBudget, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.CampaignBudget
 */
export declare const CampaignBudget: CampaignBudget$Type;
export {};
