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 { TimeTypeEnum_TimeType } from "../enums/time_type";
import { BillingSetupStatusEnum_BillingSetupStatus } from "../enums/billing_setup_status";
/**
 * A billing setup, which associates a payments account and an advertiser. A
 * billing setup is specific to one advertiser.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.BillingSetup
 */
export interface BillingSetup {
    /**
     * Immutable. The resource name of the billing setup.
     * BillingSetup resource names have the form:
     *
     * `customers/{customer_id}/billingSetups/{billing_setup_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the billing setup.
     *
     * @generated from protobuf field: optional int64 id = 15;
     */
    id?: bigint;
    /**
     * Output only. The status of the billing setup.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BillingSetupStatusEnum.BillingSetupStatus status = 3;
     */
    status: BillingSetupStatusEnum_BillingSetupStatus;
    /**
     * Immutable. The resource name of the payments account associated with this billing
     * setup. Payments resource names have the form:
     *
     * `customers/{customer_id}/paymentsAccounts/{payments_account_id}`
     * When setting up billing, this is used to signup with an existing payments
     * account (and then payments_account_info should not be set).
     * When getting a billing setup, this and payments_account_info will be
     * populated.
     *
     * @generated from protobuf field: optional string payments_account = 18;
     */
    paymentsAccount?: string;
    /**
     * Immutable. The payments account information associated with this billing setup.
     * When setting up billing, this is used to signup with a new payments account
     * (and then payments_account should not be set).
     * When getting a billing setup, this and payments_account will be
     * populated.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.BillingSetup.PaymentsAccountInfo payments_account_info = 12;
     */
    paymentsAccountInfo?: BillingSetup_PaymentsAccountInfo;
    /**
     * @generated from protobuf oneof: start_time
     */
    startTime: {
        oneofKind: "startDateTime";
        /**
         * Immutable. The start date time in yyyy-MM-dd or yyyy-MM-dd HH:mm:ss format. Only a
         * future time is allowed.
         *
         * @generated from protobuf field: string start_date_time = 16;
         */
        startDateTime: string;
    } | {
        oneofKind: "startTimeType";
        /**
         * Immutable. The start time as a type. Only NOW is allowed.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.TimeTypeEnum.TimeType start_time_type = 10;
         */
        startTimeType: TimeTypeEnum_TimeType;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf oneof: end_time
     */
    endTime: {
        oneofKind: "endDateTime";
        /**
         * Output only. The end date time in yyyy-MM-dd or yyyy-MM-dd HH:mm:ss format.
         *
         * @generated from protobuf field: string end_date_time = 17;
         */
        endDateTime: string;
    } | {
        oneofKind: "endTimeType";
        /**
         * Output only. The end time as a type.  The only possible value is FOREVER.
         *
         * @generated from protobuf field: google.ads.googleads.v11.enums.TimeTypeEnum.TimeType end_time_type = 14;
         */
        endTimeType: TimeTypeEnum_TimeType;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Container of payments account information for this billing.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.BillingSetup.PaymentsAccountInfo
 */
export interface BillingSetup_PaymentsAccountInfo {
    /**
     * Output only. A 16 digit id used to identify the payments account associated with the
     * billing setup.
     *
     * This must be passed as a string with dashes, for example,
     * "1234-5678-9012-3456".
     *
     * @generated from protobuf field: optional string payments_account_id = 6;
     */
    paymentsAccountId?: string;
    /**
     * Immutable. The name of the payments account associated with the billing setup.
     *
     * This enables the user to specify a meaningful name for a payments account
     * to aid in reconciling monthly invoices.
     *
     * This name will be printed in the monthly invoices.
     *
     * @generated from protobuf field: optional string payments_account_name = 7;
     */
    paymentsAccountName?: string;
    /**
     * Immutable. A 12 digit id used to identify the payments profile associated with the
     * billing setup.
     *
     * This must be passed in as a string with dashes, for example,
     * "1234-5678-9012".
     *
     * @generated from protobuf field: optional string payments_profile_id = 8;
     */
    paymentsProfileId?: string;
    /**
     * Output only. The name of the payments profile associated with the billing setup.
     *
     * @generated from protobuf field: optional string payments_profile_name = 9;
     */
    paymentsProfileName?: string;
    /**
     * Output only. A secondary payments profile id present in uncommon situations, for
     * example, when a sequential liability agreement has been arranged.
     *
     * @generated from protobuf field: optional string secondary_payments_profile_id = 10;
     */
    secondaryPaymentsProfileId?: string;
}
declare class BillingSetup$Type extends MessageType<BillingSetup> {
    constructor();
    create(value?: PartialMessage<BillingSetup>): BillingSetup;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BillingSetup): BillingSetup;
    internalBinaryWrite(message: BillingSetup, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.BillingSetup
 */
export declare const BillingSetup: BillingSetup$Type;
declare class BillingSetup_PaymentsAccountInfo$Type extends MessageType<BillingSetup_PaymentsAccountInfo> {
    constructor();
    create(value?: PartialMessage<BillingSetup_PaymentsAccountInfo>): BillingSetup_PaymentsAccountInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BillingSetup_PaymentsAccountInfo): BillingSetup_PaymentsAccountInfo;
    internalBinaryWrite(message: BillingSetup_PaymentsAccountInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.BillingSetup.PaymentsAccountInfo
 */
export declare const BillingSetup_PaymentsAccountInfo: BillingSetup_PaymentsAccountInfo$Type;
export {};
