@otim/sdk-core 0.0.17 → 0.0.18
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/dist/.tsbuildinfo +1 -1
- package/dist/clients/index.cjs +1 -1
- package/dist/clients/index.d.cts +1 -1
- package/dist/clients/index.d.mts +1 -1
- package/dist/clients/index.mjs +1 -1
- package/dist/{clients-D8fUV8fR.cjs → clients-CAKAVAKd.cjs} +4 -6
- package/dist/{clients-D8fUV8fR.cjs.map → clients-CAKAVAKd.cjs.map} +1 -1
- package/dist/{clients-BMHu0un6.mjs → clients-Dkt56jVn.mjs} +4 -6
- package/dist/{clients-BMHu0un6.mjs.map → clients-Dkt56jVn.mjs.map} +1 -1
- package/dist/{index-C3e6ozxv.d.mts → index-CT89rCH1.d.mts} +1 -5
- package/dist/{index-C3e6ozxv.d.mts.map → index-CT89rCH1.d.mts.map} +1 -1
- package/dist/{index-C5HbBg3r.d.cts → index-Dclw8n-r.d.cts} +1 -5
- package/dist/{index-C5HbBg3r.d.cts.map → index-Dclw8n-r.d.cts.map} +1 -1
- package/dist/index-_2bU9FSx.d.cts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/rpc-BWDaWzVn.d.mts.map +1 -1
- package/dist/rpc-C-51kawS.d.cts.map +1 -1
- package/package.json +4 -4
package/dist/clients/index.cjs
CHANGED
package/dist/clients/index.d.cts
CHANGED
|
@@ -2,6 +2,6 @@ import "../abi-C34qVuOe.cjs";
|
|
|
2
2
|
import "../rpc-C-51kawS.cjs";
|
|
3
3
|
import "../authorization-BnF84ABo.cjs";
|
|
4
4
|
import "../index-_2bU9FSx.cjs";
|
|
5
|
-
import { C as ActivityClient, S as LoginOptions, _ as CreateSettlementResponse, a as prepareVaultMigrateSettlement, b as ConfigClient, c as prepareVaultDepositSettlement, d as BuildSettlementRequest, f as OrchestrationParams, g as CreateRawConfig, h as prepareSettlement, i as VaultMigrateParams, l as PrepareVaultWithdrawSettlementParams, m as SettlementParams, n as createSettlementSigner, o as PrepareVaultDepositSettlementParams, p as PrepareSettlementParams, r as PrepareVaultMigrateSettlementParams, s as SettlementVaultDepositParams, t as CreateSettlementSignerParams, u as prepareVaultWithdrawSettlement, v as OrchestrationClient, x as AuthClient, y as DelegationClient } from "../index-
|
|
5
|
+
import { C as ActivityClient, S as LoginOptions, _ as CreateSettlementResponse, a as prepareVaultMigrateSettlement, b as ConfigClient, c as prepareVaultDepositSettlement, d as BuildSettlementRequest, f as OrchestrationParams, g as CreateRawConfig, h as prepareSettlement, i as VaultMigrateParams, l as PrepareVaultWithdrawSettlementParams, m as SettlementParams, n as createSettlementSigner, o as PrepareVaultDepositSettlementParams, p as PrepareSettlementParams, r as PrepareVaultMigrateSettlementParams, s as SettlementVaultDepositParams, t as CreateSettlementSignerParams, u as prepareVaultWithdrawSettlement, v as OrchestrationClient, x as AuthClient, y as DelegationClient } from "../index-Dclw8n-r.cjs";
|
|
6
6
|
import "../index-CUbzbOtB.cjs";
|
|
7
7
|
export { ActivityClient, AuthClient, BuildSettlementRequest, ConfigClient, CreateRawConfig, CreateSettlementResponse, CreateSettlementSignerParams, DelegationClient, LoginOptions, OrchestrationClient, OrchestrationParams, PrepareSettlementParams, PrepareVaultDepositSettlementParams, PrepareVaultMigrateSettlementParams, PrepareVaultWithdrawSettlementParams, SettlementParams, SettlementVaultDepositParams, VaultMigrateParams, createSettlementSigner, prepareSettlement, prepareVaultDepositSettlement, prepareVaultMigrateSettlement, prepareVaultWithdrawSettlement };
|
package/dist/clients/index.d.mts
CHANGED
|
@@ -2,6 +2,6 @@ import "../abi-DJLWbdqc.mjs";
|
|
|
2
2
|
import "../rpc-BWDaWzVn.mjs";
|
|
3
3
|
import "../authorization-C5pDhI13.mjs";
|
|
4
4
|
import "../index-D6ncjdSF.mjs";
|
|
5
|
-
import { C as ActivityClient, S as LoginOptions, _ as CreateSettlementResponse, a as prepareVaultMigrateSettlement, b as ConfigClient, c as prepareVaultDepositSettlement, d as BuildSettlementRequest, f as OrchestrationParams, g as CreateRawConfig, h as prepareSettlement, i as VaultMigrateParams, l as PrepareVaultWithdrawSettlementParams, m as SettlementParams, n as createSettlementSigner, o as PrepareVaultDepositSettlementParams, p as PrepareSettlementParams, r as PrepareVaultMigrateSettlementParams, s as SettlementVaultDepositParams, t as CreateSettlementSignerParams, u as prepareVaultWithdrawSettlement, v as OrchestrationClient, x as AuthClient, y as DelegationClient } from "../index-
|
|
5
|
+
import { C as ActivityClient, S as LoginOptions, _ as CreateSettlementResponse, a as prepareVaultMigrateSettlement, b as ConfigClient, c as prepareVaultDepositSettlement, d as BuildSettlementRequest, f as OrchestrationParams, g as CreateRawConfig, h as prepareSettlement, i as VaultMigrateParams, l as PrepareVaultWithdrawSettlementParams, m as SettlementParams, n as createSettlementSigner, o as PrepareVaultDepositSettlementParams, p as PrepareSettlementParams, r as PrepareVaultMigrateSettlementParams, s as SettlementVaultDepositParams, t as CreateSettlementSignerParams, u as prepareVaultWithdrawSettlement, v as OrchestrationClient, x as AuthClient, y as DelegationClient } from "../index-CT89rCH1.mjs";
|
|
6
6
|
import "../index-Bii-p3Pv.mjs";
|
|
7
7
|
export { ActivityClient, AuthClient, BuildSettlementRequest, ConfigClient, CreateRawConfig, CreateSettlementResponse, CreateSettlementSignerParams, DelegationClient, LoginOptions, OrchestrationClient, OrchestrationParams, PrepareSettlementParams, PrepareVaultDepositSettlementParams, PrepareVaultMigrateSettlementParams, PrepareVaultWithdrawSettlementParams, SettlementParams, SettlementVaultDepositParams, VaultMigrateParams, createSettlementSigner, prepareSettlement, prepareVaultDepositSettlement, prepareVaultMigrateSettlement, prepareVaultWithdrawSettlement };
|
package/dist/clients/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../account-DTvmNvta.mjs";
|
|
2
|
-
import { a as OrchestrationClient, c as ConfigClient, i as prepareSettlement, l as AuthClient, n as prepareVaultDepositSettlement, o as createSettlementSigner, r as prepareVaultWithdrawSettlement, s as DelegationClient, t as prepareVaultMigrateSettlement, u as ActivityClient } from "../clients-
|
|
2
|
+
import { a as OrchestrationClient, c as ConfigClient, i as prepareSettlement, l as AuthClient, n as prepareVaultDepositSettlement, o as createSettlementSigner, r as prepareVaultWithdrawSettlement, s as DelegationClient, t as prepareVaultMigrateSettlement, u as ActivityClient } from "../clients-Dkt56jVn.mjs";
|
|
3
3
|
import "../signing-BGCR53df.mjs";
|
|
4
4
|
|
|
5
5
|
export { ActivityClient, AuthClient, ConfigClient, DelegationClient, OrchestrationClient, createSettlementSigner, prepareSettlement, prepareVaultDepositSettlement, prepareVaultMigrateSettlement, prepareVaultWithdrawSettlement };
|
|
@@ -366,7 +366,7 @@ function convertAcceptedTokensToStringKeys(acceptedTokens) {
|
|
|
366
366
|
* @returns A BuildSettlementRequest ready to be sent to the API
|
|
367
367
|
*/
|
|
368
368
|
function prepareVaultDepositSettlement(params) {
|
|
369
|
-
const { acceptedTokens, vaultChainId, vaultAddress, vaultUnderlyingToken, depositAmount, recipientAddress,
|
|
369
|
+
const { acceptedTokens, vaultChainId, vaultAddress, vaultUnderlyingToken, depositAmount, recipientAddress, payer, note, dueDate, metadata: customMetadata, maxRuns } = params;
|
|
370
370
|
if (dueDate) (0, __otim_utils_helpers.validateIso8601Date)(dueDate);
|
|
371
371
|
const metadata = buildMetadataFromParams$1({
|
|
372
372
|
amount: depositAmount,
|
|
@@ -383,8 +383,7 @@ function prepareVaultDepositSettlement(params) {
|
|
|
383
383
|
vaultChainId,
|
|
384
384
|
vaultAddress,
|
|
385
385
|
depositAmount: (0, viem.toHex)(depositAmount),
|
|
386
|
-
recipientAddress
|
|
387
|
-
vaultMinTotalShares: (0, viem.toHex)(vaultMinTotalShares)
|
|
386
|
+
recipientAddress
|
|
388
387
|
} },
|
|
389
388
|
payerAddress: payer ?? null,
|
|
390
389
|
metadata,
|
|
@@ -438,7 +437,7 @@ function buildMetadataFromParams(params) {
|
|
|
438
437
|
* @returns A BuildSettlementRequest ready to be sent to the API
|
|
439
438
|
*/
|
|
440
439
|
function prepareVaultMigrateSettlement(params) {
|
|
441
|
-
const { sourceVaultAddress, sourceVaultChainId, withdrawAmount, destVaultAddress, destVaultUnderlyingToken, destVaultChainId,
|
|
440
|
+
const { sourceVaultAddress, sourceVaultChainId, withdrawAmount, destVaultAddress, destVaultUnderlyingToken, destVaultChainId, recipientAddress, payer, note, dueDate, metadata: customMetadata, maxRuns } = params;
|
|
442
441
|
if (dueDate) (0, __otim_utils_helpers.validateIso8601Date)(dueDate);
|
|
443
442
|
const metadata = buildMetadataFromParams({
|
|
444
443
|
amount: withdrawAmount,
|
|
@@ -456,7 +455,6 @@ function prepareVaultMigrateSettlement(params) {
|
|
|
456
455
|
withdrawAmount: (0, viem.toHex)(withdrawAmount),
|
|
457
456
|
destVaultAddress,
|
|
458
457
|
destVaultChainId,
|
|
459
|
-
destVaultMinTotalShares: (0, viem.toHex)(destVaultMinTotalShares),
|
|
460
458
|
recipientAddress
|
|
461
459
|
} },
|
|
462
460
|
payerAddress: payer ?? null,
|
|
@@ -527,4 +525,4 @@ Object.defineProperty(exports, 'prepareVaultWithdrawSettlement', {
|
|
|
527
525
|
return prepareVaultWithdrawSettlement;
|
|
528
526
|
}
|
|
529
527
|
});
|
|
530
|
-
//# sourceMappingURL=clients-
|
|
528
|
+
//# sourceMappingURL=clients-CAKAVAKd.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients-D8fUV8fR.cjs","names":["apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimClientContext","apiClient: APIClient","apiClient: APIClient","isApiAccountConfig","UnifiedPaymentSigner","ApiKeyClientSigningService","ServerWalletSigningService","apiClient: APIClient","account: OtimAccount","context: OtimServerClientContext","hexStringSchema","getDefaultDueDate","buildMetadataFromParams","convertAcceptedTokensToStringKeys","result: Record<string, Address[]>","getDefaultDueDate","buildMetadataFromParams","getDefaultDueDate","buildMetadataFromParams","result: Record<string, Address[]>"],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/helpers/settlement-signer.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts"],"sourcesContent":["import type {\n APIClient,\n GetInstructionActivityRequest,\n GetInstructionActivityResponse,\n} from \"@otim/utils/api\";\n\nexport class ActivityClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getInstructionActivity(\n request: GetInstructionActivityRequest,\n ): Promise<GetInstructionActivityResponse> {\n const response =\n await this.apiClient.activity.getInstructionActivity(request);\n\n return response.data;\n }\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimClientContext } from \"@otim/sdk-core/context\";\nimport type { APIClient, AuthLoginResponse, MeResponse } from \"@otim/utils/api\";\nimport type { Address } from \"viem\";\n\nimport { parseSignatureToVRS } from \"@otim/utils/helpers\";\n\nimport { createLoginSiweMessage } from \"@otim/sdk-core/config\";\nimport { assertRequiresAuth } from \"@otim/sdk-core/context\";\n\nexport interface LoginOptions {\n address: Address;\n}\n\nexport class AuthClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimClientContext,\n ) {}\n\n async login({ address }: LoginOptions): Promise<AuthLoginResponse> {\n assertRequiresAuth(this.context);\n\n const message = createLoginSiweMessage(address, Date.now().toString());\n const signature = await this.account.signMessage({ message });\n const vrsParsedSignature = parseSignatureToVRS(signature);\n\n const response = await this.apiClient.auth.login({\n siwe: message,\n signature: vrsParsedSignature,\n });\n\n return response.data;\n }\n\n async getCurrentUser(): Promise<MeResponse> {\n const response = await this.apiClient.auth.me();\n return response.data;\n }\n}\n","import type {\n APIClient,\n GetMaxPriorityFeePerGasEstimateRequest,\n GetMaxPriorityFeePerGasEstimateResponse,\n} from \"@otim/utils/api\";\n\nexport class ConfigClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getMaxPriorityFeeEstimate({\n chainId,\n }: GetMaxPriorityFeePerGasEstimateRequest): Promise<GetMaxPriorityFeePerGasEstimateResponse> {\n const response =\n await this.apiClient.config.getMaxPriorityFeePerGasEstimate({ chainId });\n\n return response.data;\n }\n}\n","import type {\n APIClient,\n DelegationCreateRequest,\n DelegationStatusRequest,\n DelegationStatusResponse,\n GetDelegateAddressRequest,\n GetDelegateAddressResponse,\n} from \"@otim/utils/api\";\n\nexport class DelegationClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getDelegateAddress({\n chainId,\n }: GetDelegateAddressRequest): Promise<GetDelegateAddressResponse> {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n\n return response.data;\n }\n\n async getDelegationStatus(\n options: DelegationStatusRequest,\n ): Promise<DelegationStatusResponse> {\n const response = await this.apiClient.account.getDelegationStatus({\n address: options.address,\n chainId: options.chainId,\n });\n\n return response.data;\n }\n\n async createDelegation(\n delegationRequest: DelegationCreateRequest,\n ): Promise<void> {\n await this.apiClient.account.createDelegation(delegationRequest);\n }\n}\n","import type { OtimServerClientContext } from \"../../context\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { PublicClient } from \"viem\";\n\nimport { createWalletClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nimport { isApiAccountConfig } from \"../../account\";\nimport {\n ApiKeyClientSigningService,\n ServerWalletSigningService,\n UnifiedPaymentSigner,\n} from \"../../signing\";\n\nexport interface CreateSettlementSignerParams {\n context: OtimServerClientContext;\n buildResponse: PaymentResponseWithActionNames;\n publicClient: PublicClient;\n delegateAddressMap: Map<number, Address>;\n}\n\ntype CreateSettlementSignerResult = Awaited<\n ReturnType<UnifiedPaymentSigner[\"signAll\"]>\n>;\n\nexport async function createSettlementSigner(\n params: CreateSettlementSignerParams,\n): Promise<CreateSettlementSignerResult> {\n const { context, buildResponse, publicClient, delegateAddressMap } = params;\n\n if (isApiAccountConfig(context.config)) {\n const signingService = new ApiKeyClientSigningService(\n context.config.publicKey,\n context.config.privateKey,\n );\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n }\n\n const account = privateKeyToAccount(context.config.privateKey);\n const walletClient = createWalletClient({\n account,\n transport: http(),\n });\n\n const signingService =\n ServerWalletSigningService.fromViemWallet(walletClient);\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimServerClientContext } from \"@otim/sdk-core/context\";\nimport type {\n APIClient,\n BuildSettlementRequest,\n GetPaymentRequestsRequest,\n GetPaymentRequestsResponse,\n PaginatedServiceResponse,\n PaymentRequestBuildRequest,\n PaymentRequestDetailsRequest,\n PaymentRequestDetailsResponse,\n ServiceResponse,\n} from \"@otim/utils/api\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { Chain, PublicClient } from \"viem\";\n\nimport { getChainById } from \"@otim/utils/chains\";\nimport {\n addActionNamesToInstructions,\n extractActionNamesMap,\n} from \"@otim/utils/payments\";\nimport { hexStringSchema } from \"@otim/utils/schemas\";\nimport { createPublicClient, http } from \"viem\";\n\nimport { assertServerContext } from \"@otim/sdk-core/context\";\n\nimport { createSettlementSigner } from \"./helpers/settlement-signer\";\n\nexport interface CreateSettlementResponse {\n requestId: string;\n ephemeralWalletAddress: Address;\n}\n\nexport interface CreateRawConfig {\n settlementChainId: number;\n activate?: boolean;\n}\n\ntype SettlementInstruction =\n PaymentResponseWithActionNames[\"completionInstructions\"][number];\n\n/**\n * Extracts the settlement chain ID from a BuildSettlementRequest.\n * Handles all settlement types: regular, vault deposit, and vault withdraw.\n */\nfunction extractSettlementChainId(request: BuildSettlementRequest): number {\n const { params } = request;\n\n if (\"settlement\" in params) {\n return params.settlement.settlementChainId;\n }\n\n if (\"settlementVaultDeposit\" in params) {\n return params.settlementVaultDeposit.vaultChainId;\n }\n\n if (\"vaultWithdrawSettlement\" in params) {\n return params.vaultWithdrawSettlement.settlementChainId;\n }\n\n if (\"vaultMigrate\" in params) {\n return params.vaultMigrate.destVaultChainId;\n }\n\n throw new Error(\"Unknown settlement type\");\n}\n\nexport class OrchestrationClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimServerClientContext,\n ) {}\n\n async create(\n settlementRequest: BuildSettlementRequest,\n ): Promise<CreateSettlementResponse> {\n assertServerContext(this.context);\n\n const response =\n await this.apiClient.payments.buildSettlementOrchestration(\n settlementRequest,\n );\n const buildResponse = response.data;\n\n const settlementChainId = extractSettlementChainId(settlementRequest);\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async createRaw(\n payload: PaymentRequestBuildRequest,\n config: CreateRawConfig,\n ): Promise<CreateSettlementResponse | PaymentResponseWithActionNames> {\n assertServerContext(this.context);\n\n const { settlementChainId, activate = true } = config;\n const buildResponse = await this.buildAndEnhanceSettlement(payload);\n\n if (!activate) {\n return buildResponse;\n }\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async getDetails(\n request: PaymentRequestDetailsRequest,\n ): Promise<ServiceResponse<PaymentRequestDetailsResponse>> {\n return this.apiClient.payments.getPaymentRequestDetails(request);\n }\n\n async list(\n request: GetPaymentRequestsRequest,\n ): Promise<PaginatedServiceResponse<GetPaymentRequestsResponse>> {\n return this.apiClient.payments.getPaymentRequests(request);\n }\n\n private async activate(\n buildResponse: PaymentResponseWithActionNames,\n settlementChainId: number,\n ): Promise<void> {\n const publicClient = this.createPublicClient(settlementChainId);\n\n const instructions = [\n ...buildResponse.completionInstructions,\n ...buildResponse.instructions,\n ];\n\n const delegateAddressMap = await this.fetchDelegateAddresses(instructions);\n\n const {\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n } = await createSettlementSigner({\n context: this.context,\n buildResponse,\n publicClient,\n delegateAddressMap,\n });\n\n await this.apiClient.payments.newPaymentRequest({\n requestId: buildResponse.requestId,\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n });\n }\n\n private async buildAndEnhanceSettlement(\n payload: PaymentRequestBuildRequest,\n ): Promise<PaymentResponseWithActionNames> {\n const actionNames = extractActionNamesMap(\n payload.completionInstructions,\n payload.instructions,\n );\n\n const response = await this.apiClient.payments.buildPaymentRequest(payload);\n\n return addActionNamesToInstructions(response.data, actionNames);\n }\n\n private createPublicClient(chainId: number): PublicClient {\n const chain = getChainById(chainId);\n if (!chain) {\n throw new Error(`Chain with id ${chainId} not found`);\n }\n\n return createPublicClient({ chain: chain as Chain, transport: http() });\n }\n\n private async fetchDelegateAddresses(\n instructions: SettlementInstruction[],\n ): Promise<Map<number, Address>> {\n const chainIds = Array.from(\n new Set(instructions.map((instruction) => instruction.chainId)),\n );\n\n const addresses = await Promise.all(\n chainIds.map(async (chainId) => {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n const address = hexStringSchema.parse(\n response.data.otimDelegateAddress,\n );\n return [chainId, address] as const;\n }),\n );\n\n return new Map(addresses);\n }\n}\n","import type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nexport type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n};\n\nexport interface PrepareSettlementParams {\n amount: bigint;\n chainId: SupportedChainId;\n recipient: Address;\n token: Address;\n acceptedTokens: Record<number, Address[]>;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\nexport function prepareSettlement(\n params: PrepareSettlementParams,\n): BuildSettlementRequest {\n const {\n chainId,\n token,\n acceptedTokens,\n recipient,\n amount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount,\n recipient,\n token,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlement: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n settlementChainId: chainId,\n settlementToken: token,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n settlementAmount: toHex(amount),\n recipientAddress: recipient,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultWithdrawSettlementParams };\n\nexport interface PrepareVaultWithdrawSettlementParams {\n vaultAddress: Address;\n vaultChainId: SupportedChainId;\n settlementChainId: SupportedChainId;\n settlementToken: Address;\n recipientAddress: Address;\n withdrawAmount: bigint;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\nexport function prepareVaultWithdrawSettlement(\n params: PrepareVaultWithdrawSettlementParams,\n): BuildSettlementRequest {\n const {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n withdrawAmount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: settlementToken,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultWithdrawSettlement: {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n SettlementVaultDepositParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { SettlementVaultDepositParams };\n\nexport interface PrepareVaultDepositSettlementParams {\n /** Map of chain IDs to accepted token addresses for payment */\n acceptedTokens: Record<number, Address[]>;\n /** Chain ID where the vault is deployed */\n vaultChainId: SupportedChainId;\n /** ERC4626 vault address to deposit into */\n vaultAddress: Address;\n /** Optional: the underlying token of the vault (used only for metadata, not sent to API) */\n vaultUnderlyingToken?: Address;\n /** Amount to deposit in the vault's underlying token units */\n depositAmount: bigint;\n /** Address that will receive the vault shares */\n recipientAddress: Address;\n /** Minimum total shares required for the deposit to succeed */\n vaultMinTotalShares: bigint;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\n/**\n * Prepares a vault deposit settlement request.\n *\n * This creates a settlement that deposits funds into an ERC4626 vault.\n * Funds can be collected from multiple chains (via acceptedTokens) and\n * deposited into the vault on the specified chain.\n *\n * @param params - The vault deposit settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultDepositSettlement(\n params: PrepareVaultDepositSettlementParams,\n): BuildSettlementRequest {\n const {\n acceptedTokens,\n vaultChainId,\n vaultAddress,\n vaultUnderlyingToken,\n depositAmount,\n recipientAddress,\n vaultMinTotalShares,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: depositAmount,\n recipient: recipientAddress,\n token: vaultUnderlyingToken ?? vaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlementVaultDeposit: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n vaultChainId,\n vaultAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n depositAmount: toHex(depositAmount),\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n vaultMinTotalShares: toHex(vaultMinTotalShares),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultMigrateParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultMigrateParams };\n\nexport interface PrepareVaultMigrateSettlementParams {\n /** Source vault address to withdraw from */\n sourceVaultAddress: Address;\n /** Optional: the underlying token of the source vault (used only for metadata, not sent to API) */\n sourceVaultUnderlyingToken?: Address;\n /** Chain ID where the source vault is deployed */\n sourceVaultChainId: SupportedChainId;\n /** Amount to withdraw from the source vault in underlying token units */\n withdrawAmount: bigint;\n /** Destination vault address to deposit into */\n destVaultAddress: Address;\n /** Optional: the underlying token of the destination vault (used only for metadata, not sent to API) */\n destVaultUnderlyingToken?: Address;\n /** Chain ID where the destination vault is deployed */\n destVaultChainId: SupportedChainId;\n /** Minimum total shares required for the deposit to succeed */\n destVaultMinTotalShares: bigint;\n /** Address that will receive the destination vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Prepares a vault migrate settlement request.\n *\n * This creates a settlement that migrates funds between two ERC4626 vaults.\n * Funds are withdrawn from the source vault and deposited into the destination\n * vault, which can be on the same chain or a different chain (cross-chain migration).\n *\n * @param params - The vault migrate settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultMigrateSettlement(\n params: PrepareVaultMigrateSettlementParams,\n): BuildSettlementRequest {\n const {\n sourceVaultAddress,\n sourceVaultChainId,\n withdrawAmount,\n destVaultAddress,\n destVaultUnderlyingToken,\n destVaultChainId,\n destVaultMinTotalShares,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: destVaultUnderlyingToken ?? destVaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultMigrate: {\n sourceVaultAddress,\n sourceVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n destVaultAddress,\n destVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n destVaultMinTotalShares: toHex(destVaultMinTotalShares),\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clients-CAKAVAKd.cjs","names":["apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimClientContext","apiClient: APIClient","apiClient: APIClient","isApiAccountConfig","UnifiedPaymentSigner","ApiKeyClientSigningService","ServerWalletSigningService","apiClient: APIClient","account: OtimAccount","context: OtimServerClientContext","hexStringSchema","getDefaultDueDate","buildMetadataFromParams","convertAcceptedTokensToStringKeys","result: Record<string, Address[]>","getDefaultDueDate","buildMetadataFromParams","getDefaultDueDate","buildMetadataFromParams","result: Record<string, Address[]>"],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/helpers/settlement-signer.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts"],"sourcesContent":["import type {\n APIClient,\n GetInstructionActivityRequest,\n GetInstructionActivityResponse,\n} from \"@otim/utils/api\";\n\nexport class ActivityClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getInstructionActivity(\n request: GetInstructionActivityRequest,\n ): Promise<GetInstructionActivityResponse> {\n const response =\n await this.apiClient.activity.getInstructionActivity(request);\n\n return response.data;\n }\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimClientContext } from \"@otim/sdk-core/context\";\nimport type { APIClient, AuthLoginResponse, MeResponse } from \"@otim/utils/api\";\nimport type { Address } from \"viem\";\n\nimport { parseSignatureToVRS } from \"@otim/utils/helpers\";\n\nimport { createLoginSiweMessage } from \"@otim/sdk-core/config\";\nimport { assertRequiresAuth } from \"@otim/sdk-core/context\";\n\nexport interface LoginOptions {\n address: Address;\n}\n\nexport class AuthClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimClientContext,\n ) {}\n\n async login({ address }: LoginOptions): Promise<AuthLoginResponse> {\n assertRequiresAuth(this.context);\n\n const message = createLoginSiweMessage(address, Date.now().toString());\n const signature = await this.account.signMessage({ message });\n const vrsParsedSignature = parseSignatureToVRS(signature);\n\n const response = await this.apiClient.auth.login({\n siwe: message,\n signature: vrsParsedSignature,\n });\n\n return response.data;\n }\n\n async getCurrentUser(): Promise<MeResponse> {\n const response = await this.apiClient.auth.me();\n return response.data;\n }\n}\n","import type {\n APIClient,\n GetMaxPriorityFeePerGasEstimateRequest,\n GetMaxPriorityFeePerGasEstimateResponse,\n} from \"@otim/utils/api\";\n\nexport class ConfigClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getMaxPriorityFeeEstimate({\n chainId,\n }: GetMaxPriorityFeePerGasEstimateRequest): Promise<GetMaxPriorityFeePerGasEstimateResponse> {\n const response =\n await this.apiClient.config.getMaxPriorityFeePerGasEstimate({ chainId });\n\n return response.data;\n }\n}\n","import type {\n APIClient,\n DelegationCreateRequest,\n DelegationStatusRequest,\n DelegationStatusResponse,\n GetDelegateAddressRequest,\n GetDelegateAddressResponse,\n} from \"@otim/utils/api\";\n\nexport class DelegationClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getDelegateAddress({\n chainId,\n }: GetDelegateAddressRequest): Promise<GetDelegateAddressResponse> {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n\n return response.data;\n }\n\n async getDelegationStatus(\n options: DelegationStatusRequest,\n ): Promise<DelegationStatusResponse> {\n const response = await this.apiClient.account.getDelegationStatus({\n address: options.address,\n chainId: options.chainId,\n });\n\n return response.data;\n }\n\n async createDelegation(\n delegationRequest: DelegationCreateRequest,\n ): Promise<void> {\n await this.apiClient.account.createDelegation(delegationRequest);\n }\n}\n","import type { OtimServerClientContext } from \"../../context\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { PublicClient } from \"viem\";\n\nimport { createWalletClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nimport { isApiAccountConfig } from \"../../account\";\nimport {\n ApiKeyClientSigningService,\n ServerWalletSigningService,\n UnifiedPaymentSigner,\n} from \"../../signing\";\n\nexport interface CreateSettlementSignerParams {\n context: OtimServerClientContext;\n buildResponse: PaymentResponseWithActionNames;\n publicClient: PublicClient;\n delegateAddressMap: Map<number, Address>;\n}\n\ntype CreateSettlementSignerResult = Awaited<\n ReturnType<UnifiedPaymentSigner[\"signAll\"]>\n>;\n\nexport async function createSettlementSigner(\n params: CreateSettlementSignerParams,\n): Promise<CreateSettlementSignerResult> {\n const { context, buildResponse, publicClient, delegateAddressMap } = params;\n\n if (isApiAccountConfig(context.config)) {\n const signingService = new ApiKeyClientSigningService(\n context.config.publicKey,\n context.config.privateKey,\n );\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n }\n\n const account = privateKeyToAccount(context.config.privateKey);\n const walletClient = createWalletClient({\n account,\n transport: http(),\n });\n\n const signingService =\n ServerWalletSigningService.fromViemWallet(walletClient);\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimServerClientContext } from \"@otim/sdk-core/context\";\nimport type {\n APIClient,\n BuildSettlementRequest,\n GetPaymentRequestsRequest,\n GetPaymentRequestsResponse,\n PaginatedServiceResponse,\n PaymentRequestBuildRequest,\n PaymentRequestDetailsRequest,\n PaymentRequestDetailsResponse,\n ServiceResponse,\n} from \"@otim/utils/api\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { Chain, PublicClient } from \"viem\";\n\nimport { getChainById } from \"@otim/utils/chains\";\nimport {\n addActionNamesToInstructions,\n extractActionNamesMap,\n} from \"@otim/utils/payments\";\nimport { hexStringSchema } from \"@otim/utils/schemas\";\nimport { createPublicClient, http } from \"viem\";\n\nimport { assertServerContext } from \"@otim/sdk-core/context\";\n\nimport { createSettlementSigner } from \"./helpers/settlement-signer\";\n\nexport interface CreateSettlementResponse {\n requestId: string;\n ephemeralWalletAddress: Address;\n}\n\nexport interface CreateRawConfig {\n settlementChainId: number;\n activate?: boolean;\n}\n\ntype SettlementInstruction =\n PaymentResponseWithActionNames[\"completionInstructions\"][number];\n\n/**\n * Extracts the settlement chain ID from a BuildSettlementRequest.\n * Handles all settlement types: regular, vault deposit, and vault withdraw.\n */\nfunction extractSettlementChainId(request: BuildSettlementRequest): number {\n const { params } = request;\n\n if (\"settlement\" in params) {\n return params.settlement.settlementChainId;\n }\n\n if (\"settlementVaultDeposit\" in params) {\n return params.settlementVaultDeposit.vaultChainId;\n }\n\n if (\"vaultWithdrawSettlement\" in params) {\n return params.vaultWithdrawSettlement.settlementChainId;\n }\n\n if (\"vaultMigrate\" in params) {\n return params.vaultMigrate.destVaultChainId;\n }\n\n throw new Error(\"Unknown settlement type\");\n}\n\nexport class OrchestrationClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimServerClientContext,\n ) {}\n\n async create(\n settlementRequest: BuildSettlementRequest,\n ): Promise<CreateSettlementResponse> {\n assertServerContext(this.context);\n\n const response =\n await this.apiClient.payments.buildSettlementOrchestration(\n settlementRequest,\n );\n const buildResponse = response.data;\n\n const settlementChainId = extractSettlementChainId(settlementRequest);\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async createRaw(\n payload: PaymentRequestBuildRequest,\n config: CreateRawConfig,\n ): Promise<CreateSettlementResponse | PaymentResponseWithActionNames> {\n assertServerContext(this.context);\n\n const { settlementChainId, activate = true } = config;\n const buildResponse = await this.buildAndEnhanceSettlement(payload);\n\n if (!activate) {\n return buildResponse;\n }\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async getDetails(\n request: PaymentRequestDetailsRequest,\n ): Promise<ServiceResponse<PaymentRequestDetailsResponse>> {\n return this.apiClient.payments.getPaymentRequestDetails(request);\n }\n\n async list(\n request: GetPaymentRequestsRequest,\n ): Promise<PaginatedServiceResponse<GetPaymentRequestsResponse>> {\n return this.apiClient.payments.getPaymentRequests(request);\n }\n\n private async activate(\n buildResponse: PaymentResponseWithActionNames,\n settlementChainId: number,\n ): Promise<void> {\n const publicClient = this.createPublicClient(settlementChainId);\n\n const instructions = [\n ...buildResponse.completionInstructions,\n ...buildResponse.instructions,\n ];\n\n const delegateAddressMap = await this.fetchDelegateAddresses(instructions);\n\n const {\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n } = await createSettlementSigner({\n context: this.context,\n buildResponse,\n publicClient,\n delegateAddressMap,\n });\n\n await this.apiClient.payments.newPaymentRequest({\n requestId: buildResponse.requestId,\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n });\n }\n\n private async buildAndEnhanceSettlement(\n payload: PaymentRequestBuildRequest,\n ): Promise<PaymentResponseWithActionNames> {\n const actionNames = extractActionNamesMap(\n payload.completionInstructions,\n payload.instructions,\n );\n\n const response = await this.apiClient.payments.buildPaymentRequest(payload);\n\n return addActionNamesToInstructions(response.data, actionNames);\n }\n\n private createPublicClient(chainId: number): PublicClient {\n const chain = getChainById(chainId);\n if (!chain) {\n throw new Error(`Chain with id ${chainId} not found`);\n }\n\n return createPublicClient({ chain: chain as Chain, transport: http() });\n }\n\n private async fetchDelegateAddresses(\n instructions: SettlementInstruction[],\n ): Promise<Map<number, Address>> {\n const chainIds = Array.from(\n new Set(instructions.map((instruction) => instruction.chainId)),\n );\n\n const addresses = await Promise.all(\n chainIds.map(async (chainId) => {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n const address = hexStringSchema.parse(\n response.data.otimDelegateAddress,\n );\n return [chainId, address] as const;\n }),\n );\n\n return new Map(addresses);\n }\n}\n","import type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nexport type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n};\n\nexport interface PrepareSettlementParams {\n amount: bigint;\n chainId: SupportedChainId;\n recipient: Address;\n token: Address;\n acceptedTokens: Record<number, Address[]>;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\nexport function prepareSettlement(\n params: PrepareSettlementParams,\n): BuildSettlementRequest {\n const {\n chainId,\n token,\n acceptedTokens,\n recipient,\n amount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount,\n recipient,\n token,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlement: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n settlementChainId: chainId,\n settlementToken: token,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n settlementAmount: toHex(amount),\n recipientAddress: recipient,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultWithdrawSettlementParams };\n\nexport interface PrepareVaultWithdrawSettlementParams {\n vaultAddress: Address;\n vaultChainId: SupportedChainId;\n settlementChainId: SupportedChainId;\n settlementToken: Address;\n recipientAddress: Address;\n withdrawAmount: bigint;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\nexport function prepareVaultWithdrawSettlement(\n params: PrepareVaultWithdrawSettlementParams,\n): BuildSettlementRequest {\n const {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n withdrawAmount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: settlementToken,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultWithdrawSettlement: {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n SettlementVaultDepositParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { SettlementVaultDepositParams };\n\nexport interface PrepareVaultDepositSettlementParams {\n /** Map of chain IDs to accepted token addresses for payment */\n acceptedTokens: Record<number, Address[]>;\n /** Chain ID where the vault is deployed */\n vaultChainId: SupportedChainId;\n /** ERC4626 vault address to deposit into */\n vaultAddress: Address;\n /** Optional: the underlying token of the vault (used only for metadata, not sent to API) */\n vaultUnderlyingToken?: Address;\n /** Amount to deposit in the vault's underlying token units */\n depositAmount: bigint;\n /** Address that will receive the vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\n/**\n * Prepares a vault deposit settlement request.\n *\n * This creates a settlement that deposits funds into an ERC4626 vault.\n * Funds can be collected from multiple chains (via acceptedTokens) and\n * deposited into the vault on the specified chain.\n *\n * @param params - The vault deposit settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultDepositSettlement(\n params: PrepareVaultDepositSettlementParams,\n): BuildSettlementRequest {\n const {\n acceptedTokens,\n vaultChainId,\n vaultAddress,\n vaultUnderlyingToken,\n depositAmount,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: depositAmount,\n recipient: recipientAddress,\n token: vaultUnderlyingToken ?? vaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlementVaultDeposit: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n vaultChainId,\n vaultAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n depositAmount: toHex(depositAmount),\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultMigrateParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultMigrateParams };\n\nexport interface PrepareVaultMigrateSettlementParams {\n /** Source vault address to withdraw from */\n sourceVaultAddress: Address;\n /** Optional: the underlying token of the source vault (used only for metadata, not sent to API) */\n sourceVaultUnderlyingToken?: Address;\n /** Chain ID where the source vault is deployed */\n sourceVaultChainId: SupportedChainId;\n /** Amount to withdraw from the source vault in underlying token units */\n withdrawAmount: bigint;\n /** Destination vault address to deposit into */\n destVaultAddress: Address;\n /** Optional: the underlying token of the destination vault (used only for metadata, not sent to API) */\n destVaultUnderlyingToken?: Address;\n /** Chain ID where the destination vault is deployed */\n destVaultChainId: SupportedChainId;\n /** Address that will receive the destination vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Prepares a vault migrate settlement request.\n *\n * This creates a settlement that migrates funds between two ERC4626 vaults.\n * Funds are withdrawn from the source vault and deposited into the destination\n * vault, which can be on the same chain or a different chain (cross-chain migration).\n *\n * @param params - The vault migrate settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultMigrateSettlement(\n params: PrepareVaultMigrateSettlementParams,\n): BuildSettlementRequest {\n const {\n sourceVaultAddress,\n sourceVaultChainId,\n withdrawAmount,\n destVaultAddress,\n destVaultUnderlyingToken,\n destVaultChainId,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: destVaultUnderlyingToken ?? destVaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultMigrate: {\n sourceVaultAddress,\n sourceVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n destVaultAddress,\n destVaultChainId,\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n"],"mappings":"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"}
|
|
@@ -366,7 +366,7 @@ function convertAcceptedTokensToStringKeys(acceptedTokens) {
|
|
|
366
366
|
* @returns A BuildSettlementRequest ready to be sent to the API
|
|
367
367
|
*/
|
|
368
368
|
function prepareVaultDepositSettlement(params) {
|
|
369
|
-
const { acceptedTokens, vaultChainId, vaultAddress, vaultUnderlyingToken, depositAmount, recipientAddress,
|
|
369
|
+
const { acceptedTokens, vaultChainId, vaultAddress, vaultUnderlyingToken, depositAmount, recipientAddress, payer, note, dueDate, metadata: customMetadata, maxRuns } = params;
|
|
370
370
|
if (dueDate) validateIso8601Date(dueDate);
|
|
371
371
|
const metadata = buildMetadataFromParams$1({
|
|
372
372
|
amount: depositAmount,
|
|
@@ -383,8 +383,7 @@ function prepareVaultDepositSettlement(params) {
|
|
|
383
383
|
vaultChainId,
|
|
384
384
|
vaultAddress,
|
|
385
385
|
depositAmount: toHex(depositAmount),
|
|
386
|
-
recipientAddress
|
|
387
|
-
vaultMinTotalShares: toHex(vaultMinTotalShares)
|
|
386
|
+
recipientAddress
|
|
388
387
|
} },
|
|
389
388
|
payerAddress: payer ?? null,
|
|
390
389
|
metadata,
|
|
@@ -438,7 +437,7 @@ function buildMetadataFromParams(params) {
|
|
|
438
437
|
* @returns A BuildSettlementRequest ready to be sent to the API
|
|
439
438
|
*/
|
|
440
439
|
function prepareVaultMigrateSettlement(params) {
|
|
441
|
-
const { sourceVaultAddress, sourceVaultChainId, withdrawAmount, destVaultAddress, destVaultUnderlyingToken, destVaultChainId,
|
|
440
|
+
const { sourceVaultAddress, sourceVaultChainId, withdrawAmount, destVaultAddress, destVaultUnderlyingToken, destVaultChainId, recipientAddress, payer, note, dueDate, metadata: customMetadata, maxRuns } = params;
|
|
442
441
|
if (dueDate) validateIso8601Date(dueDate);
|
|
443
442
|
const metadata = buildMetadataFromParams({
|
|
444
443
|
amount: withdrawAmount,
|
|
@@ -456,7 +455,6 @@ function prepareVaultMigrateSettlement(params) {
|
|
|
456
455
|
withdrawAmount: toHex(withdrawAmount),
|
|
457
456
|
destVaultAddress,
|
|
458
457
|
destVaultChainId,
|
|
459
|
-
destVaultMinTotalShares: toHex(destVaultMinTotalShares),
|
|
460
458
|
recipientAddress
|
|
461
459
|
} },
|
|
462
460
|
payerAddress: payer ?? null,
|
|
@@ -468,4 +466,4 @@ function prepareVaultMigrateSettlement(params) {
|
|
|
468
466
|
|
|
469
467
|
//#endregion
|
|
470
468
|
export { OrchestrationClient as a, ConfigClient as c, prepareSettlement as i, AuthClient as l, prepareVaultDepositSettlement as n, createSettlementSigner as o, prepareVaultWithdrawSettlement as r, DelegationClient as s, prepareVaultMigrateSettlement as t, ActivityClient as u };
|
|
471
|
-
//# sourceMappingURL=clients-
|
|
469
|
+
//# sourceMappingURL=clients-Dkt56jVn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients-BMHu0un6.mjs","names":["apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimClientContext","apiClient: APIClient","apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimServerClientContext","getDefaultDueDate","buildMetadataFromParams","convertAcceptedTokensToStringKeys","result: Record<string, Address[]>","getDefaultDueDate","buildMetadataFromParams","getDefaultDueDate","buildMetadataFromParams","result: Record<string, Address[]>"],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/helpers/settlement-signer.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts"],"sourcesContent":["import type {\n APIClient,\n GetInstructionActivityRequest,\n GetInstructionActivityResponse,\n} from \"@otim/utils/api\";\n\nexport class ActivityClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getInstructionActivity(\n request: GetInstructionActivityRequest,\n ): Promise<GetInstructionActivityResponse> {\n const response =\n await this.apiClient.activity.getInstructionActivity(request);\n\n return response.data;\n }\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimClientContext } from \"@otim/sdk-core/context\";\nimport type { APIClient, AuthLoginResponse, MeResponse } from \"@otim/utils/api\";\nimport type { Address } from \"viem\";\n\nimport { parseSignatureToVRS } from \"@otim/utils/helpers\";\n\nimport { createLoginSiweMessage } from \"@otim/sdk-core/config\";\nimport { assertRequiresAuth } from \"@otim/sdk-core/context\";\n\nexport interface LoginOptions {\n address: Address;\n}\n\nexport class AuthClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimClientContext,\n ) {}\n\n async login({ address }: LoginOptions): Promise<AuthLoginResponse> {\n assertRequiresAuth(this.context);\n\n const message = createLoginSiweMessage(address, Date.now().toString());\n const signature = await this.account.signMessage({ message });\n const vrsParsedSignature = parseSignatureToVRS(signature);\n\n const response = await this.apiClient.auth.login({\n siwe: message,\n signature: vrsParsedSignature,\n });\n\n return response.data;\n }\n\n async getCurrentUser(): Promise<MeResponse> {\n const response = await this.apiClient.auth.me();\n return response.data;\n }\n}\n","import type {\n APIClient,\n GetMaxPriorityFeePerGasEstimateRequest,\n GetMaxPriorityFeePerGasEstimateResponse,\n} from \"@otim/utils/api\";\n\nexport class ConfigClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getMaxPriorityFeeEstimate({\n chainId,\n }: GetMaxPriorityFeePerGasEstimateRequest): Promise<GetMaxPriorityFeePerGasEstimateResponse> {\n const response =\n await this.apiClient.config.getMaxPriorityFeePerGasEstimate({ chainId });\n\n return response.data;\n }\n}\n","import type {\n APIClient,\n DelegationCreateRequest,\n DelegationStatusRequest,\n DelegationStatusResponse,\n GetDelegateAddressRequest,\n GetDelegateAddressResponse,\n} from \"@otim/utils/api\";\n\nexport class DelegationClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getDelegateAddress({\n chainId,\n }: GetDelegateAddressRequest): Promise<GetDelegateAddressResponse> {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n\n return response.data;\n }\n\n async getDelegationStatus(\n options: DelegationStatusRequest,\n ): Promise<DelegationStatusResponse> {\n const response = await this.apiClient.account.getDelegationStatus({\n address: options.address,\n chainId: options.chainId,\n });\n\n return response.data;\n }\n\n async createDelegation(\n delegationRequest: DelegationCreateRequest,\n ): Promise<void> {\n await this.apiClient.account.createDelegation(delegationRequest);\n }\n}\n","import type { OtimServerClientContext } from \"../../context\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { PublicClient } from \"viem\";\n\nimport { createWalletClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nimport { isApiAccountConfig } from \"../../account\";\nimport {\n ApiKeyClientSigningService,\n ServerWalletSigningService,\n UnifiedPaymentSigner,\n} from \"../../signing\";\n\nexport interface CreateSettlementSignerParams {\n context: OtimServerClientContext;\n buildResponse: PaymentResponseWithActionNames;\n publicClient: PublicClient;\n delegateAddressMap: Map<number, Address>;\n}\n\ntype CreateSettlementSignerResult = Awaited<\n ReturnType<UnifiedPaymentSigner[\"signAll\"]>\n>;\n\nexport async function createSettlementSigner(\n params: CreateSettlementSignerParams,\n): Promise<CreateSettlementSignerResult> {\n const { context, buildResponse, publicClient, delegateAddressMap } = params;\n\n if (isApiAccountConfig(context.config)) {\n const signingService = new ApiKeyClientSigningService(\n context.config.publicKey,\n context.config.privateKey,\n );\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n }\n\n const account = privateKeyToAccount(context.config.privateKey);\n const walletClient = createWalletClient({\n account,\n transport: http(),\n });\n\n const signingService =\n ServerWalletSigningService.fromViemWallet(walletClient);\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimServerClientContext } from \"@otim/sdk-core/context\";\nimport type {\n APIClient,\n BuildSettlementRequest,\n GetPaymentRequestsRequest,\n GetPaymentRequestsResponse,\n PaginatedServiceResponse,\n PaymentRequestBuildRequest,\n PaymentRequestDetailsRequest,\n PaymentRequestDetailsResponse,\n ServiceResponse,\n} from \"@otim/utils/api\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { Chain, PublicClient } from \"viem\";\n\nimport { getChainById } from \"@otim/utils/chains\";\nimport {\n addActionNamesToInstructions,\n extractActionNamesMap,\n} from \"@otim/utils/payments\";\nimport { hexStringSchema } from \"@otim/utils/schemas\";\nimport { createPublicClient, http } from \"viem\";\n\nimport { assertServerContext } from \"@otim/sdk-core/context\";\n\nimport { createSettlementSigner } from \"./helpers/settlement-signer\";\n\nexport interface CreateSettlementResponse {\n requestId: string;\n ephemeralWalletAddress: Address;\n}\n\nexport interface CreateRawConfig {\n settlementChainId: number;\n activate?: boolean;\n}\n\ntype SettlementInstruction =\n PaymentResponseWithActionNames[\"completionInstructions\"][number];\n\n/**\n * Extracts the settlement chain ID from a BuildSettlementRequest.\n * Handles all settlement types: regular, vault deposit, and vault withdraw.\n */\nfunction extractSettlementChainId(request: BuildSettlementRequest): number {\n const { params } = request;\n\n if (\"settlement\" in params) {\n return params.settlement.settlementChainId;\n }\n\n if (\"settlementVaultDeposit\" in params) {\n return params.settlementVaultDeposit.vaultChainId;\n }\n\n if (\"vaultWithdrawSettlement\" in params) {\n return params.vaultWithdrawSettlement.settlementChainId;\n }\n\n if (\"vaultMigrate\" in params) {\n return params.vaultMigrate.destVaultChainId;\n }\n\n throw new Error(\"Unknown settlement type\");\n}\n\nexport class OrchestrationClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimServerClientContext,\n ) {}\n\n async create(\n settlementRequest: BuildSettlementRequest,\n ): Promise<CreateSettlementResponse> {\n assertServerContext(this.context);\n\n const response =\n await this.apiClient.payments.buildSettlementOrchestration(\n settlementRequest,\n );\n const buildResponse = response.data;\n\n const settlementChainId = extractSettlementChainId(settlementRequest);\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async createRaw(\n payload: PaymentRequestBuildRequest,\n config: CreateRawConfig,\n ): Promise<CreateSettlementResponse | PaymentResponseWithActionNames> {\n assertServerContext(this.context);\n\n const { settlementChainId, activate = true } = config;\n const buildResponse = await this.buildAndEnhanceSettlement(payload);\n\n if (!activate) {\n return buildResponse;\n }\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async getDetails(\n request: PaymentRequestDetailsRequest,\n ): Promise<ServiceResponse<PaymentRequestDetailsResponse>> {\n return this.apiClient.payments.getPaymentRequestDetails(request);\n }\n\n async list(\n request: GetPaymentRequestsRequest,\n ): Promise<PaginatedServiceResponse<GetPaymentRequestsResponse>> {\n return this.apiClient.payments.getPaymentRequests(request);\n }\n\n private async activate(\n buildResponse: PaymentResponseWithActionNames,\n settlementChainId: number,\n ): Promise<void> {\n const publicClient = this.createPublicClient(settlementChainId);\n\n const instructions = [\n ...buildResponse.completionInstructions,\n ...buildResponse.instructions,\n ];\n\n const delegateAddressMap = await this.fetchDelegateAddresses(instructions);\n\n const {\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n } = await createSettlementSigner({\n context: this.context,\n buildResponse,\n publicClient,\n delegateAddressMap,\n });\n\n await this.apiClient.payments.newPaymentRequest({\n requestId: buildResponse.requestId,\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n });\n }\n\n private async buildAndEnhanceSettlement(\n payload: PaymentRequestBuildRequest,\n ): Promise<PaymentResponseWithActionNames> {\n const actionNames = extractActionNamesMap(\n payload.completionInstructions,\n payload.instructions,\n );\n\n const response = await this.apiClient.payments.buildPaymentRequest(payload);\n\n return addActionNamesToInstructions(response.data, actionNames);\n }\n\n private createPublicClient(chainId: number): PublicClient {\n const chain = getChainById(chainId);\n if (!chain) {\n throw new Error(`Chain with id ${chainId} not found`);\n }\n\n return createPublicClient({ chain: chain as Chain, transport: http() });\n }\n\n private async fetchDelegateAddresses(\n instructions: SettlementInstruction[],\n ): Promise<Map<number, Address>> {\n const chainIds = Array.from(\n new Set(instructions.map((instruction) => instruction.chainId)),\n );\n\n const addresses = await Promise.all(\n chainIds.map(async (chainId) => {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n const address = hexStringSchema.parse(\n response.data.otimDelegateAddress,\n );\n return [chainId, address] as const;\n }),\n );\n\n return new Map(addresses);\n }\n}\n","import type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nexport type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n};\n\nexport interface PrepareSettlementParams {\n amount: bigint;\n chainId: SupportedChainId;\n recipient: Address;\n token: Address;\n acceptedTokens: Record<number, Address[]>;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\nexport function prepareSettlement(\n params: PrepareSettlementParams,\n): BuildSettlementRequest {\n const {\n chainId,\n token,\n acceptedTokens,\n recipient,\n amount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount,\n recipient,\n token,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlement: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n settlementChainId: chainId,\n settlementToken: token,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n settlementAmount: toHex(amount),\n recipientAddress: recipient,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultWithdrawSettlementParams };\n\nexport interface PrepareVaultWithdrawSettlementParams {\n vaultAddress: Address;\n vaultChainId: SupportedChainId;\n settlementChainId: SupportedChainId;\n settlementToken: Address;\n recipientAddress: Address;\n withdrawAmount: bigint;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\nexport function prepareVaultWithdrawSettlement(\n params: PrepareVaultWithdrawSettlementParams,\n): BuildSettlementRequest {\n const {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n withdrawAmount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: settlementToken,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultWithdrawSettlement: {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n SettlementVaultDepositParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { SettlementVaultDepositParams };\n\nexport interface PrepareVaultDepositSettlementParams {\n /** Map of chain IDs to accepted token addresses for payment */\n acceptedTokens: Record<number, Address[]>;\n /** Chain ID where the vault is deployed */\n vaultChainId: SupportedChainId;\n /** ERC4626 vault address to deposit into */\n vaultAddress: Address;\n /** Optional: the underlying token of the vault (used only for metadata, not sent to API) */\n vaultUnderlyingToken?: Address;\n /** Amount to deposit in the vault's underlying token units */\n depositAmount: bigint;\n /** Address that will receive the vault shares */\n recipientAddress: Address;\n /** Minimum total shares required for the deposit to succeed */\n vaultMinTotalShares: bigint;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\n/**\n * Prepares a vault deposit settlement request.\n *\n * This creates a settlement that deposits funds into an ERC4626 vault.\n * Funds can be collected from multiple chains (via acceptedTokens) and\n * deposited into the vault on the specified chain.\n *\n * @param params - The vault deposit settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultDepositSettlement(\n params: PrepareVaultDepositSettlementParams,\n): BuildSettlementRequest {\n const {\n acceptedTokens,\n vaultChainId,\n vaultAddress,\n vaultUnderlyingToken,\n depositAmount,\n recipientAddress,\n vaultMinTotalShares,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: depositAmount,\n recipient: recipientAddress,\n token: vaultUnderlyingToken ?? vaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlementVaultDeposit: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n vaultChainId,\n vaultAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n depositAmount: toHex(depositAmount),\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n vaultMinTotalShares: toHex(vaultMinTotalShares),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultMigrateParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultMigrateParams };\n\nexport interface PrepareVaultMigrateSettlementParams {\n /** Source vault address to withdraw from */\n sourceVaultAddress: Address;\n /** Optional: the underlying token of the source vault (used only for metadata, not sent to API) */\n sourceVaultUnderlyingToken?: Address;\n /** Chain ID where the source vault is deployed */\n sourceVaultChainId: SupportedChainId;\n /** Amount to withdraw from the source vault in underlying token units */\n withdrawAmount: bigint;\n /** Destination vault address to deposit into */\n destVaultAddress: Address;\n /** Optional: the underlying token of the destination vault (used only for metadata, not sent to API) */\n destVaultUnderlyingToken?: Address;\n /** Chain ID where the destination vault is deployed */\n destVaultChainId: SupportedChainId;\n /** Minimum total shares required for the deposit to succeed */\n destVaultMinTotalShares: bigint;\n /** Address that will receive the destination vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Prepares a vault migrate settlement request.\n *\n * This creates a settlement that migrates funds between two ERC4626 vaults.\n * Funds are withdrawn from the source vault and deposited into the destination\n * vault, which can be on the same chain or a different chain (cross-chain migration).\n *\n * @param params - The vault migrate settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultMigrateSettlement(\n params: PrepareVaultMigrateSettlementParams,\n): BuildSettlementRequest {\n const {\n sourceVaultAddress,\n sourceVaultChainId,\n withdrawAmount,\n destVaultAddress,\n destVaultUnderlyingToken,\n destVaultChainId,\n destVaultMinTotalShares,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: destVaultUnderlyingToken ?? destVaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultMigrate: {\n sourceVaultAddress,\n sourceVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n destVaultAddress,\n destVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n destVaultMinTotalShares: toHex(destVaultMinTotalShares),\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clients-Dkt56jVn.mjs","names":["apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimClientContext","apiClient: APIClient","apiClient: APIClient","apiClient: APIClient","account: OtimAccount","context: OtimServerClientContext","getDefaultDueDate","buildMetadataFromParams","convertAcceptedTokensToStringKeys","result: Record<string, Address[]>","getDefaultDueDate","buildMetadataFromParams","getDefaultDueDate","buildMetadataFromParams","result: Record<string, Address[]>"],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/helpers/settlement-signer.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts"],"sourcesContent":["import type {\n APIClient,\n GetInstructionActivityRequest,\n GetInstructionActivityResponse,\n} from \"@otim/utils/api\";\n\nexport class ActivityClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getInstructionActivity(\n request: GetInstructionActivityRequest,\n ): Promise<GetInstructionActivityResponse> {\n const response =\n await this.apiClient.activity.getInstructionActivity(request);\n\n return response.data;\n }\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimClientContext } from \"@otim/sdk-core/context\";\nimport type { APIClient, AuthLoginResponse, MeResponse } from \"@otim/utils/api\";\nimport type { Address } from \"viem\";\n\nimport { parseSignatureToVRS } from \"@otim/utils/helpers\";\n\nimport { createLoginSiweMessage } from \"@otim/sdk-core/config\";\nimport { assertRequiresAuth } from \"@otim/sdk-core/context\";\n\nexport interface LoginOptions {\n address: Address;\n}\n\nexport class AuthClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimClientContext,\n ) {}\n\n async login({ address }: LoginOptions): Promise<AuthLoginResponse> {\n assertRequiresAuth(this.context);\n\n const message = createLoginSiweMessage(address, Date.now().toString());\n const signature = await this.account.signMessage({ message });\n const vrsParsedSignature = parseSignatureToVRS(signature);\n\n const response = await this.apiClient.auth.login({\n siwe: message,\n signature: vrsParsedSignature,\n });\n\n return response.data;\n }\n\n async getCurrentUser(): Promise<MeResponse> {\n const response = await this.apiClient.auth.me();\n return response.data;\n }\n}\n","import type {\n APIClient,\n GetMaxPriorityFeePerGasEstimateRequest,\n GetMaxPriorityFeePerGasEstimateResponse,\n} from \"@otim/utils/api\";\n\nexport class ConfigClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getMaxPriorityFeeEstimate({\n chainId,\n }: GetMaxPriorityFeePerGasEstimateRequest): Promise<GetMaxPriorityFeePerGasEstimateResponse> {\n const response =\n await this.apiClient.config.getMaxPriorityFeePerGasEstimate({ chainId });\n\n return response.data;\n }\n}\n","import type {\n APIClient,\n DelegationCreateRequest,\n DelegationStatusRequest,\n DelegationStatusResponse,\n GetDelegateAddressRequest,\n GetDelegateAddressResponse,\n} from \"@otim/utils/api\";\n\nexport class DelegationClient {\n constructor(private readonly apiClient: APIClient) {}\n\n async getDelegateAddress({\n chainId,\n }: GetDelegateAddressRequest): Promise<GetDelegateAddressResponse> {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n\n return response.data;\n }\n\n async getDelegationStatus(\n options: DelegationStatusRequest,\n ): Promise<DelegationStatusResponse> {\n const response = await this.apiClient.account.getDelegationStatus({\n address: options.address,\n chainId: options.chainId,\n });\n\n return response.data;\n }\n\n async createDelegation(\n delegationRequest: DelegationCreateRequest,\n ): Promise<void> {\n await this.apiClient.account.createDelegation(delegationRequest);\n }\n}\n","import type { OtimServerClientContext } from \"../../context\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { PublicClient } from \"viem\";\n\nimport { createWalletClient, http } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nimport { isApiAccountConfig } from \"../../account\";\nimport {\n ApiKeyClientSigningService,\n ServerWalletSigningService,\n UnifiedPaymentSigner,\n} from \"../../signing\";\n\nexport interface CreateSettlementSignerParams {\n context: OtimServerClientContext;\n buildResponse: PaymentResponseWithActionNames;\n publicClient: PublicClient;\n delegateAddressMap: Map<number, Address>;\n}\n\ntype CreateSettlementSignerResult = Awaited<\n ReturnType<UnifiedPaymentSigner[\"signAll\"]>\n>;\n\nexport async function createSettlementSigner(\n params: CreateSettlementSignerParams,\n): Promise<CreateSettlementSignerResult> {\n const { context, buildResponse, publicClient, delegateAddressMap } = params;\n\n if (isApiAccountConfig(context.config)) {\n const signingService = new ApiKeyClientSigningService(\n context.config.publicKey,\n context.config.privateKey,\n );\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n }\n\n const account = privateKeyToAccount(context.config.privateKey);\n const walletClient = createWalletClient({\n account,\n transport: http(),\n });\n\n const signingService =\n ServerWalletSigningService.fromViemWallet(walletClient);\n\n const signer = new UnifiedPaymentSigner({\n buildResponse,\n signingService,\n publicClient,\n delegateAddressMap,\n });\n\n return signer.signAll();\n}\n","import type { OtimAccount } from \"@otim/sdk-core/account\";\nimport type { OtimServerClientContext } from \"@otim/sdk-core/context\";\nimport type {\n APIClient,\n BuildSettlementRequest,\n GetPaymentRequestsRequest,\n GetPaymentRequestsResponse,\n PaginatedServiceResponse,\n PaymentRequestBuildRequest,\n PaymentRequestDetailsRequest,\n PaymentRequestDetailsResponse,\n ServiceResponse,\n} from \"@otim/utils/api\";\nimport type { PaymentResponseWithActionNames } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\nimport type { Chain, PublicClient } from \"viem\";\n\nimport { getChainById } from \"@otim/utils/chains\";\nimport {\n addActionNamesToInstructions,\n extractActionNamesMap,\n} from \"@otim/utils/payments\";\nimport { hexStringSchema } from \"@otim/utils/schemas\";\nimport { createPublicClient, http } from \"viem\";\n\nimport { assertServerContext } from \"@otim/sdk-core/context\";\n\nimport { createSettlementSigner } from \"./helpers/settlement-signer\";\n\nexport interface CreateSettlementResponse {\n requestId: string;\n ephemeralWalletAddress: Address;\n}\n\nexport interface CreateRawConfig {\n settlementChainId: number;\n activate?: boolean;\n}\n\ntype SettlementInstruction =\n PaymentResponseWithActionNames[\"completionInstructions\"][number];\n\n/**\n * Extracts the settlement chain ID from a BuildSettlementRequest.\n * Handles all settlement types: regular, vault deposit, and vault withdraw.\n */\nfunction extractSettlementChainId(request: BuildSettlementRequest): number {\n const { params } = request;\n\n if (\"settlement\" in params) {\n return params.settlement.settlementChainId;\n }\n\n if (\"settlementVaultDeposit\" in params) {\n return params.settlementVaultDeposit.vaultChainId;\n }\n\n if (\"vaultWithdrawSettlement\" in params) {\n return params.vaultWithdrawSettlement.settlementChainId;\n }\n\n if (\"vaultMigrate\" in params) {\n return params.vaultMigrate.destVaultChainId;\n }\n\n throw new Error(\"Unknown settlement type\");\n}\n\nexport class OrchestrationClient {\n constructor(\n private readonly apiClient: APIClient,\n private readonly account: OtimAccount,\n private readonly context: OtimServerClientContext,\n ) {}\n\n async create(\n settlementRequest: BuildSettlementRequest,\n ): Promise<CreateSettlementResponse> {\n assertServerContext(this.context);\n\n const response =\n await this.apiClient.payments.buildSettlementOrchestration(\n settlementRequest,\n );\n const buildResponse = response.data;\n\n const settlementChainId = extractSettlementChainId(settlementRequest);\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async createRaw(\n payload: PaymentRequestBuildRequest,\n config: CreateRawConfig,\n ): Promise<CreateSettlementResponse | PaymentResponseWithActionNames> {\n assertServerContext(this.context);\n\n const { settlementChainId, activate = true } = config;\n const buildResponse = await this.buildAndEnhanceSettlement(payload);\n\n if (!activate) {\n return buildResponse;\n }\n\n await this.activate(buildResponse, settlementChainId);\n\n return {\n requestId: buildResponse.requestId,\n ephemeralWalletAddress: buildResponse.ephemeralWalletAddress,\n };\n }\n\n async getDetails(\n request: PaymentRequestDetailsRequest,\n ): Promise<ServiceResponse<PaymentRequestDetailsResponse>> {\n return this.apiClient.payments.getPaymentRequestDetails(request);\n }\n\n async list(\n request: GetPaymentRequestsRequest,\n ): Promise<PaginatedServiceResponse<GetPaymentRequestsResponse>> {\n return this.apiClient.payments.getPaymentRequests(request);\n }\n\n private async activate(\n buildResponse: PaymentResponseWithActionNames,\n settlementChainId: number,\n ): Promise<void> {\n const publicClient = this.createPublicClient(settlementChainId);\n\n const instructions = [\n ...buildResponse.completionInstructions,\n ...buildResponse.instructions,\n ];\n\n const delegateAddressMap = await this.fetchDelegateAddresses(instructions);\n\n const {\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n } = await createSettlementSigner({\n context: this.context,\n buildResponse,\n publicClient,\n delegateAddressMap,\n });\n\n await this.apiClient.payments.newPaymentRequest({\n requestId: buildResponse.requestId,\n signedAuthorization,\n completionInstructions,\n instructions: signedInstructions,\n });\n }\n\n private async buildAndEnhanceSettlement(\n payload: PaymentRequestBuildRequest,\n ): Promise<PaymentResponseWithActionNames> {\n const actionNames = extractActionNamesMap(\n payload.completionInstructions,\n payload.instructions,\n );\n\n const response = await this.apiClient.payments.buildPaymentRequest(payload);\n\n return addActionNamesToInstructions(response.data, actionNames);\n }\n\n private createPublicClient(chainId: number): PublicClient {\n const chain = getChainById(chainId);\n if (!chain) {\n throw new Error(`Chain with id ${chainId} not found`);\n }\n\n return createPublicClient({ chain: chain as Chain, transport: http() });\n }\n\n private async fetchDelegateAddresses(\n instructions: SettlementInstruction[],\n ): Promise<Map<number, Address>> {\n const chainIds = Array.from(\n new Set(instructions.map((instruction) => instruction.chainId)),\n );\n\n const addresses = await Promise.all(\n chainIds.map(async (chainId) => {\n const response = await this.apiClient.config.getDelegateAddress({\n chainId,\n });\n const address = hexStringSchema.parse(\n response.data.otimDelegateAddress,\n );\n return [chainId, address] as const;\n }),\n );\n\n return new Map(addresses);\n }\n}\n","import type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nexport type {\n BuildSettlementRequest,\n OrchestrationParams,\n SettlementParams,\n VaultWithdrawSettlementParams,\n};\n\nexport interface PrepareSettlementParams {\n amount: bigint;\n chainId: SupportedChainId;\n recipient: Address;\n token: Address;\n acceptedTokens: Record<number, Address[]>;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\nexport function prepareSettlement(\n params: PrepareSettlementParams,\n): BuildSettlementRequest {\n const {\n chainId,\n token,\n acceptedTokens,\n recipient,\n amount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount,\n recipient,\n token,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlement: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n settlementChainId: chainId,\n settlementToken: token,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n settlementAmount: toHex(amount),\n recipientAddress: recipient,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultWithdrawSettlementParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultWithdrawSettlementParams };\n\nexport interface PrepareVaultWithdrawSettlementParams {\n vaultAddress: Address;\n vaultChainId: SupportedChainId;\n settlementChainId: SupportedChainId;\n settlementToken: Address;\n recipientAddress: Address;\n withdrawAmount: bigint;\n payer?: Nullable<Address>;\n dueDate?: string;\n metadata?: PaymentRequestMetadata;\n note?: string;\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\nexport function prepareVaultWithdrawSettlement(\n params: PrepareVaultWithdrawSettlementParams,\n): BuildSettlementRequest {\n const {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n withdrawAmount,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: settlementToken,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultWithdrawSettlement: {\n vaultAddress,\n vaultChainId,\n settlementChainId,\n settlementToken,\n recipientAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n SettlementVaultDepositParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { SettlementVaultDepositParams };\n\nexport interface PrepareVaultDepositSettlementParams {\n /** Map of chain IDs to accepted token addresses for payment */\n acceptedTokens: Record<number, Address[]>;\n /** Chain ID where the vault is deployed */\n vaultChainId: SupportedChainId;\n /** ERC4626 vault address to deposit into */\n vaultAddress: Address;\n /** Optional: the underlying token of the vault (used only for metadata, not sent to API) */\n vaultUnderlyingToken?: Address;\n /** Amount to deposit in the vault's underlying token units */\n depositAmount: bigint;\n /** Address that will receive the vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Converts acceptedTokens from Record<number, Address[]> to Record<string,\n * Address[]> as required by the API schema.\n */\nfunction convertAcceptedTokensToStringKeys(\n acceptedTokens: Record<number, Address[]>,\n): Record<string, Address[]> {\n const result: Record<string, Address[]> = {};\n for (const [chainId, tokens] of Object.entries(acceptedTokens)) {\n result[String(chainId)] = tokens;\n }\n return result;\n}\n\n/**\n * Prepares a vault deposit settlement request.\n *\n * This creates a settlement that deposits funds into an ERC4626 vault.\n * Funds can be collected from multiple chains (via acceptedTokens) and\n * deposited into the vault on the specified chain.\n *\n * @param params - The vault deposit settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultDepositSettlement(\n params: PrepareVaultDepositSettlementParams,\n): BuildSettlementRequest {\n const {\n acceptedTokens,\n vaultChainId,\n vaultAddress,\n vaultUnderlyingToken,\n depositAmount,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: depositAmount,\n recipient: recipientAddress,\n token: vaultUnderlyingToken ?? vaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n settlementVaultDeposit: {\n acceptedTokens: convertAcceptedTokensToStringKeys(acceptedTokens),\n vaultChainId,\n vaultAddress,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n depositAmount: toHex(depositAmount),\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n","import type {\n BuildSettlementRequest,\n VaultMigrateParams,\n} from \"@otim/utils/api\";\nimport type { SupportedChainId } from \"@otim/utils/chains\";\nimport type { Nullable } from \"@otim/utils/helpers\";\nimport type { PaymentRequestMetadata } from \"@otim/utils/payments\";\nimport type { Address } from \"@otim/utils/schemas\";\n\nimport { validateIso8601Date } from \"@otim/utils/helpers\";\nimport { buildPaymentMetadata } from \"@otim/utils/payments\";\nimport { toHex } from \"viem\";\n\nexport type { VaultMigrateParams };\n\nexport interface PrepareVaultMigrateSettlementParams {\n /** Source vault address to withdraw from */\n sourceVaultAddress: Address;\n /** Optional: the underlying token of the source vault (used only for metadata, not sent to API) */\n sourceVaultUnderlyingToken?: Address;\n /** Chain ID where the source vault is deployed */\n sourceVaultChainId: SupportedChainId;\n /** Amount to withdraw from the source vault in underlying token units */\n withdrawAmount: bigint;\n /** Destination vault address to deposit into */\n destVaultAddress: Address;\n /** Optional: the underlying token of the destination vault (used only for metadata, not sent to API) */\n destVaultUnderlyingToken?: Address;\n /** Chain ID where the destination vault is deployed */\n destVaultChainId: SupportedChainId;\n /** Address that will receive the destination vault shares */\n recipientAddress: Address;\n /** Optional payer address */\n payer?: Nullable<Address>;\n /** Optional due date in ISO 8601 format */\n dueDate?: string;\n /** Optional custom metadata */\n metadata?: PaymentRequestMetadata;\n /** Optional note for the settlement */\n note?: string;\n /** Optional maximum number of execution runs */\n maxRuns?: number;\n}\n\n/**\n * Generates a default due date 30 days from now.\n * This is a standard payment term when no due date is specified.\n */\nfunction getDefaultDueDate(): string {\n const date = new Date();\n date.setDate(date.getDate() + 30);\n return date.toISOString();\n}\n\nfunction buildMetadataFromParams(params: {\n amount: bigint;\n recipient: Address;\n token: Address;\n note?: string;\n dueDate?: string;\n payer?: Address;\n customMetadata?: PaymentRequestMetadata;\n}): PaymentRequestMetadata {\n const { amount, recipient, token, note, dueDate, payer, customMetadata } =\n params;\n\n /* Convert from smallest token units to USD */\n const amountInUSD = Number(amount) / 1_000_000;\n\n const baseMetadata = buildPaymentMetadata({\n tokenSymbol: \"\",\n amountInUSD,\n fromAccountAddress: recipient,\n note,\n payer: { name: \"\", address: payer ?? recipient },\n dueDate: dueDate || getDefaultDueDate(),\n });\n\n const metadataWithToken = {\n ...baseMetadata,\n token,\n source: \"Manual\" as const,\n type: \"PaymentRequest\" as const,\n };\n\n return customMetadata\n ? { ...metadataWithToken, ...customMetadata }\n : metadataWithToken;\n}\n\n/**\n * Prepares a vault migrate settlement request.\n *\n * This creates a settlement that migrates funds between two ERC4626 vaults.\n * Funds are withdrawn from the source vault and deposited into the destination\n * vault, which can be on the same chain or a different chain (cross-chain migration).\n *\n * @param params - The vault migrate settlement parameters\n * @returns A BuildSettlementRequest ready to be sent to the API\n */\nexport function prepareVaultMigrateSettlement(\n params: PrepareVaultMigrateSettlementParams,\n): BuildSettlementRequest {\n const {\n sourceVaultAddress,\n sourceVaultChainId,\n withdrawAmount,\n destVaultAddress,\n destVaultUnderlyingToken,\n destVaultChainId,\n recipientAddress,\n payer,\n note,\n dueDate,\n metadata: customMetadata,\n maxRuns,\n } = params;\n\n if (dueDate) {\n validateIso8601Date(dueDate);\n }\n\n const metadata = buildMetadataFromParams({\n amount: withdrawAmount,\n recipient: recipientAddress,\n token: destVaultUnderlyingToken ?? destVaultAddress,\n note,\n dueDate,\n payer: payer ?? undefined,\n customMetadata,\n });\n\n return {\n params: {\n vaultMigrate: {\n sourceVaultAddress,\n sourceVaultChainId,\n // @ts-expect-error -- TODO: fix this once we have the correct type definitions in @otim/utils\n withdrawAmount: toHex(withdrawAmount),\n destVaultAddress,\n destVaultChainId,\n recipientAddress,\n },\n },\n payerAddress: payer ?? null,\n metadata,\n dueDate: dueDate ?? null,\n maxRuns: maxRuns ?? null,\n };\n}\n"],"mappings":"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"}
|
|
@@ -120,8 +120,6 @@ interface PrepareVaultDepositSettlementParams {
|
|
|
120
120
|
depositAmount: bigint;
|
|
121
121
|
/** Address that will receive the vault shares */
|
|
122
122
|
recipientAddress: Address;
|
|
123
|
-
/** Minimum total shares required for the deposit to succeed */
|
|
124
|
-
vaultMinTotalShares: bigint;
|
|
125
123
|
/** Optional payer address */
|
|
126
124
|
payer?: Nullable<Address>;
|
|
127
125
|
/** Optional due date in ISO 8601 format */
|
|
@@ -161,8 +159,6 @@ interface PrepareVaultMigrateSettlementParams {
|
|
|
161
159
|
destVaultUnderlyingToken?: Address;
|
|
162
160
|
/** Chain ID where the destination vault is deployed */
|
|
163
161
|
destVaultChainId: SupportedChainId;
|
|
164
|
-
/** Minimum total shares required for the deposit to succeed */
|
|
165
|
-
destVaultMinTotalShares: bigint;
|
|
166
162
|
/** Address that will receive the destination vault shares */
|
|
167
163
|
recipientAddress: Address;
|
|
168
164
|
/** Optional payer address */
|
|
@@ -199,4 +195,4 @@ type CreateSettlementSignerResult = Awaited<ReturnType<UnifiedPaymentSigner["sig
|
|
|
199
195
|
declare function createSettlementSigner(params: CreateSettlementSignerParams): Promise<CreateSettlementSignerResult>;
|
|
200
196
|
//#endregion
|
|
201
197
|
export { ActivityClient as C, LoginOptions as S, CreateSettlementResponse as _, prepareVaultMigrateSettlement as a, ConfigClient as b, prepareVaultDepositSettlement as c, BuildSettlementRequest$1 as d, OrchestrationParams as f, CreateRawConfig as g, prepareSettlement as h, VaultMigrateParams as i, PrepareVaultWithdrawSettlementParams as l, SettlementParams as m, createSettlementSigner as n, PrepareVaultDepositSettlementParams as o, PrepareSettlementParams as p, PrepareVaultMigrateSettlementParams as r, SettlementVaultDepositParams as s, CreateSettlementSignerParams as t, prepareVaultWithdrawSettlement as u, OrchestrationClient as v, AuthClient as x, DelegationClient as y };
|
|
202
|
-
//# sourceMappingURL=index-
|
|
198
|
+
//# sourceMappingURL=index-CT89rCH1.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CT89rCH1.d.mts","names":[],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts","../src/clients/helpers/settlement-signer.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cAMa,cAAA;;yBAC6B;kCAG7B,gCACR,QAAQ;;;;UCDI,YAAA;WACN;;cAGE,UAAA;;;;yBAEmB,oBACF,sBACA;EDZjB,KAAA,CAAA;IAAA;EAAc,CAAA,ECeA,YDfA,CAAA,ECee,ODff,CCeuB,iBDfvB,CAAA;EACe,cAAA,CAAA,CAAA,EC6BhB,OD7BgB,CC6BR,UD7BQ,CAAA;;;;cED7B,YAAA;;yBAC6B;;;KAIrC,yCAAyC,QAAQ;;;;cCFzC,gBAAA;;yBAC6B;;;KAIrC,4BAA4B,QAAQ;+BAS5B,0BACR,QAAQ;sCAUU,0BAClB;;;;UCNY,wBAAA;;0BAES;;UAGT,eAAA;;;AJ5BjB;AAC0C,cI6D7B,mBAAA,CJ7D6B;EAG7B,iBAAA,SAAA;EACA,iBAAA,OAAA;EAAR,iBAAA,OAAA;EAAO,WAAA,CAAA,SAAA,EI2DoB,SJ3DpB,EAAA,OAAA,EI4DkB,WJ5DlB,EAAA,OAAA,EI6DkB,uBJ7DlB;4BIiEW,yBAClB,QAAQ;qBAoBA,oCACD,kBACP,QAAQ,2BAA2B;sBAmB3B,+BACR,QAAQ,gBAAgB;EH7GZ,IAAA,CAAA,OAAA,EGkHJ,yBHjHK,CAAA,EGkHb,OHlHa,CGkHL,wBHlHK,CGkHoB,0BHlHpB,CAAA,CAAA;EAGL,QAAA,QAAU;EAES,QAAA,yBAAA;EACF,QAAA,kBAAA;EACA,QAAA,sBAAA;;;;UIcb,uBAAA;;WAEN;aACE;SACJ;kBACS,eAAe;EL/BpB,KAAA,CAAA,EKgCH,QLhCG,CKgCM,OLhCQ,CAAA;EACe,OAAA,CAAA,EAAA,MAAA;EAG7B,QAAA,CAAA,EK8BA,sBL9BA;EACA,IAAA,CAAA,EAAA,MAAA;EAAR,OAAA,CAAA,EAAA,MAAA;;iBKoFW,iBAAA,SACN,0BACP;;;UClFc,oCAAA;gBACD;gBACA;qBACK;mBACF;oBACC;ENdP,cAAA,EAAA,MAAc;EACe,KAAA,CAAA,EMehC,QNfgC,CMevB,ONfuB,CAAA;EAG7B,OAAA,CAAA,EAAA,MAAA;EACA,QAAA,CAAA,EMaA,sBNbA;EAAR,IAAA,CAAA,EAAA,MAAA;EAAO,OAAA,CAAA,EAAA,MAAA;;iBMgEI,8BAAA,SACN,uCACP;;;UC9Dc,mCAAA;;kBAEC,eAAe;;gBAEjB;;EPbH,YAAA,EOeG,OPfW;EACe;EAG7B,oBAAA,CAAA,EOaY,OPbZ;EACA;EAAR,aAAA,EAAA,MAAA;EAAO;oBOgBQ;;UAEV,SAAS;ENnBF;EAIJ,OAAA,CAAA,EAAA,MAAU;EAES;EACF,QAAA,CAAA,EMgBjB,sBNhBiB;EACA;EAGd,IAAA,CAAA,EAAA,MAAA;EAAW;EAAuB,OAAA,CAAA,EAAA,MAAA;;;;;;;;ACflD;;;;AAKsD,iBKmGtC,6BAAA,CLnGsC,MAAA,EKoG5C,mCLpG4C,CAAA,EKqGnD,sBLrGmD;;;UMIrC,mCAAA;;sBAEK;;+BAES;;ERblB,kBAAc,EQeL,gBRfK;EACe;EAG7B,cAAA,EAAA,MAAA;EACA;EAAR,gBAAA,EQce,ORdf;EAAO;6BQgBiB;;oBAET;EPnBH;EAIJ,gBAAU,EOiBH,OPjBG;EAES;EACF,KAAA,CAAA,EOgBpB,QPhBoB,COgBX,OPhBW,CAAA;EACA;EAGd,OAAA,CAAA,EAAA,MAAA;EAAW;EAAuB,QAAA,CAAA,EOgBrC,sBPhBqC;EAAR;EAeR,IAAA,CAAA,EAAA,MAAA;EAAR;EAAO,OAAA,CAAA,EAAA,MAAA;;;;AC9BjC;;;;;;;;iBM8FgB,6BAAA,SACN,sCACP;;;UCvFc,4BAAA;WACN;iBACM;gBACD;sBACM,YAAY;;KAG7B,4BAAA,GAA+B,QAClC,WAAW;ATjBA,iBSoBS,sBAAA,CTpBK,MAAA,ESqBjB,4BTrBiB,CAAA,ESsBxB,OTtBwB,CSsBhB,4BTtBgB,CAAA"}
|
|
@@ -120,8 +120,6 @@ interface PrepareVaultDepositSettlementParams {
|
|
|
120
120
|
depositAmount: bigint;
|
|
121
121
|
/** Address that will receive the vault shares */
|
|
122
122
|
recipientAddress: Address;
|
|
123
|
-
/** Minimum total shares required for the deposit to succeed */
|
|
124
|
-
vaultMinTotalShares: bigint;
|
|
125
123
|
/** Optional payer address */
|
|
126
124
|
payer?: Nullable<Address>;
|
|
127
125
|
/** Optional due date in ISO 8601 format */
|
|
@@ -161,8 +159,6 @@ interface PrepareVaultMigrateSettlementParams {
|
|
|
161
159
|
destVaultUnderlyingToken?: Address;
|
|
162
160
|
/** Chain ID where the destination vault is deployed */
|
|
163
161
|
destVaultChainId: SupportedChainId;
|
|
164
|
-
/** Minimum total shares required for the deposit to succeed */
|
|
165
|
-
destVaultMinTotalShares: bigint;
|
|
166
162
|
/** Address that will receive the destination vault shares */
|
|
167
163
|
recipientAddress: Address;
|
|
168
164
|
/** Optional payer address */
|
|
@@ -199,4 +195,4 @@ type CreateSettlementSignerResult = Awaited<ReturnType<UnifiedPaymentSigner["sig
|
|
|
199
195
|
declare function createSettlementSigner(params: CreateSettlementSignerParams): Promise<CreateSettlementSignerResult>;
|
|
200
196
|
//#endregion
|
|
201
197
|
export { ActivityClient as C, LoginOptions as S, CreateSettlementResponse as _, prepareVaultMigrateSettlement as a, ConfigClient as b, prepareVaultDepositSettlement as c, BuildSettlementRequest$1 as d, OrchestrationParams as f, CreateRawConfig as g, prepareSettlement as h, VaultMigrateParams as i, PrepareVaultWithdrawSettlementParams as l, SettlementParams as m, createSettlementSigner as n, PrepareVaultDepositSettlementParams as o, PrepareSettlementParams as p, PrepareVaultMigrateSettlementParams as r, SettlementVaultDepositParams as s, CreateSettlementSignerParams as t, prepareVaultWithdrawSettlement as u, OrchestrationClient as v, AuthClient as x, DelegationClient as y };
|
|
202
|
-
//# sourceMappingURL=index-
|
|
198
|
+
//# sourceMappingURL=index-Dclw8n-r.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Dclw8n-r.d.cts","names":[],"sources":["../src/clients/activity.ts","../src/clients/auth.ts","../src/clients/config.ts","../src/clients/delegation.ts","../src/clients/orchestration.ts","../src/clients/helpers/prepare-settlement.ts","../src/clients/helpers/prepare-vault-withdraw-settlement.ts","../src/clients/helpers/prepare-vault-deposit-settlement.ts","../src/clients/helpers/prepare-vault-migrate-settlement.ts","../src/clients/helpers/settlement-signer.ts"],"sourcesContent":[],"mappings":"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"}
|