UNPKG

@paraswap/sdk

Version:
31 lines 2.92 kB
import type { AnyFunction, ConstructBaseInput, ConstructFetchInput, ConstructProviderFetchInput } from '../types'; import type { Merge, UnionToIntersection } from 'ts-essentials'; import type { ApproveTokenFunctions } from '../methods/swap/approve'; import type { CancelLimitOrderFunctions } from '../methods/limitOrders/cancelOrder'; import type { ApproveTokenForLimitOrderFunctions } from '../methods/limitOrders/approveForOrder'; import type { CancelNFTOrderFunctions } from '../methods/nftOrders/cancelOrder'; import type { ApproveTokenForNFTOrderFunctions } from '../methods/nftOrders/approveForOrder'; import type { FillOrderDirectlyFunctions } from '../methods/limitOrders/fillOrderDirectly'; import type { ApproveTokenForDeltaFunctions } from '../methods/delta/approveForDelta'; export type SDKConfig<TxResponse = any> = ConstructProviderFetchInput<TxResponse, 'staticCall' | 'transactCall' | 'signTypedDataCall'> & ConstructFetchInput; type SDKFunction<T extends ConstructBaseInput> = (config: T) => Record<string, AnyFunction | Record<string, AnyFunction>>; type IntersectionOfReturns<Funcs extends AnyFunction[]> = UnionToIntersection<ReturnType<Funcs[number]>>; type PartialSDKResult<Config extends ConstructBaseInput, Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]> = InferWithTxResponse<Config, Funcs>; type InferWithTxResponse<Config extends ConstructBaseInput, Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]> = Config extends SDKConfig<infer TxResponse> ? IntersectionOfReturns<Funcs> extends Record<string, any> ? MergeExtendableRecursively<IntersectionOfReturns<Funcs>, [ ApproveTokenFunctions<TxResponse>, CancelLimitOrderFunctions<TxResponse>, FillOrderDirectlyFunctions<TxResponse>, ApproveTokenForLimitOrderFunctions<TxResponse>, CancelNFTOrderFunctions<TxResponse>, ApproveTokenForNFTOrderFunctions<TxResponse>, ApproveTokenForDeltaFunctions<TxResponse> ]> : IntersectionOfReturns<Funcs> : IntersectionOfReturns<Funcs>; type MergeExtendableOnce<Accum extends Record<string, any>, Replacement extends Record<string, any>> = Accum extends Record<keyof Replacement, any> ? Merge<Accum, Replacement> : Accum; type MergeExtendableRecursively<Accum extends Record<string, any>, Replacements extends Record<string, any>[]> = Replacements extends [ head: infer Head extends Record<string, any>, ...tail: infer Tail ] ? Tail extends Record<string, any>[] ? MergeExtendableRecursively<MergeExtendableOnce<Accum, Head>, Tail> : MergeExtendableOnce<Accum, Head> : Accum; /** @description construct composable SDK with methods you choose yourself */ export declare const constructPartialSDK: <Config extends ConstructBaseInput, Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]>(config: Config, ...funcs: Funcs) => PartialSDKResult<Config, Funcs> & Required<ConstructBaseInput>; export {}; //# sourceMappingURL=partial.d.ts.map