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 { SpendingLimitTypeEnum_SpendingLimitType } from "../enums/spending_limit_type";
import { TimeTypeEnum_TimeType } from "../enums/time_type";
import { AccountBudgetProposalStatusEnum_AccountBudgetProposalStatus } from "../enums/account_budget_proposal_status";
import { AccountBudgetProposalTypeEnum_AccountBudgetProposalType } from "../enums/account_budget_proposal_type";
/**
 * An account-level budget proposal.
 *
 * All fields prefixed with 'proposed' may not necessarily be applied directly.
 * For example, proposed spending limits may be adjusted before their
 * application.  This is true if the 'proposed' field has an 'approved'
 * counterpart, for example, spending limits.
 *
 * Note that the proposal type (proposal_type) changes which fields are
 * required and which must remain empty.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.AccountBudgetProposal
 */
export interface AccountBudgetProposal {
    /**
     * Immutable. The resource name of the proposal.
     * AccountBudgetProposal resource names have the form:
     *
     * `customers/{customer_id}/accountBudgetProposals/{account_budget_proposal_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the proposal.
     *
     * @generated from protobuf field: optional int64 id = 25;
     */
    id?: bigint;
    /**
     * Immutable. The resource name of the billing setup associated with this proposal.
     *
     * @generated from protobuf field: optional string billing_setup = 26;
     */
    billingSetup?: string;
    /**
     * Immutable. The resource name of the account-level budget associated with this
     * proposal.
     *
     * @generated from protobuf field: optional string account_budget = 27;
     */
    accountBudget?: string;
    /**
     * Immutable. The type of this proposal, for example, END to end the budget associated
     * with this proposal.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType proposal_type = 4;
     */
    proposalType: AccountBudgetProposalTypeEnum_AccountBudgetProposalType;
    /**
     * Output only. The status of this proposal.
     * When a new proposal is created, the status defaults to PENDING.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus status = 15;
     */
    status: AccountBudgetProposalStatusEnum_AccountBudgetProposalStatus;
    /**
     * Immutable. The name to assign to the account-level budget.
     *
     * @generated from protobuf field: optional string proposed_name = 28;
     */
    proposedName?: string;
    /**
     * Output only. The approved start date time in yyyy-mm-dd hh:mm:ss format.
     *
     * @generated from protobuf field: optional string approved_start_date_time = 30;
     */
    approvedStartDateTime?: string;
    /**
     * Immutable. A purchase order number is a value that enables the user to help them
     * reference this budget in their monthly invoices.
     *
     * @generated from protobuf field: optional string proposed_purchase_order_number = 35;
     */
    proposedPurchaseOrderNumber?: string;
    /**
     * Immutable. Notes associated with this budget.
     *
     * @generated from protobuf field: optional string proposed_notes = 36;
     */
    proposedNotes?: string;
    /**
     * Output only. The date time when this account-level budget proposal was created, which is
     * not the same as its approval date time, if applicable.
     *
     * @generated from protobuf field: optional string creation_date_time = 37;
     */
    creationDateTime?: string;
    /**
     * Output only. The date time when this account-level budget was approved, if applicable.
     *
     * @generated from protobuf field: optional string approval_date_time = 38;
     */
    approvalDateTime?: string;
    /**
     * @generated from protobuf oneof: proposed_start_time
     */
    proposedStartTime: {
        oneofKind: "proposedStartDateTime";
        /**
         * Immutable. The proposed start date time in yyyy-mm-dd hh:mm:ss format.
         *
         * @generated from protobuf field: string proposed_start_date_time = 29;
         */
        proposedStartDateTime: string;
    } | {
        oneofKind: "proposedStartTimeType";
        /**
         * Immutable. The proposed start date time as a well-defined type, for example, NOW.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.TimeTypeEnum.TimeType proposed_start_time_type = 7;
         */
        proposedStartTimeType: TimeTypeEnum_TimeType;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf oneof: proposed_end_time
     */
    proposedEndTime: {
        oneofKind: "proposedEndDateTime";
        /**
         * Immutable. The proposed end date time in yyyy-mm-dd hh:mm:ss format.
         *
         * @generated from protobuf field: string proposed_end_date_time = 31;
         */
        proposedEndDateTime: string;
    } | {
        oneofKind: "proposedEndTimeType";
        /**
         * Immutable. The proposed end date time as a well-defined type, for example, FOREVER.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.TimeTypeEnum.TimeType proposed_end_time_type = 9;
         */
        proposedEndTimeType: TimeTypeEnum_TimeType;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf oneof: approved_end_time
     */
    approvedEndTime: {
        oneofKind: "approvedEndDateTime";
        /**
         * Output only. The approved end date time in yyyy-mm-dd hh:mm:ss format.
         *
         * @generated from protobuf field: string approved_end_date_time = 32;
         */
        approvedEndDateTime: string;
    } | {
        oneofKind: "approvedEndTimeType";
        /**
         * Output only. The approved end date time as a well-defined type, for example, FOREVER.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.TimeTypeEnum.TimeType approved_end_time_type = 22;
         */
        approvedEndTimeType: TimeTypeEnum_TimeType;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf oneof: proposed_spending_limit
     */
    proposedSpendingLimit: {
        oneofKind: "proposedSpendingLimitMicros";
        /**
         * Immutable. The proposed spending limit in micros.  One million is equivalent to
         * one unit.
         *
         * @generated from protobuf field: int64 proposed_spending_limit_micros = 33;
         */
        proposedSpendingLimitMicros: bigint;
    } | {
        oneofKind: "proposedSpendingLimitType";
        /**
         * Immutable. The proposed spending limit as a well-defined type, for example,
         * INFINITE.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.SpendingLimitTypeEnum.SpendingLimitType proposed_spending_limit_type = 11;
         */
        proposedSpendingLimitType: SpendingLimitTypeEnum_SpendingLimitType;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf oneof: approved_spending_limit
     */
    approvedSpendingLimit: {
        oneofKind: "approvedSpendingLimitMicros";
        /**
         * Output only. The approved spending limit in micros.  One million is equivalent to
         * one unit.
         *
         * @generated from protobuf field: int64 approved_spending_limit_micros = 34;
         */
        approvedSpendingLimitMicros: bigint;
    } | {
        oneofKind: "approvedSpendingLimitType";
        /**
         * Output only. The approved spending limit as a well-defined type, for example,
         * INFINITE.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.SpendingLimitTypeEnum.SpendingLimitType approved_spending_limit_type = 24;
         */
        approvedSpendingLimitType: SpendingLimitTypeEnum_SpendingLimitType;
    } | {
        oneofKind: undefined;
    };
}
declare class AccountBudgetProposal$Type extends MessageType<AccountBudgetProposal> {
    constructor();
    create(value?: PartialMessage<AccountBudgetProposal>): AccountBudgetProposal;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AccountBudgetProposal): AccountBudgetProposal;
    internalBinaryWrite(message: AccountBudgetProposal, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.AccountBudgetProposal
 */
export declare const AccountBudgetProposal: AccountBudgetProposal$Type;
export {};
