From c500ebc5a4c11365090d71c70a8955b58ee298d1 Mon Sep 17 00:00:00 2001 From: Doddanna17 Date: Mon, 16 Mar 2026 08:48:37 +0530 Subject: [PATCH] feat(sdk-core): add XdcStakeOptions with kycHash for XDC masternode Add XdcStakeOptions extending StakeOptions with an optional kycHash field, following the same pattern as TaoStakeOptions and VetStakeOptions. The kycHash carries the IPFS CIDv0 returned by the staking-service KYC upload endpoint before calling stake(). stakingWallet.stake() spreads all options into the POST body, so no further changes are needed. Ticket: SC-6159 --- modules/sdk-core/src/bitgo/staking/iStakingWallet.ts | 10 +++++++++- modules/sdk-core/src/bitgo/staking/stakingWallet.ts | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/sdk-core/src/bitgo/staking/iStakingWallet.ts b/modules/sdk-core/src/bitgo/staking/iStakingWallet.ts index 7aa3f5fa03..6c423a306f 100644 --- a/modules/sdk-core/src/bitgo/staking/iStakingWallet.ts +++ b/modules/sdk-core/src/bitgo/staking/iStakingWallet.ts @@ -164,6 +164,14 @@ export interface StakeOptions { region?: string; } +export interface XdcStakeOptions extends StakeOptions { + /** + * XDC masternode KYC document hash — IPFS CIDv0 (Qm...) returned by the + * staking-service KYC upload endpoint, injected before calling stake(). + */ + kycHash?: string; +} + export interface TronStakeOptions extends StakeOptions { /** * Tron staking resource type (Energy or Bandwidth) @@ -311,7 +319,7 @@ export interface IStakingWallet { readonly walletId: string; readonly coin: string; stake( - options: StakeOptions | TronStakeOptions | TaoStakeOptions | VetStakeOptions | StoryStakeOptions + options: StakeOptions | TronStakeOptions | TaoStakeOptions | VetStakeOptions | StoryStakeOptions | XdcStakeOptions ): Promise; unstake(options: UnstakeOptions | EthUnstakeOptions): Promise; switchValidator(options: SwitchValidatorOptions | TaoSwitchValidatorOptions): Promise; diff --git a/modules/sdk-core/src/bitgo/staking/stakingWallet.ts b/modules/sdk-core/src/bitgo/staking/stakingWallet.ts index f67c1f6f55..0521aed59e 100644 --- a/modules/sdk-core/src/bitgo/staking/stakingWallet.ts +++ b/modules/sdk-core/src/bitgo/staking/stakingWallet.ts @@ -25,6 +25,7 @@ import { TaoSwitchValidatorOptions, VetStakeOptions, StoryStakeOptions, + XdcStakeOptions, } from './iStakingWallet'; import { BitGoBase } from '../bitgoBase'; import { IWallet, PrebuildTransactionResult } from '../wallet'; @@ -63,7 +64,7 @@ export class StakingWallet implements IStakingWallet { * @return StakingRequest */ async stake( - options: StakeOptions | TronStakeOptions | TaoStakeOptions | VetStakeOptions | StoryStakeOptions + options: StakeOptions | TronStakeOptions | TaoStakeOptions | VetStakeOptions | StoryStakeOptions | XdcStakeOptions ): Promise { return await this.createStakingRequest(options, 'STAKE'); } @@ -325,7 +326,8 @@ export class StakingWallet implements IStakingWallet { | TaoStakeOptions | TaoSwitchValidatorOptions | VetStakeOptions - | StoryStakeOptions, + | StoryStakeOptions + | XdcStakeOptions, type: string ): Promise { return await this.bitgo