From 3486e3eab44f984449ff3a381fa1a8da64e3a08e Mon Sep 17 00:00:00 2001 From: Venkatesh V Date: Wed, 8 Jul 2026 14:54:16 +0000 Subject: [PATCH] feat(sdk-core): add VaultConfig types and defiParams to BuildParams/SendManyOptions Part 1 of 2 for DEFI-279 (CB-1.8). Types + interfaces + dependency bump: - Add GetVaultConfigOptions, VaultProvider, VaultConfig, ConcreteVaultConfig, ConcreteDepositResult to iDefiVault.ts; update DepositResult to a discriminated union (concrete_btccx pendingApproval | morpho operationId); add getVaultConfig to IDefiVault interface - Add defiParams: t.unknown to BuildParams whitelist so it passes through prebuildWhitelistedParams() without being stripped - Add optional defiParams field to SendManyOptions for discoverability - Bump @bitgo/public-types to ^6.39.0 (picks up defiParams on TxSendBody) Ticket: DEFI-279 Session-Id: ba171a5f-3d3c-4505-9e87-8df8afe5d59f Task-Id: bffe5f00-9f9c-4882-be0f-d620f6eba4c5 --- modules/sdk-core/package.json | 2 +- modules/sdk-core/src/bitgo/defi/iDefiVault.ts | 42 ++++++++++++++++--- .../sdk-core/src/bitgo/wallet/BuildParams.ts | 1 + modules/sdk-core/src/bitgo/wallet/iWallet.ts | 1 + 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/modules/sdk-core/package.json b/modules/sdk-core/package.json index 0c01439ee8..7cd2ab488b 100644 --- a/modules/sdk-core/package.json +++ b/modules/sdk-core/package.json @@ -40,7 +40,7 @@ ] }, "dependencies": { - "@bitgo/public-types": "6.22.0", + "@bitgo/public-types": "^6.39.0", "@bitgo/sdk-lib-mpc": "^10.15.0", "@bitgo/secp256k1": "^1.11.0", "@bitgo/sjcl": "^1.1.0", diff --git a/modules/sdk-core/src/bitgo/defi/iDefiVault.ts b/modules/sdk-core/src/bitgo/defi/iDefiVault.ts index 6bc706b77a..93c9460563 100644 --- a/modules/sdk-core/src/bitgo/defi/iDefiVault.ts +++ b/modules/sdk-core/src/bitgo/defi/iDefiVault.ts @@ -32,6 +32,10 @@ export interface ListOperationsOptions { cursor?: string; } +export interface GetVaultConfigOptions { + vaultId: string; +} + export interface DefiOperation { operationId: string; walletId: string; @@ -45,14 +49,39 @@ export interface DefiOperation { updatedAt: string; } -export interface DepositResult { - operationId: string; - txRequestIds: { - approve: string; - deposit: string; - }; +export type VaultProvider = 'morpho' | 'concrete_btccx'; + +export interface ConcreteVaultConfig { + sourceWalletId: string; + escrowWalletId: string; + escrowDepositAddress: string; + positionWalletId: string; + positionBaseAddress: string; } +export interface VaultConfig { + id: string; + name: string; + provider: VaultProvider; + status: string; + coin: string; + assetToken: string; + shareToken: string; + riskManager: string; + custodyType: string; + vaultContractAddress?: string; + concreteConfig?: ConcreteVaultConfig; +} + +export interface ConcreteDepositResult { + pendingApprovalId: string; + state: string; +} + +export type DepositResult = + | { pendingApprovalId: string; state: string } // concrete_btccx + | { operationId: string; txRequestIds: { approve: string; deposit: string } }; // morpho + export interface DefiOperationListResult { items: DefiOperation[]; nextCursor?: string; @@ -63,4 +92,5 @@ export interface IDefiVault { resumeDeposit(params: ResumeDepositOptions): Promise; getOperation(params: GetOperationOptions): Promise; listOperations(params: ListOperationsOptions): Promise; + getVaultConfig(params: GetVaultConfigOptions): Promise; } diff --git a/modules/sdk-core/src/bitgo/wallet/BuildParams.ts b/modules/sdk-core/src/bitgo/wallet/BuildParams.ts index a635b2057b..40e591e7d2 100644 --- a/modules/sdk-core/src/bitgo/wallet/BuildParams.ts +++ b/modules/sdk-core/src/bitgo/wallet/BuildParams.ts @@ -135,6 +135,7 @@ export const BuildParams = t.exact( feeToken: t.unknown, // Bridging parameters for cross-chain operations (e.g., BTC to sBTC) bridgingParams: t.unknown, + defiParams: t.unknown, }), ]) ); diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index a9663e6bbc..bfea1321b8 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -937,6 +937,7 @@ export interface SendManyOptions extends PrebuildAndSignTransactionOptions { eip1559?: EIP1559; gasLimit?: number; custodianTransactionId?: string; + defiParams?: { vaultId?: string; amount?: string | number; actionType?: string; operationId?: string; clientIdempotencyKey?: string }; } export interface FetchCrossChainUTXOsOptions {