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 {