@grvt/client 1.6.31 → 1.6.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/MDG/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AxiosRequestConfig } from 'axios';
2
- import type { IApiGetSupportedAssetsResponse, IApiBatchQueryVaultDetailRequest, IApiBatchQueryVaultDetailResponse, IApiBatchQueryVaultPerformanceRequest, IApiBatchQueryVaultPerformanceResponse, IApiBatchQueryVaultRiskMetricRequest, IApiBatchQueryVaultRiskMetricResponse, IApiCandlestickRequest, IApiCandlestickResponse, IApiFundingHistoryComparisonRequest, IApiFundingHistoryComparisonResponse, IApiFundingRateRequest, IApiFundingRateResponse, IApiGetAllInstrumentsRequest, IApiGetAllInstrumentsResponse, IApiGetFilteredInstrumentsRequest, IApiGetFilteredInstrumentsResponse, IApiGetInstrumentRequest, IApiGetInstrumentResponse, IApiGetMarginRulesRequest, IApiGetMarginRulesResponse, IApiLiveFundingRateComparisonRequest, IApiLiveFundingRateComparisonResponse, IApiMiniTickerRequest, IApiMiniTickerResponse, IApiOrderbookLevelsRequest, IApiOrderbookLevelsResponse, IApiQueryListVaultSubAccountSummaryRequest, IApiQueryListVaultSubAccountSummaryResponse, IApiQuerySnapVaultPositionRequest, IApiQuerySnapVaultPositionResponse, IApiQueryVaultPerformanceTrendRequest, IApiQueryVaultPerformanceTrendResponse, IApiQueryVaultSummaryHistoryRequest, IApiQueryVaultSummaryHistoryResponse, IApiSettlementPriceRequest, IApiSettlementPriceResponse, IApiTickerRequest, IApiTickerResponse, IApiTimedAssetExposureResponse, IApiTimedVaultAssetExposureRequest, IApiTradeHistoryRequest, IApiTradeHistoryResponse, IApiTradeRequest, IApiTradeResponse, IConfig } from '../interfaces';
2
+ import type { IApiBatchQueryVaultDetailRequest, IApiBatchQueryVaultDetailResponse, IApiBatchQueryVaultPerformanceRequest, IApiBatchQueryVaultPerformanceResponse, IApiBatchQueryVaultRiskMetricRequest, IApiBatchQueryVaultRiskMetricResponse, IApiCandlestickRequest, IApiCandlestickResponse, IApiFundingHistoryComparisonRequest, IApiFundingHistoryComparisonResponse, IApiFundingRateRequest, IApiFundingRateResponse, IApiGetAllInstrumentsRequest, IApiGetAllInstrumentsResponse, IApiGetCurrencyResponse, IApiGetFilteredInstrumentsRequest, IApiGetFilteredInstrumentsResponse, IApiGetInstrumentRequest, IApiGetInstrumentResponse, IApiGetMarginRulesRequest, IApiGetMarginRulesResponse, IApiGetSupportedAssetsResponse, IApiLiveFundingRateComparisonRequest, IApiLiveFundingRateComparisonResponse, IApiMiniTickerRequest, IApiMiniTickerResponse, IApiOrderbookLevelsRequest, IApiOrderbookLevelsResponse, IApiQueryListVaultSubAccountSummaryRequest, IApiQueryListVaultSubAccountSummaryResponse, IApiQuerySnapVaultPositionRequest, IApiQuerySnapVaultPositionResponse, IApiQueryVaultPerformanceTrendRequest, IApiQueryVaultPerformanceTrendResponse, IApiQueryVaultSummaryHistoryRequest, IApiQueryVaultSummaryHistoryResponse, IApiSettlementPriceRequest, IApiSettlementPriceResponse, IApiTickerRequest, IApiTickerResponse, IApiTimedAssetExposureResponse, IApiTimedVaultAssetExposureRequest, IApiTradeHistoryRequest, IApiTradeHistoryResponse, IApiTradeRequest, IApiTradeResponse, IConfig } from '../interfaces';
3
3
  export declare class MDG {
4
4
  private readonly _axios;
5
5
  private readonly _fullUrl;
@@ -19,6 +19,7 @@ export declare class MDG {
19
19
  */
20
20
  allInstruments(payload: IApiGetAllInstrumentsRequest, config?: AxiosRequestConfig): Promise<IApiGetAllInstrumentsResponse>;
21
21
  supportedAssets(config?: AxiosRequestConfig): Promise<IApiGetSupportedAssetsResponse>;
22
+ currency(config?: AxiosRequestConfig): Promise<IApiGetCurrencyResponse>;
22
23
  /**
23
24
  * @see https://api-docs.grvt.io/market_data_api/#mini-ticker
24
25
  */
package/MDG/index.js CHANGED
@@ -16,12 +16,14 @@ const api_funding_rate_request_1 = require("../interfaces/codegen/schema-maps/ap
16
16
  const api_funding_rate_response_1 = require("../interfaces/codegen/schema-maps/api_funding_rate_response");
17
17
  const api_get_all_instruments_request_1 = require("../interfaces/codegen/schema-maps/api_get_all_instruments_request");
18
18
  const api_get_all_instruments_response_1 = require("../interfaces/codegen/schema-maps/api_get_all_instruments_response");
19
+ const api_get_currency_response_1 = require("../interfaces/codegen/schema-maps/api_get_currency_response");
19
20
  const api_get_filtered_instruments_request_1 = require("../interfaces/codegen/schema-maps/api_get_filtered_instruments_request");
20
21
  const api_get_filtered_instruments_response_1 = require("../interfaces/codegen/schema-maps/api_get_filtered_instruments_response");
21
22
  const api_get_instrument_request_1 = require("../interfaces/codegen/schema-maps/api_get_instrument_request");
22
23
  const api_get_instrument_response_1 = require("../interfaces/codegen/schema-maps/api_get_instrument_response");
23
24
  const api_get_margin_rules_request_1 = require("../interfaces/codegen/schema-maps/api_get_margin_rules_request");
24
25
  const api_get_margin_rules_response_1 = require("../interfaces/codegen/schema-maps/api_get_margin_rules_response");
26
+ const api_get_supported_assets_response_1 = require("../interfaces/codegen/schema-maps/api_get_supported_assets_response");
25
27
  const api_live_funding_rate_comparison_request_1 = require("../interfaces/codegen/schema-maps/api_live_funding_rate_comparison_request");
26
28
  const api_live_funding_rate_comparison_response_1 = require("../interfaces/codegen/schema-maps/api_live_funding_rate_comparison_response");
27
29
  const api_mini_ticker_request_1 = require("../interfaces/codegen/schema-maps/api_mini_ticker_request");
@@ -46,7 +48,6 @@ const api_trade_history_request_1 = require("../interfaces/codegen/schema-maps/a
46
48
  const api_trade_history_response_1 = require("../interfaces/codegen/schema-maps/api_trade_history_response");
47
49
  const api_trade_request_1 = require("../interfaces/codegen/schema-maps/api_trade_request");
48
50
  const api_trade_response_1 = require("../interfaces/codegen/schema-maps/api_trade_response");
49
- const api_get_supported_assets_response_1 = require("../interfaces/codegen/schema-maps/api_get_supported_assets_response");
50
51
  const services_1 = require("../services");
51
52
  const utils_1 = require("../utils");
52
53
  class MDG {
@@ -88,6 +89,11 @@ class MDG {
88
89
  return utils_1.Utils.schemaMap(response.data, api_get_supported_assets_response_1.API_GET_SUPPORTED_ASSETS_RESPONSE_MAP.LITE_TO_FULL);
89
90
  }).catch(utils_1.Utils.coverApiError);
90
91
  }
92
+ currency(config) {
93
+ return this._axios.post(this._liteUrl + '/currency', null, Object.assign(Object.assign({}, config), { withCredentials: false })).then((response) => {
94
+ return utils_1.Utils.schemaMap(response.data, api_get_currency_response_1.API_GET_CURRENCY_RESPONSE_MAP.LITE_TO_FULL);
95
+ }).catch(utils_1.Utils.coverApiError);
96
+ }
91
97
  /**
92
98
  * @see https://api-docs.grvt.io/market_data_api/#mini-ticker
93
99
  */
package/TDG/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AxiosRequestConfig } from 'axios';
2
- import type { IAckResponse, IApiAddIsolatedPositionMarginRequest, IApiAddIsolatedPositionMarginResponse, IApiAggregatedAccountSummaryResponse, IApiAuthorizeBuilderRequest, IApiBuilderFillHistoryRequest, IApiBuilderFillHistoryResponse, IApiBulkOrdersRequest, IApiBulkOrdersResponse, IApiCancelAllOrdersRequest, IApiCancelAllOrdersResponse, IApiCancelOrderRequest, IApiCancelOrderResponse, IApiCreateBulkOrdersRequest, IApiCreateBulkOrdersResponse, IApiCreateOrderRequest, IApiCreateOrderResponse, IApiCrossExchVaultAttestEquityRequest, IApiCrossExchVaultGetInvestorAllocationStatsResponse, IApiCrossExchVaultInvestCancelRequest, IApiCrossExchVaultLockRequest, IApiCrossExchVaultPreInternalTransferCheckRequest, IApiCrossExchVaultPreInternalTransferCheckResponse, IApiCrossExchVaultPreWithdrawCheckRequest, IApiCrossExchVaultPreWithdrawCheckResponse, IApiCrossExchVaultTriggerRedemptionRequest, IApiCrossExchVaultUnlockRequest, IApiCrossExchVaultViewInvestmentQueueRequest, IApiCrossExchVaultViewInvestmentQueueResponse, IApiCrossExchVaultViewPendingInvestmentRequest, IApiCrossExchVaultViewPendingInvestmentResponse, IApiDedustPositionRequest, IApiDedustPositionResponse, IApiDepositHistoryRequest, IApiDepositHistoryResponse, IApiFillHistoryRequest, IApiFillHistoryResponse, IApiFundingAccountSummaryResponse, IApiFundingPaymentHistoryRequest, IApiFundingPaymentHistoryResponse, IApiGetAllInitialLeverageRequest, IApiGetAllInitialLeverageResponse, IApiGetAuthorizedBuildersResponse, IApiGetIsolatedPositionMarginLimitsRequest, IApiGetIsolatedPositionMarginLimitsResponse, IApiGetMarginTiersResponse, IApiGetOrderGroupRequest, IApiGetOrderGroupResponse, IApiGetOrderRequest, IApiGetOrderResponse, IApiGetPriceProtectionBandsResponse, IApiOpenOrdersRequest, IApiOpenOrdersResponse, IApiOrderHistoryRequest, IApiOrderHistoryResponse, IApiPositionHistoryRequest, IApiPositionHistoryResponse, IApiPositionsRequest, IApiPositionsResponse, IApiPreDepositCheckRequest, IApiPreDepositCheckResponse, IApiPreOrderCheckRequest, IApiPreOrderCheckResponse, IApiQueryAccountDailyPerformanceRequest, IApiQueryAccountDailyPerformanceResponse, IApiQueryAccountPerformanceRequest, IApiQueryAccountPerformanceResponse, IApiQueryAccountPerformanceTrendRequest, IApiQueryAccountPerformanceTrendResponse, IApiQueryAccountTodayPerformanceRequest, IApiQueryAccountTodayPerformanceResponse, IApiQueryListFundingAccountSummaryRequest, IApiQueryListFundingAccountSummaryResponse, IApiQueryListSubAccountSummaryRequest, IApiQueryListSubAccountSummaryResponse, IApiQuerySubAccountDailyPerformanceRequest, IApiQuerySubAccountDailyPerformanceResponse, IApiQuerySubAccountTodayPerformanceRequest, IApiQuerySubAccountTodayPerformanceResponse, IApiQuerySubAccountTradeAggregationTrendRequest, IApiQuerySubAccountTradeAggregationTrendResponse, IApiQueryTradingAccountRiskMetricRequest, IApiQueryTradingAccountRiskMetricResponse, IApiQueryTradingPerformanceRequest, IApiQueryTradingPerformanceResponse, IApiQueryTradingPerformanceSummaryRequest, IApiQueryTradingPerformanceSummaryResponse, IApiQueryTradingPerformanceTrendRequest, IApiQueryTradingPerformanceTrendResponse, IApiQueryVaultInvestorHistoryRequest, IApiQueryVaultInvestorHistoryResponse, IApiQueryVaultManagerInvestorHistoryRequest, IApiQueryVaultManagerInvestorHistoryResponse, IApiReplaceOrdersRequest, IApiReplaceOrdersResponse, IApiSetInitialLeverageRequest, IApiSetInitialLeverageResponse, IApiSetSubAccountPositionMarginConfigRequest, IApiSetSubAccountPositionMarginConfigResponse, IApiSocializedLossStatusResponse, IApiSpotSubAccountSummaryRequest, IApiSpotSubAccountSummaryResponse, IApiSubAccountHistoryRequest, IApiSubAccountHistoryResponse, IApiSubAccountSummaryRequest, IApiSubAccountSummaryResponse, IApiTimedAssetExposureRequest, IApiTimedAssetExposureResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiTransferRequest, IApiTransferResponse, IApiVaultBurnTokensRequest, IApiVaultInvestorSummaryRequest, IApiVaultInvestorSummaryResponse, IApiVaultInvestRequest, IApiVaultRedeemCancelRequest, IApiVaultRedeemRequest, IApiVaultViewRedemptionQueueRequest, IApiVaultViewRedemptionQueueResponse, IApiWithdrawalHistoryRequest, IApiWithdrawalHistoryResponse, IApiWithdrawalRequest, IConfig } from '../interfaces';
2
+ import type { IAckResponse, IApiAddIsolatedPositionMarginRequest, IApiAddIsolatedPositionMarginResponse, IApiAggregatedAccountSummaryResponse, IApiAuthorizeBuilderRequest, IApiBuilderFillHistoryRequest, IApiBuilderFillHistoryResponse, IApiBulkOrdersRequest, IApiBulkOrdersResponse, IApiCancelAllOrdersRequest, IApiCancelAllOrdersResponse, IApiCancelOrderRequest, IApiCancelOrderResponse, IApiCreateBulkOrdersRequest, IApiCreateBulkOrdersResponse, IApiCreateOrderRequest, IApiCreateOrderResponse, IApiCrossExchVaultAttestEquityRequest, IApiCrossExchVaultGetInvestorAllocationStatsResponse, IApiCrossExchVaultInvestCancelRequest, IApiCrossExchVaultLockRequest, IApiCrossExchVaultPreInternalTransferCheckRequest, IApiCrossExchVaultPreInternalTransferCheckResponse, IApiCrossExchVaultPreWithdrawCheckRequest, IApiCrossExchVaultPreWithdrawCheckResponse, IApiCrossExchVaultTriggerRedemptionRequest, IApiCrossExchVaultUnlockRequest, IApiCrossExchVaultViewInvestmentQueueRequest, IApiCrossExchVaultViewInvestmentQueueResponse, IApiCrossExchVaultViewPendingInvestmentRequest, IApiCrossExchVaultViewPendingInvestmentResponse, IApiDedustPositionRequest, IApiDedustPositionResponse, IApiDedustSpotBalancesRequest, IApiDedustSpotBalancesResponse, IApiDepositHistoryRequest, IApiDepositHistoryResponse, IApiFillHistoryRequest, IApiFillHistoryResponse, IApiFundingAccountSummaryResponse, IApiFundingPaymentHistoryRequest, IApiFundingPaymentHistoryResponse, IApiGetAllInitialLeverageRequest, IApiGetAllInitialLeverageResponse, IApiGetAllPositionsByAssetRequest, IApiGetAllPositionsByAssetResponse, IApiGetAuthorizedBuildersResponse, IApiGetIsolatedPositionMarginLimitsRequest, IApiGetIsolatedPositionMarginLimitsResponse, IApiGetMarginTiersResponse, IApiGetOrderGroupRequest, IApiGetOrderGroupResponse, IApiGetOrderRequest, IApiGetOrderResponse, IApiGetPriceProtectionBandsResponse, IApiOpenOrdersRequest, IApiOpenOrdersResponse, IApiOrderHistoryRequest, IApiOrderHistoryResponse, IApiPositionHistoryRequest, IApiPositionHistoryResponse, IApiPositionsRequest, IApiPositionsResponse, IApiPreDepositCheckRequest, IApiPreDepositCheckResponse, IApiPreOrderCheckRequest, IApiPreOrderCheckResponse, IApiQueryAccountDailyPerformanceRequest, IApiQueryAccountDailyPerformanceResponse, IApiQueryAccountPerformanceRequest, IApiQueryAccountPerformanceResponse, IApiQueryAccountPerformanceTrendRequest, IApiQueryAccountPerformanceTrendResponse, IApiQueryAccountTodayPerformanceRequest, IApiQueryAccountTodayPerformanceResponse, IApiQueryListFundingAccountSummaryRequest, IApiQueryListFundingAccountSummaryResponse, IApiQueryListSubAccountSummaryRequest, IApiQueryListSubAccountSummaryResponse, IApiQuerySubAccountDailyPerformanceRequest, IApiQuerySubAccountDailyPerformanceResponse, IApiQuerySubAccountTodayPerformanceRequest, IApiQuerySubAccountTodayPerformanceResponse, IApiQuerySubAccountTradeAggregationTrendRequest, IApiQuerySubAccountTradeAggregationTrendResponse, IApiQueryTradingAccountRiskMetricRequest, IApiQueryTradingAccountRiskMetricResponse, IApiQueryTradingPerformanceRequest, IApiQueryTradingPerformanceResponse, IApiQueryTradingPerformanceSummaryRequest, IApiQueryTradingPerformanceSummaryResponse, IApiQueryTradingPerformanceTrendRequest, IApiQueryTradingPerformanceTrendResponse, IApiQueryVaultInvestorHistoryRequest, IApiQueryVaultInvestorHistoryResponse, IApiQueryVaultManagerInvestorHistoryRequest, IApiQueryVaultManagerInvestorHistoryResponse, IApiReplaceOrdersRequest, IApiReplaceOrdersResponse, IApiSetInitialLeverageRequest, IApiSetInitialLeverageResponse, IApiSetSubAccountPositionMarginConfigRequest, IApiSetSubAccountPositionMarginConfigResponse, IApiSocializedLossStatusResponse, IApiSpotSubAccountSummaryRequest, IApiSpotSubAccountSummaryResponse, IApiSubAccountHistoryRequest, IApiSubAccountHistoryResponse, IApiSubAccountSummaryRequest, IApiSubAccountSummaryResponse, IApiTimedAssetExposureRequest, IApiTimedAssetExposureResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiTransferRequest, IApiTransferResponse, IApiVaultBurnTokensRequest, IApiVaultInvestorSummaryRequest, IApiVaultInvestorSummaryResponse, IApiVaultInvestRequest, IApiVaultRedeemCancelRequest, IApiVaultRedeemRequest, IApiVaultViewRedemptionQueueRequest, IApiVaultViewRedemptionQueueResponse, IApiWithdrawalHistoryRequest, IApiWithdrawalHistoryResponse, IApiWithdrawalRequest, IConfig } from '../interfaces';
3
3
  export declare class TDG {
4
4
  private readonly _axios;
5
5
  private readonly _fullUrl;
@@ -164,4 +164,9 @@ export declare class TDG {
164
164
  accountDailyPerformance(payload: IApiQueryAccountDailyPerformanceRequest, config?: AxiosRequestConfig): Promise<IApiQueryAccountDailyPerformanceResponse>;
165
165
  subAccountDailyPerformance(payload: IApiQuerySubAccountDailyPerformanceRequest, config?: AxiosRequestConfig): Promise<IApiQuerySubAccountDailyPerformanceResponse>;
166
166
  subAccountTodayPerformance(payload: IApiQuerySubAccountTodayPerformanceRequest, config?: AxiosRequestConfig): Promise<IApiQuerySubAccountTodayPerformanceResponse>;
167
+ /**
168
+ * END: Portfolio
169
+ */
170
+ getAllPositionsByAsset(payload: IApiGetAllPositionsByAssetRequest, config?: AxiosRequestConfig): Promise<IApiGetAllPositionsByAssetResponse>;
171
+ dedustSpotBalances(payload: IApiDedustSpotBalancesRequest, config?: AxiosRequestConfig): Promise<IApiDedustSpotBalancesResponse>;
167
172
  }
package/TDG/index.js CHANGED
@@ -35,6 +35,8 @@ const api_cross_exch_vault_view_pending_investment_request_1 = require("../inter
35
35
  const api_cross_exch_vault_view_pending_investment_response_1 = require("../interfaces/codegen/schema-maps/api_cross_exch_vault_view_pending_investment_response");
36
36
  const api_dedust_position_request_1 = require("../interfaces/codegen/schema-maps/api_dedust_position_request");
37
37
  const api_dedust_position_response_1 = require("../interfaces/codegen/schema-maps/api_dedust_position_response");
38
+ const api_dedust_spot_balances_request_1 = require("../interfaces/codegen/schema-maps/api_dedust_spot_balances_request");
39
+ const api_dedust_spot_balances_response_1 = require("../interfaces/codegen/schema-maps/api_dedust_spot_balances_response");
38
40
  const api_deposit_history_request_1 = require("../interfaces/codegen/schema-maps/api_deposit_history_request");
39
41
  const api_deposit_history_response_1 = require("../interfaces/codegen/schema-maps/api_deposit_history_response");
40
42
  const api_fill_history_request_1 = require("../interfaces/codegen/schema-maps/api_fill_history_request");
@@ -44,6 +46,8 @@ const api_funding_payment_history_request_1 = require("../interfaces/codegen/sch
44
46
  const api_funding_payment_history_response_1 = require("../interfaces/codegen/schema-maps/api_funding_payment_history_response");
45
47
  const api_get_all_initial_leverage_request_1 = require("../interfaces/codegen/schema-maps/api_get_all_initial_leverage_request");
46
48
  const api_get_all_initial_leverage_response_1 = require("../interfaces/codegen/schema-maps/api_get_all_initial_leverage_response");
49
+ const api_get_all_positions_by_asset_request_1 = require("../interfaces/codegen/schema-maps/api_get_all_positions_by_asset_request");
50
+ const api_get_all_positions_by_asset_response_1 = require("../interfaces/codegen/schema-maps/api_get_all_positions_by_asset_response");
47
51
  const api_get_authorized_builders_response_1 = require("../interfaces/codegen/schema-maps/api_get_authorized_builders_response");
48
52
  const api_get_isolated_position_margin_limits_request_1 = require("../interfaces/codegen/schema-maps/api_get_isolated_position_margin_limits_request");
49
53
  const api_get_isolated_position_margin_limits_response_1 = require("../interfaces/codegen/schema-maps/api_get_isolated_position_margin_limits_response");
@@ -579,5 +583,18 @@ class TDG {
579
583
  return utils_1.Utils.schemaMap(response.data, api_query_sub_account_today_performance_response_1.API_QUERY_SUB_ACCOUNT_TODAY_PERFORMANCE_RESPONSE_MAP.LITE_TO_FULL);
580
584
  }).catch(utils_1.Utils.coverApiError);
581
585
  }
586
+ /**
587
+ * END: Portfolio
588
+ */
589
+ getAllPositionsByAsset(payload, config) {
590
+ return this._axios.post(this._liteUrl + '/get_all_positions_by_asset', utils_1.Utils.schemaMap(payload, api_get_all_positions_by_asset_request_1.API_GET_ALL_POSITIONS_BY_ASSET_REQUEST_MAP.FULL_TO_LITE, true), config).then((response) => {
591
+ return utils_1.Utils.schemaMap(response.data, api_get_all_positions_by_asset_response_1.API_GET_ALL_POSITIONS_BY_ASSET_RESPONSE_MAP.LITE_TO_FULL);
592
+ }).catch(utils_1.Utils.coverApiError);
593
+ }
594
+ dedustSpotBalances(payload, config) {
595
+ return this._axios.post(this._liteUrl + '/dedust_spot_balances', utils_1.Utils.schemaMap(payload, api_dedust_spot_balances_request_1.API_DEDUST_SPOT_BALANCES_REQUEST_MAP.FULL_TO_LITE, true), config).then((response) => {
596
+ return utils_1.Utils.schemaMap(response.data, api_dedust_spot_balances_response_1.API_DEDUST_SPOT_BALANCES_RESPONSE_MAP.LITE_TO_FULL);
597
+ }).catch(utils_1.Utils.coverApiError);
598
+ }
582
599
  }
583
600
  exports.TDG = TDG;