import type * as gax from 'google-gax'; import type { Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback } from 'google-gax'; import { Transform } from 'stream'; import * as protos from '../../protos/protos'; /** * BudgetService stores Cloud Billing budgets, which define a * budget plan and rules to execute as we track spend against that plan. * @class * @memberof v1 */ export declare class BudgetServiceClient { private _terminated; private _opts; private _providedCustomServicePath; private _gaxModule; private _gaxGrpc; private _protos; private _defaults; private _universeDomain; private _servicePath; private _log; auth: gax.GoogleAuth; descriptors: Descriptors; warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: { [name: string]: Function; }; pathTemplates: { [name: string]: gax.PathTemplate; }; budgetServiceStub?: Promise<{ [name: string]: Function; }>; /** * Construct an instance of BudgetServiceClient. * * @param {object} [options] - The configuration object. * The options accepted by the constructor are described in detail * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). * The common options are: * @param {object} [options.credentials] - Credentials object. * @param {string} [options.credentials.client_email] * @param {string} [options.credentials.private_key] * @param {string} [options.email] - Account email address. Required when * using a .pem or .p12 keyFilename. * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or * .p12 key downloaded from the Google Developers Console. If you provide * a path to a JSON file, the projectId option below is not necessary. * NOTE: .pem and .p12 require you to specify options.email as well. * @param {number} [options.port] - The port on which to connect to * the remote host. * @param {string} [options.projectId] - The project ID from the Google * Developer's Console, e.g. 'grape-spaceship-123'. We will also check * the environment variable GCLOUD_PROJECT for your project ID. If your * app is running in an environment which supports * {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials}, * your project ID will be detected automatically. * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. * Follows the structure of {@link gapicConfig}. * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. * For more information, please check the * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you * need to avoid loading the default gRPC version and want to use the fallback * HTTP implementation. Load only fallback version and pass it to the constructor: * ``` * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC * const client = new BudgetServiceClient({fallback: true}, gax); * ``` */ constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback); /** * Initialize the client. * Performs asynchronous operations (such as authentication) and prepares the client. * This function will be called automatically when any class method is called for the * first time, but if you need to initialize it before calling an actual method, * feel free to call initialize() directly. * * You can await on this method if you want to make sure the client is initialized. * * @returns {Promise} A promise that resolves to an authenticated service stub. */ initialize(): Promise<{ [name: string]: Function; }>; /** * The DNS address for this API service. * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get servicePath(): string; /** * The DNS address for this API service - same as servicePath. * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get apiEndpoint(): string; /** * The DNS address for this API service. * @returns {string} The DNS address for this service. */ get apiEndpoint(): string; get universeDomain(): string; /** * The port for this API service. * @returns {number} The default port for this service. */ static get port(): number; /** * The scopes needed to make gRPC calls for every method defined * in this service. * @returns {string[]} List of default scopes. */ static get scopes(): string[]; getProjectId(): Promise; getProjectId(callback: Callback): void; /** * Creates a new budget. See * [Quotas and limits](https://cloud.google.com/billing/quotas) * for more information on the limits of the number of budgets you can create. * * @param {Object} request * The request object that will be sent. * @param {string} request.parent * Required. The name of the billing account to create the budget in. Values * are of the form `billingAccounts/{billingAccountId}`. * @param {google.cloud.billing.budgets.v1.Budget} request.budget * Required. Budget to create. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing {@link protos.google.cloud.billing.budgets.v1.Budget|Budget}. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/budget_service.create_budget.js * region_tag:billingbudgets_v1_generated_BudgetService_CreateBudget_async */ createBudget(request?: protos.google.cloud.billing.budgets.v1.ICreateBudgetRequest, options?: CallOptions): Promise<[ protos.google.cloud.billing.budgets.v1.IBudget, protos.google.cloud.billing.budgets.v1.ICreateBudgetRequest | undefined, {} | undefined ]>; createBudget(request: protos.google.cloud.billing.budgets.v1.ICreateBudgetRequest, options: CallOptions, callback: Callback): void; createBudget(request: protos.google.cloud.billing.budgets.v1.ICreateBudgetRequest, callback: Callback): void; /** * Updates a budget and returns the updated budget. * * WARNING: There are some fields exposed on the Google Cloud Console that * aren't available on this API. Budget fields that are not exposed in * this API will not be changed by this method. * * @param {Object} request * The request object that will be sent. * @param {google.cloud.billing.budgets.v1.Budget} request.budget * Required. The updated budget object. * The budget to update is specified by the budget name in the budget. * @param {google.protobuf.FieldMask} [request.updateMask] * Optional. Indicates which fields in the provided budget to update. * Read-only fields (such as `name`) cannot be changed. If this is not * provided, then only fields with non-default values from the request are * updated. See * https://developers.google.com/protocol-buffers/docs/proto3#default for more * details about default values. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing {@link protos.google.cloud.billing.budgets.v1.Budget|Budget}. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/budget_service.update_budget.js * region_tag:billingbudgets_v1_generated_BudgetService_UpdateBudget_async */ updateBudget(request?: protos.google.cloud.billing.budgets.v1.IUpdateBudgetRequest, options?: CallOptions): Promise<[ protos.google.cloud.billing.budgets.v1.IBudget, protos.google.cloud.billing.budgets.v1.IUpdateBudgetRequest | undefined, {} | undefined ]>; updateBudget(request: protos.google.cloud.billing.budgets.v1.IUpdateBudgetRequest, options: CallOptions, callback: Callback): void; updateBudget(request: protos.google.cloud.billing.budgets.v1.IUpdateBudgetRequest, callback: Callback): void; /** * Returns a budget. * * WARNING: There are some fields exposed on the Google Cloud Console that * aren't available on this API. When reading from the API, you will not * see these fields in the return value, though they may have been set * in the Cloud Console. * * @param {Object} request * The request object that will be sent. * @param {string} request.name * Required. Name of budget to get. Values are of the form * `billingAccounts/{billingAccountId}/budgets/{budgetId}`. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing {@link protos.google.cloud.billing.budgets.v1.Budget|Budget}. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/budget_service.get_budget.js * region_tag:billingbudgets_v1_generated_BudgetService_GetBudget_async */ getBudget(request?: protos.google.cloud.billing.budgets.v1.IGetBudgetRequest, options?: CallOptions): Promise<[ protos.google.cloud.billing.budgets.v1.IBudget, protos.google.cloud.billing.budgets.v1.IGetBudgetRequest | undefined, {} | undefined ]>; getBudget(request: protos.google.cloud.billing.budgets.v1.IGetBudgetRequest, options: CallOptions, callback: Callback): void; getBudget(request: protos.google.cloud.billing.budgets.v1.IGetBudgetRequest, callback: Callback): void; /** * Deletes a budget. Returns successfully if already deleted. * * @param {Object} request * The request object that will be sent. * @param {string} request.name * Required. Name of the budget to delete. Values are of the form * `billingAccounts/{billingAccountId}/budgets/{budgetId}`. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/budget_service.delete_budget.js * region_tag:billingbudgets_v1_generated_BudgetService_DeleteBudget_async */ deleteBudget(request?: protos.google.cloud.billing.budgets.v1.IDeleteBudgetRequest, options?: CallOptions): Promise<[ protos.google.protobuf.IEmpty, protos.google.cloud.billing.budgets.v1.IDeleteBudgetRequest | undefined, {} | undefined ]>; deleteBudget(request: protos.google.cloud.billing.budgets.v1.IDeleteBudgetRequest, options: CallOptions, callback: Callback): void; deleteBudget(request: protos.google.cloud.billing.budgets.v1.IDeleteBudgetRequest, callback: Callback): void; /** * Returns a list of budgets for a billing account. * * WARNING: There are some fields exposed on the Google Cloud Console that * aren't available on this API. When reading from the API, you will not * see these fields in the return value, though they may have been set * in the Cloud Console. * * @param {Object} request * The request object that will be sent. * @param {string} request.parent * Required. Name of billing account to list budgets under. Values * are of the form `billingAccounts/{billingAccountId}`. * @param {string} [request.scope] * Optional. Set the scope of the budgets to be returned, in the format of the * resource name. The scope of a budget is the cost that it tracks, such as * costs for a single project, or the costs for all projects in a folder. Only * project scope (in the format of "projects/project-id" or "projects/123") is * supported in this field. When this field is set to a project's resource * name, the budgets returned are tracking the costs for that project. * @param {number} [request.pageSize] * Optional. The maximum number of budgets to return per page. * The default and maximum value are 100. * @param {string} [request.pageToken] * Optional. The value returned by the last `ListBudgetsResponse` which * indicates that this is a continuation of a prior `ListBudgets` call, * and that the system should return the next page of data. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is Array of {@link protos.google.cloud.billing.budgets.v1.Budget|Budget}. * The client library will perform auto-pagination by default: it will call the API as many * times as needed and will merge results from all the pages into this array. * Note that it can affect your quota. * We recommend using `listBudgetsAsync()` * method described below for async iteration which you can stop as needed. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. */ listBudgets(request?: protos.google.cloud.billing.budgets.v1.IListBudgetsRequest, options?: CallOptions): Promise<[ protos.google.cloud.billing.budgets.v1.IBudget[], protos.google.cloud.billing.budgets.v1.IListBudgetsRequest | null, protos.google.cloud.billing.budgets.v1.IListBudgetsResponse ]>; listBudgets(request: protos.google.cloud.billing.budgets.v1.IListBudgetsRequest, options: CallOptions, callback: PaginationCallback): void; listBudgets(request: protos.google.cloud.billing.budgets.v1.IListBudgetsRequest, callback: PaginationCallback): void; /** * Equivalent to `listBudgets`, but returns a NodeJS Stream object. * @param {Object} request * The request object that will be sent. * @param {string} request.parent * Required. Name of billing account to list budgets under. Values * are of the form `billingAccounts/{billingAccountId}`. * @param {string} [request.scope] * Optional. Set the scope of the budgets to be returned, in the format of the * resource name. The scope of a budget is the cost that it tracks, such as * costs for a single project, or the costs for all projects in a folder. Only * project scope (in the format of "projects/project-id" or "projects/123") is * supported in this field. When this field is set to a project's resource * name, the budgets returned are tracking the costs for that project. * @param {number} [request.pageSize] * Optional. The maximum number of budgets to return per page. * The default and maximum value are 100. * @param {string} [request.pageToken] * Optional. The value returned by the last `ListBudgetsResponse` which * indicates that this is a continuation of a prior `ListBudgets` call, * and that the system should return the next page of data. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Stream} * An object stream which emits an object representing {@link protos.google.cloud.billing.budgets.v1.Budget|Budget} on 'data' event. * The client library will perform auto-pagination by default: it will call the API as many * times as needed. Note that it can affect your quota. * We recommend using `listBudgetsAsync()` * method described below for async iteration which you can stop as needed. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. */ listBudgetsStream(request?: protos.google.cloud.billing.budgets.v1.IListBudgetsRequest, options?: CallOptions): Transform; /** * Equivalent to `listBudgets`, but returns an iterable object. * * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. * @param {Object} request * The request object that will be sent. * @param {string} request.parent * Required. Name of billing account to list budgets under. Values * are of the form `billingAccounts/{billingAccountId}`. * @param {string} [request.scope] * Optional. Set the scope of the budgets to be returned, in the format of the * resource name. The scope of a budget is the cost that it tracks, such as * costs for a single project, or the costs for all projects in a folder. Only * project scope (in the format of "projects/project-id" or "projects/123") is * supported in this field. When this field is set to a project's resource * name, the budgets returned are tracking the costs for that project. * @param {number} [request.pageSize] * Optional. The maximum number of budgets to return per page. * The default and maximum value are 100. * @param {string} [request.pageToken] * Optional. The value returned by the last `ListBudgetsResponse` which * indicates that this is a continuation of a prior `ListBudgets` call, * and that the system should return the next page of data. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Object} * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. * When you iterate the returned iterable, each element will be an object representing * {@link protos.google.cloud.billing.budgets.v1.Budget|Budget}. The API will be called under the hood as needed, once per the page, * so you can stop the iteration when you don't need more results. * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. * @example include:samples/generated/v1/budget_service.list_budgets.js * region_tag:billingbudgets_v1_generated_BudgetService_ListBudgets_async */ listBudgetsAsync(request?: protos.google.cloud.billing.budgets.v1.IListBudgetsRequest, options?: CallOptions): AsyncIterable; /** * Return a fully-qualified billingAccount resource name string. * * @param {string} billing_account * @returns {string} Resource name string. */ billingAccountPath(billingAccount: string): string; /** * Parse the billing_account from BillingAccount resource. * * @param {string} billingAccountName * A fully-qualified path representing BillingAccount resource. * @returns {string} A string representing the billing_account. */ matchBillingAccountFromBillingAccountName(billingAccountName: string): string | number; /** * Return a fully-qualified budget resource name string. * * @param {string} billing_account * @param {string} budget * @returns {string} Resource name string. */ budgetPath(billingAccount: string, budget: string): string; /** * Parse the billing_account from Budget resource. * * @param {string} budgetName * A fully-qualified path representing Budget resource. * @returns {string} A string representing the billing_account. */ matchBillingAccountFromBudgetName(budgetName: string): string | number; /** * Parse the budget from Budget resource. * * @param {string} budgetName * A fully-qualified path representing Budget resource. * @returns {string} A string representing the budget. */ matchBudgetFromBudgetName(budgetName: string): string | number; /** * Terminate the gRPC channel and close the client. * * The client will no longer be usable and all future behavior is undefined. * @returns {Promise} A promise that resolves when the client is closed. */ close(): Promise; }