UNPKG

@velora-dex/sdk

Version:
31 lines (26 loc) 1.21 kB
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, }; };