From 37cce76e7231b4246e2ea8e4c8918691d2fc0c5e Mon Sep 17 00:00:00 2001 From: stas-kh Date: Fri, 20 Mar 2026 15:18:19 +0200 Subject: [PATCH 1/2] chore: adding global deso limit as a param in authorizeDerivedKeyAMM function --- src/transactions/amm.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/transactions/amm.ts b/src/transactions/amm.ts index 4f5c67b..925a926 100644 --- a/src/transactions/amm.ts +++ b/src/transactions/amm.ts @@ -253,21 +253,32 @@ export async function authorizeDerivedKeyAMM( BuyingDAOCoinCreatorPublicKey: string; SellingDAOCoinCreatorPublicKey: string; QuoteCurrencyPublicKey: string; - numSubOrders: number; + NumSubOrders: number; + /** + * When buying or selling raw DESO (i.e. QuoteCurrencyPublicKey === 'DESO'), + * set this to the total DESO amount (in nanos) that will be spent/received + * across all sub-orders so the derived key limit covers the full trade. + * Falls back to a hardcoded default when not provided. + */ + GlobalDESOLimitNanos?: number; } ) { const jwt = await identity.jwt(); const deriveResponse = await identity.derive( { GlobalDESOLimit: - payload.QuoteCurrencyPublicKey === 'DESO' ? 100000 * 1e9 : 1e9, + payload.GlobalDESOLimitNanos !== undefined + ? payload.GlobalDESOLimitNanos + : payload.QuoteCurrencyPublicKey === 'DESO' + ? 100000 * 1e9 + : 1e9, TransactionCountLimitMap: { AUTHORIZE_DERIVED_KEY: 1, // CREATE_USER_ASSOCIATION: payload.numSubOrders, // DAO_COIN_TRANSFER: payload.numSubOrders, // DAO_COIN_LIMIT_ORDER: payload.numSubOrders, ...(payload.QuoteCurrencyPublicKey === 'DESO' - ? { BASIC_TRANSFER: payload.numSubOrders * 4 } + ? { BASIC_TRANSFER: payload.NumSubOrders * 4 } : {}), }, AssociationLimitMap: [ @@ -277,12 +288,12 @@ export async function authorizeDerivedKeyAMM( AppScopeType: 'Any', AppPublicKeyBase58Check: '', AssociationOperation: 'Create', - OpCount: payload.numSubOrders, + OpCount: payload.NumSubOrders, }, ], DAOCoinLimitOrderLimitMap: { [payload.BuyingDAOCoinCreatorPublicKey]: { - [payload.SellingDAOCoinCreatorPublicKey]: payload.numSubOrders, + [payload.SellingDAOCoinCreatorPublicKey]: payload.NumSubOrders, }, }, ...(payload.QuoteCurrencyPublicKey === 'DESO' @@ -290,7 +301,7 @@ export async function authorizeDerivedKeyAMM( : { DAOCoinOperationLimitMap: { [payload.QuoteCurrencyPublicKey]: { - transfer: 4 * payload.numSubOrders, + transfer: 4 * payload.NumSubOrders, }, }, }), From 63c5e7abbefaff8c490400c93fe8689454ac6a8d Mon Sep 17 00:00:00 2001 From: stas-kh Date: Fri, 20 Mar 2026 15:50:30 +0200 Subject: [PATCH 2/2] chore: renaming numSubOrders back --- src/transactions/amm.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/transactions/amm.ts b/src/transactions/amm.ts index 925a926..49d125e 100644 --- a/src/transactions/amm.ts +++ b/src/transactions/amm.ts @@ -253,7 +253,7 @@ export async function authorizeDerivedKeyAMM( BuyingDAOCoinCreatorPublicKey: string; SellingDAOCoinCreatorPublicKey: string; QuoteCurrencyPublicKey: string; - NumSubOrders: number; + numSubOrders: number; /** * When buying or selling raw DESO (i.e. QuoteCurrencyPublicKey === 'DESO'), * set this to the total DESO amount (in nanos) that will be spent/received @@ -278,7 +278,7 @@ export async function authorizeDerivedKeyAMM( // DAO_COIN_TRANSFER: payload.numSubOrders, // DAO_COIN_LIMIT_ORDER: payload.numSubOrders, ...(payload.QuoteCurrencyPublicKey === 'DESO' - ? { BASIC_TRANSFER: payload.NumSubOrders * 4 } + ? { BASIC_TRANSFER: payload.numSubOrders * 4 } : {}), }, AssociationLimitMap: [ @@ -288,12 +288,12 @@ export async function authorizeDerivedKeyAMM( AppScopeType: 'Any', AppPublicKeyBase58Check: '', AssociationOperation: 'Create', - OpCount: payload.NumSubOrders, + OpCount: payload.numSubOrders, }, ], DAOCoinLimitOrderLimitMap: { [payload.BuyingDAOCoinCreatorPublicKey]: { - [payload.SellingDAOCoinCreatorPublicKey]: payload.NumSubOrders, + [payload.SellingDAOCoinCreatorPublicKey]: payload.numSubOrders, }, }, ...(payload.QuoteCurrencyPublicKey === 'DESO' @@ -301,7 +301,7 @@ export async function authorizeDerivedKeyAMM( : { DAOCoinOperationLimitMap: { [payload.QuoteCurrencyPublicKey]: { - transfer: 4 * payload.NumSubOrders, + transfer: 4 * payload.numSubOrders, }, }, }),