@velora-dex/sdk
Version:
31 lines (26 loc) • 1.21 kB
text/typescript
import type { ConstructProviderFetchInput } from '../../types';
import { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';
import { constructGetSpender } from '../swap/spender';
export type ApproveTokenForOTCOrderFunctions<T> = {
/** @description approving AugustusRFQ as spender for makerAsset */
approveMakerTokenForOTCOrder: ApproveToken<T>;
/** @description approving AugustusRFQ as spender for takerAsset to call SDK.fillOrderDirectly */
approveTakerTokenForOTCOrder: ApproveToken<T>;
};
// returns whatever `contractCaller` returns
// to allow for better versatility
export const constructApproveTokenForOTCOrder = <T>(
options: ConstructProviderFetchInput<T, 'transactCall'>
): ApproveTokenForOTCOrderFunctions<T> => {
// getAugustusRFQ is cached internally for the same instance of SDK
// so should persist across same apiUrl & network
const { getAugustusRFQ } = constructGetSpender(options);
const approveTokenForOTCOrder: ApproveToken<T> = approveTokenMethodFactory<T>(
options.contractCaller,
getAugustusRFQ
);
return {
approveMakerTokenForOTCOrder: approveTokenForOTCOrder,
approveTakerTokenForOTCOrder: approveTokenForOTCOrder,
};
};