@velora-dex/sdk 9.3.3-dev.1 → 9.3.3-dev.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.cjs.development.js","sources":["../src/constants.ts","../src/helpers/misc.ts","../src/methods/swap/spender.ts","../src/helpers/approve.ts","../src/methods/swap/approve.ts","../src/helpers/token.ts","../src/methods/swap/balance.ts","../src/methods/swap/adapters.ts","../src/methods/swap/helpers/normalizeRateOptions.ts","../src/methods/swap/rates.ts","../src/methods/swap/swapTx.ts","../src/methods/swap/token.ts","../src/methods/common/orders/buildOrderData.ts","../src/methods/common/orders/misc.ts","../src/methods/limitOrders/helpers/misc.ts","../src/methods/nftOrders/helpers/buildOrderData.ts","../src/methods/nftOrders/helpers/misc.ts","../src/methods/swap/transaction.ts","../src/methods/limitOrders/helpers/buildOrderData.ts","../src/methods/limitOrders/buildOrder.ts","../src/methods/limitOrders/signOrder.ts","../src/methods/limitOrders/cancelOrder.ts","../src/methods/common/orders/signature.ts","../src/methods/common/orders/encoding.ts","../src/methods/limitOrders/fillOrderDirectly.ts","../src/methods/limitOrders/getOrders.ts","../src/methods/limitOrders/postOrder.ts","../src/methods/limitOrders/approveForOrder.ts","../src/methods/limitOrders/getOrdersContract.ts","../src/methods/limitOrders/transaction.ts","../src/methods/nftOrders/buildOrder.ts","../src/methods/nftOrders/signOrder.ts","../src/methods/nftOrders/cancelOrder.ts","../src/methods/nftOrders/getOrders.ts","../src/methods/nftOrders/postOrder.ts","../src/methods/nftOrders/getOrdersContract.ts","../src/methods/nftOrders/approveForOrder.ts","../src/methods/nftOrders/transaction.ts","../src/helpers/fetchers/axios.ts","../src/helpers/fetchers/fetch.ts","../src/helpers/providers/ethers.ts","../src/helpers/providers/ethersV6.ts","../src/helpers/providers/helpers.ts","../src/helpers/providers/web3.ts","../src/helpers/providers/viem.ts","../src/methods/delta/getDeltaContract.ts","../src/methods/delta/getPartnerFee.ts","../src/methods/delta/helpers/buildDeltaOrderData.ts","../src/methods/delta/helpers/types.ts","../src/methods/delta/buildDeltaOrder.ts","../src/methods/delta/postDeltaOrder.ts","../src/methods/delta/helpers/misc.ts","../src/methods/delta/signDeltaOrder.ts","../src/methods/delta/preSignDeltaOrder.ts","../src/methods/delta/getDeltaPrice.ts","../src/methods/delta/getDeltaOrders.ts","../src/methods/delta/approveForDelta.ts","../src/methods/delta/getBridgeInfo.ts","../src/methods/delta/isTokenSupportedInDelta.ts","../src/methods/quote/getQuote.ts","../src/methods/delta/helpers/buildCancelDeltaOrderData.ts","../src/methods/delta/cancelDeltaOrder.ts","../src/sdk/partial.ts","../src/methods/swap/index.ts","../src/methods/limitOrders/index.ts","../src/methods/delta/index.ts","../src/methods/nftOrders/index.ts","../src/sdk/full.ts","../src/sdk/simple.ts"],"sourcesContent":["import { EnumerateLiteral, APIVersion } from './types';\n\nimport type { ContractMethod } from '@paraswap/core';\n\nexport {\n SwapSide,\n ContractMethod,\n ContractMethodV5,\n ContractMethodV6,\n} from '@paraswap/core';\n\n// allows to pass by name instead of importing enum first\nexport type ContractMethodByName = EnumerateLiteral<typeof ContractMethod>;\n\nexport const API_URL = 'https://api.paraswap.io';\nexport const DEFAULT_VERSION = '6.2' satisfies APIVersion;\n","import type { Primitive } from 'ts-essentials';\n\nexport const objectToFilledEntries = <T extends Record<string, unknown>>(\n object: T\n): [string, string][] => {\n return (\n Object.entries(object)\n // removes keys with undefined values\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => [key, String(value)])\n );\n};\n\nexport const constructSearchString = <\n // not arrays or mappings\n U extends Record<string, Exclude<Primitive, symbol>>\n>(\n queryOptions: U\n): `?${string}` | '' => {\n const queryEntries = objectToFilledEntries(queryOptions);\n\n const queryString = new URLSearchParams(queryEntries).toString();\n\n // returns empty string or `?${string}`\n return queryString && `?${queryString}`;\n};\n\ntype MinAxiosError = {\n code?: string;\n request?: any;\n isAxiosError: boolean;\n message: string;\n};\n\ntype MinAxiosResponse = {\n data: any;\n status: number;\n statusText: string;\n headers: Record<string, any>;\n config: { url?: string; method?: string };\n};\n\ntype FetcherErrorConstructorInput = MinAxiosError & {\n response?: MinAxiosResponse;\n};\n\nexport interface FetcherErrorInterface extends FetcherErrorConstructorInput {\n status?: number;\n code?: string;\n}\n\nexport const isFetcherError = (error: unknown): error is FetcherError => {\n return error instanceof FetcherError;\n};\n\nexport class FetcherError extends Error implements FetcherErrorInterface {\n code;\n status;\n request;\n response;\n isAxiosError = false;\n\n public constructor({\n code,\n request,\n response,\n isAxiosError,\n message,\n }: FetcherErrorConstructorInput) {\n super();\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetcherError);\n }\n\n this.name = this.constructor.name;\n this.code = code;\n this.request = request;\n this.isAxiosError = isAxiosError;\n\n // no response on AxiosError\n if (!response) {\n this.message = message;\n return;\n }\n\n this.response = response;\n\n const { data, status } = response;\n this.status = status;\n this.message = isDataWithError(data) ? data.error : message;\n this.message = isDataWithError2(data)\n ? `${data.errorType}${data.description ? `: ${data.description}` : ''}`\n : this.message;\n }\n}\n// to turn `object -> Record` for indexed variable access\nfunction isObject(obj: unknown): obj is Record<string | symbol, any> {\n return !!obj && typeof obj === 'object';\n}\n\nexport function isDataWithError(data: unknown): data is { error: string } {\n return isObject(data) && typeof data['error'] === 'string';\n}\nexport function isDataWithError2(\n data: unknown\n): data is { errorType: string; description?: string } {\n return isObject(data) && typeof data['errorType'] === 'string';\n}\n\nexport type ExtractAbiMethodNames<T extends readonly { name: string }[]> =\n T[number]['name'];\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T, index: number) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T, index: number) => string,\n transfrom: (elem: T, accumElem: U | undefined, index: number) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T, index: number) => string,\n transform?: (elem: T, accumElem: U | undefined, index: number) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element, index) => {\n const key = pickProp(element, index);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined, index)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\n// checks that array has at least one element\nexport const isFilledArray = <T>(array: T[]): array is [T, ...T[]] => {\n return array.length > 0;\n};\n\nexport function getRandomInt(): number {\n return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n}\n\nexport function runOnceAndCache<T, Args extends any[]>(\n // can pass `(...any[]) => any but null | undefined`\n func: (...args: Args) => NonNullable<T>\n): (...args: Args) => NonNullable<T> {\n let result: NonNullable<T>;\n\n return (...args) => {\n return result ?? (result = func(...args));\n };\n}\n","import { API_URL, DEFAULT_VERSION } from '../../constants';\nimport { constructSearchString, runOnceAndCache } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n Address,\n RequestParameters,\n} from '../../types';\n\nexport type GetSpender = (\n requestParams?: RequestParameters\n) => Promise<Address>;\ntype GetContracts = (\n requestParams?: RequestParameters\n) => Promise<AdaptersContractsResult>;\n\nexport type GetSpenderFunctions = {\n getSpender: GetSpender;\n getAugustusSwapper: GetSpender;\n getAugustusRFQ: GetSpender;\n getContracts: GetContracts;\n};\n\nexport interface AdaptersContractsResult {\n AugustusSwapper: string;\n TokenTransferProxy: string;\n AugustusRFQ: string;\n Executors: {\n [key: `Executor${number}`]: string;\n };\n ParaswapDelta?: string; // only available on chains with Delta support\n}\n\nexport const constructGetSpender = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetSpenderFunctions => {\n const search = constructSearchString<{ chainId: number; version: string }>({\n chainId,\n version,\n });\n\n const fetchURL = `${apiURL}/adapters/contracts${search}` as const;\n\n const _getContracts: GetContracts = async (requestParams) => {\n const data = await fetcher<AdaptersContractsResult>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n // cached for the same instance of `{getContracts, getSpender, getAugustusSwapper, getAugustusRFQ} = constructGetSpender()`\n // so should persist across same apiUrl & network\n const getContracts = runOnceAndCache(_getContracts);\n\n const getSpender: GetSpender = async (requestParams) => {\n const { TokenTransferProxy } = await getContracts(requestParams);\n return TokenTransferProxy;\n };\n\n const getAugustusSwapper: GetSpender = async (requestParams) => {\n const { AugustusSwapper } = await getContracts(requestParams);\n return AugustusSwapper;\n };\n\n const getAugustusRFQ: GetSpender = async (requestParams) => {\n const { AugustusRFQ } = await getContracts(requestParams);\n return AugustusRFQ;\n };\n\n return { getContracts, getSpender, getAugustusSwapper, getAugustusRFQ };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../types';\nimport type { ExtractAbiMethodNames } from '../helpers/misc';\nimport type { Address, PriceString } from './token';\n\n// much smaller than the whole ERC20_ABI\nconst MinERC20Abi = [\n {\n constant: false,\n inputs: [\n { name: '_spender', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype ApprovalMethods = ExtractAbiMethodNames<typeof MinERC20Abi>;\n\ntype ApproveContractCaller<T> = ConstructProviderFetchInput<\n T,\n 'transactCall'\n>['contractCaller'];\n\nexport type ApproveToken<T> = (\n amount: PriceString,\n tokenAddress: Address,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type GetSpenderAsyncOrSync = (\n requestParams?: RequestParameters\n) => Address | Promise<Address>;\n\nexport function approveTokenMethodFactory<T>(\n contractCaller: ApproveContractCaller<T>,\n getSpender: GetSpenderAsyncOrSync\n): ApproveToken<T> {\n return async (amount, tokenAddress, overrides = {}, requestParams) => {\n const spender = await getSpender(requestParams);\n\n const res = await contractCaller.transactCall<ApprovalMethods>({\n address: tokenAddress,\n abi: MinERC20Abi,\n contractMethod: 'approve',\n args: [spender, amount],\n overrides,\n });\n\n return res;\n };\n}\n","import { constructGetSpender } from './spender';\nimport type {\n ConstructProviderFetchInput,\n TxSendOverrides,\n Address,\n PriceString,\n RequestParameters,\n} from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\n\ntype ApproveTokenBulk<T> = (\n amount: PriceString,\n tokenAddresses: Address[],\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<Awaited<T>[]>;\n\nexport type ApproveTokenFunctions<T> = {\n approveToken: ApproveToken<T>;\n approveTokenBulk: ApproveTokenBulk<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveToken = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenFunctions<T> => {\n // getSpender is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getSpender } = constructGetSpender(options);\n\n const approveToken: ApproveToken<T> = approveTokenMethodFactory<T>(\n options.contractCaller,\n getSpender\n );\n\n const approveTokenBulk: ApproveTokenBulk<T> = async (\n amount,\n tokenAddresses,\n overrides,\n requestParams\n ) => {\n return Promise.all(\n tokenAddresses.map((tokenAddress) =>\n approveToken(amount, tokenAddress, overrides, requestParams)\n )\n );\n };\n\n return { approveToken, approveTokenBulk };\n};\n","import type { MarkOptional } from 'ts-essentials';\n\n/**\n * @type hex token or account address\n */\nexport type Address = string;\n/**\n * @type hex token address or token symbol\n */\nexport type AddressOrSymbol = string;\n/**\n * @type number in string form\n */\nexport type PriceString = string;\n/**\n * @type transaction hash\n */\nexport type TxHash = `0x${string}`;\n\n// @TODO sync with what it actually is\nexport type LendingToken =\n | 'cToken'\n | 'iToken'\n | 'aToken'\n | 'aToken2'\n | 'idleToken'\n | 'Chai'\n | 'bDAI';\n\nexport type TokenType = 'ETH' | 'ERC20' | 'SYNTH';\n\n/**\n * @type Token object returned from API used internally in API\n */\n// consider if need the old class Token for backwards compatipility\n// otherwise no real need\nexport type Token = {\n address: string;\n decimals: number;\n symbol?: string | undefined;\n tokenType: LendingToken | TokenType;\n mainConnector: string;\n connectors: string[];\n network: number;\n img?: string | undefined;\n allowance?: string | undefined;\n balance?: string | undefined;\n};\n\ntype ConstructTokenInput = MarkOptional<\n Token,\n // these props are constructed from other, required props\n 'tokenType' | 'mainConnector' | 'connectors' | 'network'\n>;\n\nexport const constructToken = (tokenProps: ConstructTokenInput): Token => {\n const {\n tokenType = 'ERC20',\n mainConnector = 'ETH',\n connectors: connectorsInput = [],\n network = 1,\n ...rest\n } = tokenProps;\n\n const connectors: Token['connectors'] =\n connectorsInput.length > 0 ? connectorsInput : [mainConnector];\n\n return {\n tokenType,\n connectors,\n mainConnector,\n network,\n ...rest,\n };\n};\n","import { API_URL } from '../../constants';\nimport {\n Token,\n Address,\n constructToken,\n AddressOrSymbol,\n} from '../../helpers/token';\nimport type {\n ConstructFetchInput,\n TokenApiResponse,\n TokensApiResponse,\n RequestParameters,\n} from '../../types';\n\ntype GetBalances = (\n userAddress: Address,\n requestParams?: RequestParameters\n) => Promise<Token[]>;\ntype GetBalance = (\n userAddress: Address,\n tokenAddressOrSymbol: AddressOrSymbol,\n requestParams?: RequestParameters\n) => Promise<Token | typeof NOT_FOUND_RESPONSE>;\n\nexport interface Allowance {\n tokenAddress: Address;\n allowance: string;\n}\n\ntype GetAllowances = (\n userAddress: Address,\n tokenAddresses: Address[],\n requestParams?: RequestParameters\n) => Promise<Allowance[]>;\ntype GetAllowance = (\n userAddress: Address,\n tokenAddress: Address,\n requestParams?: RequestParameters\n) => Promise<Allowance | typeof NOT_FOUND_RESPONSE>;\n\nexport const isAllowance = (\n arg: Awaited<ReturnType<GetAllowance>>\n): arg is Allowance => {\n return 'allowance' in arg;\n};\n\nexport type GetBalancesFunctions = {\n getBalance: GetBalance;\n getBalances: GetBalances;\n getAllowance: GetAllowance;\n getAllowances: GetAllowances;\n};\n\nconst NOT_FOUND_RESPONSE = { message: 'Not Found' } as const;\n\nexport const constructGetBalances = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetBalancesFunctions => {\n const tokensUrl = `${apiURL}/users/tokens/${chainId}` as const;\n\n const getBalances: GetBalances = async (userAddress, requestParams) => {\n const fetchURL = `${tokensUrl}/${userAddress}` as const;\n\n const data = await fetcher<TokensApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n const tokens = data.tokens.map(constructToken);\n\n return tokens;\n };\n\n const getBalance: GetBalance = async (\n userAddress,\n tokenAddressOrSymbol,\n requestParams\n ) => {\n const fetchURL =\n `${tokensUrl}/${userAddress}/${tokenAddressOrSymbol}` as const;\n\n const data = await fetcher<TokenApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n if (!data.token) {\n return NOT_FOUND_RESPONSE;\n }\n\n return constructToken(data.token);\n };\n\n const getAllowances: GetAllowances = async (\n userAddress,\n tokenAddresses,\n requestParams\n ) => {\n const tokenAddressesLowercaseSet = new Set(\n tokenAddresses.map((address) => address.toLowerCase())\n );\n\n const balances = await getBalances(userAddress, requestParams);\n\n const allowances: Allowance[] = balances\n .filter((token) =>\n tokenAddressesLowercaseSet.has(token.address.toLowerCase())\n )\n .map(({ address, allowance = '0' }) => ({\n tokenAddress: address,\n allowance,\n }));\n\n return allowances;\n };\n\n const getAllowance: GetAllowance = async (\n userAddress,\n tokenAddress,\n requestParams\n ) => {\n const balanceOrNotFound = await getBalance(\n userAddress,\n tokenAddress,\n requestParams\n );\n\n if ('message' in balanceOrNotFound) {\n return balanceOrNotFound;\n }\n\n const { address, allowance = '0' } = balanceOrNotFound;\n\n return { tokenAddress: address, allowance };\n };\n\n return {\n getBalance,\n getBalances,\n getAllowance,\n getAllowances,\n };\n};\n","import type {\n ConstructFetchInput,\n APIVersion,\n RequestParameters,\n} from '../../types';\nimport { constructSearchString } from '../../helpers/misc';\nimport { API_URL, DEFAULT_VERSION } from '../../constants';\n\ntype AdaptersAsStrings = string[];\n\nexport type GetAdaptersFunctions = {\n getAdapters: (\n requestParams?: RequestParameters\n ) => Promise<AdaptersAsStrings>;\n};\n\ntype SearchStringParams = {\n chainId: number;\n version?: APIVersion;\n};\n\nexport const constructGetAdapters = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetAdaptersFunctions => {\n const getAdapters: GetAdaptersFunctions['getAdapters'] = async (\n requestParams\n ): Promise<AdaptersAsStrings> => {\n // always pass explicit type to make sure UrlSearchParams are correct\n const query = constructSearchString<SearchStringParams>({\n chainId,\n version,\n });\n\n const fetchURL = `${apiURL}/adapters/list${query}` as const;\n\n const data = await fetcher<AdaptersAsStrings>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n return { getAdapters };\n};\n","import type { PickKeys } from 'ts-essentials';\nimport type { RateOptions } from '../rates';\n\ntype StringArrKeys = PickKeys<RateOptions, string[] | undefined>;\n\ntype MinRateOptionsInput = Pick<RateOptions, StringArrKeys> &\n Pick<RateOptions, 'partner'>;\n\ntype NormalizedRateOptions<\n O extends MinRateOptionsInput,\n T extends { options?: Partial<O> }\n> = Partial<Record<StringArrKeys | 'partner', string>> &\n Partial<Omit<O, StringArrKeys | 'partner'>> &\n Omit<T, 'options'>;\n\nexport function normalizeRateOptions<\n O extends MinRateOptionsInput,\n T extends { options?: Partial<O> }\n>({ options = {}, ...restInput }: T): NormalizedRateOptions<O, T> {\n const {\n excludeContractMethods,\n includeContractMethods,\n partner,\n includeDEXS,\n excludeDEXS,\n excludePools,\n ...restOptions\n } = options;\n\n const [\n _includeDEXS,\n _excludeDEXS,\n _excludePools,\n _excludeContractMethods,\n _includeContractMethods,\n ] = [\n includeDEXS,\n excludeDEXS,\n excludePools,\n excludeContractMethods,\n includeContractMethods,\n // no \"\" empty string\n ].map((array) => array?.join(',') || undefined);\n\n const transformed: Partial<Record<StringArrKeys | 'partner', string>> = {\n excludeContractMethods: _excludeContractMethods,\n includeContractMethods: _includeContractMethods,\n partner,\n includeDEXS: _includeDEXS,\n excludeDEXS: _excludeDEXS,\n excludePools: _excludePools,\n };\n\n return { ...transformed, ...restOptions, ...restInput };\n}\n","import {\n API_URL,\n DEFAULT_VERSION,\n ContractMethodByName,\n} from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n PriceRouteApiResponse,\n Address,\n AddressOrSymbol,\n PriceString,\n OptimalRate,\n RequestParameters,\n} from '../../types';\nimport { normalizeRateOptions } from './helpers/normalizeRateOptions';\n\ntype RateQueryParams = {\n /**\n * @description Source Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n srcToken: string;\n\n /**\n * @description Source Token Decimals. (Can be omitted if Token Symbol is used in `srcToken`).\n */\n srcDecimals?: number;\n\n /**\n * @description Destination Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n destToken: string;\n\n /**\n * @description srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in **WEI/Raw units** (eg. 1WBTC -> 100000000).\n */\n amount: string;\n\n /**\n * @description **SELL** or **BUY**. Default: `SELL`.\n */\n side?: 'SELL' | 'BUY';\n\n /**\n * @description Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Unichain - 130, Sonic - 146). Default: `1`.\n */\n chainId?: number;\n\n /**\n * @description If provided, **others** object is filled in the response with price quotes from other exchanges _(if available for comparison)_. Default: `false`.\n */\n otherExchangePrices?: boolean;\n\n /**\n * @description Comma Separated List of DEXs to include. **Supported DEXs:** UniswapV2, UniswapV3, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, Balancer, MakerDAO, Chai, Aave, Aave2 and more. You can view all currently supported dexes filtered by chain [here](https://api.paraswap.io/adapters/list/1) eg: `UniswapV3,MakerDAO`.\n */\n includeDEXS?: string;\n\n /**\n * @description Comma Separated List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to include in pricing (without spaces). View the list of the supported methods for [V5](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v5#supported-methods) and [V6](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v6.2#supported-methods) eg: `swapExactAmountIn,swapExactAmountInOnUniswapV2`.\n */\n includeContractMethods?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to exclude from pricing (without spaces). View the list of the supported methods for [V5](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v5#supported-methods) and [V6](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v6.2#supported-methods).\n */\n excludeContractMethods?: string;\n\n /**\n * @description User's Wallet Address.\n */\n userAddress?: string;\n\n /**\n * @description Dash (-) separated list of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string;\n\n /**\n * @description Partner string.\n */\n partner?: string;\n\n /**\n * @description Destination Token Decimals. (Can be omitted if Token Symbol is used in `destToken`).\n */\n destDecimals?: number;\n\n /**\n * @description In %. It's a way to bypass the API price impact check (default = 15%).\n */\n maxImpact?: number;\n\n /**\n * @description Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account).\n */\n receiver?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n srcTokenTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n destTokenTransferFee?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.\n */\n srcTokenDexTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.\n */\n destTokenDexTransferFee?: string;\n\n /**\n * @description To specify the protocol version. **Values:** 5 or 6.2 **Default**: 6.2.\n */\n version?: number | string;\n\n /**\n * @description Specify that methods without fee support should be excluded from the price route. Default: `false`.\n */\n excludeContractMethodsWithoutFeeModel?: boolean;\n\n /**\n * @description If tokens USD prices are not available, `Bad USD Price` error will be thrown. Use this param to skip this check. Default: `false`.\n */\n ignoreBadUsdPrice?: boolean;\n /**\n * @description \tExclude all RFQs from pricing, e.g.: AugustusRFQ, Hashflow. Default: false\n */\n excludeRFQ?: boolean;\n};\n\n// more details in the docs https://developers.velora.xyz/api/velora-api/velora-market-api/get-rate-for-a-token-pair#query-parameters\nexport type RateOptions = {\n excludeDEXS?: string[];\n includeDEXS?: string[];\n excludePools?: string[];\n excludeContractMethods?: ContractMethodByName[];\n includeContractMethods?: ContractMethodByName[];\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description In %. It's a way to bypass the API price impact check (default = 15%) */\n maxImpact?: number;\n maxUSDImpact?: number;\n otherExchangePrices?: boolean;\n /** @description proceed with priceRoute building even when tokens don't have USD price. Default: false */\n ignoreBadUsdPrice?: boolean;\n /** @description Exclude all RFQs from pricing, e.g.: AugustusRFQ, Hashflow. Default: false */\n excludeRFQ?: boolean;\n /** @description \tSpecify that methods without fee support should be excluded from the price route. Default: false */\n excludeContractMethodsWithoutFeeModel?: boolean;\n /** @description If the source token is a tax token, you should specify the tax amount in BPS. */\n srcTokenTransferFee?: string;\n /** @description If the destination token is a tax token, you should specify the tax amount in BPS. */\n destTokenTransferFee?: string;\n /** @description Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers. */\n srcTokenDexTransferFee?: string;\n /** @description Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers. */\n destTokenDexTransferFee?: string;\n};\n\ntype CommonGetRateInput = {\n amount: PriceString;\n userAddress?: Address;\n side?: 'SELL' | 'BUY';\n options?: RateOptions;\n srcDecimals?: number;\n destDecimals?: number;\n};\n\nexport type GetRateInput = CommonGetRateInput & {\n srcToken: AddressOrSymbol;\n destToken: AddressOrSymbol;\n};\n\nexport type GetRate = (\n options: GetRateInput,\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\ntype GetRateByRouteInput = CommonGetRateInput & {\n route: AddressOrSymbol[];\n};\n\ntype GetRateByRoute = (\n options: GetRateByRouteInput,\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport type GetRateFunctions = {\n getRate: GetRate;\n getRateByRoute: GetRateByRoute;\n};\nconst INVALID_ROUTE = 'Invalid Route';\n\nexport const constructGetRate = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetRateFunctions => {\n const pricesUrl = `${apiURL}/prices` as const;\n\n const getRate: GetRate = async (\n { srcToken, destToken, ...rest },\n requestParams\n ) => {\n const parsedOptions = normalizeRateOptions(rest);\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<Omit<RateQueryParams, 'route'>>({\n srcToken,\n destToken,\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<PriceRouteApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.priceRoute;\n };\n\n const getRateByRoute: GetRateByRoute = async (\n { route, ...rest },\n requestParams\n ) => {\n if (route.length < 2) {\n throw new Error(INVALID_ROUTE);\n }\n\n const parsedOptions = normalizeRateOptions(rest);\n\n const _route = route.join('-');\n\n const search = constructSearchString<\n Omit<RateQueryParams, 'srcToken' | 'destToken'>\n >({\n route: _route, // route can be used in place of srcToken+destToken\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<PriceRouteApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.priceRoute;\n };\n\n return {\n getRate,\n getRateByRoute,\n };\n};\n","import {\n API_URL,\n DEFAULT_VERSION,\n ContractMethodByName,\n} from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n RequestParameters,\n SwapApiResponse,\n} from '../../types';\nimport { normalizeRateOptions } from './helpers/normalizeRateOptions';\n\n/**\n * Types for transaction parameters.\n */\ntype SwapQueryParams = {\n /**\n * @description Source Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n srcToken: string;\n\n /**\n * @description Source Token Decimals. (Can be omitted if Token Symbol is used in `srcToken`).\n */\n srcDecimals?: number;\n\n /**\n * @description Destination Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n destToken: string;\n\n /**\n * @description srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in **WEI/Raw units** (eg. 1WBTC -> 100000000).\n */\n amount: string;\n\n /**\n * @description **SELL** or **BUY**. Default: `SELL`.\n */\n side: 'SELL' | 'BUY';\n\n /**\n * @description Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Unichain - 130, Sonic - 146). Default: `1`.\n */\n chainId?: number;\n\n /**\n * @description Comma Separated List of DEXs to include. **Supported DEXs:** Uniswap, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, 0x, MakerDAO, Chai, Aave, Aave2, MultiPath, MegaPath, Curve, Curve3, Saddle, IronV2, BDai, idle, Weth, Beth, UniswapV2, Balancer, 0xRFQt, SushiSwap, LINKSWAP, Synthetix, DefiSwap, Swerve, CoFiX, Shell, DODOV1, DODOV2, OnChainPricing, PancakeSwap, PancakeSwapV2, ApeSwap, Wbnb, acryptos, streetswap, bakeryswap, julswap, vswap, vpegswap, beltfi, ellipsis, QuickSwap, COMETH, Wmatic, Nerve, Dfyn, UniswapV3, Smoothy, PantherSwap, OMM1, OneInchLP, CurveV2, mStable, WaultFinance, MDEX, ShibaSwap, CoinSwap, SakeSwap, JetSwap, Biswap, BProtocol eg: `UniswapV3,0x`.\n */\n includeDEXS?: string;\n\n /**\n * @description Comma Separated List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to include without spaces. **Available values:** swapOnUniswap, buyOnUniswap, swapOnUniswapFork, buyOnUniswapFork, swapOnUniswapV2Fork, buyOnUniswapV2Fork, simpleBuy, simpleSwap, multiSwap, megaSwap, protectedMultiSwap, protectedMegaSwap, protectedSimpleSwap, protectedSimpleBuy, swapOnZeroXv2, swapOnZeroXv4, buy. eg: `simpleSwap,multiSwap`.\n */\n includeContractMethods?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to exclude without spaces. (from the list of contract methods mentioned above).\n */\n excludeContractMethods?: string;\n\n /**\n * @description User's Wallet Address.\n */\n userAddress: string;\n\n /**\n * @description Dash (-) separated list of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string;\n\n /**\n * @description Partner string.\n */\n partner?: string;\n\n /**\n * @description If provided it is used together with `partnerAddress`. Should be in basis points percentage. Look at `slippage` parameter description for understanding better. Eg: `200` (for 2% fee percent). Fees have to be claimed from the Fee Claimer contract unless `_isSurplusToUser_` or `_isDirectFeeTransfer_` are used.\n */\n partnerFeeBps?: string;\n\n /**\n * @description Address that will be entitled to claim fees or surplus. Fees have to be claimed from the Fee Claimer contract unless `_isSurplusToUser_` or `_isDirectFeeTransfer_` are used.\n */\n partnerAddress?: string;\n\n /**\n * @description Allowed slippage percentage represented in basis points. _Eg:_ for **2.5%** slippage, set the value to **2.5 \\* 100 = 250**; for 10% = 1000.\n */\n slippage: number;\n\n /**\n * @description Destination Token Decimals. (Can be omitted if Token Symbol is used in `destToken`).\n */\n destDecimals?: number;\n\n /**\n * @description In %. It's a way to bypass the API price impact check (default = 15%).\n */\n maxImpact?: number;\n\n /**\n * @description Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account).\n */\n receiver?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n srcTokenTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n destTokenTransferFee?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.\n */\n srcTokenDexTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.\n */\n destTokenDexTransferFee?: string;\n\n /**\n * @description To specify the protocol version. **Values:** 5 or 6.2 **Default**: 5.\n */\n version?: number | string;\n\n /**\n * @description If tokens USD prices are not available, `Bad USD Price` error will be thrown. Use this param to skip this check. Default: `false`.\n */\n ignoreBadUsdPrice?: boolean;\n\n /**\n * @description Specify if user should receive surplus instead of partner. Default: `false`.\n */\n isSurplusToUser?: boolean;\n\n /**\n * @description Specify if fees should be sent directly to the partner instead of registering them on FeeClaimer. Default: `false`.\n */\n isDirectFeeTransfer?: boolean;\n\n /**\n * @description Allows for capping the surplus at 1% maximum. Default: `true`.\n */\n isCapSurplus?: boolean;\n\n /**\n * @description Allows to collect surplus. Works with `partnerAddress`. Default: `false`.\n */\n takeSurplus?: boolean;\n};\n\ntype SwapTxInputFields =\n | 'srcToken'\n | 'destToken'\n | 'amount'\n | 'side'\n | 'srcDecimals'\n | 'destDecimals'\n | 'userAddress'\n | 'slippage';\ntype SwapTxInputListFields =\n | 'includeDEXS'\n | 'excludeDEXS'\n | 'includeContractMethods'\n | 'excludeContractMethods'\n | 'route';\n\ntype SwapRateOptions = Omit<\n SwapQueryParams,\n SwapTxInputFields | SwapTxInputListFields | 'chainId' | 'version'\n> & {\n /**\n * @description List of DEXs to include. **Supported DEXs:** Uniswap, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, 0x, MakerDAO, Chai, Aave, Aave2, MultiPath, MegaPath, Curve, Curve3, Saddle, IronV2, BDai, idle, Weth, Beth, UniswapV2, Balancer, 0xRFQt, SushiSwap, LINKSWAP, Synthetix, DefiSwap, Swerve, CoFiX, Shell, DODOV1, DODOV2, OnChainPricing, PancakeSwap, PancakeSwapV2, ApeSwap, Wbnb, acryptos, streetswap, bakeryswap, julswap, vswap, vpegswap, beltfi, ellipsis, QuickSwap, COMETH, Wmatic, Nerve, Dfyn, UniswapV3, Smoothy, PantherSwap, OMM1, OneInchLP, CurveV2, mStable, WaultFinance, MDEX, ShibaSwap, CoinSwap, SakeSwap, JetSwap, Biswap, BProtocol eg: `UniswapV3,0x`.\n */\n includeDEXS?: string[];\n\n /**\n * @description List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string[];\n\n /**\n * @description List of Contract Methods to include without spaces. **Available values:** swapOnUniswap, buyOnUniswap, swapOnUniswapFork, buyOnUniswapFork, swapOnUniswapV2Fork, buyOnUniswapV2Fork, simpleBuy, simpleSwap, multiSwap, megaSwap, protectedMultiSwap, protectedMegaSwap, protectedSimpleSwap, protectedSimpleBuy, swapOnZeroXv2, swapOnZeroXv4, buy. eg: `simpleSwap,multiSwap`.\n */\n includeContractMethods?: ContractMethodByName[];\n\n /**\n * @description List of Contract Methods to exclude without spaces. (from the list of contract methods mentioned above).\n */\n excludeContractMethods?: ContractMethodByName[];\n};\n\ntype SwapTxInput = Pick<SwapQueryParams, SwapTxInputFields> & {\n /**\n * @description List of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string[];\n\n options?: SwapRateOptions;\n};\n\nexport type SwapTxResult = SwapApiResponse;\n\nexport type GetSwapTxData = (\n options: SwapTxInput,\n requestParams?: RequestParameters\n) => Promise<SwapTxResult>;\n\nexport type GetSwapTxFunctions = {\n getSwapTxData: GetSwapTxData;\n};\n\nexport const constructSwapTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetSwapTxFunctions => {\n const pricesUrl = `${apiURL}/swap` as const;\n\n const getSwapTxData: GetSwapTxData = async (\n { srcToken, destToken, amount, route, ...rest },\n requestParams\n ) => {\n const parsedOptions = normalizeRateOptions(rest);\n\n const _route = route?.join('-');\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<SwapQueryParams>({\n amount,\n srcToken,\n destToken,\n route: _route,\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<SwapApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n return {\n getSwapTxData,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructToken } from '../../helpers/token';\nimport type {\n RequestParameters,\n ConstructFetchInput,\n Token,\n TokensApiResponse,\n} from '../../types';\n\ntype GetTokens = (extra?: RequestParameters) => Promise<Token[]>;\n\nexport type GetTokensFunctions = {\n getTokens: GetTokens;\n};\n\nexport const constructGetTokens = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetTokensFunctions => {\n const fetchURL = `${apiURL}/tokens/${chainId}` as const;\n\n const getTokens: GetTokens = async (requestParams) => {\n const data = await fetcher<TokensApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n const tokens = data.tokens.map(constructToken);\n return tokens;\n };\n\n return { getTokens };\n};\n","export const name = 'AUGUSTUS RFQ';\nexport const version = '1';\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\ntype TypedDataDomain = {\n name?: string;\n version?: string;\n chainId?: bigint | string | number;\n verifyingContract?: string;\n salt?: string;\n};\n\nexport type TypedDataField = {\n name: string;\n type: string;\n};\n\nexport type SignableTypedData = {\n types: Record<string, TypedDataField[]>;\n domain: TypedDataDomain;\n data: Record<string, any>;\n};\n\nexport type Domain = {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n};\n","import type { LimitOrderFromApi } from '../../limitOrders/helpers/types';\nimport { ZERO_ADDRESS } from './buildOrderData';\nimport type { OrderType } from './types';\n\ntype GetBaseFetchUrlInput = {\n apiURL: string;\n chainId: number;\n};\n\nexport type BaseFetchUrlInputConstructor<Kind extends OrderKind> = (\n params: GetBaseFetchUrlInput\n) => UrlByTypeFunction<Kind>;\n\ntype OrderType2URLPart = {\n LIMIT: 'orders';\n P2P: 'p2p';\n};\n\ntype OrderKind = 'nft' | 'ft';\n\nexport type BaseFetchUrl<\n Kind extends OrderKind,\n Type extends OrderType = OrderType\n> = `${string}/${Kind}/${OrderType2URLPart[Type]}/${number}`;\n\nexport type MinFetchUrl<Kind extends OrderKind> = `${string}/${Kind}/order`;\nexport type OrderFillableBalanceFetchUrl<Kind extends OrderKind> =\n `${string}/${Kind}/fillablebalance/${number}`;\n\ninterface UrlByTypeFunction<Kind extends OrderKind> {\n (): MinFetchUrl<Kind>;\n (type: 'LIMIT'): BaseFetchUrl<Kind, 'LIMIT'>;\n (type: 'P2P'): BaseFetchUrl<Kind, 'P2P'>;\n (type: OrderType): BaseFetchUrl<Kind>;\n (type: 'fillablebalance'): OrderFillableBalanceFetchUrl<Kind>;\n (type?: OrderType | 'fillablebalance'):\n | BaseFetchUrl<Kind>\n | MinFetchUrl<Kind>\n | OrderFillableBalanceFetchUrl<Kind>;\n}\n\nexport function baseFetchUrlGetterFactory<Kind extends OrderKind>(\n orderKind: Kind\n): BaseFetchUrlInputConstructor<Kind> {\n return function constructBaseFetchUrlGetter({\n chainId,\n apiURL,\n }: GetBaseFetchUrlInput): UrlByTypeFunction<Kind> {\n function urlGetter(type: 'LIMIT'): BaseFetchUrl<Kind, 'LIMIT'>;\n function urlGetter(type: 'P2P'): BaseFetchUrl<Kind, 'P2P'>;\n function urlGetter(type: OrderType): BaseFetchUrl<Kind>;\n function urlGetter(\n type: 'fillablebalance'\n ): OrderFillableBalanceFetchUrl<Kind>;\n function urlGetter(): MinFetchUrl<Kind>;\n function urlGetter(\n type?: OrderType | 'fillablebalance'\n ):\n | BaseFetchUrl<Kind>\n | MinFetchUrl<Kind>\n | OrderFillableBalanceFetchUrl<Kind> {\n if (!type) return `${apiURL}/${orderKind}/order` as const;\n\n if (type === 'fillablebalance')\n return `${apiURL}/${orderKind}/fillablebalance/${chainId}` as const;\n\n const orderURLpart = type === 'LIMIT' ? 'orders' : 'p2p';\n return `${apiURL}/${orderKind}/${orderURLpart}/${chainId}` as const;\n }\n\n return urlGetter;\n };\n}\n\n// orders with taker = EOA address\n// that can't be filled through AugustusSwapper,\n// only through AugustusRFQ\nexport function isOrderFillableDirectlyOnRFQOnly(\n order: Pick<LimitOrderFromApi, 'taker' | 'takerFromMeta'>\n): boolean {\n // with 0x taker fillable by anyone\n if (order.taker === ZERO_ADDRESS) return false;\n\n // same intended EOA taker and msg.sender taker\n return order.taker.toLowerCase() === order.takerFromMeta.toLowerCase();\n}\n","import {\n BaseFetchUrl,\n baseFetchUrlGetterFactory,\n BaseFetchUrlInputConstructor,\n MinFetchUrl,\n OrderFillableBalanceFetchUrl,\n} from '../../common/orders/misc';\nimport type { OrderData } from './buildOrderData';\n\nexport function sanitizeOrderData({\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n}: OrderData & Record<string, any>): OrderData {\n return {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n };\n}\n\n/* \nGET\n/ft/orders/:chainId/maker/:walletAddress\n/ft/orders/:chainId/taker/:walletAddress\n/ft/p2p/:chainId/maker/:walletAddress\n/ft/p2p/:chainId/taker/:walletAddress\n*/\nexport type GetOrdersURLs = `${BaseFetchUrl<'ft'>}/${\n | 'taker'\n | 'maker'}/${string}`;\n\n/*\nGET\n/ft/fillablebalance/:chainId/:walletAddress/:makerAsset?\n*/\nexport type GetRequiredAllowanceURL =\n `${OrderFillableBalanceFetchUrl<'ft'>}/${string}${`/${string}` | ''}`;\n\n/*\nGET\n/ft/order/:orderHash (get you p2p or orders)\n*/\nexport type GetOrderURL = `${MinFetchUrl<'ft'>}/${string}`;\n\n/* \nPOST create order\n/ft/orders/:chainId/\n/ft/p2p/:chainId/\n*/\nexport type PostOrderURLs = BaseFetchUrl<'ft'>;\n\nexport const constructBaseFetchUrlGetter: BaseFetchUrlInputConstructor<'ft'> =\n baseFetchUrlGetterFactory('ft');\n","import type { Address } from '../../../types';\nimport type { AssetTypeVariant } from './types';\nimport {\n Domain,\n name,\n version,\n ZERO_ADDRESS,\n} from '../../common/orders/buildOrderData';\nimport { getRandomInt } from '../../../helpers/misc';\n\nconst OrderNFT = [\n { name: 'nonceAndMeta', type: 'uint256' },\n { name: 'expiry', type: 'uint128' },\n { name: 'makerAsset', type: 'uint256' },\n { name: 'makerAssetId', type: 'uint256' },\n { name: 'takerAsset', type: 'uint256' },\n { name: 'takerAssetId', type: 'uint256' },\n { name: 'maker', type: 'address' },\n { name: 'taker', type: 'address' },\n { name: 'makerAmount', type: 'uint256' },\n { name: 'takerAmount', type: 'uint256' },\n];\n\nexport interface BuildNFTOrderDataInput {\n chainId: number;\n verifyingContract: Address;\n nonce?: number;\n expiry: number;\n makerAsset: Address;\n takerAsset: Address;\n makerAmount: string;\n takerAmount: string;\n /** @description NFT Token id, will default to 0 (ERC20), provide for NFT */\n makerAssetId: string; // required when BUYing NFT\n /** @description NFT Token id, will default to 0 (ERC20), provide for NFT */\n takerAssetId?: string;\n /** @description Token type: ERC20 = 0, ERC1155 = 1, ERC721 = 2 */\n makerAssetType: AssetTypeVariant;\n /** @description Token type: ERC20 = 0, ERC1155 = 1, ERC721 = 2 */\n takerAssetType: AssetTypeVariant;\n maker: Address;\n // OrderData.taker must be Augustus for p2p limitOrders to involve swap through Augustus\n // this is the actual user taker which will go into nonceAndMeta\n taker?: Address;\n AugustusAddress: Address;\n}\n\nexport type SignableNFTOrderData = {\n types: { OrderNFT: typeof OrderNFT };\n domain: Domain;\n data: NFTOrderData;\n};\n\nexport type BigIntAsString = string;\n\nexport type NFTOrderData = {\n expiry: number;\n // '1' when trading 1 NFT token\n makerAmount: BigIntAsString;\n makerAsset: BigIntAsString;\n // '0' indicates ERC20\n makerAssetId: BigIntAsString;\n // '1' when trading 1 NFT token\n takerAmount: BigIntAsString;\n takerAsset: BigIntAsString;\n // '0' indicates ERC20\n takerAssetId: BigIntAsString;\n nonceAndMeta: BigIntAsString;\n maker: Address;\n taker: Address;\n};\n\nexport function buildOrderData({\n chainId,\n verifyingContract,\n nonce = getRandomInt(),\n expiry,\n makerAsset: _makerAssetAddress,\n takerAsset: _takerAssetAddress,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId = '0',\n makerAssetType,\n takerAssetType,\n maker,\n AugustusAddress,\n // if taker is specified -- p2p order for that taker only to fill through Augustus -- taker = Augustus, takerInNonce = _taker\n // if taker is not specified -- limitOrder for anyone to fill through Augustus -- taker = Augustus, takerInNonce = Zero\n taker: takerInNonce = ZERO_ADDRESS, //@TODO allow Orders outside of AugustusRFQ\n}: BuildNFTOrderDataInput): SignableNFTOrderData {\n // first 160 bits is taker address (for p2p orders),\n // or 0 for limitOrders, so that anyone can be the taker of the Order\n const nonceAndMeta = (\n BigInt(takerInNonce) +\n (BigInt(nonce) << BigInt(160))\n ).toString(10);\n\n const makerAsset = assetAddressToUint(_makerAssetAddress, makerAssetType);\n\n const takerAsset = assetAddressToUint(_takerAssetAddress, takerAssetType);\n\n const orderNFT: NFTOrderData = {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker: AugustusAddress,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n };\n\n return {\n types: { OrderNFT },\n domain: { name, version, chainId, verifyingContract },\n data: orderNFT,\n };\n}\n\n// create a packed number that contains assetAddress and AssetType\nexport function assetAddressToUint(\n assetAddress: Address,\n assetType: AssetTypeVariant\n): BigIntAsString {\n return (BigInt(assetAddress) + (BigInt(assetType) << BigInt(160))).toString(\n 10\n );\n}\n","import {\n BaseFetchUrl,\n baseFetchUrlGetterFactory,\n BaseFetchUrlInputConstructor,\n MinFetchUrl,\n} from '../../common/orders/misc';\nimport {\n assetAddressToUint,\n BuildNFTOrderDataInput,\n NFTOrderData,\n} from './buildOrderData';\n\n// any number can be assigned to AssetType enum\n// https://github.com/Microsoft/TypeScript/issues/22311\n// export enum AssetType {\n// ERC20 = 0,\n// ERC1155 = 1,\n// ERC721 = 2,\n// }\n\nexport const AssetType = {\n ERC20: 0,\n ERC1155: 1,\n ERC721: 2,\n} as const;\n\nexport function sanitizeOrderData({\n nonceAndMeta,\n expiry,\n makerAsset: _makerAsset,\n takerAsset: _takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n // asset types provided when Order has them ,e.g. got Order by hash from API\n makerAssetType,\n takerAssetType,\n}: NFTOrderData &\n Partial<Pick<BuildNFTOrderDataInput, 'makerAssetType' | 'takerAssetType'>> &\n Record<string, any>): NFTOrderData {\n const makerAsset =\n makerAssetType !== undefined && _makerAsset.startsWith('0x')\n ? assetAddressToUint(_makerAsset, makerAssetType)\n : _makerAsset;\n const takerAsset =\n takerAssetType !== undefined && _takerAsset.startsWith('0x')\n ? assetAddressToUint(_takerAsset, takerAssetType)\n : _takerAsset;\n\n return {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n };\n}\n\n/* \nGET\n/nft/orders/:chainId/maker/:walletAddress\n/nft/orders/:chainId/taker/:walletAddress\n/nft/p2p/:chainId/maker/:walletAddress\n/nft/p2p/:chainId/taker/:walletAddress\n*/\nexport type GetOrdersURLs = `${BaseFetchUrl<'nft'>}/${\n | 'taker'\n | 'maker'}/${string}`;\n\n/*\nGET\n/nft/order/:orderHash (get you p2p or orders)\n*/\nexport type GetOrderURL = `${MinFetchUrl<'nft'>}/${string}`;\n\n/* \nPOST create order\n/nft/orders/:chainId/\n/nft/p2p/:chainId/\n*/\nexport type PostOrderURLs = BaseFetchUrl<'nft'>;\n\nexport const constructBaseFetchUrlGetter: BaseFetchUrlInputConstructor<'nft'> =\n baseFetchUrlGetterFactory('nft');\n","import type { WithGasPrice, WithMaxFee } from '../../gas';\nimport type {\n ConstructFetchInput,\n Address,\n FetcherPostInput,\n PriceString,\n OptimalRate,\n RequestParameters,\n} from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { OrderData } from '../limitOrders/buildOrder';\nimport { sanitizeOrderData as sanitizeLimitOrderData } from '../limitOrders/helpers/misc';\nimport { sanitizeOrderData as sanitizeNFTOrderData } from '../nftOrders/helpers/misc';\nimport { AssetTypeVariant } from '../nftOrders/helpers/types';\n\nexport interface TransactionParams {\n to: string;\n from: string;\n value: string;\n data: string;\n gas?: string;\n chainId: number;\n // either gasPrice or maxFeePerGas & maxPriorityFeePerGas will be present\n gasPrice?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n}\n\nexport type SwappableOrder = OrderData & {\n permitMakerAsset?: string;\n signature: string;\n};\n\nexport type SwappableNFTOrder = SwappableOrder & {\n makerAssetId: string;\n takerAssetId: string;\n makerAssetType: AssetTypeVariant;\n takerAssetType: AssetTypeVariant;\n};\n\n// when priceRoute with side=SELL, slippage can replace destAmount\nexport type TxInputAmountsPartSell = {\n slippage: number;\n srcAmount: PriceString;\n destAmount?: never; // disallowed\n};\n// when priceRoute with side=BUY, slippage can replace srcAmount\nexport type TxInputAmountsPartBuy = {\n slippage: number;\n srcAmount?: never; // disallowed\n destAmount: PriceString;\n};\n// both srcAmount and destAmount can be present in absence of slippage\nexport type TxInputAmountsPartBuyOrSell = {\n slippage?: never; // disallowed\n srcAmount: PriceString;\n destAmount: PriceString;\n};\n\n// more details in the docs https://developers.velora.xyz/api/velora-api/velora-market-api/build-parameters-for-transaction#request-body\nexport type BuildTxInputBase = {\n srcToken: Address;\n destToken: Address;\n userAddress: Address;\n /** @description Whenever msg.sender (`userAddress`) i.e. address calling the Velora contract is different than the address sending the transaction, `txOrigin` must be passed along with `userAddress` */\n txOrigin?: string;\n /** @description used with referral link */\n referrer?: string;\n partner?: string;\n partnerAddress?: string;\n partnerFeeBps?: number;\n /** @description If user should receive surplus instead of partner. Default: false */\n isSurplusToUser?: boolean;\n /** @description If fees should be sent directly to the partner instead of registering them on FeeClaimer. v6 only. Default: false */\n isDirectFeeTransfer?: boolean;\n /** @deprecated Use \"takeSurplus\" instead. Positive slippage goes to user, true by default */\n positiveSlippageToUser?: boolean;\n /** @description Set to true to take positive slippage. Works with partnerAddress. Default: false */\n takeSurplus?: boolean;\n /** @description Cap the surplus at 1% maximum. Default: true */\n isCapSurplus?: boolean;\n receiver?: Address;\n srcDecimals?: number;\n destDecimals?: number;\n permit?: string;\n deadline?: string;\n};\n\n// for Swap transaction\nexport type BuildSwapTxInput = BuildTxInputBase & {\n priceRoute: OptimalRate;\n} & (\n | TxInputAmountsPartSell\n | TxInputAmountsPartBuy\n | TxInputAmountsPartBuyOrSell\n ); // this union doesn't allow to mix srcAmount & destAmount & slippage together\n\n// building block for LimitOrders and NFT Orders swaps\n// can only use priceRoute.side=BUY and related TxInputAmountsPart*\ntype BuildTxInputBaseBUYForOrders<\n // to Omit extra keys\n // can't do Omit<> around union, breaks discriminated union\n K extends keyof TxInputAmountsPartBuy | keyof BuildTxInputBase = never\n> = Omit<BuildTxInputBase, K> &\n // destAmount is sum(orders[].makerAmount)\n (| Omit<TxInputAmountsPartBuy, 'destAmount' | K>\n | Omit<TxInputAmountsPartBuyOrSell, 'destAmount' | K>\n );\n\n// for LimitOrder Fill, without swap\nexport type BuildLimitOrderTxInput = BuildTxInputBaseBUYForOrders & {\n orders: SwappableOrder[];\n srcDecimals: number;\n destDecimals: number;\n};\n\n// for NFT Order Fill, without swap\nexport type BuildNFTOrderTxInput =\n // @TODO if NFT can ever be srcToken, change logic\n // for NFT token destDecimals = 0 is acceptable\n BuildTxInputBaseBUYForOrders<'destDecimals'> & {\n orders: SwappableNFTOrder[];\n srcDecimals: number;\n };\n\nexport interface BuildSwapAndLimitOrderTxInput0\n // destAmount is sum(orders[].makerAmount)\n extends Omit<BuildTxInputBase, 'destAmount'> {\n priceRoute: OptimalRate; // priceRoute.side=BUY\n orders: SwappableOrder[];\n destDecimals: number;\n}\n// for Swap + LimitOrder, priceRoute must have side=BUY\nexport type BuildSwapAndLimitOrderTxInput =\n // destAmount is sum(orders[].makerAmount)\n BuildTxInputBaseBUYForOrders & {\n priceRoute: OptimalRate; // priceRoute.side=BUY & priceRoute.contractMethod=simpleBuy\n orders: SwappableOrder[];\n destDecimals: number;\n };\n\n// with slippage for a swap and fill - p2p - order, without to fill a p2p order directly with the intended taker asset\n\n// for Swap + NFT Order, priceRoute must have side=BUY\nexport type BuildSwapAndNFTOrderTxInput =\n // destAmount is sum(orders[].makerAmount)\n BuildTxInputBaseBUYForOrders & {\n priceRoute: OptimalRate; // priceRoute.side=BUY & priceRoute.contractMethod=simpleBuy\n orders: SwappableNFTOrder[];\n };\n\nexport type BuildTxInput =\n | BuildSwapTxInput\n | BuildLimitOrderTxInput\n | BuildNFTOrderTxInput\n | BuildSwapAndLimitOrderTxInput\n | BuildSwapAndNFTOrderTxInput;\n\nexport type BuildOptionsBase = {\n /** @description Allows the API to skip performing onchain checks such as balances, allowances, as well as transaction simulations. The response does not contain `gas` parameter when set to `true` */\n ignoreChecks?: boolean;\n /** @description Allows the API to skip gas checks. The response does not contain `gas` parameter when set to `true` */\n ignoreGasEstimate?: boolean;\n /** @description Allows the API to skip performing onchain allowance checks. */\n ignoreAllowance?: boolean;\n /** @description Allows the API to return the contract parameters only. */\n onlyParams?: boolean;\n};\n\nexport type BuildOptionsWithGasPrice = BuildOptionsBase & Partial<WithGasPrice>;\nexport type BuildOptionsWitWithMaxFee = BuildOptionsBase & Partial<WithMaxFee>;\n\nexport type BuildOptions = BuildOptionsWithGasPrice | BuildOptionsWitWithMaxFee;\n\ntype BuildTx = (\n params: BuildTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildTxFunctions = {\n buildTx: BuildTx;\n};\n\ntype SearchStringParams = BuildOptions;\n\nexport const constructBuildTx = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildTxFunctions => {\n const transactionsURL = `${apiURL}/transactions/${chainId}` as const;\n\n const buildTx: BuildTx = async (params, options = {}, requestParams) => {\n if (\n 'priceRoute' in params &&\n 'destAmount' in params && // isn't provided together with `orders`\n !('orders' in params) // when present, destAmount becomes sum(orders[].makerAmount)\n ) {\n const {\n priceRoute,\n priceRoute: { side },\n } = params;\n const AmountMismatchError =\n side === SwapSide.SELL\n ? 'Source Amount Mismatch'\n : 'Destination Amount Mismatch';\n\n // user provides srcAmount or slippage but not both. so we only validate accordingly.\n assert(\n areAmountsCorrect({\n queryParams: params,\n side,\n priceRoute,\n }),\n AmountMismatchError\n );\n }\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<SearchStringParams>(options);\n\n const fetchURL = `${transactionsURL}/${search}` as const;\n\n const sanitizedParams =\n 'orders' in params && params.orders.length > 0\n ? {\n ...params,\n // make sure we don't pass more with orders than API expects\n orders: params.orders.map((order) => {\n const sanitizedOrderData =\n 'makerAssetId' in order\n ? sanitizeNFTOrderData(order) // assetType is provided here, because Order.*Asset may be address\n : // if Order received from API by hash\n sanitizeLimitOrderData(order);\n\n const sanitizedOrder: SwappableOrder = {\n ...sanitizedOrderData,\n signature: order.signature,\n };\n\n if (order.permitMakerAsset) {\n sanitizedOrder.permitMakerAsset = order.permitMakerAsset;\n }\n\n return sanitizedOrder;\n }),\n }\n : params;\n\n const takeSurplus =\n params.takeSurplus ??\n (params.positiveSlippageToUser !== undefined\n ? !params.positiveSlippageToUser\n : undefined);\n\n if ('positiveSlippageToUser' in sanitizedParams) {\n // positiveSlippageToUser & takeSurplus together will Error in API\n delete sanitizedParams.positiveSlippageToUser;\n }\n if (takeSurplus !== undefined) {\n sanitizedParams.takeSurplus = takeSurplus;\n }\n\n const fetchParams: FetcherPostInput = {\n url: fetchURL,\n method: 'POST',\n data: sanitizedParams,\n requestParams,\n };\n\n const builtTx = await fetcher<TransactionParams>(fetchParams);\n\n return builtTx;\n };\n\n return { buildTx };\n};\n\ninterface AreAmountsCorrectInput {\n queryParams: { srcAmount?: string; destAmount?: string; slippage?: number };\n side: SwapSide;\n priceRoute: OptimalRate;\n}\n\nfunction areAmountsCorrect({\n queryParams,\n side,\n priceRoute,\n}: AreAmountsCorrectInput): boolean {\n // return early after a simpler check if the user was swapping before filling\n if (queryParams.slippage) {\n return (\n (side === SwapSide.BUY &&\n queryParams.destAmount === priceRoute.destAmount) ||\n (side === SwapSide.SELL && queryParams.srcAmount === priceRoute.srcAmount)\n );\n }\n\n // provided amounts match the previously queried price route\n const [inputAmount, priceRouteAmount] =\n side === SwapSide.SELL\n ? [queryParams.srcAmount, priceRoute.srcAmount]\n : [queryParams.destAmount, priceRoute.destAmount];\n\n return inputAmount === priceRouteAmount;\n}\n","import { getRandomInt } from '../../../helpers/misc';\nimport type { Address, APIVersion } from '../../../types';\nimport {\n Domain,\n name,\n version,\n ZERO_ADDRESS,\n} from '../../common/orders/buildOrderData';\n\nconst Order = [\n { name: 'nonceAndMeta', type: 'uint256' },\n { name: 'expiry', type: 'uint128' },\n { name: 'makerAsset', type: 'address' },\n { name: 'takerAsset', type: 'address' },\n { name: 'maker', type: 'address' },\n { name: 'taker', type: 'address' },\n { name: 'makerAmount', type: 'uint256' },\n { name: 'takerAmount', type: 'uint256' },\n];\n\nexport interface BuildOrderDataInput {\n chainId: number;\n verifyingContract: Address;\n nonce?: number;\n expiry: number;\n makerAsset: Address;\n takerAsset: Address;\n makerAmount: string;\n takerAmount: string;\n maker: Address;\n // OrderData.taker must be Augustus (or other Executor) for p2p limitOrders to involve swap through Augustus\n /** @description actual user taker which will go into nonceAndMeta */\n taker?: Address;\n /** @description contract executor (Augustus or similar) that is allowed to execute the order, gois in Order.taker */\n contractTaker?: Address;\n\n AugustusAddress: Address;\n AppVersion: APIVersion;\n}\n\nexport type SignableOrderData = {\n types: { Order: typeof Order };\n domain: Domain;\n data: OrderData;\n};\n\nexport type OrderData = {\n nonceAndMeta: string;\n expiry: number;\n makerAsset: string;\n takerAsset: string;\n maker: string;\n taker: string;\n makerAmount: string;\n takerAmount: string;\n};\n\nexport function buildOrderData({\n chainId,\n verifyingContract,\n nonce = getRandomInt(),\n expiry,\n makerAsset,\n takerAsset,\n makerAmount,\n takerAmount,\n maker,\n AugustusAddress,\n // if taker is specified -- p2p order for that taker only to fill through Augustus (v5) or directly (v6)-- taker = Augustus | _taker, takerInNonce = _taker\n // if taker is not specified -- limitOrder for anyone to fill through Augustus or not -- taker = Zero, takerInNonce = Zero\n taker: takerInNonce = ZERO_ADDRESS,\n // if given, overrides the above choices made based on `taker`\n contractTaker,\n // for v6 only support taker=_taker for OTC orders\n AppVersion,\n}: BuildOrderDataInput): SignableOrderData {\n // first 160 bits is taker address (for p2p orders),\n // or 0 for limitOrders, so that anyone can be the taker of the Order\n const nonceAndMeta = (\n BigInt(takerInNonce) +\n (BigInt(nonce) << BigInt(160))\n ).toString(10);\n\n let taker: string;\n // contractTaker overrides always\n if (contractTaker) {\n taker = contractTaker;\n } else if (takerInNonce === ZERO_ADDRESS) {\n // no takerInNonce -> not p2p order -> allow anyone to fill (not only Augustus)\n taker = ZERO_ADDRESS;\n } else {\n // otherwise for p2p order ->\n if (AppVersion.startsWith('6.')) {\n //support 6.1+ versions\n\n // limit taker to EOA for v6 version (no Arbitrary Token Swaps + OTC Fill, or OTC Fill through AugustusSwapper)\n taker = takerInNonce;\n } else {\n // on v5\n // -> fill through Augustus only\n taker = AugustusAddress;\n }\n }\n\n const order: OrderData = {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n };\n\n return {\n types: { Order },\n domain: { name, version, chainId, verifyingContract },\n data: order,\n };\n}\n","import { DEFAULT_VERSION } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetSpender } from '../swap/spender';\nimport {\n buildOrderData,\n BuildOrderDataInput,\n SignableOrderData,\n} from './helpers/buildOrderData';\nexport * from './helpers/buildOrderData';\n\nexport type BuildLimitOrderInput = Omit<\n BuildOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress' | 'AppVersion'\n>;\n\ntype BuildLimitOrder = (\n buildLimitOrderParams: BuildLimitOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableOrderData>;\n\nexport type BuildLimitOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildLimitOrder: BuildLimitOrder;\n};\n\nexport const constructBuildLimitOrder = (\n options: ConstructFetchInput\n): BuildLimitOrderFunctions => {\n const { chainId } = options;\n\n // getContracts is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getContracts } = constructGetSpender(options);\n\n const buildLimitOrder: BuildLimitOrder = async (\n buildLimitOrderParams,\n requestParams\n ) => {\n const { AugustusSwapper: AugustusAddress, AugustusRFQ: verifyingContract } =\n await getContracts(requestParams);\n\n const AppVersion = options.version ?? DEFAULT_VERSION;\n\n return buildOrderData({\n ...buildLimitOrderParams,\n chainId,\n verifyingContract,\n AugustusAddress,\n AppVersion,\n });\n };\n\n return {\n buildLimitOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport type { SignableOrderData } from './buildOrder';\nimport { sanitizeOrderData } from './helpers/misc';\n\nexport type SignLimitOrderFunctions = {\n signLimitOrder: (signableOrderData: SignableOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignLimitOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignLimitOrderFunctions => {\n const signLimitOrder: SignLimitOrderFunctions['signLimitOrder'] = (\n typedData\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableOrderData = {\n ...typedData,\n data: sanitizeOrderData(typedData.data),\n };\n return options.contractCaller.signTypedDataCall(typedDataOnly);\n };\n\n return { signLimitOrder };\n};\n","import type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructGetSpender } from '../swap/spender';\n\nexport type CancelOrder<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelOrderBulk<T> = (\n orderHashes: string[],\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelLimitOrderFunctions<T> = {\n cancelLimitOrder: CancelOrder<T>;\n cancelLimitOrderBulk: CancelOrderBulk<T>;\n};\n\n// much smaller than the whole AugustusRFQ_ABI\nconst MinAugustusRFQAbi = [\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'orderHash',\n type: 'bytes32',\n },\n ],\n name: 'cancelOrder',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'orderHashes',\n type: 'bytes32[]',\n },\n ],\n name: 'cancelOrders',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructCancelLimitOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): CancelLimitOrderFunctions<T> => {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const cancelLimitOrder: CancelOrder<T> = async (\n orderHash,\n overrides = {},\n requestParams\n ) => {\n const verifyingContract = await getAugustusRFQ(requestParams);\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n // @CHECK if verifyingContract is the one we need to approve\n // maybe a Proxy in-between\n address: verifyingContract,\n abi: MinAugustusRFQAbi,\n contractMethod: 'cancelOrder',\n args: [orderHash],\n overrides,\n });\n\n return res;\n };\n\n const cancelLimitOrderBulk: CancelOrderBulk<T> = async (\n orderHashes,\n overrides = {},\n requestParams\n ) => {\n const verifyingContract = await getAugustusRFQ(requestParams);\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n // @CHECK if verifyingContract is the one we need to approve\n // maybe a Proxy in-between\n address: verifyingContract,\n abi: MinAugustusRFQAbi,\n contractMethod: 'cancelOrders',\n args: [orderHashes],\n overrides,\n });\n\n return res;\n };\n\n return {\n cancelLimitOrder,\n cancelLimitOrderBulk,\n };\n};\n","type SplitSignatureResult = {\n v: number;\n r: string;\n s: string;\n compact: string;\n};\n\nexport function splitSignature(signature: string): SplitSignatureResult {\n // Remove \"0x\" prefix if present\n if (signature.startsWith('0x')) {\n signature = signature.slice(2);\n }\n\n // Convert the hex string to a byte array\n const bytes = new Uint8Array(signature.length / 2);\n for (let i = 0; i < signature.length; i += 2) {\n bytes[i / 2] = parseInt(signature.slice(i, i + 2), 16);\n }\n\n // Validate the signature length (64 or 65 bytes)\n if (bytes.length !== 64 && bytes.length !== 65) {\n throw new Error('Invalid signature length: must be 64 or 65 bytes');\n }\n\n // Extract r and s components\n const r = `0x${Array.from(bytes.slice(0, 32), (b) =>\n b.toString(16).padStart(2, '0')\n ).join('')}`;\n let s: string;\n let v;\n\n // Handle 64-byte (EIP-2098 compact) and 65-byte signatures\n if (bytes.length === 64) {\n // Extract v from the highest bit of s and clear the bit in s\n v = 27 + (bytes[32]! >> 7);\n bytes[32]! &= 0x7f; // Clear the highest bit\n s = `0x${Array.from(bytes.slice(32, 64))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n } else {\n s = `0x${Array.from(bytes.slice(32, 64))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n\n // Extract v directly for 65-byte signature\n v = bytes[64]!;\n\n // Normalize v to canonical form (27 or 28)\n if (v < 27) {\n v += 27;\n }\n }\n\n // Compute yParityAndS (_vs) for the compact signature\n const sBytes = Array.from(bytes.slice(32, 64));\n if (v === 28) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n sBytes[0]! |= 0x80; // Set the highest bit if v is 28\n }\n const yParityAndS = `0x${sBytes\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n\n // Construct the compact signature by concatenating r and yParityAndS\n const compactSignature = r + yParityAndS.slice(2);\n\n return { v, r, s, compact: compactSignature };\n}\n","import { splitSignature } from './signature';\n\ntype EncodeEIP_2612PermitFunctionInput = {\n permitSignature: string;\n owner: string;\n spender: string;\n value: string | bigint;\n deadline: string | number | bigint;\n};\n\n// encoding params for Token.permit() Permit1 function\nexport function encodeEIP_2612PermitFunctionInput({\n owner,\n spender,\n value,\n deadline,\n permitSignature,\n}: EncodeEIP_2612PermitFunctionInput): string {\n const { v, r, s } = splitSignature(permitSignature);\n\n const encodedOwner = encodeAddress(owner);\n const encodedSpender = encodeAddress(spender);\n const encodedValue = encodeUint256(value);\n const encodedDeadline = encodeUint256(deadline.toString());\n const encodedV = encodeUint8(v);\n const encodedR = encodeBytes32(r);\n const encodedS = encodeBytes32(s);\n\n // Concatenate all encoded values, stripping the \"0x\" prefix from each (except the first one)\n return (\n '0x' +\n [\n encodedOwner,\n encodedSpender,\n encodedValue,\n encodedDeadline,\n encodedV,\n encodedR,\n encodedS,\n ]\n .map((val) => val.slice(2)) // Remove \"0x\" prefix from each encoded value\n .join('') // Concatenate the values\n );\n}\n\ntype EncodeDAIlikePermitFunctionInput = {\n permitSignature: string;\n holder: string;\n spender: string;\n nonce: number | bigint | string;\n expiry: number | bigint | string;\n};\n\n// encoding params for DAIlike.permit() function\nexport function encodeDAIlikePermitFunctionInput({\n permitSignature,\n holder,\n spender,\n nonce,\n expiry,\n}: EncodeDAIlikePermitFunctionInput): string {\n const { v, r, s } = splitSignature(permitSignature);\n\n const encodedHolder = encodeAddress(holder);\n const encodedSpender = encodeAddress(spender);\n const encodedNonce = encodeUint256(nonce.toString());\n const encodedExpiry = encodeUint256(expiry.toString());\n const encodedV = encodeUint8(v);\n const encodedR = encodeBytes32(r);\n const encodedS = encodeBytes32(s);\n\n // Concatenate all encoded values, stripping the \"0x\" prefix from each (except the first one)\n return (\n '0x' +\n [\n encodedHolder,\n encodedSpender,\n encodedNonce,\n encodedExpiry,\n encodeBool(true), //allowed=true\n encodedV,\n encodedR,\n encodedS,\n ]\n .map((val) => val.slice(2)) // Remove \"0x\" prefix from each encoded value\n .join('') // Concatenate the values\n );\n}\n\n// encode an address (20 bytes) into 32 bytes\nexport function encodeAddress(address: string): string {\n const strippedAddress = address.replace(/^0x/, ''); // Remove \"0x\" prefix\n return '0x' + strippedAddress.toLowerCase().padStart(64, '0');\n}\n\n// encode a uint256 value\nexport function encodeUint256(value: string | bigint): string {\n const bn = BigInt(value);\n return '0x' + bn.toString(16).padStart(64, '0');\n}\n\n// encode a uint8 value\nexport function encodeUint8(value: number | bigint): string {\n return '0x' + value.toString(16).padStart(64, '0');\n}\n\n// encode a bytes32 value\nexport function encodeBytes32(value: string): string {\n const strippedValue = value.replace(/^0x/, ''); // Remove \"0x\" prefix\n return '0x' + strippedValue.padStart(64, '0').toLowerCase();\n}\n\n//encode a boolean\nexport function encodeBool(value: boolean): string {\n const encodedValue = value ? '1' : '0';\n // padded to 32 bytes\n return '0x' + encodedValue.padStart(64, '0');\n}\n\n/* \nconst EIP_2612_PERMIT_ABI = [\n {\n constant: false,\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'value',\n type: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n },\n {\n name: 'v',\n type: 'uint8',\n },\n {\n name: 'r',\n type: 'bytes32',\n },\n {\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n]; \n*/\n\n/* \nconst DAI_EIP_2612_PERMIT_ABI = [\n {\n constant: false,\n inputs: [\n {\n internalType: 'address',\n name: 'holder',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'allowed',\n type: 'bool',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n];\n */\n","import type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport type { OrderData } from './buildOrder';\nimport { constructGetSpender } from '../swap/spender';\nimport { sanitizeOrderData } from './helpers/misc';\nimport {\n encodeDAIlikePermitFunctionInput,\n encodeEIP_2612PermitFunctionInput,\n} from '../common/orders/encoding';\n\nexport type FillOrderDirectlyFunctions<T> = {\n fillOrderDirectly: FillOrderDirectly<T>;\n};\n\ntype TakerPermitEncodedInputParams = {\n encodedPermitParams: string;\n};\n\ntype TakerPermit1Data = {\n signature: string;\n deadline: number | bigint | string;\n amount?: string;\n isDaiPermit?: false;\n};\n\ntype TakerDaiPermitData = {\n signature: string;\n expiry: number | bigint | string;\n nonce: number | bigint | string;\n isDaiPermit: true;\n};\n\ntype TakerPermitObject =\n | TakerPermitEncodedInputParams\n | TakerPermit1Data\n | TakerDaiPermitData;\n\nexport type FillOrderDirectly<T> = (\n orderFillData: {\n order: OrderData;\n signature: string;\n /** @description Permit1 data or DAI Permit data or Token.parmit() input params encoded; Permit by taker for Taker Asset with AugustusRFQ as spender */\n takerPermit?: TakerPermitObject;\n },\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\n// much smaller than the whole AugustusRFQ_ABI\nconst MinAugustusRFQAbi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'nonceAndMeta',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'expiry',\n type: 'uint128',\n },\n {\n internalType: 'address',\n name: 'makerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'takerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'maker',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'taker',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'makerAmount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'takerAmount',\n type: 'uint256',\n },\n ],\n internalType: 'struct AugustusRFQ.Order',\n name: 'order',\n type: 'tuple',\n },\n {\n internalType: 'bytes',\n name: 'signature',\n type: 'bytes',\n },\n ],\n name: 'fillOrder',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'nonceAndMeta',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'expiry',\n type: 'uint128',\n },\n {\n internalType: 'address',\n name: 'makerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'takerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'maker',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'taker',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'makerAmount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'takerAmount',\n type: 'uint256',\n },\n ],\n internalType: 'struct AugustusRFQ.Order',\n name: 'order',\n type: 'tuple',\n },\n {\n internalType: 'bytes',\n name: 'signature',\n type: 'bytes',\n },\n {\n internalType: 'uint256',\n name: 'takerTokenFillAmount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'permitTakerAsset',\n type: 'bytes',\n },\n {\n internalType: 'bytes',\n name: 'permitMakerAsset',\n type: 'bytes',\n },\n ],\n name: 'partialFillOrderWithTargetPermit',\n outputs: [\n {\n internalType: 'uint256',\n name: 'makerTokenFilledAmount',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype FillOrderMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport function constructFillOrderDirectly<T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): FillOrderDirectlyFunctions<T> {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const fillOrderDirectly: FillOrderDirectly<T> = async (\n { order, signature, takerPermit },\n overrides = {},\n requestParams\n ) => {\n const AugustusRFQ = await getAugustusRFQ(requestParams);\n\n const sanitizedOrder = sanitizeOrderData(order);\n\n if (!takerPermit) {\n const res = await options.contractCaller.transactCall<FillOrderMethods>({\n address: AugustusRFQ,\n abi: MinAugustusRFQAbi,\n contractMethod: 'fillOrder',\n args: [sanitizedOrder, signature],\n overrides,\n });\n\n return res;\n }\n\n let permitTakerAsset: string;\n if ('encodedPermitParams' in takerPermit) {\n permitTakerAsset = takerPermit.encodedPermitParams;\n } else if ('isDaiPermit' in takerPermit && takerPermit.isDaiPermit) {\n // encoded DAI.permit() function params by taker with AugustusRFQ as spender\n permitTakerAsset = encodeDAIlikePermitFunctionInput({\n holder: order.taker,\n spender: AugustusRFQ,\n expiry: takerPermit.expiry,\n nonce: takerPermit.nonce,\n permitSignature: takerPermit.signature,\n });\n } else {\n // encoded TakerAsset.permit() function params by taker with AugustusRFQ as spender, Permit1 only\n permitTakerAsset = encodeEIP_2612PermitFunctionInput({\n owner: order.taker,\n spender: AugustusRFQ,\n value: takerPermit.amount || order.takerAmount, // can use permit with a bigger value, fallback to exact Order takerAmount\n deadline: takerPermit.deadline,\n permitSignature: takerPermit.signature,\n });\n }\n\n const res = await options.contractCaller.transactCall<FillOrderMethods>({\n address: AugustusRFQ,\n abi: MinAugustusRFQAbi,\n contractMethod: 'partialFillOrderWithTargetPermit',\n args: [\n sanitizedOrder, // order\n signature, // order.signature\n order.takerAmount, // takerTokenFillAmount, can even partially fill\n order.taker, // target\n permitTakerAsset,\n '0x', // permitMakerAsset, unused because hard to account for changing nonce for long running Orders\n ],\n overrides,\n });\n\n return res;\n };\n\n return { fillOrderDirectly };\n}\n","// @TODO getOrder, getOrders from API\n// onchain from contract can't distinguish between filled or cancelled\nimport { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport {\n constructBaseFetchUrlGetter,\n GetOrdersURLs,\n GetOrderURL,\n GetRequiredAllowanceURL as GetRequiredBalanceURL,\n} from './helpers/misc';\nimport type {\n LimitOrderFromApi,\n LimitOrdersApiResponse,\n LimitOrderType,\n} from './helpers/types';\n\ntype PaginationParams = {\n limit?: number;\n offset?: number;\n hideSmallBalances?: boolean;\n orderBy?: 'createdAt' | 'updatedAt' | 'expiry';\n};\n\n// get orders by `maker` or `taker`\nexport type LimitOrdersUserParams = (\n | { maker: Address; type: LimitOrderType }\n | { taker: Address; type: LimitOrderType }\n) &\n PaginationParams;\n\nexport type GetRequiredAllowanceParams = {\n maker: Address;\n token?: Address;\n};\n\ntype GetLimitOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\ntype GetLimitOrders = (\n userParams: LimitOrdersUserParams,\n requestParams?: RequestParameters\n) => Promise<LimitOrdersApiResponse>;\n\ntype GetRequiredBalance = (\n userParams: GetRequiredAllowanceParams,\n requestParams?: RequestParameters\n) => Promise<Record<string, string>>;\n\nexport type GetLimitOrdersFunctions = {\n getLimitOrders: GetLimitOrders;\n getLimitOrderByHash: GetLimitOrderByHash;\n /**\n * Gets fillableBalance for tokens from user's active orders.\n * User needs to have enough balance & allowance to cover active orders before creating new orders.\n * @param userParams - parameters to get allowance for active orders\n * @param {string} userParams.maker - user to get required allowances for\n * @param {string=} userParams.token - if given `token`, the mapping will contain that token address only\n * @param {RequestParameters=} requestParams - requestParams passed to fetcher, can include {signal: AbortSignal, timeout: for axios, etc.}\n * @returns `{Lowercase<Address> => wei number as string}` mapping of token to fillableBalance\n */\n getRequiredBalance: GetRequiredBalance;\n};\n\nexport const constructGetLimitOrders = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetLimitOrdersFunctions => {\n const getBaseFetchURLByEntityType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const getLimitOrders: GetLimitOrders = async (userParams, requestParams) => {\n const baseFetchURL = getBaseFetchURLByEntityType(userParams.type);\n const userURL =\n 'maker' in userParams\n ? (`maker/${userParams.maker}` as const)\n : (`taker/${userParams.taker}` as const);\n\n const { offset, limit, hideSmallBalances, orderBy } = userParams;\n const search = constructSearchString<PaginationParams>({\n offset,\n limit,\n hideSmallBalances,\n orderBy,\n });\n\n const fetchURL = `${baseFetchURL}/${userURL}${search}` as const;\n\n const response = await fetcher<LimitOrdersApiResponse, GetOrdersURLs>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getRequiredBalance: GetRequiredBalance = async (\n userParams,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByEntityType('fillablebalance');\n const userURL = `${baseFetchURL}/${userParams.maker}` as const;\n const fetchURL = userParams.token\n ? (`${userURL}/${userParams.token}` as const)\n : userURL;\n\n const response = await fetcher<\n Record<string, string>,\n GetRequiredBalanceURL\n >({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getLimitOrderByHash: GetLimitOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByEntityType();\n const fetchURL = `${baseFetchURL}/${orderHash}` as const;\n\n const order = await fetcher<LimitOrderFromApi, GetOrderURL>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n return {\n getLimitOrders,\n getLimitOrderByHash,\n getRequiredBalance,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructBaseFetchUrlGetter, PostOrderURLs } from './helpers/misc';\nimport type {\n LimitOrderApiResponse,\n LimitOrderToSend,\n LimitOrderFromApi,\n LimitOrderType,\n} from './helpers/types';\n\ntype PostLimitOrder = (\n limitOrderWithSignatureAndPermit: LimitOrderToSend,\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\nexport type PostLimitOrderFunctions = {\n postLimitOrder: PostLimitOrder;\n postP2POrder: PostLimitOrder;\n};\n\nexport const constructPostLimitOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostLimitOrderFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const postTypedOrder = async (\n limitOrderWithSignatureAndPermit: LimitOrderToSend,\n type: LimitOrderType,\n requestParams?: RequestParameters\n ): Promise<LimitOrderFromApi> => {\n const fetchURL = getBaseFetchURLByOrderType(type);\n\n const { order: newOrder } = await fetcher<\n LimitOrderApiResponse,\n PostOrderURLs\n >({\n url: fetchURL,\n method: 'POST',\n data: limitOrderWithSignatureAndPermit,\n requestParams,\n });\n\n return newOrder;\n };\n\n const postLimitOrder: PostLimitOrder = (\n limitOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n limitOrderWithSignatureAndPermit,\n 'LIMIT',\n requestParams\n );\n };\n\n const postP2POrder: PostLimitOrder = (\n limitOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n limitOrderWithSignatureAndPermit,\n 'P2P',\n requestParams\n );\n };\n\n return { postLimitOrder, postP2POrder };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\nimport { constructApproveToken } from '../swap/approve';\nimport { constructGetSpender } from '../swap/spender';\n\nexport type ApproveTokenForLimitOrderFunctions<T> = {\n /** @description approving AugustusRFQ as spender for makerAsset */\n approveMakerTokenForLimitOrder: ApproveToken<T>;\n /** @description approving AugustusRFQ as spender for takerAsset to call SDK.fillOrderDirectly */\n approveTakerTokenForFillingP2POrderDirectly: ApproveToken<T>;\n /** @description approving AugustusSwapper as spender for takerAsset for Limit Orders that will be executed through it */\n approveTakerTokenForLimitOrder: ApproveToken<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForLimitOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForLimitOrderFunctions<T> => {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const approveMakerTokenForLimitOrder: ApproveToken<T> =\n approveTokenMethodFactory<T>(options.contractCaller, getAugustusRFQ);\n\n // approving TokenTransaferProxy as for the swap\n const { approveToken: approveTakerTokenForLimitOrder } =\n constructApproveToken(options);\n\n return {\n approveMakerTokenForLimitOrder,\n approveTakerTokenForFillingP2POrderDirectly: approveMakerTokenForLimitOrder,\n approveTakerTokenForLimitOrder,\n };\n};\n","import type { ConstructFetchInput } from '../../types';\nimport { constructGetSpender, GetSpender } from '../swap/spender';\n\nexport type GetLimitOrdersContractFunctions = {\n getLimitOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\nexport const constructGetLimitOrdersContract = (\n options: ConstructFetchInput\n): GetLimitOrdersContractFunctions => {\n // analogous to getSpender() but for Limit Orders Contract = AugustusRFQ\n\n const {\n getSpender: getTokenTransferProxy,\n getAugustusRFQ: getLimitOrdersContract,\n } = constructGetSpender(options);\n\n return { getLimitOrdersContract, getTokenTransferProxy };\n};\n","import type { ConstructFetchInput, OptimalRate } from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport {\n API_URL,\n SwapSide,\n ContractMethod,\n DEFAULT_VERSION,\n} from '../../constants';\nimport {\n BuildLimitOrderTxInput,\n BuildOptions,\n BuildSwapAndLimitOrderTxInput,\n TransactionParams,\n constructBuildTx,\n} from '../swap/transaction';\nimport { constructGetRate, GetRateInput, RateOptions } from '../swap/rates';\nimport type { OrderData } from './buildOrder';\nimport { isFilledArray } from '../../helpers/misc';\nimport type { RequestParameters } from '../../types';\n\ntype MinBuildSwapAndLimitOrderTxInput = Omit<\n // these are derived from `orders`\n BuildSwapAndLimitOrderTxInput,\n 'srcToken' | 'srcAmount' | 'destToken' | 'destDecimals'\n>;\n\ntype BuildSwapAndLimitOrdersTx = (\n params: MinBuildSwapAndLimitOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\ntype MinBuildLimitOrderTxInput = Omit<\n BuildLimitOrderTxInput,\n // these are derived from `orders`\n 'srcToken' | 'srcAmount' | 'destToken' | 'slippage'\n // `slippage` doesn't participate as we derive `srcAmount` already\n>;\n\ntype BuildLimitOrdersTx = (\n params: MinBuildLimitOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildLimitOrdersTxFunctions = {\n getLimitOrdersRate: GetLimitOrdersRate;\n buildLimitOrderTx: BuildLimitOrdersTx;\n buildSwapAndLimitOrderTx: BuildSwapAndLimitOrdersTx;\n};\n\ntype GetLimitOrdersRate = (\n // `amount`, if given, must equal the total of the orders' `takerAmounts`\n options: Omit<GetRateInput, 'amount' | 'side'> & { amount?: string },\n orders: CheckableOrderData[],\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport const constructBuildLimitOrderTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildLimitOrdersTxFunctions => {\n const { buildTx: buildSwapTx } = constructBuildTx({\n apiURL,\n chainId,\n fetcher,\n version,\n });\n\n const { getRate: getSwapAndLimitOrderRate } = constructGetRate({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n // returns priceRoute that would allow to swap from srcToken to destToken(=order.takerAsset) followed by filling limit orders\n const getLimitOrdersRate: GetLimitOrdersRate = async (\n { srcToken, destToken, amount, options: _options = {}, ...rest },\n orders,\n requestParams\n ) => {\n assert(orders.length > 0, 'must pass at least 1 order');\n\n const { totalTakerAmount, takerAsset } = checkAndParseOrders(orders);\n assert(\n takerAsset.toLowerCase() === destToken.toLowerCase(),\n 'All orders must have the same takerAsset as destToken'\n );\n\n const takerAmountString = totalTakerAmount.toString(10);\n\n if (amount) {\n assert(\n amount === takerAmountString,\n \"`amount` must equal the total of the orders' `takerAmounts`\"\n );\n }\n\n // The pricing must use includeContractMethods=simpleBuy and side=BUY\n const options: RateOptions = {\n ..._options,\n includeContractMethods: [ContractMethod.simpleBuy],\n };\n\n const side = SwapSide.BUY;\n\n const rateInput: GetRateInput = {\n ...rest,\n srcToken,\n destToken,\n amount: takerAmountString,\n side,\n options,\n };\n\n // priceRoute\n const optimalRate = await getSwapAndLimitOrderRate(\n rateInput,\n requestParams\n );\n return optimalRate;\n };\n\n // derive srcToken, destToken and srcAmount from orders[]\n const buildLimitOrderTx: BuildLimitOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { makerAsset, takerAsset, totalTakerAmount } = checkAndParseOrders(\n params.orders\n );\n\n const fillParams: BuildLimitOrderTxInput = {\n ...params,\n // taker supplies takerAsset\n srcToken: takerAsset,\n // no `slippage` in `params`\n srcAmount: totalTakerAmount.toString(10),\n // taker gets makerAsset in the end\n destToken: makerAsset,\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n const buildSwapAndLimitOrderTx: BuildSwapAndLimitOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { makerAsset } = checkAndParseOrders(params.orders);\n\n const fillParams: BuildSwapAndLimitOrderTxInput = {\n ...params,\n // taker supplies srcToken\n srcToken: params.priceRoute.srcToken,\n // which is swapped for makerAsset, that would go towards filling the orders\n destToken: makerAsset,\n destDecimals: params.priceRoute.destDecimals,\n // one or the other\n ...(params.slippage\n ? { slippage: params.slippage }\n : // may sneak in as part of `params`\n { srcAmount: params.priceRoute.srcAmount, slippage: undefined }),\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n return {\n getLimitOrdersRate,\n buildLimitOrderTx,\n buildSwapAndLimitOrderTx,\n };\n};\n\ntype CheckAndParseOrdersResult = Omit<CheckableOrderData, 'takerAmount'> & {\n totalTakerAmount: bigint;\n};\n\ntype CheckableOrderData = Pick<\n OrderData,\n 'takerAsset' | 'makerAsset' | 'takerAmount' | 'maker'\n> & { taker?: OrderData['taker'] };\n\nfunction checkAndParseOrders(\n orders: CheckableOrderData[]\n): CheckAndParseOrdersResult {\n assert(isFilledArray(orders), 'must pass at least 1 order');\n\n const { takerAssetsSet, makerAssetsSet, totalTakerAmount } = orders.reduce<\n Record<'takerAssetsSet' | 'makerAssetsSet', Set<string>> & {\n totalTakerAmount: bigint;\n }\n >(\n (accum, order) => {\n accum.takerAssetsSet.add(order.takerAsset.toLowerCase());\n accum.makerAssetsSet.add(order.makerAsset.toLowerCase());\n\n accum.totalTakerAmount =\n accum.totalTakerAmount + BigInt(order.takerAmount);\n return accum;\n },\n {\n takerAssetsSet: new Set(),\n makerAssetsSet: new Set(),\n totalTakerAmount: BigInt(0),\n }\n );\n\n assert(\n takerAssetsSet.size === 1,\n 'All orders must have the same takerAsset as destToken'\n );\n assert(makerAssetsSet.size === 1, 'All orders must have the same makerAsset');\n\n const [{ maker, taker, makerAsset, takerAsset }] = orders;\n\n return {\n totalTakerAmount,\n maker,\n taker,\n makerAsset,\n takerAsset,\n };\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetSpender } from '../swap/spender';\nimport {\n buildOrderData,\n BuildNFTOrderDataInput,\n SignableNFTOrderData,\n} from './helpers/buildOrderData';\nexport * from './helpers/buildOrderData';\n\nexport type BuildNFTOrderInput = Omit<\n BuildNFTOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress'\n>;\n\ntype BuildNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableNFTOrderData>;\n\nexport type BuildNFTOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildNFTOrder: BuildNFTOrder;\n};\n\nexport const constructBuildNFTOrder = (\n options: ConstructFetchInput\n): BuildNFTOrderFunctions => {\n const { chainId } = options;\n\n // getContracts is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getContracts } = constructGetSpender(options);\n\n const buildNFTOrder: BuildNFTOrder = async (\n buildNFTOrderParams,\n requestParams\n ) => {\n const { AugustusSwapper: AugustusAddress, AugustusRFQ: verifyingContract } =\n await getContracts(requestParams);\n\n return buildOrderData({\n ...buildNFTOrderParams,\n chainId,\n verifyingContract,\n AugustusAddress,\n });\n };\n\n return {\n buildNFTOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport type { SignableNFTOrderData } from './buildOrder';\nimport { sanitizeOrderData } from './helpers/misc';\n\nexport type SignNFTOrderFunctions = {\n signNFTOrder: (signableOrderData: SignableNFTOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignNFTOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignNFTOrderFunctions => {\n const signNFTOrder: SignNFTOrderFunctions['signNFTOrder'] = (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableNFTOrderData = {\n ...typedData,\n // here assetType isn't provided, SignableData must already have corrent BigIntAsString\n // @TODO consider using `template_${types}` for Address, likely bad idea when considering 3rd-party code\n data: sanitizeOrderData(typedData.data),\n };\n return options.contractCaller.signTypedDataCall(typedDataOnly);\n };\n\n return { signNFTOrder };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport {\n CancelOrder,\n CancelOrderBulk,\n constructCancelLimitOrder,\n} from '../limitOrders/cancelOrder';\n\nexport type CancelNFTOrderFunctions<T> = {\n cancelNFTOrder: CancelOrder<T>;\n cancelNFTOrderBulk: CancelOrderBulk<T>;\n};\n\n// should work the same as for LimitOrders\nexport const constructCancelNFTOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): CancelNFTOrderFunctions<T> => {\n const { cancelLimitOrder, cancelLimitOrderBulk } =\n constructCancelLimitOrder(options);\n return {\n cancelNFTOrder: cancelLimitOrder,\n cancelNFTOrderBulk: cancelLimitOrderBulk,\n };\n};\n","import { API_URL } from '../../constants';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport {\n constructBaseFetchUrlGetter,\n GetOrdersURLs,\n GetOrderURL,\n} from './helpers/misc';\nimport type {\n NFTOrderFromAPI,\n NFTOrdersApiResponse,\n NFTOrderType,\n} from './helpers/types';\n\n// get orders by `maker` or `taker`\nexport type NFTOrdersUserParams =\n | { maker: Address; type: NFTOrderType }\n | { taker: Address; type: NFTOrderType };\ntype GetNFTOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\ntype GetNFTOrders = (\n userParams: NFTOrdersUserParams,\n requestParams?: RequestParameters\n) => Promise<NFTOrdersApiResponse>;\n\nexport type GetNFTOrdersFunctions = {\n getNFTOrders: GetNFTOrders;\n getNFTOrderByHash: GetNFTOrderByHash;\n};\n\nexport const constructGetNFTOrders = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetNFTOrdersFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const getNFTOrders: GetNFTOrders = async (userParams, requestParams) => {\n const baseFetchURL = getBaseFetchURLByOrderType(userParams.type);\n const userURL =\n 'maker' in userParams\n ? (`maker/${userParams.maker}` as const)\n : (`taker/${userParams.taker}` as const);\n const fetchURL = `${baseFetchURL}/${userURL}` as const;\n\n const response = await fetcher<NFTOrdersApiResponse, GetOrdersURLs>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getNFTOrderByHash: GetNFTOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByOrderType();\n const fetchURL = `${baseFetchURL}/${orderHash}` as const;\n\n const order = await fetcher<NFTOrderFromAPI, GetOrderURL>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n return {\n getNFTOrders,\n getNFTOrderByHash,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructBaseFetchUrlGetter, PostOrderURLs } from './helpers/misc';\nimport type {\n NFTOrderToSend,\n NFTOrderType,\n NFTOrderFromAPI,\n NFTOrderApiResponse,\n} from './helpers/types';\n\ntype PostNFTOrder = (\n NFTOrderWithSignatureAndPermit: NFTOrderToSend,\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\n\nexport type PostNFTOrderFunctions = {\n postNFTLimitOrder: PostNFTOrder;\n postNFTP2POrder: PostNFTOrder;\n};\n\nexport const constructPostNFTOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostNFTOrderFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const postTypedOrder = async (\n NFTOrderWithSignatureAndPermit: NFTOrderToSend,\n type: NFTOrderType,\n requestParams?: RequestParameters\n ): Promise<NFTOrderFromAPI> => {\n const fetchURL = getBaseFetchURLByOrderType(type);\n\n // @TODO check API return matches\n const { order: newOrder } = await fetcher<\n NFTOrderApiResponse,\n PostOrderURLs\n >({\n url: fetchURL,\n method: 'POST',\n data: NFTOrderWithSignatureAndPermit,\n requestParams,\n });\n\n return { ...newOrder };\n };\n\n const postNFTLimitOrder: PostNFTOrder = (\n NFTOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n NFTOrderWithSignatureAndPermit,\n 'LIMIT',\n requestParams\n );\n };\n\n const postNFTP2POrder: PostNFTOrder = (\n NFTOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(NFTOrderWithSignatureAndPermit, 'P2P', requestParams);\n };\n\n return { postNFTLimitOrder, postNFTP2POrder };\n};\n","import type { ConstructFetchInput } from '../../types';\nimport { constructGetSpender, GetSpender } from '../swap/spender';\n\nexport type GetNFTOrdersContractFunctions = {\n getNFTOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n// should work the same as LimitOrders\nexport const constructGetNFTOrdersContract = (\n options: ConstructFetchInput\n): GetNFTOrdersContractFunctions => {\n // analogous to getSpender() but for Limit Orders Contract = AugustusRFQ\n\n const {\n getSpender: getTokenTransferProxy,\n getAugustusRFQ: getNFTOrdersContract,\n } = constructGetSpender(options);\n\n return {\n getNFTOrdersContract,\n getTokenTransferProxy,\n };\n};\n","import type { ApproveToken } from '../../helpers/approve';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n Address,\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructApproveToken } from '../swap/approve';\nimport { constructGetNFTOrdersContract } from './getOrdersContract';\n\ntype ApproveNFT<T> = (\n tokenAddress: Address,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type ApproveTokenForNFTOrderFunctions<T> = {\n /** @description approving AugustusSwapper as spender for takerAsset (ERC20) for Limit Orders that will be executed through it */\n approveERC20ForNFTOrder: ApproveToken<T>;\n /** @description approving AugustusRFQ as spender for makerAsset (NFT) */\n approveNFTForNFTOrder: ApproveNFT<T>;\n};\n\nconst MinNFTAbi = [\n {\n constant: false,\n inputs: [\n {\n name: '_operator',\n type: 'address',\n },\n {\n name: '_approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype ApprovalMethods = ExtractAbiMethodNames<typeof MinNFTAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForNFTOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForNFTOrderFunctions<T> => {\n // approving TokenTransaferProxy as for the swap\n const { approveToken: approveERC20ForNFTOrder } =\n constructApproveToken(options);\n\n const { getNFTOrdersContract } = constructGetNFTOrdersContract(options);\n\n const approveNFTForNFTOrder: ApproveNFT<T> = async (\n tokenAddress,\n overrides = {},\n requestParams\n ) => {\n // @TODO add approvetakerAssetForNFTOrder to use AugustusSwapper as spender if we ever have SELL NFT swaps\n const AugustusRFQ = await getNFTOrdersContract(requestParams);\n\n const res = await options.contractCaller.transactCall<ApprovalMethods>({\n address: tokenAddress,\n abi: MinNFTAbi,\n contractMethod: 'setApprovalForAll',\n args: [AugustusRFQ, true],\n overrides,\n });\n\n return res;\n };\n\n return { approveERC20ForNFTOrder, approveNFTForNFTOrder };\n};\n","import type { Address, ConstructFetchInput, OptimalRate } from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport {\n API_URL,\n SwapSide,\n ContractMethod,\n DEFAULT_VERSION,\n} from '../../constants';\nimport {\n BuildNFTOrderTxInput,\n BuildOptions,\n BuildSwapAndNFTOrderTxInput,\n TransactionParams,\n constructBuildTx,\n} from '../swap/transaction';\nimport { constructGetRate, GetRateInput, RateOptions } from '../swap/rates';\nimport type { BigIntAsString, NFTOrderData } from './buildOrder';\nimport { isFilledArray } from '../../helpers/misc';\nimport type { RequestParameters } from '../../types';\ntype MinBuildSwapAndNFTOrderTxInput = Omit<\n // these are derived from `orders`\n BuildSwapAndNFTOrderTxInput,\n 'srcToken' | 'srcAmount' | 'destToken' | 'destDecimals'\n>;\n\ntype BuildSwapAndNFTOrdersTx = (\n params: MinBuildSwapAndNFTOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\ntype MinBuildNFTOrderTxInput = Omit<\n BuildNFTOrderTxInput,\n // these are derived from `orders`\n 'srcToken' | 'srcAmount' | 'destToken' | 'slippage'\n // `slippage` doesn't participate as we derive `srcAmount` already\n>;\n\ntype BuildNFTOrdersTx = (\n params: MinBuildNFTOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildNFTOrdersTxFunctions = {\n getNFTOrdersRate: GetNFTOrdersRate;\n buildNFTOrderTx: BuildNFTOrdersTx;\n buildSwapAndNFTOrderTx: BuildSwapAndNFTOrdersTx;\n};\n\ntype GetNFTOrdersRate = (\n // `amount`, if given, must equal the total of the orders' `takerAmounts`\n options: Omit<GetRateInput, 'amount' | 'side'> & { amount?: string },\n orders: CheckableOrderData[],\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport const constructBuildNFTOrderTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildNFTOrdersTxFunctions => {\n const { buildTx: buildSwapTx } = constructBuildTx({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n const { getRate: getSwapAndNFTOrderRate } = constructGetRate({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n // returns priceRoute that would allow from swap from srcToken to destToken(=order.takerAsset) followed by filling NFT orders\n const getNFTOrdersRate: GetNFTOrdersRate = async (\n { srcToken, destToken, amount, options: _options = {}, ...rest },\n orders,\n requestParams\n ) => {\n assert(orders.length > 0, 'must pass at least 1 order');\n\n const { totalTakerAmount, takerAsset } = checkAndParseOrders(orders);\n\n assert(\n takerAsset.toLowerCase() === destToken.toLowerCase(),\n 'All orders must have the same takerAsset as destToken'\n );\n\n const takerAmountString = totalTakerAmount.toString(10);\n\n if (amount) {\n assert(\n amount === takerAmountString,\n \"`amount` must equal the total of the orders' `takerAmounts`\"\n );\n }\n\n // The pricing must use includeContractMethods=simpleBuy and side=BUY\n const options: RateOptions = {\n ..._options,\n includeContractMethods: [ContractMethod.simpleBuy],\n };\n\n const side = SwapSide.BUY;\n\n const rateInput: GetRateInput = {\n ...rest,\n srcToken,\n destToken,\n amount: takerAmountString,\n side,\n options,\n };\n\n // priceRoute\n const optimalRate = await getSwapAndNFTOrderRate(rateInput, requestParams);\n return optimalRate;\n };\n\n // derive srcToken, destToken and srcAmount from orders[]\n const buildNFTOrderTx: BuildNFTOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { takerAsset, totalTakerAmount } = checkAndParseOrders(params.orders);\n\n const fillParams: BuildNFTOrderTxInput = {\n ...params,\n // taker supplies takerAsset\n srcToken: takerAsset,\n srcAmount: totalTakerAmount.toString(10),\n // taker gets makerAsset in the end\n destToken: 'NFT', // support any NFT\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n const buildSwapAndNFTOrderTx: BuildSwapAndNFTOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n checkAndParseOrders(params.orders);\n\n const fillParams: BuildSwapAndNFTOrderTxInput = {\n ...params,\n // taker supplies srcToken\n srcToken: params.priceRoute.srcToken,\n // one or the other\n ...(params.slippage\n ? { slippage: params.slippage }\n : // may sneak in as part of `params`\n { srcAmount: params.priceRoute.srcAmount, slippage: undefined }),\n destToken: 'NFT', // support any NFT,\n destDecimals: params.priceRoute.destDecimals,\n };\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n return {\n getNFTOrdersRate,\n buildNFTOrderTx,\n buildSwapAndNFTOrderTx,\n };\n};\n\ntype CheckAndParseOrdersResult = Omit<CheckableOrderData, 'takerAmount'> & {\n totalTakerAmount: bigint;\n};\n\ntype CheckableOrderData = Pick<\n NFTOrderData,\n 'takerAsset' | 'makerAsset' | 'takerAmount' | 'maker'\n> & { taker?: NFTOrderData['taker'] };\n\nfunction checkAndParseOrders(\n orders: CheckableOrderData[]\n): CheckAndParseOrdersResult {\n assert(isFilledArray(orders), 'must pass at least 1 order');\n\n const { takerAssetsSet, makerAssetsSet, totalTakerAmount } = orders.reduce<\n Record<'takerAssetsSet' | 'makerAssetsSet', Set<string>> & {\n totalTakerAmount: bigint;\n }\n >(\n (accum, order) => {\n accum.takerAssetsSet.add(order.takerAsset.toLowerCase());\n accum.makerAssetsSet.add(order.makerAsset.toLowerCase());\n\n accum.totalTakerAmount =\n accum.totalTakerAmount + BigInt(order.takerAmount);\n return accum;\n },\n {\n takerAssetsSet: new Set(),\n makerAssetsSet: new Set(),\n totalTakerAmount: BigInt(0),\n }\n );\n\n assert(\n takerAssetsSet.size === 1,\n 'All orders must have the same takerAsset as destToken'\n );\n assert(makerAssetsSet.size === 1, 'All orders must have the same makerAsset');\n\n const [{ maker, taker, makerAsset, takerAsset }] = orders;\n\n return {\n totalTakerAmount,\n maker,\n taker,\n makerAsset: makerAsset.startsWith('0x')\n ? makerAsset\n : uintToAssetAddress(makerAsset),\n takerAsset: takerAsset.startsWith('0x')\n ? takerAsset\n : uintToAssetAddress(takerAsset),\n };\n}\n\n// extract asset address from makerAsset or takerAsset packed number encoded to contain AssetType\nfunction uintToAssetAddress(assetUint: BigIntAsString): Address {\n return (\n '0x' +\n (BigInt(assetUint) & ((BigInt(1) << BigInt(160)) - BigInt(1))).toString(16)\n );\n}\n","import type { ExtraFetchParams, FetcherFunction } from '../../types';\nimport type { AxiosStatic } from 'axios';\nimport { FetcherError } from '../misc';\n\nexport type AxiosRequirement = Pick<AxiosStatic, 'request' | 'isAxiosError'>;\n\nexport const constructFetcher =\n (axios: AxiosRequirement, extra?: ExtraFetchParams): FetcherFunction =>\n async (params) => {\n try {\n const { requestParams, ...rest } = params;\n // adding apiKey to headers if it's provided\n const headers = extra?.apiKey\n ? {\n ...extra.headers,\n 'X-API-KEY': extra.apiKey,\n ...rest.headers,\n ...requestParams?.headers,\n }\n : { ...extra?.headers, ...rest.headers, ...requestParams?.headers };\n\n const allParams = { ...rest, ...requestParams, headers };\n\n const { data } = await axios.request(allParams);\n\n return data;\n } catch (error: any) {\n if (axios.isAxiosError(error)) {\n // attach a more meaningful message and other props\n throw new FetcherError(error);\n }\n\n throw error;\n }\n };\n","import type { ExtraFetchParams, FetcherFunction } from '../../types';\nimport { FetcherError } from '../misc';\n\n// @TODO may not work with node-fetch\ntype Fetch = typeof fetch;\n\nexport const constructFetcher =\n (\n fetch: Fetch,\n extra?: ExtraFetchParams & { keepalive?: boolean }\n ): FetcherFunction =>\n async (params) => {\n try {\n const { url, method, requestParams } = params;\n const body = method === 'POST' ? JSON.stringify(params.data) : null;\n // Only JSON response for POST requests\n const POSTheaders =\n method === 'POST' && body\n ? {\n 'Content-Type': 'application/json',\n }\n : undefined;\n\n // adding apiKey to headers if it's provided\n const apiHeaders = extra?.apiKey\n ? { 'X-API-KEY': extra.apiKey }\n : undefined;\n\n // all headers combined\n const headers =\n POSTheaders ||\n apiHeaders ||\n params.headers ||\n requestParams?.headers ||\n extra?.headers\n ? {\n ...extra?.headers,\n ...apiHeaders,\n ...POSTheaders,\n ...params.headers,\n ...requestParams?.headers,\n }\n : undefined;\n\n const response = await fetch(url, {\n method,\n body,\n keepalive: extra?.keepalive,\n ...requestParams,\n headers,\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n // @TODO figure out if this works analogous to AxiosError, especially code ==? status\n throw new FetcherError({\n code: String(response.status),\n response: {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.entries()),\n config: { url, method },\n },\n message: response.statusText,\n isAxiosError: false,\n });\n }\n\n return data;\n } catch (error: any) {\n if (error instanceof FetcherError) throw error;\n throw new FetcherError(error);\n }\n };\n","import type {\n Address,\n ContractCallerFunctions,\n NoExtraKeysCheck,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport type {\n JsonRpcProvider,\n BaseProvider,\n JsonRpcSigner,\n} from '@ethersproject/providers';\nimport type { Signer } from '@ethersproject/abstract-signer';\nimport type {\n Contract as EthersV5Contract,\n ContractFunction as EthersContractFunctionV5,\n PopulatedTransaction as EthersPopulatedTransactionV5,\n PayableOverrides,\n CallOverrides,\n ContractTransaction,\n} from '@ethersproject/contracts';\n\nimport type { BigNumber as EthersBigNumberV5 } from '@ethersproject/bignumber';\n\nimport { assert } from 'ts-essentials';\n\nexport interface EthersV5ProviderDeps {\n ethersProviderOrSigner: BaseProvider | Signer;\n EthersContract: typeof EthersV5Contract; // passing Contract in allows not to include ethers as dependency\n}\n\nexport const constructEthersV5ContractCaller = (\n {\n ethersProviderOrSigner: providerOrSigner,\n EthersContract: Contract,\n }: EthersV5ProviderDeps,\n account?: Address\n): ContractCallerFunctions<ContractTransaction> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new Contract(address, abi, providerOrSigner);\n\n assertEthersContractHasMethodsV5(contract, contractMethod);\n // drop keys not in CallOverrides\n const { block, gas, ...restOverrides } = overrides;\n // reassign values to keys in CallOverrides\n const normalizedOverrides = {\n ...restOverrides,\n blockTag: block,\n gasLimit: gas,\n };\n\n // type FinalCallOverrides = normalizedOverrides has extra props ? never : normalizedOverrides\n type FinalCallOverrides = NoExtraKeysCheck<\n typeof normalizedOverrides,\n CallOverrides\n >;\n\n // enforce overrides shape ethers accepts\n // TS will break if normalizedOverrides type has any keys not also present in CallOverrides\n const callOverrides: FinalCallOverrides = normalizedOverrides;\n // returns whatever the Contract.method returns: BigNumber, string, boolean\n return contract.callStatic[contractMethod](...args, callOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<ContractTransaction> = async (\n params\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const signer =\n 'getSigner' in providerOrSigner\n ? providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const contract = new Contract(address, abi, signer);\n\n assertEthersContractHasMethodsV5(contract, contractMethod);\n // drop keys not in PayableOverrides\n const { gas, from, ...restOverrides } = overrides;\n // reassign values to keys in PayableOverrides\n const normalizedOverrides = {\n ...restOverrides,\n gasLimit: gas,\n };\n\n // type FinalPayableOverrides = normalizedOverrides has extra props ? never : normalizedOverrides\n type FinalPayableOverrides = NoExtraKeysCheck<\n typeof normalizedOverrides,\n PayableOverrides\n >;\n\n // enforce overrides shape ethers accepts\n // TS will break if normalizedOverrides type has any keys not also present in PayableOverrides\n const txOverrides: FinalPayableOverrides = normalizedOverrides;\n const txResponse: ContractTransaction = await contract[contractMethod](\n ...args,\n txOverrides\n );\n\n return txResponse;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const signer =\n 'getSigner' in providerOrSigner\n ? providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n assert(isTypedDataCapableSigner(signer), 'Signer can sign typed data');\n\n const { data, domain, types } = typedData;\n\n return signer._signTypedData(domain, types, data);\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\nfunction isEthersProvider(\n providerOrSigner: BaseProvider | Signer\n): providerOrSigner is BaseProvider {\n return '_isProvider' in providerOrSigner && providerOrSigner._isProvider;\n}\n\nfunction isEthersProviderWithSigner(\n providerOrSigner: JsonRpcProvider | BaseProvider | Signer\n): providerOrSigner is JsonRpcProvider {\n return isEthersProvider(providerOrSigner) && 'getSigner' in providerOrSigner;\n}\n\nfunction isEthersSigner(\n providerOrSigner: BaseProvider | Signer\n): providerOrSigner is Signer {\n return '_isSigner' in providerOrSigner && providerOrSigner._isSigner;\n}\n\nfunction isTypedDataCapableSigner(\n signer: Signer\n): signer is Signer & Pick<JsonRpcSigner, '_signTypedData'> {\n return '_signTypedData' in signer;\n}\n\n/// ethers v5\ntype EthersContractWithMethodV5<T extends string> = EthersV5Contract & {\n readonly [method in T]: EthersContractFunctionV5;\n} & {\n readonly functions: { [method in T]: EthersContractFunctionV5 };\n\n readonly callStatic: { [method in T]: EthersContractFunctionV5 };\n readonly estimateGas: {\n [method in T]: EthersContractFunctionV5<EthersBigNumberV5>;\n };\n readonly populateTransaction: {\n [method in T]: EthersContractFunctionV5<EthersPopulatedTransactionV5>;\n };\n};\n\nfunction ethersContractHasMethodsV5<T extends string>(\n contract: EthersV5Contract,\n ...methods: T[]\n): contract is EthersContractWithMethodV5<T> {\n return methods.every((method) => typeof contract[method] === 'function');\n}\n\nfunction assertEthersContractHasMethodsV5<T extends string>(\n contract: EthersV5Contract,\n ...methods: T[]\n): asserts contract is EthersContractWithMethodV5<T> {\n assert(\n ethersContractHasMethodsV5(contract, ...methods),\n `Contract must have methods: ${methods.join(', ')}`\n );\n}\n","import type {\n Address,\n ContractCallerFunctions,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport { assert } from 'ts-essentials';\nimport type {\n JsonRpcProvider,\n Signer,\n ContractRunner,\n Contract as EthersContract,\n Overrides,\n ContractTransactionResponse,\n} from 'ethers';\n\nexport interface EthersV6ProviderDeps {\n ethersV6ProviderOrSigner: ContractRunner | Signer;\n EthersV6Contract: typeof EthersContract; // passing Contract in allows not to include ethers as dependency\n}\n\nexport const constructContractCaller = (\n {\n ethersV6ProviderOrSigner: providerOrSigner,\n EthersV6Contract: Contract,\n }: EthersV6ProviderDeps,\n account?: Address\n): ContractCallerFunctions<ContractTransactionResponse> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new Contract(address, abi, providerOrSigner);\n\n // drop keys not in CallOverrides\n const { block, gas, ...restOverrides } = overrides;\n // reassign values to keys in CallOverrides\n const normalizedOverrides: Overrides = {\n ...restOverrides,\n blockTag: block,\n gasLimit: gas,\n };\n\n const callableContractFunction = contract.getFunction(contractMethod);\n\n // returns whatever the Contract[\"method\"].staticCall returns: BigNumber, string, boolean\n return callableContractFunction.staticCall(...args, normalizedOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<\n ContractTransactionResponse\n > = async (params) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const signer =\n 'getSigner' in providerOrSigner\n ? await providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const contract = new Contract(address, abi, signer);\n\n // drop keys not in PayableOverrides\n const { gas, from, ...restOverrides } = overrides;\n // reassign values to keys in PayableOverrides\n const normalizedOverrides: Overrides = {\n ...restOverrides,\n gasLimit: gas,\n };\n\n // if no method for contractMethod, ethers will throw\n const callableContractFunction = contract.getFunction(contractMethod);\n\n const txResponse = await callableContractFunction.send(\n ...args,\n normalizedOverrides\n );\n\n return txResponse;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const signer =\n 'getSigner' in providerOrSigner\n ? await providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const { data, domain, types } = typedData;\n\n return signer.signTypedData(domain, types, data);\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\nfunction isEthersProviderWithSigner(\n providerOrSigner: JsonRpcProvider | ContractRunner | Signer\n): providerOrSigner is JsonRpcProvider {\n return 'getSigner' in providerOrSigner;\n}\n\nfunction isEthersSigner(\n providerOrSigner: ContractRunner | Signer\n): providerOrSigner is Signer {\n return 'getAddress' in providerOrSigner;\n}\n","import { assert } from 'ts-essentials';\nimport { TypedDataField } from '../../methods/common/orders/buildOrderData';\n\n// regex from @ethersproject/hash TypedDataEncoder.constructor\n// may be overly strict, but reliable\nconst baseTypeRegex = /^([^\\x5b]*)(\\x5b|$)/;\n\nexport function findPrimaryType<P extends string>(\n types: Record<P, TypedDataField[]>\n): P {\n const candidates = Object.keys(types) as P[];\n const candidatesSet = new Set(candidates);\n\n candidates.forEach((candidate) => {\n const typedDataFields = types[candidate];\n if (!typedDataFields) return;\n\n typedDataFields.forEach(({ type }) => {\n // Get the base type (drop any array specifiers)\n const baseType = type.match(baseTypeRegex)?.[1];\n if (!baseType) return;\n\n // if type was referred to as a child of another type, it can't be the primaryType\n candidatesSet.delete(baseType as P);\n });\n });\n\n const [primaryType] = Array.from(candidatesSet);\n\n assert(\n primaryType,\n `No primary type found in SignableTypedData types, ${JSON.stringify(types)}`\n );\n\n return primaryType;\n}\n","import type {\n Address,\n ContractCallerFunctions,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport type { PayableCallOptions, AbiItem } from 'web3';\nimport type Web3 from 'web3';\nimport type { ContractAbi, Contract as Web3Contract } from 'web3';\nimport type { PayableTxOptions } from 'web3-eth-contract';\nimport { assert } from 'ts-essentials';\nimport { findPrimaryType } from './helpers';\n\ntype ContractMethodRes = ReturnType<Web3ContractSendMethod>;\nexport type Web3UnpromiEvent = Pick<\n ReturnType<ContractMethodRes['send']>,\n 'on' | 'once'\n>;\n\ntype SendOptions = PayableTxOptions;\ntype CallOptions = PayableCallOptions;\n\nexport const constructContractCaller = (\n web3: Web3,\n account?: Address\n): ContractCallerFunctions<Web3UnpromiEvent> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new web3.eth.Contract(\n abi as AbiItem[], // FIXME abi types ethers dependant\n address\n );\n\n assertWeb3ContractHasMethods(contract, contractMethod);\n\n const { block, gas, value, ...restOverrides } = overrides;\n\n const normalizedOverrides: CallOptions = {\n ...restOverrides,\n gas: gas?.toString(10),\n value: value?.toString(10),\n };\n\n return contract.methods[contractMethod](...args).call(normalizedOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<Web3UnpromiEvent> = async (\n params\n ) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n assert(account, 'account must be specified to send transactions');\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new web3.eth.Contract(\n abi as unknown as AbiItem[], // FIXME\n address\n );\n\n assertWeb3ContractHasMethods(contract, contractMethod);\n\n const { gas, from, value, nonce, ...restOverrides } = overrides;\n\n const _from = from || account;\n\n assert(_from, 'from is required');\n\n const normalizedOverrides: SendOptions = {\n ...restOverrides,\n from: _from,\n gas: gas?.toString(10),\n value: value?.toString(10),\n nonce: nonce?.toString(10),\n };\n\n const preparedCall = contract.methods[contractMethod](...args);\n\n const promiEvent = preparedCall.send(normalizedOverrides);\n\n // can't just return promiEvent, because async function returns a Promise<PromiEvent>\n // and await Promise<PromiEvent> automatically awaits the value of PromiEvent,\n // that is await Promise<PromiEvent> = Awaited<PromiEvent> that doesn't have .on|once\n // so that functionality becomes lost\n // transactCall can be made sync, but approve has to be async to await getSpender()\n const unpromiEvent: Web3UnpromiEvent = {\n on: promiEvent.on.bind(promiEvent),\n once: promiEvent.once.bind(promiEvent),\n };\n\n return unpromiEvent;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n assert(account, 'account must be specified to sign data');\n\n const { data, domain, types } = typedData;\n\n const _typedData = {\n types: {\n EIP712Domain: [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n ],\n ...types,\n },\n primaryType: findPrimaryType(types),\n domain,\n message: data,\n };\n\n // account must be among unlocked accounts\n const signature = await web3.eth.signTypedData(account, _typedData as any);\n return signature;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\n/// web3@4\ntype Web3ContractSendMethod = Web3Contract<ContractAbi>['methods'][string];\n\ntype Web3ContractWithMethod<T extends string> = Web3Contract<ContractAbi> & {\n methods: { [method in T]: Web3ContractSendMethod };\n};\n\nfunction web3ContractHasMethods<T extends string>(\n contract: Web3Contract<ContractAbi>,\n ...methods: T[]\n): contract is Web3ContractWithMethod<T> {\n return methods.every(\n (method) => typeof contract.methods[method] === 'function'\n );\n}\n\nfunction assertWeb3ContractHasMethods<T extends string>(\n contract: Web3Contract<ContractAbi>,\n ...methods: T[]\n): asserts contract is Web3ContractWithMethod<T> {\n assert(\n web3ContractHasMethods(contract, ...methods),\n `Contract must have methods: ${methods.join(', ')}`\n );\n}\n","import type {\n Address,\n ContractCallerFunctions,\n ContractCallStaticInput,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport { assert, MarkOptional } from 'ts-essentials';\n\nimport type {\n PublicActions,\n WalletActions,\n Hex,\n BlockTag,\n Chain,\n Transport,\n TypedDataDomain,\n Account,\n} from 'viem';\nimport { findPrimaryType } from './helpers';\nimport { TransactionParams } from '../../methods/swap/transaction';\n\nexport type MinViemClient = Partial<\n Pick<PublicActions<Transport, Chain>, 'readContract'> &\n Pick<\n WalletActions<Chain>,\n 'writeContract' | 'signTypedData' | 'signMessage'\n >\n> & { account?: Account };\n\nexport const constructContractCaller = (\n viemClient: MinViemClient,\n account?: Address\n): ContractCallerFunctions<Hex> => {\n const staticCall: StaticContractCallerFn = async <\n T,\n M extends string = string\n >(\n params: ContractCallStaticInput<M>\n ): Promise<T> => {\n assert(\n viemClient.readContract,\n 'Viem client must have readContract Public Action'\n );\n const { address, abi, contractMethod, args, overrides } = params;\n\n const { block } = overrides;\n\n const { blockNumber, blockTag } =\n typeof block === 'number'\n ? { blockNumber: BigInt(block) }\n : { blockTag: block as BlockTag };\n\n const result = viemClient.readContract({\n account: viemClient.account || (account as Hex),\n address: address as Hex,\n abi,\n functionName: contractMethod,\n args,\n blockTag,\n blockNumber,\n });\n\n return result as T; // can't get specific type for generic abi & method\n };\n\n const transactCall: TransactionContractCallerFn<Hex> = async (params) => {\n assert(account, 'account must be specified sign transactions');\n assert(\n viemClient.writeContract,\n 'Viem client must have writeContract Wallet Action'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const viemTxParams = txParamsToViemTxParams({\n ...overrides,\n to: address,\n gas: overrides.gas?.toString(10),\n value: overrides.value?.toString(10),\n });\n\n const gasPriceParams =\n 'maxFeePerGas' in viemTxParams\n ? {\n maxFeePerGas: viemTxParams.maxFeePerGas,\n maxPriorityFeePerGas: viemTxParams.maxPriorityFeePerGas,\n }\n : 'gasPrice' in viemTxParams\n ? { gasPrice: viemTxParams.gasPrice }\n : {};\n\n const txHash = await viemClient.writeContract({\n // either `viemClient` has account assigned to it,\n // or the provider `viemClient` was created with must control `account` (viemClient.getAddresses()[0]===account);\n // otherwise breaks with ` ProviderError: Unknown account 0x...`\n account: viemClient.account || (account as Hex),\n address: address as Hex,\n abi,\n functionName: contractMethod,\n args: argsToViemArgs(args),\n value: viemTxParams.value,\n gas: viemTxParams.gas,\n // ...viemTxParams,\n // account: (overrides.from || account) as Hex,\n nonce: overrides.nonce,\n ...gasPriceParams,\n });\n\n return txHash;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n viemClient.signTypedData,\n 'Viem client must have signTypedData Wallet Action'\n );\n\n const { data, domain, types } = typedData;\n\n const primaryType = findPrimaryType(types);\n\n const chainId =\n domain.chainId === undefined ? undefined : Number(domain.chainId);\n const viemDomain: TypedDataDomain = {\n chainId,\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract as Hex,\n salt: domain.salt as Hex,\n };\n\n const signature = await viemClient.signTypedData({\n // either `viemClient` has account assigned to it,\n // or the provider `viemClient` was created with must control `account` (viemClient.getAddresses()[0]===account)\n account: viemClient.account || (account as Hex),\n domain: viemDomain,\n types,\n primaryType,\n message: data,\n });\n\n return signature;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\ntype ViemTxParams = {\n to: Hex;\n data?: Hex;\n value?: bigint;\n nonce?: number;\n gas?: bigint;\n} & (\n | { maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint }\n | { gasPrice?: bigint }\n);\n\nexport function txParamsToViemTxParams(\n txParams: Omit<\n MarkOptional<TransactionParams, 'data' | 'value'>,\n 'chainId' | 'from'\n >\n): ViemTxParams {\n const gas = txParams.gas !== undefined ? BigInt(txParams.gas) : undefined;\n const gasPrice =\n txParams.gasPrice !== undefined ? BigInt(txParams.gasPrice) : undefined;\n const maxFeePerGas =\n txParams.maxFeePerGas !== undefined\n ? BigInt(txParams.maxFeePerGas)\n : undefined;\n const maxPriorityFeePerGas =\n txParams.maxPriorityFeePerGas !== undefined\n ? BigInt(txParams.maxPriorityFeePerGas)\n : undefined;\n\n const viemTxParams = {\n to: txParams.to as Hex,\n data: txParams.data as Hex,\n value: txParams.value !== undefined ? BigInt(txParams.value) : undefined,\n gas,\n ...(txParams.maxFeePerGas !== undefined\n ? { maxFeePerGas, maxPriorityFeePerGas }\n : { gasPrice }),\n };\n return viemTxParams;\n}\n\nfunction argsToViemArgs(args: any[]): any[] {\n return args.map((arg) => {\n if (typeof arg === 'string') {\n if (arg.startsWith('0x')) {\n return arg;\n }\n const asNumber = Number(arg);\n if (Number.isNaN(asNumber)) {\n return arg;\n }\n return BigInt(asNumber);\n }\n return arg;\n });\n}\n","import type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport { constructGetSpender } from '../swap/spender';\n\ntype GetDeltaContract = (\n requestParams?: RequestParameters\n) => Promise<Address | null>;\nexport type GetDeltaContractFunctions = {\n /** @description returns ParaswapDelta contract address when Delta is available on current chain */\n getDeltaContract: GetDeltaContract;\n};\n\nexport const constructGetDeltaContract = (\n options: ConstructFetchInput\n): GetDeltaContractFunctions => {\n // analogous to getSpender() but for Delta Orders Contract = ParaswapDelta\n\n const { getContracts } = constructGetSpender(options);\n\n const getDeltaContract: GetDeltaContract = async (requestParams) => {\n const { ParaswapDelta } = await getContracts(requestParams);\n return ParaswapDelta || null;\n };\n\n return { getDeltaContract };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\n\nexport type PartnerFeeResponse = {\n partnerFee: number; // in %, e.g. 0.12\n partnerAddress: string;\n takeSurplus: boolean;\n};\n\ntype PartnerFeeQueryParams = {\n partner: string;\n};\n\ntype GetPartnerFee = (\n options: PartnerFeeQueryParams,\n requestParams?: RequestParameters\n) => Promise<PartnerFeeResponse>;\n\nexport type GetPartnerFeeFunctions = {\n getPartnerFee: GetPartnerFee;\n};\n\nexport const constructGetPartnerFee = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetPartnerFeeFunctions => {\n const partnerFeeUrl = `${apiURL}/prices/partnerfee/${chainId}` as const;\n\n // going on the assumption that one `partner` will correspond to one `partnerFee` during the lifetime of SDK instance,\n // to avoid unnecessary network requests\n const cachedPartnerFee = new Map<string, PartnerFeeResponse>();\n\n const getPartnerFee: GetPartnerFee = async (options, requestParams) => {\n if (cachedPartnerFee.has(options.partner)) {\n return cachedPartnerFee.get(options.partner)!;\n }\n\n const search = constructSearchString<PartnerFeeQueryParams>(options);\n\n const fetchURL = `${partnerFeeUrl}/${search}` as const;\n\n const data = await fetcher<PartnerFeeResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n cachedPartnerFee.set(options.partner, data);\n\n return data;\n };\n\n return {\n getPartnerFee,\n };\n};\n","import { MarkOptional } from 'ts-essentials';\nimport { Domain, ZERO_ADDRESS } from '../../common/orders/buildOrderData';\nimport { Bridge, DeltaAuctionOrder } from './types';\n\n// Order(address owner,address beneficiary,address srcToken,address destToken,uint256 srcAmount,uint256 destAmount,uint256 deadline,uint256 nonce,bytes permit, bridge Bridge)\";\nconst SWAP_ORDER_EIP_712_TYPES = {\n Order: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'srcAmount', type: 'uint256' },\n { name: 'destAmount', type: 'uint256' },\n { name: 'expectedAmount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'kind', type: 'uint8' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n },\n ],\n};\n\nexport type SignableDeltaOrderData = {\n types: {\n Order: typeof SWAP_ORDER_EIP_712_TYPES.Order;\n Bridge: typeof SWAP_ORDER_EIP_712_TYPES.Bridge;\n };\n domain: Domain;\n data: DeltaAuctionOrder;\n};\n\ntype SignDeltaOrderInput = {\n orderInput: DeltaAuctionOrder;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function produceDeltaOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: SignDeltaOrderInput): SignableDeltaOrderData {\n const typedData = {\n types: {\n Order: SWAP_ORDER_EIP_712_TYPES.Order,\n Bridge: SWAP_ORDER_EIP_712_TYPES.Bridge,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: orderInput,\n };\n\n return typedData;\n}\n\nexport type DeltaOrderDataInput = MarkOptional<\n Omit<DeltaAuctionOrder, 'partnerAndFee'>,\n 'beneficiary' | 'deadline' | 'nonce' | 'permit'\n>;\n\nexport type BuildDeltaOrderDataInput = MarkOptional<\n DeltaOrderDataInput,\n 'metadata'\n> & {\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n bridge: Bridge;\n};\n\n// default deadline = 1 hour for now (may be changed later)\nexport const DELTA_DEFAULT_EXPIRY = 60 * 60; // seconds\n\nexport function buildDeltaSignableOrderData({\n owner,\n beneficiary = owner,\n\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n\n deadline = Math.floor(Date.now() / 1000 + DELTA_DEFAULT_EXPIRY),\n nonce = Date.now().toString(10), // random enough to not cause collisions\n\n permit = '0x',\n\n kind,\n metadata = '0x',\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n\n chainId,\n paraswapDeltaAddress,\n bridge,\n}: BuildDeltaOrderDataInput): SignableDeltaOrderData {\n const orderInput: DeltaAuctionOrder = {\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee: producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n }),\n bridge,\n kind,\n metadata,\n };\n\n return produceDeltaOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n });\n}\n\ntype ProducePartnerAndFeeInput = {\n partnerFeeBps: number;\n partnerAddress: string;\n partnerTakesSurplus: boolean;\n capSurplus: boolean;\n};\n\n// fee and address are encoded together\nfunction producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n}: ProducePartnerAndFeeInput): string {\n const capSurplusShifted = BigInt(capSurplus) << BigInt(9);\n if (partnerAddress === ZERO_ADDRESS) {\n return capSurplusShifted.toString(10);\n } else {\n const partnerAndFee =\n (BigInt(partnerAddress) << BigInt(96)) |\n BigInt(partnerFeeBps.toFixed(0)) |\n (BigInt(partnerTakesSurplus) << BigInt(8)) |\n capSurplusShifted;\n\n return partnerAndFee.toString(10);\n }\n}\n","import { SwapSide } from '../../../constants';\n\nenum OrderKind {\n Sell = 0,\n Buy = 1,\n}\n\nexport const SwapSideToOrderKind = {\n [SwapSide.SELL]: OrderKind.Sell,\n [SwapSide.BUY]: OrderKind.Buy,\n} as const;\n\nexport type DeltaAuctionOrder = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary: string; // beneficiary==owner if no transferTo\n /** @description The address of the src token */\n srcToken: string; // lowercase\n /** @description The address of the dest token */\n destToken: string; // lowercase\n /** @description The amount of src token to swap */\n srcAmount: string; // wei\n /** @description The minimum amount of dest token to receive */\n destAmount: string; // wei\n /** @description The expected amount of token to receive */\n expectedAmount: string; // wei\n /** @description The kind of the order */\n kind: OrderKind;\n /** @description Metadata for the order, hex string */\n metadata: string;\n /** @description The deadline for the order */\n deadline: number; // seconds\n /** @description The nonce of the order */\n nonce: string; // can be random, can even be Date.now()\n /** @description Optional permit signature for the src token */\n permit: string; //can be \"0x\"\n /** @description Encoded partner address, fee bps, and flags for the order. partnerAndFee = (partner << 96) | (partnerTakesSurplus << 8) | fee in bps (max fee is 2%) */\n partnerAndFee: string;\n /** @description The bridge input */\n bridge: Bridge;\n};\n\nexport type Bridge = {\n protocolSelector: string; // Hex string\n destinationChainId: number;\n /** @description The address of the output token. Same as Order.destToken but on destination chain, so can still be a different address */\n outputToken: string;\n scalingFactor: number;\n\n /** @description Data specific to the protocol */\n protocolData: string; // Hex string\n};\n\nexport type DeltaAuctionStatus =\n | 'NOT_STARTED'\n | 'AWAITING_PRE_SIGNATURE'\n | 'RUNNING'\n | 'EXECUTING'\n | 'EXECUTED'\n | 'FAILED'\n | 'EXPIRED'\n | 'CANCELLED'\n | 'SUSPENDED';\n\ntype DeltaAuctionTransaction = {\n id: string;\n hash: string;\n orderId: string;\n bidId: string | null;\n blockNumber: number;\n blockHash: string;\n blockTimestamp: string | null; // ISO string, null for older Orders\n gasUsed: bigint;\n gasPrice: bigint;\n blobGasUsed: bigint;\n blobGasPrice: bigint;\n index: number;\n status: number;\n from: string;\n to: string;\n receivedAmount: string;\n receivedAmountUSD: number;\n spentAmount: string;\n spentAmountUSD: number;\n filledPercent: number; // in base points\n protocolFee: string;\n partnerFee: string;\n agent: string;\n auctionId: string;\n};\n\nexport type DeltaAuction = {\n id: string;\n deltaVersion: string; // 1.0 or 2.0 currently\n user: string;\n signature: string;\n status: DeltaAuctionStatus;\n order: DeltaAuctionOrder;\n orderHash: string | null; // not available on old Orders only\n transactions: DeltaAuctionTransaction[];\n chainId: number;\n partner: string;\n referrerAddress: string | null;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n partiallyFillable: boolean;\n\n excludeAgents: string[] | null;\n includeAgents: string[] | null;\n\n bridgeMetadata: BridgeMetadata | null;\n bridgeStatus: BridgeStatus | null;\n\n // @TODO only returned after POST Order so far\n // orderVersion: string; // \"2.0.0\"\n // deltaGasOverhead: number;\n\n type: 'MARKET' | 'LIMIT'; // @TODO when available in API for individual /order/:hash|:id\n};\n\nexport type BridgeMetadata = {\n /** @description The amount that user should expect to get */\n outputAmount: string;\n /** @description The cross-chain deadline. If deadline passes, the bridgeStatus would be expired */\n fillDeadline: number;\n /** @description The deposit id */\n depositId: number;\n /** @description The transaction hash on the destination chain that fulfilled the order. When bridgeStatus='filled' */\n fillTx?: string;\n /** @description The transaction hash on the source chain that refunded the deposit. When bridgeStatus='refunded' */\n depositRefundTxHash?: string;\n};\n\n// refunded is basically failed\nexport type BridgeStatus = 'pending' | 'filled' | 'expired' | 'refunded';\n\n//// available on BridgePrice ////\n\ntype BridgeQuoteFee = {\n feeToken: string;\n amount: string;\n amountInSrcToken: string;\n amountInUSD: string;\n};\n\nexport type BridgePriceInfo = {\n protocolName: string;\n destAmountAfterBridge: string;\n destUSDAfterBridge: string;\n fees: BridgeQuoteFee[];\n estimatedTimeMs: number;\n fastest: boolean;\n bestReturn: boolean;\n recommended: boolean;\n};\n","import type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { BridgePrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildDeltaSignableOrderData,\n type BuildDeltaOrderDataInput,\n type SignableDeltaOrderData,\n} from './helpers/buildDeltaOrderData';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport { SwapSide } from '../../constants';\nimport type { MarkOptional } from 'ts-essentials';\nimport { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nexport type { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\n\nexport type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type BuildDeltaOrderDataParams = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary?: string; // beneficiary==owner if no transferTo\n /** @description The address of the src token */\n srcToken: string; // lowercase\n /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */\n destToken: string; // lowercase\n /** @description The amount of src token to swap */\n srcAmount: string; // wei\n /** @description The minimum amount of dest token to receive */\n destAmount: string; // wei, deltaPrice.destAmount - slippage\n /** @description The deadline for the order */\n deadline?: number; // seconds\n /** @description The nonce of the order */\n nonce?: number | string; // can be random, can even be Date.now()\n /** @description Optional permit signature for the src token https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits-order#supported-permits */\n permit?: string; //can be \"0x\"\n /** @description Partner string. */\n partner?: string;\n\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) */\n deltaPrice: MarkOptional<\n Pick<\n BridgePrice,\n | 'destAmount'\n | 'partner'\n | 'partnerFee'\n | 'destToken'\n | 'srcAmount'\n | 'bridge'\n >,\n 'partner' | 'partnerFee'\n >;\n\n /** @description partner fee in basis points (bps), 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description partner address */\n partnerAddress?: string;\n /** @description take surplus */\n partnerTakesSurplus?: boolean;\n\n /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n\n /** @description The side of the order. Default is SELL */\n side?: SwapSideUnion;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n};\n\ntype BuildDeltaOrder = (\n buildOrderParams: BuildDeltaOrderDataParams,\n requestParams?: RequestParameters\n) => Promise<SignableDeltaOrderData>;\n\nexport type BuildDeltaOrderFunctions = {\n /** @description Build Orders to be posted to Delta API for execution */\n buildDeltaOrder: BuildDeltaOrder;\n};\n\nexport const constructBuildDeltaOrder = (\n options: ConstructFetchInput\n): BuildDeltaOrderFunctions => {\n const { chainId } = options;\n\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n // cached internally for `partner`\n const { getPartnerFee } = constructGetPartnerFee(options);\n\n const buildDeltaOrder: BuildDeltaOrder = async (options, requestParams) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${chainId}`);\n }\n\n ////// Partner logic //////\n\n // externally supplied partner fee data takes precedence\n let partnerAddress = options.partnerAddress;\n let partnerFeeBps =\n options.partnerFeeBps ??\n (options.deltaPrice.partnerFee\n ? options.deltaPrice.partnerFee * 100\n : undefined);\n let partnerTakesSurplus = options.partnerTakesSurplus;\n\n // if fee given, takeSurplus is ignored\n const feeOrTakeSurplusSupplied =\n partnerFeeBps !== undefined || partnerTakesSurplus !== undefined;\n\n if (partnerAddress === undefined || feeOrTakeSurplusSupplied) {\n const partner = options.partner || options.deltaPrice.partner;\n if (!partner) {\n // if no partner given in options or deltaPrice, default partnerAddress to zero,\n // unless supplied explicitly\n partnerAddress = partnerAddress ?? ZERO_ADDRESS;\n } else {\n const partnerFeeResponse = await getPartnerFee(\n { partner },\n requestParams\n );\n\n partnerAddress = partnerAddress ?? partnerFeeResponse.partnerAddress;\n // deltaPrice.partnerFee and partnerFeeResponse.partnerFee should be the same, but give priority to externally provided\n partnerFeeBps = partnerFeeBps ?? partnerFeeResponse.partnerFee;\n partnerTakesSurplus =\n partnerTakesSurplus ?? partnerFeeResponse.takeSurplus;\n }\n }\n\n partnerFeeBps = partnerFeeBps ?? 0;\n partnerTakesSurplus = partnerTakesSurplus ?? false;\n\n const swapSide = options.side ?? SwapSide.SELL;\n\n const expectedAmount =\n swapSide === SwapSide.SELL\n ? options.deltaPrice.destAmount\n : options.deltaPrice.srcAmount;\n\n const input: BuildDeltaOrderDataInput = {\n owner: options.owner,\n beneficiary: options.beneficiary,\n srcToken: options.srcToken,\n // for some cases of WETH->ETH crosschain swaps, the destToken is changed to WETH or ETH,\n // this is already reflected in deltaPrice\n destToken: options.deltaPrice.destToken,\n srcAmount: options.srcAmount,\n destAmount: options.destAmount,\n expectedAmount,\n deadline: options.deadline,\n nonce: options.nonce?.toString(10),\n permit: options.permit,\n kind: SwapSideToOrderKind[swapSide],\n metadata: options.metadata,\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n\n capSurplus: options.capSurplus,\n\n bridge: options.deltaPrice.bridge, // ZERO_BRIDGE for same-chain Orders\n };\n\n return buildDeltaSignableOrderData(input);\n };\n\n return {\n buildDeltaOrder,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { DeltaAuctionOrder, DeltaAuction } from './helpers/types';\n\nexport type DeltaOrderToPost = {\n /** @description Partner string */\n partner?: string;\n /** @description Referrer address */\n referrerAddress?: string;\n order: DeltaAuctionOrder;\n /** @description Signature of the order from order.owner address. EOA signatures must be submitted in ERC-2098 Compact Representation. */\n signature: string;\n chainId: number;\n /** @description designates the Order as being able to partially filled, as opposed to fill-or-kill */\n partiallyFillable?: boolean;\n\n /** @description Type of the order. MARKET or LIMIT. Default is MARKET */\n type?: 'MARKET' | 'LIMIT';\n\n includeAgents?: string[];\n excludeAgents?: string[];\n};\n\nexport type PostDeltaOrderParams = Omit<DeltaOrderToPost, 'chainId'>;\n\nexport type DeltaOrderApiResponse = Omit<DeltaAuction, 'transactions'> & {\n orderVersion: string; // \"2.0.0\"\n deltaGasOverhead: number; // @TODO may be removed\n type: 'MARKET' | 'LIMIT';\n};\n\ntype PostDeltaOrder = (\n postData: PostDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderApiResponse>;\n\nexport type PostDeltaOrderFunctions = {\n postDeltaOrder: PostDeltaOrder;\n};\n\nexport const constructPostDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postDeltaOrder: PostDeltaOrder = (postData, requestParams) => {\n const deltaOrderToPost: DeltaOrderToPost = { ...postData, chainId };\n\n return fetcher<DeltaOrderApiResponse>({\n url: postOrderUrl,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postDeltaOrder };\n};\n","import type { SignableDeltaOrderData } from './buildDeltaOrderData';\n\nexport function sanitizeDeltaOrderData({\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n bridge,\n kind,\n metadata,\n}: SignableDeltaOrderData['data'] &\n Record<string, any>): SignableDeltaOrderData['data'] {\n return {\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n bridge,\n kind,\n metadata,\n };\n}\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\nimport { sanitizeDeltaOrderData } from './helpers/misc';\n\ntype SignDeltaOrder = (\n signableOrderData: SignableDeltaOrderData\n) => Promise<string>;\n\nexport type SignDeltaOrderFunctions = {\n signDeltaOrder: SignDeltaOrder;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignDeltaOrderFunctions => {\n const signDeltaOrder: SignDeltaOrder = async (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...typedData,\n data: sanitizeDeltaOrderData(typedData.data),\n };\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceDeltaOrderTypedData,\n SignableDeltaOrderData,\n} from './helpers/buildDeltaOrderData';\nimport { sanitizeDeltaOrderData } from './helpers/misc';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { DeltaAuctionOrder } from './helpers/types';\n\ntype HashDeltaOrderTypedData = (\n signableOrderData: SignableDeltaOrderData\n) => string;\n\ntype HashDeltaOrder = (\n orderData: DeltaAuctionOrder,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type SetDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSign<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignDeltaOrder<T> = (\n signableOrderData: SignableDeltaOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSignDeltaOrder<T> = (\n signableOrderData: SignableDeltaOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignDeltaOrderFunctions<T> = {\n hashDeltaOrderTypedData: HashDeltaOrderTypedData;\n hashDeltaOrder: HashDeltaOrder;\n setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T>;\n preSignDeltaOrder: PreSignDeltaOrder<T>;\n depositNativeAndPreSign: DepositNativeAndPreSign<T>;\n depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<T>;\n};\n\nconst PreSignatureModuleAbi = [\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'orderHash',\n type: 'bytes32',\n },\n {\n internalType: 'bool',\n name: 'preSigned',\n type: 'bool',\n },\n ],\n name: 'setPreSignature',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'orderHash',\n type: 'bytes32',\n },\n ],\n name: 'depositNativeAndPreSign',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructPreSignDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignDeltaOrderFunctions<T> => {\n const hashDeltaOrderTypedData: HashDeltaOrderTypedData = (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...typedData,\n data: sanitizeDeltaOrderData(typedData.data),\n };\n\n const orderHash = produceDeltaOrderHash(typedDataOnly);\n\n return orderHash;\n };\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashDeltaOrder: HashDeltaOrder = async (orderData, requestParams) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const typedData = produceDeltaOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n });\n return hashDeltaOrderTypedData(typedData);\n };\n\n const setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T> = async (\n orderHash,\n overrides = {},\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: PreSignatureModuleAbi,\n contractMethod: 'setPreSignature',\n args: [orderHash, true],\n overrides,\n });\n\n return res;\n };\n\n const depositNativeAndPreSign: DepositNativeAndPreSign<T> = async (\n orderHash,\n overrides = {},\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: PreSignatureModuleAbi,\n contractMethod: 'depositNativeAndPreSign',\n args: [orderHash],\n overrides,\n });\n\n return res;\n };\n\n const preSignDeltaOrder: PreSignDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashDeltaOrderTypedData(signableOrderData);\n const res = await setDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n const depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<\n T\n > = async (signableOrderData, overrides = {}, requestParams) => {\n const orderHash = hashDeltaOrderTypedData(signableOrderData);\n const res = await depositNativeAndPreSign(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashDeltaOrderTypedData,\n hashDeltaOrder,\n setDeltaOrderPreSignature,\n preSignDeltaOrder,\n depositNativeAndPreSign,\n depositNativeAndPreSignDeltaOrder,\n };\n};\n\nexport function produceDeltaOrderHash(\n typedData: SignableDeltaOrderData\n): string {\n return hashTypedData({\n domain: {\n name: typedData.domain.name,\n version: typedData.domain.version,\n chainId: typedData.domain.chainId,\n verifyingContract: typedData.domain.verifyingContract as `0x${string}`,\n },\n types: typedData.types,\n primaryType: findPrimaryType(typedData.types),\n message: typedData.data,\n });\n}\n","import { Prettify } from 'viem';\nimport { Bridge } from '../..';\nimport { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n} from '../../types';\nimport { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nimport { BridgePriceInfo } from './helpers/types';\n\ntype SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type DeltaPriceParams = {\n /** @description Source Token Address. Not Native Token */\n srcToken: string;\n /** @description Destination Token Address */\n destToken: string;\n /** @description srcToken amount in wei */\n amount: string;\n /** @description Source Token Decimals */\n srcDecimals: number;\n /** @description Destination Token Decimals */\n destDecimals: number;\n /** @description User's Wallet Address */\n userAddress?: string;\n /** @description Beneficiary Address */\n beneficiary?: string; // beneficiary==owner if no transferTo\n /** @description Partner string. */\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n /** @description SELL or BUY, default is SELL */\n side?: SwapSideUnion;\n\n includeAgents?: string[];\n excludeAgents?: string[];\n includeBridges?: string[];\n excludeBridges?: string[];\n\n /** @description Allow swap on destChain after bridge. Default is true. */\n allowBridgeAndSwap?: boolean;\n};\n\ntype DeltaPriceQueryOptions = Omit<\n DeltaPriceParams,\n 'includeAgents' | 'excludeAgents' | 'includeBridges' | 'excludeBridges'\n> & {\n chainId: number; // will return error from API on unsupported chains\n includeAgents?: string;\n excludeAgents?: string;\n includeBridges?: string;\n excludeBridges?: string;\n};\n\n// for same-chain Orders, all 0 params\nexport const DEFAULT_BRIDGE = {\n protocolSelector: '0x00000000', // 4 bytes\n destinationChainId: 0,\n outputToken: ZERO_ADDRESS,\n scalingFactor: 0,\n protocolData: '0x',\n} as const satisfies Bridge;\n\nexport type DeltaPrice = {\n srcToken: string;\n destToken: string;\n srcAmount: string;\n /** @description Available for BUY side */\n srcAmountBeforeFee?: string;\n destAmount: string;\n /** @description Available for SELL side */\n destAmountBeforeFee?: string;\n /** @description amount of the final outcome token */\n receivedDestAmount: string;\n receivedDestUSD: string;\n /** @description Available for SELL side */\n receivedDestAmountBeforeFee?: string;\n /** @description Available for SELL side */\n receivedDestUSDBeforeFee?: string;\n gasCost: string;\n gasCostBeforeFee: string;\n gasCostUSD: string;\n gasCostUSDBeforeFee: string;\n srcUSD: string;\n /** @description Available for BUY side */\n srcUSDBeforeFee?: string;\n destUSD: string;\n /** @description Available for SELL side */\n destUSDBeforeFee?: string;\n partner: string;\n partnerFee: number; // in %\n hmac: string;\n bridge: Bridge; // for single-chain DeltaPrice, it's DEFAULT_BRIDGE\n};\n\ntype AvailableBridgePrice = Pick<\n DeltaPrice,\n | 'destToken'\n | 'destAmount'\n | 'destAmountBeforeFee' // Available for SELL side\n | 'destUSD'\n | 'destUSDBeforeFee' // Available for SELL side\n | 'gasCostUSD'\n | 'gasCost'\n | 'gasCostUSDBeforeFee'\n | 'gasCostBeforeFee'\n | 'receivedDestAmount'\n | 'receivedDestAmountBeforeFee'\n | 'receivedDestUSD'\n | 'receivedDestUSDBeforeFee'\n>;\n\nexport type AvailableBridge = Prettify<\n AvailableBridgePrice & Pick<BridgePrice, 'bridge' | 'bridgeInfo'>\n>;\n\nexport type BridgePrice = Omit<DeltaPrice, 'bridge'> & {\n // destAmountAfterBridge: string; // became bridgeInfo.destAmountAfterBridge\n // destUSDAfterBridge: string; // became bridgeInfo.destUSDAfterBridge\n // bridgeFee: string; // became bridgeInfo.fees[0].amount\n // bridgeFeeUSD: string; // became bridgeInfo.fees[0].amountInUSD\n // poolAddress: string;\n bridge: Bridge;\n bridgeInfo: BridgePriceInfo;\n availableBridges: AvailableBridge[];\n};\n\ntype DeltaPriceResponse = {\n price: DeltaPrice | BridgePrice;\n deltaAddress: string;\n};\n\ninterface GetDeltaPrice {\n (\n options: DeltaPriceParams & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<BridgePrice>;\n (\n options: DeltaPriceParams & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<DeltaPrice>;\n (options: DeltaPriceParams, requestParams?: RequestParameters): Promise<\n DeltaPrice | BridgePrice\n >;\n}\n\nexport type GetDeltaPriceFunctions = {\n getDeltaPrice: GetDeltaPrice;\n};\n\nexport const constructGetDeltaPrice = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetDeltaPriceFunctions => {\n const pricesUrl = `${apiURL}/delta/prices` as const;\n\n async function getDeltaPrice(\n options: DeltaPriceParams & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<BridgePrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<DeltaPrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams,\n requestParams?: RequestParameters\n ): Promise<DeltaPrice | BridgePrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams,\n requestParams?: RequestParameters\n ): Promise<DeltaPrice | BridgePrice> {\n const {\n includeAgents,\n excludeAgents,\n includeBridges,\n excludeBridges,\n ...rest\n } = options;\n const includeAgentsString = includeAgents\n ? includeAgents.join(',')\n : undefined;\n const excludeAgentsString = excludeAgents\n ? excludeAgents.join(',')\n : undefined;\n const includeBridgesString = includeBridges\n ? includeBridges.join(',')\n : undefined;\n const excludeBridgesString = excludeBridges\n ? excludeBridges.join(',')\n : undefined;\n\n const search = constructSearchString<DeltaPriceQueryOptions>({\n ...rest,\n chainId,\n side: options.side ?? SwapSide.SELL,\n includeAgents: includeAgentsString,\n excludeAgents: excludeAgentsString,\n includeBridges: includeBridgesString,\n excludeBridges: excludeBridgesString,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<DeltaPriceResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.price;\n }\n\n return {\n getDeltaPrice,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { DeltaAuction, DeltaAuctionStatus } from './helpers/types';\n\nexport type DeltaOrderFromAPI = Omit<DeltaAuction, 'signature'>;\n\nexport type DeltaOrderFilterByStatus =\n | DeltaAuctionStatus\n | 'INSUFFICIENT_BALANCE'\n | 'INSUFFICIENT_ALLOWANCE'\n | 'INVALIDATED'\n | 'ACTIVE'\n | 'INACTIVE';\n\ntype GetDeltaOrderById = (\n orderId: string,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI>;\n\ntype GetDeltaOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI>;\n\ntype OrdersFilter = {\n /** @description Order.owner to fetch Delta Order for */\n userAddress: Address;\n /** @description Pagination option, page. Default 1 */\n page?: number;\n /** @description Pagination option, limit. Default 100 */\n limit?: number;\n /** @description Filter by chainId, without this filter, orders from all chains are returned */\n chainId?: number[];\n /**\n * @description\n * Filter by any known DeltaAuctionStatus and some custom statuses:\n * - **INSUFFICIENT_BALANCE** — returned as SUSPENDED from API\n * - **INSUFFICIENT_ALLOWANCE** — returned as SUSPENDED from API\n * - **INVALIDATED** — returned as FAILED from API\n * - **ACTIVE** — All orders with NOT_STARTED, RUNNING, EXECUTING or SUSPENDED statuses.\n * - **INACTIVE** — All orders with EXECUTED, FAILED, EXPIRED, CANCELLED or INVALIDATED statuses.\n */\n status?: DeltaOrderFilterByStatus[];\n /** @description Filter by type. MARKET, LIMIT. Orders with both types are returned if not specified */\n type?: 'MARKET' | 'LIMIT';\n};\ntype OrderFiltersQuery = Omit<OrdersFilter, 'chainId' | 'status'> & {\n chainId?: string;\n status?: string;\n};\n\ntype GetDeltaOrders = (\n options: OrdersFilter,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI[]>;\n\ntype GetRequiredBalanceParams = {\n userAddress: Address;\n tokenAddress?: Address;\n};\n\ntype GetRequiredBalance = (\n userParams: GetRequiredBalanceParams,\n requestParams?: RequestParameters\n) => Promise<Record<string, string>>; // token -> balance in Limit Orders\n\nexport type GetDeltaOrdersFunctions = {\n getDeltaOrderById: GetDeltaOrderById;\n getDeltaOrderByHash: GetDeltaOrderByHash;\n getDeltaOrders: GetDeltaOrders;\n getRequiredBalanceForDeltaLimitOrders: GetRequiredBalance;\n};\n\nexport const constructGetDeltaOrders = ({\n apiURL = API_URL,\n fetcher,\n chainId,\n}: ConstructFetchInput): GetDeltaOrdersFunctions => {\n const baseUrl = `${apiURL}/delta/orders` as const;\n\n const getDeltaOrderById: GetDeltaOrderById = async (\n orderId,\n requestParams\n ) => {\n const fetchURL = `${baseUrl}/${orderId}` as const;\n\n const order = await fetcher<DeltaOrderFromAPI>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrderByHash: GetDeltaOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const fetchURL = `${baseUrl}/hash/${orderHash}` as const;\n\n const order = await fetcher<DeltaOrderFromAPI>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrders: GetDeltaOrders = async (options, requestParams) => {\n const chainIdString = options.chainId?.join(',');\n const statusString = options.status?.join(',');\n\n const search = constructSearchString<OrderFiltersQuery>({\n userAddress: options.userAddress,\n page: options.page,\n limit: options.limit,\n type: options.type,\n chainId: chainIdString,\n status: statusString,\n });\n\n const fetchURL = `${baseUrl}${search}` as const;\n\n const orders = await fetcher<DeltaOrderFromAPI[]>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return orders;\n };\n\n const getRequiredBalanceForDeltaLimitOrders: GetRequiredBalance = async (\n userParams,\n requestParams\n ) => {\n const userURL =\n `${baseUrl}/fillablebalance/${chainId}/${userParams.userAddress}` as const;\n const fetchURL = userParams.tokenAddress\n ? (`${userURL}/${userParams.tokenAddress}` as const)\n : userURL;\n\n const response = await fetcher<Record<string, string>>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return response;\n };\n\n return {\n getDeltaOrderById,\n getDeltaOrderByHash,\n getDeltaOrders,\n getRequiredBalanceForDeltaLimitOrders,\n };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\nimport { constructGetDeltaContract } from './getDeltaContract';\n\nexport type ApproveTokenForDeltaFunctions<T> = {\n /** @description approving ParaswapDelta contract as spender for Token */\n approveTokenForDelta: ApproveToken<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForDelta = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForDeltaFunctions<T> => {\n // getDeltaContract is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const getParaswapDeltaAddress = async (requestParams?: RequestParameters) => {\n const deltaContract = await getDeltaContract(requestParams);\n if (!deltaContract) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n return deltaContract;\n };\n\n const approveTokenForDelta: ApproveToken<T> = approveTokenMethodFactory<T>(\n options.contractCaller,\n getParaswapDeltaAddress\n );\n\n return {\n approveTokenForDelta,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\n\n// srcChainId -> destChainId -> outputToken[]\n// output Tokens that are supported for a srcChainId -> destChainId pair\nexport type BridgeInfo = Record<number, Record<number, Address[]>>;\ntype BridgeInfoResponse = { supportedTokens: BridgeInfo };\n\ntype GetBridgeInfoParams = {\n /** @description Include tokens that can be swapped on destChain after bridge. Default is true. */\n allowBridgeAndSwap?: boolean;\n /** @description Include only the specified bridges. Default is all bridges. */\n bridges?: string[];\n};\n\ntype BridgeInfoQuery = {\n allowBridgeAndSwap?: boolean;\n bridges?: string;\n};\n\ntype GetBridgeInfo = (\n params?: GetBridgeInfoParams,\n requestParams?: RequestParameters\n) => Promise<BridgeInfo>;\n\nexport type BridgeProtocolResponse = {\n protocol: string;\n displayName: string;\n icon: string;\n};\n\ntype BridgeProtocolsResponse = {\n bridgeProtocols: BridgeProtocolResponse[];\n};\n\ntype GetBridgeProtocols = (\n requestParams?: RequestParameters\n) => Promise<BridgeProtocolResponse[]>;\n\nexport type GetBridgeInfoFunctions = {\n getBridgeInfo: GetBridgeInfo;\n getBridgeProtocols: GetBridgeProtocols;\n};\n\nexport const constructGetBridgeInfo = ({\n apiURL = API_URL,\n fetcher,\n}: ConstructFetchInput): GetBridgeInfoFunctions => {\n const deltaBridgeUrl = `${apiURL}/delta/prices` as const;\n\n const getBridgeInfo: GetBridgeInfo = async (params = {}, requestParams) => {\n const { allowBridgeAndSwap, bridges } = params;\n const bridgesString = bridges ? bridges.join(',') : undefined;\n\n const search = constructSearchString<BridgeInfoQuery>({\n allowBridgeAndSwap,\n bridges: bridgesString,\n });\n\n const fetchURL = `${deltaBridgeUrl}/bridge-info${search}` as const;\n\n const data = await fetcher<BridgeInfoResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.supportedTokens;\n };\n\n const getBridgeProtocols: GetBridgeProtocols = async (requestParams) => {\n const fetchURL = `${deltaBridgeUrl}/bridge-protocols` as const;\n\n const data = await fetcher<BridgeProtocolsResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.bridgeProtocols;\n };\n\n return {\n getBridgeInfo,\n getBridgeProtocols,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\n\ntype TokenSupportedInDeltaResponse = { supported: boolean };\ntype IsTokenSupportedInDeltaQueryOptions = {\n token: Address;\n chainId: number;\n};\n\ntype IsTokenSupportedInDelta = (\n token: Address,\n requestParams?: RequestParameters\n) => Promise<boolean>;\n\nexport type IsTokenSupportedInDeltaFunctions = {\n isTokenSupportedInDelta: IsTokenSupportedInDelta;\n};\n\nexport const constructIsTokenSupportedInDelta = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): IsTokenSupportedInDeltaFunctions => {\n const bridgeInfoUrl = `${apiURL}/delta/prices/is-token-supported` as const;\n\n const isTokenSupportedInDelta: IsTokenSupportedInDelta = async (\n token,\n requestParams\n ) => {\n const search = constructSearchString<IsTokenSupportedInDeltaQueryOptions>({\n token,\n chainId,\n });\n\n const fetchURL = `${bridgeInfoUrl}/${search}` as const;\n\n const data = await fetcher<TokenSupportedInDeltaResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.supported;\n };\n\n return {\n isTokenSupportedInDelta,\n };\n};\n","import { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { BridgePrice, DeltaPrice } from '../delta/getDeltaPrice';\nimport type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n OptimalRate,\n} from '../../types';\n\ntype TradeMode = 'delta' | 'market' | 'all';\n// enable passing enum value by string\ntype SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type QuoteParams<M extends TradeMode = TradeMode> = {\n /** @description Source Token Address */\n srcToken: string;\n /** @description Destination Token Address */\n destToken: string;\n /** @description srcToken amount (in case of SELL) or destToken amount (in case of BUY), in wei */\n amount: string;\n /** @description Source Token Decimals. */\n srcDecimals: number;\n /** @description Destination Token Decimals */\n destDecimals: number;\n /** @description SELL or BUY, default is SELL */\n side?: SwapSideUnion;\n /** @description User's Wallet Address */\n userAddress?: string;\n /** @description Partner string */\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description Maximum price impact (in percentage) acceptable for the trade */\n maxImpact?: number;\n /** @description Maximum price impact (in USD) acceptable for the trade */\n maxUSDImpact?: number;\n /** @description Preferred mode for the trade. In case of \"all\", Delta pricing is returned, with Market as a fallback */\n mode: M;\n};\n\ntype QuoteQueryOptions = QuoteParams & {\n chainId: number; // will return error from API on unsupported chains\n};\n\ntype FallbackReason = {\n errorType: string;\n details: string;\n};\n\nexport type QuoteWithMarketPrice = {\n market: OptimalRate;\n};\n\nexport type QuoteWithDeltaPrice = {\n delta: DeltaPrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithBridgePrice = {\n delta: BridgePrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithDeltaPriceAndBridgePrice = {\n delta: DeltaPrice | BridgePrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithMarketPriceAsFallback = QuoteWithMarketPrice & {\n fallbackReason: FallbackReason;\n};\n\nexport type QuoteResponse =\n | QuoteWithDeltaPrice\n | QuoteWithMarketPrice\n | QuoteWithBridgePrice\n | QuoteWithMarketPriceAsFallback\n | QuoteWithDeltaPriceAndBridgePrice;\n\ninterface GetQuoteFunc {\n (\n options: QuoteParams<'delta'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPrice>;\n (\n options: QuoteParams<'delta'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n (\n options: QuoteParams<'delta'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPriceAndBridgePrice>;\n (\n options: QuoteParams<'market'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithMarketPrice>;\n (\n options: QuoteParams<'all'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n (\n options: QuoteParams<'all'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n (options: QuoteParams<'all'>, requestParams?: RequestParameters): Promise<\n QuoteWithDeltaPriceAndBridgePrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n (\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse>;\n}\n\nexport type GetQuoteFunctions = {\n getQuote: GetQuoteFunc;\n};\n\nexport const constructGetQuote = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetQuoteFunctions => {\n const pricesUrl = `${apiURL}/quote` as const;\n\n function getQuote(\n options: QuoteParams<'delta'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPrice>;\n function getQuote(\n options: QuoteParams<'delta'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n function getQuote(\n options: QuoteParams<'delta'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPriceAndBridgePrice>;\n function getQuote(\n options: QuoteParams<'market'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithMarketPrice>;\n function getQuote(\n options: QuoteParams<'all'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n function getQuote(\n options: QuoteParams<'all'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n function getQuote(\n options: QuoteParams<'all'>,\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPriceAndBridgePrice | QuoteWithMarketPriceAsFallback\n >;\n function getQuote(\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse>;\n async function getQuote(\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse> {\n const search = constructSearchString<QuoteQueryOptions>({\n ...options,\n chainId,\n side: options.side ?? SwapSide.SELL,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<QuoteResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n }\n\n return {\n getQuote,\n };\n};\n","import { Domain } from '../../common/orders/buildOrderData';\n\nconst ORDER_CANCELLATIONS_EIP_712_TYPES = {\n OrderCancellations: [{ name: 'orderIds', type: 'string[]' }],\n};\n\nexport type CancelDeltaOrderData = {\n orderIds: string[];\n};\n\nexport type SignableCancelDeltaOrderData = {\n types: {\n OrderCancellations: (typeof ORDER_CANCELLATIONS_EIP_712_TYPES)['OrderCancellations'];\n };\n domain: Domain;\n data: CancelDeltaOrderData;\n};\n\ntype BuildCancelDeltaOrderInput = {\n orderInput: CancelDeltaOrderData;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function buildCancelDeltaOrderSignableData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: BuildCancelDeltaOrderInput): SignableCancelDeltaOrderData {\n const typedData = {\n types: {\n OrderCancellations: ORDER_CANCELLATIONS_EIP_712_TYPES.OrderCancellations,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: {\n // explicityly pick only the necessary fields,\n // otherwise signing will break if more is present\n orderIds: orderInput.orderIds,\n },\n };\n\n return typedData;\n}\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport {\n buildCancelDeltaOrderSignableData,\n CancelDeltaOrderData,\n} from './helpers/buildCancelDeltaOrderData';\n\ntype SuccessResponse = { success: true };\n\ntype CancelDeltaOrderRequestParams = {\n orderIds: string[];\n signature: string;\n};\n\nexport type SignCancelDeltaOrderRequest = (\n params: CancelDeltaOrderData,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type PostCancelDeltaOrderRequest = (\n params: CancelDeltaOrderRequestParams,\n requestParams?: RequestParameters\n) => Promise<SuccessResponse>;\n\nexport type CancelDeltaOrder = (\n params: CancelDeltaOrderData,\n requestParams?: RequestParameters\n) => Promise<SuccessResponse>;\n\nexport type CancelDeltaOrderFunctions = {\n signCancelLimitDeltaOrderRequest: SignCancelDeltaOrderRequest;\n postCancelLimitDeltaOrderRequest: PostCancelDeltaOrderRequest;\n /** @description Cancel a Limit Delta order */\n cancelLimitDeltaOrders: CancelDeltaOrder;\n};\n\nexport const constructCancelDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller' | 'fetcher' | 'apiURL' | 'chainId'\n >\n): CancelDeltaOrderFunctions => {\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const signCancelLimitDeltaOrderRequest: SignCancelDeltaOrderRequest = async (\n params,\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const typedData = buildCancelDeltaOrderSignableData({\n orderInput: params,\n paraswapDeltaAddress: ParaswapDelta,\n chainId: options.chainId,\n });\n const signature = await options.contractCaller.signTypedDataCall(typedData);\n\n return signature;\n };\n\n const postCancelLimitDeltaOrderRequest: PostCancelDeltaOrderRequest = async (\n params,\n requestParams\n ) => {\n const cancelUrl = `${options.apiURL}/delta/orders/cancel` as const;\n\n const res = await options.fetcher<SuccessResponse>({\n url: cancelUrl,\n method: 'POST',\n data: params,\n requestParams,\n });\n\n return res;\n };\n\n const cancelLimitDeltaOrders: CancelDeltaOrder = async (\n { orderIds },\n requestParams\n ) => {\n const signature = await signCancelLimitDeltaOrderRequest(\n { orderIds },\n requestParams\n );\n\n const res = await postCancelLimitDeltaOrderRequest(\n {\n orderIds,\n signature,\n },\n requestParams\n );\n\n return res;\n };\n\n return {\n signCancelLimitDeltaOrderRequest,\n postCancelLimitDeltaOrderRequest,\n cancelLimitDeltaOrders,\n };\n};\n","import type {\n AnyFunction,\n ConstructBaseInput,\n ConstructFetchInput,\n ConstructProviderFetchInput,\n} from '../types';\nimport type { Merge, UnionToIntersection } from 'ts-essentials';\nimport type { ApproveTokenFunctions } from '../methods/swap/approve';\nimport type { CancelLimitOrderFunctions } from '../methods/limitOrders/cancelOrder';\nimport type { ApproveTokenForLimitOrderFunctions } from '../methods/limitOrders/approveForOrder';\nimport type { CancelNFTOrderFunctions } from '../methods/nftOrders/cancelOrder';\nimport type { ApproveTokenForNFTOrderFunctions } from '../methods/nftOrders/approveForOrder';\nimport type { FillOrderDirectlyFunctions } from '../methods/limitOrders/fillOrderDirectly';\nimport type { ApproveTokenForDeltaFunctions } from '../methods/delta/approveForDelta';\nimport type { PreSignDeltaOrderFunctions } from '../methods/delta/preSignDeltaOrder';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\n\nexport type SDKConfig<TxResponse = any> = ConstructProviderFetchInput<\n TxResponse,\n 'staticCall' | 'transactCall' | 'signTypedDataCall'\n> &\n ConstructFetchInput;\n\ntype SDKFunction<T extends ConstructBaseInput> = (\n config: T\n) => Record<string, AnyFunction | Record<string, AnyFunction>>;\n\ntype IntersectionOfReturns<Funcs extends AnyFunction[]> = UnionToIntersection<\n ReturnType<Funcs[number]>\n>;\n\ntype PartialSDKResult<\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n> = InferWithTxResponse<Config, Funcs>;\n\ntype InferWithTxResponse<\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n> = Config extends SDKConfig<infer TxResponse> // if can infer TxResponse inside Config\n ? // and if returns can be successfully intersected\n IntersectionOfReturns<Funcs> extends Record<string, any>\n ? MergeExtendableRecursively<\n IntersectionOfReturns<Funcs>,\n [\n // if there are ApproveTokenFunctions or CancelLimitOrderFunctions in the intersection\n // which means constructApproveToken or constructCancelLimitOrder was passed in Funcs\n ApproveTokenFunctions<TxResponse>,\n CancelLimitOrderFunctions<TxResponse>,\n FillOrderDirectlyFunctions<TxResponse>,\n ApproveTokenForLimitOrderFunctions<TxResponse>,\n CancelNFTOrderFunctions<TxResponse>,\n ApproveTokenForNFTOrderFunctions<TxResponse>,\n ApproveTokenForDeltaFunctions<TxResponse>,\n PreSignDeltaOrderFunctions<TxResponse>\n ]\n // then merge IntersectionOfReturns<Funcs> with them recursively\n >\n : IntersectionOfReturns<Funcs>\n : IntersectionOfReturns<Funcs>;\n\n// merges Accum with Replacement\n// if Accum has keys of Replacement\ntype MergeExtendableOnce<\n Accum extends Record<string, any>,\n Replacement extends Record<string, any>\n> = Accum extends Record<keyof Replacement, any>\n ? Merge<Accum, Replacement>\n : Accum;\n\n// recursively merges Accum with each Replacement\n// if Accum has keys of Replacement\ntype MergeExtendableRecursively<\n Accum extends Record<string, any>,\n Replacements extends Record<string, any>[]\n> = Replacements extends [\n head: infer Head extends Record<string, any>,\n ...tail: infer Tail\n]\n ? Tail extends Record<string, any>[]\n ? MergeExtendableRecursively<MergeExtendableOnce<Accum, Head>, Tail>\n : MergeExtendableOnce<Accum, Head>\n : Accum;\n\n/** @description construct composable SDK with methods you choose yourself */\nexport const constructPartialSDK = <\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n>(\n config: Config, // config is auto-inferred to cover the used functions\n ...funcs: Funcs\n): PartialSDKResult<Config, Funcs> & Required<ConstructBaseInput> => {\n const sdkFuncs = funcs.reduce<Partial<IntersectionOfReturns<Funcs>>>(\n (accum, func) => {\n const sdkSlice = func(config);\n return Object.assign(accum, sdkSlice);\n },\n {}\n );\n\n const sdk = {\n ...sdkFuncs,\n apiURL: config.apiURL ?? API_URL,\n version: config.version ?? DEFAULT_VERSION,\n chainId: config.chainId,\n } as PartialSDKResult<Config, Funcs> & Required<ConstructBaseInput>;\n\n return sdk;\n};\n","import { constructPartialSDK, SDKConfig } from '../../sdk/partial';\nimport { constructGetAdapters, GetAdaptersFunctions } from './adapters';\nimport { ApproveTokenFunctions, constructApproveToken } from './approve';\nimport { constructGetBalances, GetBalancesFunctions } from './balance';\nimport { constructGetRate, GetRateFunctions } from './rates';\nimport { constructGetSpender, GetSpenderFunctions } from './spender';\nimport { constructSwapTx, GetSwapTxFunctions } from './swapTx';\nimport { constructGetTokens, GetTokensFunctions } from './token';\nimport { BuildTxFunctions, constructBuildTx } from './transaction';\n\nexport type SwapSDKMethods<TxResponse> = GetBalancesFunctions &\n GetTokensFunctions &\n GetSpenderFunctions &\n ApproveTokenFunctions<TxResponse> &\n BuildTxFunctions &\n GetAdaptersFunctions &\n GetRateFunctions &\n GetSwapTxFunctions;\n\n/** @description construct SDK with every Swap-related method, fetching from API and token approval */\nexport const constructSwapSDK = <TxResponse>(\n config: SDKConfig<TxResponse>\n): SwapSDKMethods<TxResponse> => {\n const constructApproveTokenWithTxResponse = constructApproveToken<TxResponse>;\n\n // include all available Swap methods\n return constructPartialSDK(\n config,\n constructGetBalances,\n constructGetTokens,\n constructGetSpender,\n constructApproveTokenWithTxResponse,\n constructBuildTx,\n constructGetAdapters,\n constructGetRate,\n constructSwapTx\n );\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { LimitOrderToSend, LimitOrderFromApi } from './helpers/types';\nimport {\n BuildLimitOrderFunctions,\n BuildLimitOrderInput,\n constructBuildLimitOrder,\n} from './buildOrder';\nimport {\n CancelLimitOrderFunctions,\n constructCancelLimitOrder,\n} from './cancelOrder';\nimport { constructGetLimitOrders, GetLimitOrdersFunctions } from './getOrders';\nimport { constructPostLimitOrder, PostLimitOrderFunctions } from './postOrder';\nimport { constructSignLimitOrder, SignLimitOrderFunctions } from './signOrder';\nimport {\n constructApproveTokenForLimitOrder,\n ApproveTokenForLimitOrderFunctions,\n} from './approveForOrder';\nimport {\n GetLimitOrdersContractFunctions,\n constructGetLimitOrdersContract,\n} from './getOrdersContract';\nimport {\n BuildLimitOrdersTxFunctions,\n constructBuildLimitOrderTx,\n} from './transaction';\nimport type { Address } from '@paraswap/core';\nimport {\n FillOrderDirectlyFunctions,\n constructFillOrderDirectly,\n} from './fillOrderDirectly';\n\ntype SubmitLimitOrder = (\n buildLimitOrderParams: BuildLimitOrderInput,\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\ntype SubmitP2POrder = (\n buildLimitOrderParams: BuildLimitOrderInput & { taker: Address },\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\nexport type SubmitLimitOrderFuncs = {\n submitLimitOrder: SubmitLimitOrder;\n submitP2POrder: SubmitP2POrder;\n};\n\nexport const constructSubmitLimitOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitLimitOrderFuncs => {\n const { buildLimitOrder } = constructBuildLimitOrder(options);\n const { signLimitOrder } = constructSignLimitOrder(options);\n const { postLimitOrder, postP2POrder } = constructPostLimitOrder(options);\n\n const prepareLimitOrder = async (\n buildLimitOrderParams: BuildLimitOrderInput,\n extra?: { permitMakerAsset?: string }\n ): Promise<LimitOrderToSend> => {\n const orderData = await buildLimitOrder(buildLimitOrderParams);\n const signature = await signLimitOrder(orderData);\n\n const orderWithSignature: LimitOrderToSend = {\n ...orderData.data,\n ...extra,\n signature,\n };\n\n return orderWithSignature;\n };\n\n const submitLimitOrder: SubmitLimitOrder = async (\n buildLimitOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: LimitOrderToSend = await prepareLimitOrder(\n buildLimitOrderParams,\n extra\n );\n\n const newOrder = await postLimitOrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n const submitP2POrder: SubmitP2POrder = async (\n buildLimitOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: LimitOrderToSend = await prepareLimitOrder(\n buildLimitOrderParams,\n extra\n );\n\n const newOrder = await postP2POrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n return { submitLimitOrder, submitP2POrder };\n};\n\nexport type LimitOrderHandlers<T> = SubmitLimitOrderFuncs &\n BuildLimitOrderFunctions &\n SignLimitOrderFunctions &\n PostLimitOrderFunctions &\n GetLimitOrdersFunctions &\n GetLimitOrdersContractFunctions &\n BuildLimitOrdersTxFunctions &\n CancelLimitOrderFunctions<T> &\n ApproveTokenForLimitOrderFunctions<T> &\n FillOrderDirectlyFunctions<T>;\n\n/** @description construct SDK with every LimitOrders-related method, fetching from API and contract calls */\nexport const constructAllLimitOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall' | 'staticCall'\n >\n): LimitOrderHandlers<TxResponse> => {\n const limitOrdersGetters = constructGetLimitOrders(options);\n const limitOrdersContractGetter = constructGetLimitOrdersContract(options);\n\n const limitOrdersSubmit = constructSubmitLimitOrder(options);\n const limitOrdersBuild = constructBuildLimitOrder(options);\n const limitOrdersSign = constructSignLimitOrder(options);\n const limitOrdersPost = constructPostLimitOrder(options);\n\n const limitOrdersCancel = constructCancelLimitOrder(options);\n const limitOrdersApproveToken = constructApproveTokenForLimitOrder(options);\n\n const limitOrdersFillOrderDirectly = constructFillOrderDirectly(options);\n\n const limitOrdersBuildTx = constructBuildLimitOrderTx(options);\n\n return {\n ...limitOrdersGetters,\n ...limitOrdersContractGetter,\n ...limitOrdersSubmit,\n ...limitOrdersBuild,\n ...limitOrdersSign,\n ...limitOrdersPost,\n ...limitOrdersCancel,\n ...limitOrdersApproveToken,\n ...limitOrdersFillOrderDirectly,\n ...limitOrdersBuildTx,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport {\n BuildDeltaOrderDataParams,\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from './buildDeltaOrder';\nimport {\n constructPostDeltaOrder,\n DeltaOrderApiResponse,\n DeltaOrderToPost,\n PostDeltaOrderFunctions,\n} from './postDeltaOrder';\nimport {\n constructSignDeltaOrder,\n SignDeltaOrderFunctions,\n} from './signDeltaOrder';\nimport {\n GetDeltaContractFunctions,\n constructGetDeltaContract,\n} from './getDeltaContract';\nimport {\n constructGetDeltaPrice,\n GetDeltaPriceFunctions,\n} from './getDeltaPrice';\nimport {\n constructGetDeltaOrders,\n GetDeltaOrdersFunctions,\n} from './getDeltaOrders';\nimport {\n constructGetPartnerFee,\n GetPartnerFeeFunctions,\n} from './getPartnerFee';\nimport {\n ApproveTokenForDeltaFunctions,\n constructApproveTokenForDelta,\n} from './approveForDelta';\nimport {\n constructGetBridgeInfo,\n GetBridgeInfoFunctions,\n} from './getBridgeInfo';\nimport {\n constructIsTokenSupportedInDelta,\n IsTokenSupportedInDeltaFunctions,\n} from './isTokenSupportedInDelta';\nimport {\n CancelDeltaOrderFunctions,\n constructCancelDeltaOrder,\n} from './cancelDeltaOrder';\nimport {\n constructPreSignDeltaOrder,\n PreSignDeltaOrderFunctions,\n} from './preSignDeltaOrder';\n\nexport type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {\n /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */\n partiallyFillable?: boolean;\n /** @description Referrer address */\n referrerAddress?: string;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitDeltaOrder = (\n orderParams: SubmitDeltaOrderParams\n) => Promise<DeltaOrderApiResponse>;\n\nexport type SubmitDeltaOrderFuncs = {\n submitDeltaOrder: SubmitDeltaOrder;\n};\n\nexport const constructSubmitDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitDeltaOrderFuncs => {\n const { buildDeltaOrder } = constructBuildDeltaOrder(options);\n // in the normal submitOrderFlow preSign tx is not involved\n const { signDeltaOrder } = constructSignDeltaOrder(options);\n const { postDeltaOrder } = constructPostDeltaOrder(options);\n\n const submitDeltaOrder: SubmitDeltaOrder = async (orderParams) => {\n const orderData = await buildDeltaOrder(orderParams);\n const signature = await signDeltaOrder(orderData);\n\n const response = await postDeltaOrder({\n signature,\n partner: orderParams.partner,\n order: orderData.data,\n partiallyFillable: orderParams.partiallyFillable,\n referrerAddress: orderParams.referrerAddress,\n type: orderParams.type,\n includeAgents: orderParams.includeAgents,\n excludeAgents: orderParams.excludeAgents,\n });\n\n return response;\n };\n\n return { submitDeltaOrder };\n};\n\nexport type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &\n ApproveTokenForDeltaFunctions<T> &\n BuildDeltaOrderFunctions &\n GetDeltaOrdersFunctions &\n GetDeltaPriceFunctions &\n GetDeltaContractFunctions &\n GetPartnerFeeFunctions &\n GetBridgeInfoFunctions &\n IsTokenSupportedInDeltaFunctions &\n PostDeltaOrderFunctions &\n SignDeltaOrderFunctions &\n PreSignDeltaOrderFunctions<T> &\n CancelDeltaOrderFunctions;\n\n/** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */\nexport const constructAllDeltaOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall'\n >\n): DeltaOrderHandlers<TxResponse> => {\n const deltaOrdersGetters = constructGetDeltaOrders(options);\n const deltaOrdersContractGetter = constructGetDeltaContract(options);\n const deltaPrice = constructGetDeltaPrice(options);\n\n const partnerFee = constructGetPartnerFee(options);\n const bridgeInfo = constructGetBridgeInfo(options);\n const isTokenSupportedInDelta = constructIsTokenSupportedInDelta(options);\n\n const approveTokenForDelta = constructApproveTokenForDelta(options);\n\n const deltaOrdersSubmit = constructSubmitDeltaOrder(options);\n\n const deltaOrdersBuild = constructBuildDeltaOrder(options);\n const deltaOrdersSign = constructSignDeltaOrder(options);\n const deltaOrdersPreSign = constructPreSignDeltaOrder(options);\n const deltaOrdersPost = constructPostDeltaOrder(options);\n\n const deltaOrdersCancel = constructCancelDeltaOrder(options);\n\n return {\n ...deltaOrdersGetters,\n ...deltaOrdersContractGetter,\n ...deltaPrice,\n ...partnerFee,\n ...bridgeInfo,\n ...isTokenSupportedInDelta,\n ...approveTokenForDelta,\n ...deltaOrdersSubmit,\n ...deltaOrdersBuild,\n ...deltaOrdersSign,\n ...deltaOrdersPreSign,\n ...deltaOrdersPost,\n ...deltaOrdersCancel,\n };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { NFTOrderToSend, NFTOrderFromAPI } from './helpers/types';\nimport {\n BuildNFTOrderFunctions,\n BuildNFTOrderInput,\n constructBuildNFTOrder,\n} from './buildOrder';\nimport {\n CancelNFTOrderFunctions,\n constructCancelNFTOrder,\n} from './cancelOrder';\nimport { constructGetNFTOrders, GetNFTOrdersFunctions } from './getOrders';\nimport { constructPostNFTOrder, PostNFTOrderFunctions } from './postOrder';\nimport { constructSignNFTOrder, SignNFTOrderFunctions } from './signOrder';\nimport {\n constructApproveTokenForNFTOrder,\n ApproveTokenForNFTOrderFunctions,\n} from './approveForOrder';\nimport {\n GetNFTOrdersContractFunctions,\n constructGetNFTOrdersContract,\n} from './getOrdersContract';\nimport {\n BuildNFTOrdersTxFunctions,\n constructBuildNFTOrderTx,\n} from './transaction';\n\ntype SubmitNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\n\nexport type SubmitNFTOrderFuncs = {\n submitNFTOrder: SubmitNFTOrder;\n submitP2POrder: SubmitNFTOrder;\n};\n\nexport const constructSubmitNFTOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitNFTOrderFuncs => {\n const { buildNFTOrder } = constructBuildNFTOrder(options);\n const { signNFTOrder } = constructSignNFTOrder(options);\n const { postNFTLimitOrder, postNFTP2POrder } = constructPostNFTOrder(options);\n\n const prepareNFTOrder = async (\n buildNFTOrderParams: BuildNFTOrderInput,\n extra?: { permitMakerAsset?: string }\n ): Promise<NFTOrderToSend> => {\n const orderData = await buildNFTOrder(buildNFTOrderParams);\n const signature = await signNFTOrder(orderData);\n\n const orderWithSignature: NFTOrderToSend = {\n ...orderData.data,\n ...extra,\n signature,\n };\n\n return orderWithSignature;\n };\n\n const submitNFTOrder: SubmitNFTOrder = async (\n buildNFTOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: NFTOrderToSend = await prepareNFTOrder(\n buildNFTOrderParams,\n extra\n );\n\n const newOrder = await postNFTLimitOrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n const submitP2POrder: SubmitNFTOrder = async (\n buildNFTOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: NFTOrderToSend = await prepareNFTOrder(\n buildNFTOrderParams,\n extra\n );\n\n const newOrder = await postNFTP2POrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n return { submitNFTOrder, submitP2POrder };\n};\n\nexport type NFTOrderHandlers<T> = SubmitNFTOrderFuncs &\n BuildNFTOrderFunctions &\n SignNFTOrderFunctions &\n PostNFTOrderFunctions &\n GetNFTOrdersFunctions &\n GetNFTOrdersContractFunctions &\n BuildNFTOrdersTxFunctions &\n CancelNFTOrderFunctions<T> &\n ApproveTokenForNFTOrderFunctions<T>;\n\n/** @description construct SDK with every NFTOrders-related method, fetching from API and contract calls */\nexport const constructAllNFTOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall' | 'staticCall'\n >\n): NFTOrderHandlers<TxResponse> => {\n const NFTOrdersGetters = constructGetNFTOrders(options);\n const NFTOrdersContractGetter = constructGetNFTOrdersContract(options);\n\n const NFTOrdersSubmit = constructSubmitNFTOrder(options);\n const NFTOrdersBuild = constructBuildNFTOrder(options);\n const NFTOrdersSign = constructSignNFTOrder(options);\n const NFTOrdersPost = constructPostNFTOrder(options);\n\n const NFTOrdersCancel = constructCancelNFTOrder(options);\n const NFTOrdersApproveToken = constructApproveTokenForNFTOrder(options);\n\n const NFTOrdersBuildTx = constructBuildNFTOrderTx(options);\n\n return {\n ...NFTOrdersGetters,\n ...NFTOrdersContractGetter,\n ...NFTOrdersSubmit,\n ...NFTOrdersBuild,\n ...NFTOrdersSign,\n ...NFTOrdersPost,\n ...NFTOrdersCancel,\n ...NFTOrdersApproveToken,\n ...NFTOrdersBuildTx,\n };\n};\n","import type { SDKConfig } from './partial';\nimport { constructSwapSDK, SwapSDKMethods } from '../methods/swap';\nimport {\n constructAllLimitOrdersHandlers,\n LimitOrderHandlers,\n} from '../methods/limitOrders';\nimport {\n constructAllNFTOrdersHandlers,\n NFTOrderHandlers,\n} from '../methods/nftOrders';\nimport {\n constructAllDeltaOrdersHandlers,\n DeltaOrderHandlers,\n} from '../methods/delta';\nimport {\n constructGetQuote,\n GetQuoteFunctions,\n} from '../methods/quote/getQuote';\nimport { ConstructBaseInput } from '../types';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\n\nexport type AllSDKMethods<TxResponse> = {\n swap: SwapSDKMethods<TxResponse>;\n limitOrders: LimitOrderHandlers<TxResponse>;\n nftOrders: NFTOrderHandlers<TxResponse>;\n delta: DeltaOrderHandlers<TxResponse>;\n quote: GetQuoteFunctions;\n} & Required<ConstructBaseInput>;\n\n/** @description construct SDK with every method, for swap and limitOrders */\nexport const constructFullSDK = <TxResponse = any>(\n config: SDKConfig<TxResponse>\n): AllSDKMethods<TxResponse> => {\n // include all available functions\n const swap: SwapSDKMethods<TxResponse> = constructSwapSDK(config);\n const limitOrders: LimitOrderHandlers<TxResponse> =\n constructAllLimitOrdersHandlers(config);\n const nftOrders: NFTOrderHandlers<TxResponse> =\n constructAllNFTOrdersHandlers(config);\n const delta: DeltaOrderHandlers<TxResponse> =\n constructAllDeltaOrdersHandlers(config);\n const quote = constructGetQuote(config);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: config.apiURL ?? API_URL,\n chainId: config.chainId,\n version: config.version ?? DEFAULT_VERSION,\n };\n};\n","import { constructPartialSDK, SDKConfig } from './partial';\nimport {\n GetAdaptersFunctions,\n constructGetAdapters,\n} from '../methods/swap/adapters';\nimport {\n GetBalancesFunctions,\n constructGetBalances,\n} from '../methods/swap/balance';\nimport { GetRateFunctions, constructGetRate } from '../methods/swap/rates';\nimport {\n GetSpenderFunctions,\n constructGetSpender,\n} from '../methods/swap/spender';\nimport { GetTokensFunctions, constructGetTokens } from '../methods/swap/token';\nimport {\n BuildTxFunctions,\n constructBuildTx,\n} from '../methods/swap/transaction';\nimport { constructSwapTx, GetSwapTxFunctions } from '../methods/swap/swapTx';\n\nimport {\n constructAxiosFetcher,\n constructFetchFetcher,\n constructEthersV5ContractCaller,\n constructEthersV6ContractCaller,\n constructWeb3ContractCaller,\n constructViemContractCaller,\n} from '../helpers';\n\nimport type {\n ConstructBaseInput,\n ConstructFetchInput,\n ContractCallerFunctions,\n TransactionContractCallerFn,\n TxHash,\n Address,\n FetcherFunction,\n ExtraFetchParams,\n} from '../types';\n\nimport type { EthersProviderDeps, MinViemClient } from '../helpers';\nimport type Web3 from 'web3';\n\nimport type { SwapSDKMethods } from '../methods/swap';\nimport {\n BuildLimitOrderFunctions,\n constructBuildLimitOrder,\n} from '../methods/limitOrders/buildOrder';\nimport {\n constructPostLimitOrder,\n PostLimitOrderFunctions,\n} from '../methods/limitOrders/postOrder';\nimport {\n constructGetLimitOrders,\n GetLimitOrdersFunctions,\n} from '../methods/limitOrders/getOrders';\nimport {\n constructGetLimitOrdersContract,\n GetLimitOrdersContractFunctions,\n} from '../methods/limitOrders/getOrdersContract';\nimport {\n constructBuildLimitOrderTx,\n BuildLimitOrdersTxFunctions,\n} from '../methods/limitOrders/transaction';\nimport {\n constructAllLimitOrdersHandlers,\n LimitOrderHandlers,\n} from '../methods/limitOrders';\n\nimport {\n constructGetNFTOrdersContract,\n GetNFTOrdersContractFunctions,\n} from '../methods/nftOrders/getOrdersContract';\nimport {\n constructGetNFTOrders,\n GetNFTOrdersFunctions,\n} from '../methods/nftOrders/getOrders';\nimport {\n BuildNFTOrderFunctions,\n constructBuildNFTOrder,\n} from '../methods/nftOrders/buildOrder';\nimport {\n constructPostNFTOrder,\n PostNFTOrderFunctions,\n} from '../methods/nftOrders/postOrder';\nimport {\n constructBuildNFTOrderTx,\n BuildNFTOrdersTxFunctions,\n} from '../methods/nftOrders/transaction';\nimport {\n constructAllNFTOrdersHandlers,\n NFTOrderHandlers,\n} from '../methods/nftOrders';\n\nimport { constructSwapSDK } from '../methods/swap';\nimport type { AxiosRequirement } from '../helpers/fetchers/axios';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\nimport {\n constructAllDeltaOrdersHandlers,\n DeltaOrderHandlers,\n} from '../methods/delta';\nimport {\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from '../methods/delta/buildDeltaOrder';\nimport {\n constructGetDeltaOrders,\n GetDeltaOrdersFunctions,\n} from '../methods/delta/getDeltaOrders';\nimport {\n constructGetDeltaPrice,\n GetDeltaPriceFunctions,\n} from '../methods/delta/getDeltaPrice';\nimport {\n constructGetDeltaContract,\n GetDeltaContractFunctions,\n} from '../methods/delta/getDeltaContract';\nimport {\n constructGetPartnerFee,\n GetPartnerFeeFunctions,\n} from '../methods/delta/getPartnerFee';\nimport {\n constructPostDeltaOrder,\n PostDeltaOrderFunctions,\n} from '../methods/delta/postDeltaOrder';\nimport {\n constructGetQuote,\n GetQuoteFunctions,\n} from '../methods/quote/getQuote';\nimport {\n constructGetBridgeInfo,\n GetBridgeInfoFunctions,\n} from '../methods/delta/getBridgeInfo';\nimport {\n constructIsTokenSupportedInDelta,\n IsTokenSupportedInDeltaFunctions,\n} from '../methods/delta/isTokenSupportedInDelta';\n\nexport type SwapFetchMethods = GetBalancesFunctions &\n GetTokensFunctions &\n GetSpenderFunctions &\n BuildTxFunctions &\n GetAdaptersFunctions &\n GetRateFunctions &\n GetSwapTxFunctions;\n\nexport type LimitOrdersFetchMethods = GetLimitOrdersContractFunctions &\n GetLimitOrdersFunctions &\n BuildLimitOrderFunctions &\n PostLimitOrderFunctions &\n BuildLimitOrdersTxFunctions;\n\nexport type NFTOrdersFetchMethods = GetNFTOrdersContractFunctions &\n GetNFTOrdersFunctions &\n BuildNFTOrderFunctions &\n PostNFTOrderFunctions &\n BuildNFTOrdersTxFunctions;\n\nexport type DeltaFetchMethods = BuildDeltaOrderFunctions &\n GetDeltaOrdersFunctions &\n GetDeltaPriceFunctions &\n GetDeltaContractFunctions &\n GetPartnerFeeFunctions &\n GetBridgeInfoFunctions &\n IsTokenSupportedInDeltaFunctions &\n PostDeltaOrderFunctions;\n\nexport type SimpleFetchSDK = {\n swap: SwapFetchMethods;\n limitOrders: LimitOrdersFetchMethods;\n nftOrders: NFTOrdersFetchMethods;\n delta: DeltaFetchMethods;\n quote: QuoteFetchMethods;\n} & Required<ConstructBaseInput>;\n\nexport type QuoteFetchMethods = GetQuoteFunctions;\n\nexport type SimpleSDK = {\n swap: SwapSDKMethods<TxHash>;\n limitOrders: LimitOrderHandlers<TxHash>;\n nftOrders: NFTOrderHandlers<TxHash>;\n delta: DeltaOrderHandlers<TxHash>;\n quote: QuoteFetchMethods;\n} & Required<ConstructBaseInput>;\n\nexport type FetcherOptions = (\n | {\n axios: AxiosRequirement;\n }\n | { fetch: typeof fetch }\n | { fetcher: FetcherFunction }\n) &\n ExtraFetchParams;\n\ntype SimpleOptions = ConstructBaseInput & FetcherOptions;\n\nexport type ProviderOptions = (\n | EthersProviderDeps\n | { web3: Web3 }\n | { viemClient: MinViemClient }\n) & {\n account: Address;\n};\n\nconst constructFetcher = (options: FetcherOptions): FetcherFunction => {\n if ('axios' in options) {\n return constructAxiosFetcher(options.axios, options);\n }\n if ('fetch' in options) {\n return constructFetchFetcher(options.fetch, options);\n }\n return (params) => {\n // adding apiKey to headers if it's provided\n const headers = options?.apiKey\n ? {\n ...options.headers,\n 'X-API-KEY': options.apiKey,\n ...params.headers,\n ...params.requestParams?.headers,\n }\n : {\n ...options.headers,\n ...params.headers,\n ...params.requestParams?.headers,\n };\n\n return options.fetcher({ ...params, headers });\n };\n};\n\n/** @description construct SDK with methods that fetch from API and optionally with blockchain provider calling methods */\nexport function constructSimpleSDK(options: SimpleOptions): SimpleFetchSDK;\n\nexport function constructSimpleSDK(\n options: SimpleOptions,\n providerOptions: ProviderOptions\n): SimpleSDK;\nexport function constructSimpleSDK(\n options: SimpleOptions,\n providerOptions?: ProviderOptions\n): SimpleFetchSDK | SimpleSDK {\n const fetcher = constructFetcher(options);\n\n if (!providerOptions) {\n const config: ConstructFetchInput = {\n apiURL: options.apiURL,\n chainId: options.chainId,\n version: options.version,\n fetcher,\n };\n\n // include all available functions that don't need `contractCaller`\n const swap: SwapFetchMethods = constructPartialSDK(\n config,\n constructGetBalances,\n constructGetTokens,\n constructGetSpender,\n constructBuildTx,\n constructGetAdapters,\n constructGetRate,\n constructSwapTx\n );\n\n const limitOrders = constructPartialSDK(\n config,\n constructBuildLimitOrder,\n constructPostLimitOrder,\n constructGetLimitOrders,\n constructGetLimitOrdersContract,\n constructBuildLimitOrderTx\n );\n\n const nftOrders = constructPartialSDK(\n config,\n constructBuildNFTOrder,\n constructPostNFTOrder,\n constructGetNFTOrders,\n constructGetNFTOrdersContract,\n constructBuildNFTOrderTx\n );\n\n const delta = constructPartialSDK(\n config,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructGetDeltaOrders,\n constructGetDeltaPrice,\n constructGetDeltaContract,\n constructGetPartnerFee,\n constructGetBridgeInfo,\n constructIsTokenSupportedInDelta\n );\n\n const quote = constructPartialSDK(config, constructGetQuote);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: options.apiURL ?? API_URL,\n chainId: options.chainId,\n version: options.version ?? DEFAULT_VERSION,\n };\n }\n\n const contractCaller = constructSimpleContractCaller(providerOptions);\n\n const config: SDKConfig<TxHash> = {\n apiURL: options.apiURL,\n version: options.version,\n chainId: options.chainId,\n fetcher,\n contractCaller,\n };\n\n const swap: SwapSDKMethods<TxHash> = constructSwapSDK(config);\n\n const limitOrders: LimitOrderHandlers<TxHash> =\n constructAllLimitOrdersHandlers<TxHash>(config);\n\n const nftOrders: NFTOrderHandlers<TxHash> =\n constructAllNFTOrdersHandlers<TxHash>(config);\n\n const delta: DeltaOrderHandlers<TxHash> =\n constructAllDeltaOrdersHandlers<TxHash>(config);\n\n const quote = constructGetQuote(config);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: options.apiURL ?? API_URL,\n chainId: options.chainId,\n version: options.version ?? DEFAULT_VERSION,\n };\n}\n\nfunction constructSimpleContractCaller(\n providerOptions: ProviderOptions\n): ContractCallerFunctions<TxHash> {\n if ('ethersProviderOrSigner' in providerOptions) {\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructEthersV5ContractCaller(\n providerOptions,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (\n params\n ) => {\n const contractTx = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return contractTx.hash as TxHash;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n }\n\n if ('ethersV6ProviderOrSigner' in providerOptions) {\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructEthersV6ContractCaller(\n providerOptions,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (\n params\n ) => {\n const contractTx = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return contractTx.hash as TxHash;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n }\n\n if ('viemClient' in providerOptions) {\n const contractCaller = constructViemContractCaller(\n providerOptions.viemClient,\n providerOptions.account\n );\n return contractCaller;\n }\n\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructWeb3ContractCaller(\n providerOptions.web3,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (params) => {\n const unpromiEvent = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return new Promise<TxHash>((resolve, reject) => {\n unpromiEvent.once('transactionHash', (hash) => resolve(hash as TxHash));\n unpromiEvent.once('error', reject);\n });\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n}\n"],"names":["API_URL","DEFAULT_VERSION","objectToFilledEntries","object","Object","entries","filter","_ref","value","undefined","map","_ref2","key","String","constructSearchString","queryOptions","queryEntries","queryString","URLSearchParams","toString","isFetcherError","error","FetcherError","_Error","_ref3","_this","code","request","response","isAxiosError","message","call","status","Error","captureStackTrace","name","constructor","_assertThisInitialized","data","isDataWithError","isDataWithError2","errorType","description","_inheritsLoose","_wrapNativeSuper","isObject","obj","isFilledArray","array","length","getRandomInt","Math","floor","random","Number","MAX_SAFE_INTEGER","runOnceAndCache","func","result","_result","apply","arguments","constructGetSpender","_ref$apiURL","apiURL","_ref$version","version","chainId","fetcher","search","fetchURL","_getContracts","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requestParams","wrap","_callee$","_context","prev","next","url","method","sent","abrupt","stop","_x","getContracts","getSpender","_callee2","_yield$getContracts","TokenTransferProxy","_callee2$","_context2","_x2","getAugustusSwapper","_ref4","_callee3","_yield$getContracts2","AugustusSwapper","_callee3$","_context3","_x3","getAugustusRFQ","_ref5","_callee4","_yield$getContracts3","AugustusRFQ","_callee4$","_context4","_x4","MinERC20Abi","constant","inputs","type","outputs","payable","stateMutability","approveTokenMethodFactory","contractCaller","amount","tokenAddress","overrides","spender","res","transactCall","address","abi","contractMethod","args","constructApproveToken","options","_constructGetSpender","approveToken","approveTokenBulk","tokenAddresses","Promise","all","constructToken","tokenProps","_tokenProps$tokenType","tokenType","_tokenProps$mainConne","mainConnector","_tokenProps$connector","connectors","connectorsInput","_tokenProps$network","network","rest","_objectWithoutPropertiesLoose","_excluded","_extends","isAllowance","arg","NOT_FOUND_RESPONSE","constructGetBalances","tokensUrl","getBalances","userAddress","tokens","getBalance","tokenAddressOrSymbol","token","_x5","getAllowances","tokenAddressesLowercaseSet","balances","allowances","Set","toLowerCase","has","_ref5$allowance","allowance","_x6","_x7","_x8","getAllowance","_ref6","balanceOrNotFound","_balanceOrNotFound$al","_x9","_x10","_x11","constructGetAdapters","getAdapters","query","normalizeRateOptions","_ref$options","restInput","excludeContractMethods","includeContractMethods","partner","includeDEXS","excludeDEXS","excludePools","restOptions","_excluded2","_map","join","_includeDEXS","_excludeDEXS","_excludePools","_excludeContractMethods","_includeContractMethods","transformed","INVALID_ROUTE","constructGetRate","pricesUrl","getRate","srcToken","destToken","parsedOptions","priceRoute","getRateByRoute","route","_route","constructSwapTx","getSwapTxData","constructGetTokens","getTokens","ZERO_ADDRESS","baseFetchUrlGetterFactory","orderKind","constructBaseFetchUrlGetter","urlGetter","orderURLpart","sanitizeOrderData","nonceAndMeta","expiry","makerAsset","takerAsset","maker","taker","makerAmount","takerAmount","OrderNFT","buildOrderData","verifyingContract","_ref$nonce","nonce","_makerAssetAddress","_takerAssetAddress","makerAssetId","_ref$takerAssetId","takerAssetId","makerAssetType","takerAssetType","AugustusAddress","_ref$taker","takerInNonce","BigInt","assetAddressToUint","orderNFT","types","domain","assetAddress","assetType","AssetType","ERC20","ERC1155","ERC721","_makerAsset","_takerAsset","startsWith","constructBuildTx","transactionsURL","buildTx","params","_params$takeSurplus","side","AmountMismatchError","sanitizedParams","takeSurplus","fetchParams","builtTx","SwapSide","SELL","assert","areAmountsCorrect","queryParams","orders","order","sanitizedOrderData","sanitizeNFTOrderData","sanitizeLimitOrderData","sanitizedOrder","signature","permitMakerAsset","positiveSlippageToUser","slippage","BUY","destAmount","srcAmount","inputAmount","priceRouteAmount","Order","contractTaker","AppVersion","constructBuildLimitOrder","buildLimitOrder","buildLimitOrderParams","_options$version","constructSignLimitOrder","signLimitOrder","typedData","typedDataOnly","signTypedDataCall","MinAugustusRFQAbi","internalType","constructCancelLimitOrder","cancelLimitOrder","orderHash","cancelLimitOrderBulk","orderHashes","splitSignature","slice","bytes","Uint8Array","i","parseInt","r","Array","from","b","padStart","s","v","sBytes","yParityAndS","compactSignature","compact","encodeEIP_2612PermitFunctionInput","owner","deadline","permitSignature","_splitSignature","encodedOwner","encodeAddress","encodedSpender","encodedValue","encodeUint256","encodedDeadline","encodedV","encodeUint8","encodedR","encodeBytes32","encodedS","val","encodeDAIlikePermitFunctionInput","holder","_splitSignature2","encodedHolder","encodedNonce","encodedExpiry","encodeBool","strippedAddress","replace","bn","strippedValue","components","constructFillOrderDirectly","fillOrderDirectly","takerPermit","_res","permitTakerAsset","encodedPermitParams","isDaiPermit","constructGetLimitOrders","getBaseFetchURLByEntityType","getLimitOrders","userParams","baseFetchURL","userURL","offset","limit","hideSmallBalances","orderBy","getRequiredBalance","getLimitOrderByHash","constructPostLimitOrder","getBaseFetchURLByOrderType","postTypedOrder","limitOrderWithSignatureAndPermit","_yield$fetcher","newOrder","postLimitOrder","postP2POrder","constructApproveTokenForLimitOrder","approveMakerTokenForLimitOrder","_constructApproveToke","approveTakerTokenForLimitOrder","approveTakerTokenForFillingP2POrderDirectly","constructGetLimitOrdersContract","getTokenTransferProxy","getLimitOrdersContract","constructBuildLimitOrderTx","_constructBuildTx","buildSwapTx","_constructGetRate","getSwapAndLimitOrderRate","getLimitOrdersRate","_ref2$options","_options","_checkAndParseOrders","totalTakerAmount","takerAmountString","rateInput","optimalRate","checkAndParseOrders","ContractMethod","simpleBuy","buildLimitOrderTx","_checkAndParseOrders2","fillParams","buildSwapAndLimitOrderTx","_checkAndParseOrders3","destDecimals","_orders$reduce","reduce","accum","takerAssetsSet","add","makerAssetsSet","size","_orders$","constructBuildNFTOrder","buildNFTOrder","buildNFTOrderParams","constructSignNFTOrder","signNFTOrder","constructCancelNFTOrder","_constructCancelLimit","cancelNFTOrder","cancelNFTOrderBulk","constructGetNFTOrders","getNFTOrders","getNFTOrderByHash","constructPostNFTOrder","NFTOrderWithSignatureAndPermit","postNFTLimitOrder","postNFTP2POrder","constructGetNFTOrdersContract","getNFTOrdersContract","MinNFTAbi","constructApproveTokenForNFTOrder","approveERC20ForNFTOrder","_constructGetNFTOrder","approveNFTForNFTOrder","constructBuildNFTOrderTx","getSwapAndNFTOrderRate","getNFTOrdersRate","buildNFTOrderTx","buildSwapAndNFTOrderTx","uintToAssetAddress","assetUint","constructFetcher","axios","extra","headers","allParams","_yield$axios$request","apiKey","t0","fetch","body","POSTheaders","apiHeaders","JSON","stringify","keepalive","json","ok","statusText","fromEntries","config","constructEthersV5ContractCaller","account","providerOrSigner","ethersProviderOrSigner","Contract","EthersContract","staticCall","_contract$callStatic","contract","block","gas","restOverrides","normalizedOverrides","callOverrides","assertEthersContractHasMethodsV5","blockTag","gasLimit","callStatic","concat","signer","txOverrides","txResponse","isEthersProviderWithSigner","isEthersSigner","getSigner","isTypedDataCapableSigner","_signTypedData","isEthersProvider","_isProvider","_isSigner","ethersContractHasMethodsV5","_len","methods","_key","every","_len2","_key2","constructContractCaller","ethersV6ProviderOrSigner","EthersV6Contract","callableContractFunction","getFunction","send","signTypedData","baseTypeRegex","findPrimaryType","candidates","keys","candidatesSet","forEach","candidate","typedDataFields","_type$match","baseType","match","_Array$from","primaryType","web3","_contract$methods","currentProvider","eth","assertWeb3ContractHasMethods","_contract$methods2","_from","preparedCall","promiEvent","unpromiEvent","on","bind","once","_typedData","EIP712Domain","web3ContractHasMethods","viemClient","blockNumber","readContract","functionName","_overrides$gas","_overrides$value","viemTxParams","gasPriceParams","txHash","writeContract","txParamsToViemTxParams","to","maxFeePerGas","maxPriorityFeePerGas","gasPrice","argsToViemArgs","viemDomain","salt","txParams","asNumber","isNaN","constructGetDeltaContract","getDeltaContract","ParaswapDelta","constructGetPartnerFee","partnerFeeUrl","cachedPartnerFee","Map","getPartnerFee","get","set","SWAP_ORDER_EIP_712_TYPES","Bridge","produceDeltaOrderTypedData","orderInput","paraswapDeltaAddress","DELTA_DEFAULT_EXPIRY","buildDeltaSignableOrderData","_ref2$beneficiary","beneficiary","expectedAmount","_ref2$deadline","Date","now","_ref2$nonce","_ref2$permit","permit","kind","_ref2$metadata","metadata","partnerAddress","partnerFeeBps","_ref2$partnerTakesSur","partnerTakesSurplus","_ref2$capSurplus","capSurplus","bridge","partnerAndFee","producePartnerAndFee","capSurplusShifted","toFixed","OrderKind","SwapSideToOrderKind","_SwapSideToOrderKind","Sell","Buy","constructBuildDeltaOrder","_constructGetDeltaCon","_constructGetPartnerF","buildDeltaOrder","_options$partnerFeeBp","_partnerFeeBps2","_partnerTakesSurplus2","_options$side","_options$nonce","feeOrTakeSurplusSupplied","_partnerAddress","_partnerAddress2","_partnerFeeBps","_partnerTakesSurplus","partnerFeeResponse","swapSide","input","deltaPrice","partnerFee","constructPostDeltaOrder","postOrderUrl","postDeltaOrder","postData","deltaOrderToPost","sanitizeDeltaOrderData","constructSignDeltaOrder","signDeltaOrder","PreSignatureModuleAbi","constructPreSignDeltaOrder","hashDeltaOrderTypedData","produceDeltaOrderHash","hashDeltaOrder","orderData","setDeltaOrderPreSignature","depositNativeAndPreSign","preSignDeltaOrder","signableOrderData","depositNativeAndPreSignDeltaOrder","_callee5","_callee5$","_context5","_x12","_x13","_x14","hashTypedData","constructGetDeltaPrice","getDeltaPrice","_getDeltaPrice","includeAgents","excludeAgents","includeBridges","excludeBridges","includeAgentsString","excludeAgentsString","includeBridgesString","excludeBridgesString","price","constructGetDeltaOrders","baseUrl","getDeltaOrderById","orderId","getDeltaOrderByHash","getDeltaOrders","_options$chainId","_options$status","chainIdString","statusString","page","getRequiredBalanceForDeltaLimitOrders","constructApproveTokenForDelta","getParaswapDeltaAddress","deltaContract","approveTokenForDelta","constructGetBridgeInfo","deltaBridgeUrl","getBridgeInfo","_params","allowBridgeAndSwap","bridges","bridgesString","supportedTokens","getBridgeProtocols","bridgeProtocols","constructIsTokenSupportedInDelta","bridgeInfoUrl","isTokenSupportedInDelta","supported","constructGetQuote","getQuote","_getQuote","ORDER_CANCELLATIONS_EIP_712_TYPES","OrderCancellations","buildCancelDeltaOrderSignableData","orderIds","constructCancelDeltaOrder","signCancelLimitDeltaOrderRequest","postCancelLimitDeltaOrderRequest","cancelUrl","cancelLimitDeltaOrders","constructPartialSDK","_config$apiURL","_config$version","funcs","sdkFuncs","sdkSlice","assign","sdk","constructSwapSDK","constructApproveTokenWithTxResponse","constructSubmitLimitOrder","_constructBuildLimitO","_constructSignLimitOr","_constructPostLimitOr","prepareLimitOrder","orderWithSignature","submitLimitOrder","submitP2POrder","constructAllLimitOrdersHandlers","limitOrdersGetters","limitOrdersContractGetter","limitOrdersSubmit","limitOrdersBuild","limitOrdersSign","limitOrdersPost","limitOrdersCancel","limitOrdersApproveToken","limitOrdersFillOrderDirectly","limitOrdersBuildTx","constructSubmitDeltaOrder","_constructBuildDeltaO","_constructSignDeltaOr","_constructPostDeltaOr","submitDeltaOrder","orderParams","partiallyFillable","referrerAddress","constructAllDeltaOrdersHandlers","deltaOrdersGetters","deltaOrdersContractGetter","bridgeInfo","deltaOrdersSubmit","deltaOrdersBuild","deltaOrdersSign","deltaOrdersPreSign","deltaOrdersPost","deltaOrdersCancel","constructSubmitNFTOrder","_constructBuildNFTOrd","_constructSignNFTOrde","_constructPostNFTOrde","prepareNFTOrder","submitNFTOrder","constructAllNFTOrdersHandlers","NFTOrdersGetters","NFTOrdersContractGetter","NFTOrdersSubmit","NFTOrdersBuild","NFTOrdersSign","NFTOrdersPost","NFTOrdersCancel","NFTOrdersApproveToken","NFTOrdersBuildTx","constructFullSDK","swap","limitOrders","nftOrders","delta","quote","constructAxiosFetcher","constructFetchFetcher","_params$requestParams","_params$requestParams2","constructSimpleSDK","providerOptions","_options$apiURL2","_options$version2","_options$apiURL","constructSimpleContractCaller","_constructEthersV5Con","_transactCall","contractTx","hash","_constructEthersV6Con","constructEthersV6ContractCaller","constructViemContractCaller","_constructWeb3Contrac","constructWeb3ContractCaller","resolve","reject"],"mappings":"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"}
1
+ {"version":3,"file":"sdk.cjs.development.js","sources":["../src/constants.ts","../src/helpers/misc.ts","../src/methods/swap/spender.ts","../src/helpers/approve.ts","../src/methods/swap/approve.ts","../src/helpers/token.ts","../src/methods/swap/balance.ts","../src/methods/swap/adapters.ts","../src/methods/swap/helpers/normalizeRateOptions.ts","../src/methods/swap/rates.ts","../src/methods/swap/swapTx.ts","../src/methods/swap/token.ts","../src/methods/common/orders/buildOrderData.ts","../src/methods/common/orders/misc.ts","../src/methods/limitOrders/helpers/misc.ts","../src/methods/nftOrders/helpers/buildOrderData.ts","../src/methods/nftOrders/helpers/misc.ts","../src/methods/swap/transaction.ts","../src/methods/limitOrders/helpers/buildOrderData.ts","../src/methods/limitOrders/buildOrder.ts","../src/methods/limitOrders/signOrder.ts","../src/methods/limitOrders/cancelOrder.ts","../src/methods/common/orders/signature.ts","../src/methods/common/orders/encoding.ts","../src/methods/limitOrders/fillOrderDirectly.ts","../src/methods/limitOrders/getOrders.ts","../src/methods/limitOrders/postOrder.ts","../src/methods/limitOrders/approveForOrder.ts","../src/methods/limitOrders/getOrdersContract.ts","../src/methods/limitOrders/transaction.ts","../src/methods/nftOrders/buildOrder.ts","../src/methods/nftOrders/signOrder.ts","../src/methods/nftOrders/cancelOrder.ts","../src/methods/nftOrders/getOrders.ts","../src/methods/nftOrders/postOrder.ts","../src/methods/nftOrders/getOrdersContract.ts","../src/methods/nftOrders/approveForOrder.ts","../src/methods/nftOrders/transaction.ts","../src/helpers/fetchers/axios.ts","../src/helpers/fetchers/fetch.ts","../src/helpers/providers/ethers.ts","../src/helpers/providers/ethersV6.ts","../src/helpers/providers/helpers.ts","../src/helpers/providers/web3.ts","../src/helpers/providers/viem.ts","../src/methods/delta/getDeltaContract.ts","../src/methods/delta/getPartnerFee.ts","../src/methods/delta/helpers/buildDeltaOrderData.ts","../src/methods/delta/helpers/types.ts","../src/methods/delta/buildDeltaOrder.ts","../src/methods/delta/postDeltaOrder.ts","../src/methods/delta/helpers/misc.ts","../src/methods/delta/signDeltaOrder.ts","../src/methods/delta/preSignDeltaOrder.ts","../src/methods/delta/getDeltaPrice.ts","../src/methods/delta/getDeltaOrders.ts","../src/methods/delta/approveForDelta.ts","../src/methods/delta/getBridgeInfo.ts","../src/methods/delta/isTokenSupportedInDelta.ts","../src/methods/quote/getQuote.ts","../src/methods/delta/helpers/buildCancelDeltaOrderData.ts","../src/methods/delta/cancelDeltaOrder.ts","../src/sdk/partial.ts","../src/methods/swap/index.ts","../src/methods/limitOrders/index.ts","../src/methods/delta/index.ts","../src/methods/nftOrders/index.ts","../src/sdk/full.ts","../src/sdk/simple.ts"],"sourcesContent":["import { EnumerateLiteral, APIVersion } from './types';\n\nimport type { ContractMethod } from '@paraswap/core';\n\nexport {\n SwapSide,\n ContractMethod,\n ContractMethodV5,\n ContractMethodV6,\n} from '@paraswap/core';\n\n// allows to pass by name instead of importing enum first\nexport type ContractMethodByName = EnumerateLiteral<typeof ContractMethod>;\n\nexport const API_URL = 'https://api.paraswap.io';\nexport const DEFAULT_VERSION = '6.2' satisfies APIVersion;\n","import type { Primitive } from 'ts-essentials';\n\nexport const objectToFilledEntries = <T extends Record<string, unknown>>(\n object: T\n): [string, string][] => {\n return (\n Object.entries(object)\n // removes keys with undefined values\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => [key, String(value)])\n );\n};\n\nexport const constructSearchString = <\n // not arrays or mappings\n U extends Record<string, Exclude<Primitive, symbol>>\n>(\n queryOptions: U\n): `?${string}` | '' => {\n const queryEntries = objectToFilledEntries(queryOptions);\n\n const queryString = new URLSearchParams(queryEntries).toString();\n\n // returns empty string or `?${string}`\n return queryString && `?${queryString}`;\n};\n\ntype MinAxiosError = {\n code?: string;\n request?: any;\n isAxiosError: boolean;\n message: string;\n};\n\ntype MinAxiosResponse = {\n data: any;\n status: number;\n statusText: string;\n headers: Record<string, any>;\n config: { url?: string; method?: string };\n};\n\ntype FetcherErrorConstructorInput = MinAxiosError & {\n response?: MinAxiosResponse;\n};\n\nexport interface FetcherErrorInterface extends FetcherErrorConstructorInput {\n status?: number;\n code?: string;\n}\n\nexport const isFetcherError = (error: unknown): error is FetcherError => {\n return error instanceof FetcherError;\n};\n\nexport class FetcherError extends Error implements FetcherErrorInterface {\n code;\n status;\n request;\n response;\n isAxiosError = false;\n\n public constructor({\n code,\n request,\n response,\n isAxiosError,\n message,\n }: FetcherErrorConstructorInput) {\n super();\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetcherError);\n }\n\n this.name = this.constructor.name;\n this.code = code;\n this.request = request;\n this.isAxiosError = isAxiosError;\n\n // no response on AxiosError\n if (!response) {\n this.message = message;\n return;\n }\n\n this.response = response;\n\n const { data, status } = response;\n this.status = status;\n this.message = isDataWithError(data) ? data.error : message;\n this.message = isDataWithError2(data)\n ? `${data.errorType}${data.description ? `: ${data.description}` : ''}`\n : this.message;\n }\n}\n// to turn `object -> Record` for indexed variable access\nfunction isObject(obj: unknown): obj is Record<string | symbol, any> {\n return !!obj && typeof obj === 'object';\n}\n\nexport function isDataWithError(data: unknown): data is { error: string } {\n return isObject(data) && typeof data['error'] === 'string';\n}\nexport function isDataWithError2(\n data: unknown\n): data is { errorType: string; description?: string } {\n return isObject(data) && typeof data['errorType'] === 'string';\n}\n\nexport type ExtractAbiMethodNames<T extends readonly { name: string }[]> =\n T[number]['name'];\n\n// reduce element[] to Object{key: prop, val?: element}\n// for example\n// gatherObjectsByProp(Token[], token => token.address) => Record<address, Token|undefined>\nexport function gatherObjectsByProp<T>(\n elements: T[],\n pickProp: (elem: T, index: number) => string\n): Record<string, T>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T, index: number) => string,\n transfrom: (elem: T, accumElem: U | undefined, index: number) => U\n): Record<string, U>;\nexport function gatherObjectsByProp<T, U>(\n elements: T[],\n pickProp: (elem: T, index: number) => string,\n transform?: (elem: T, accumElem: U | undefined, index: number) => U\n): Record<string, T> | Record<string, U> {\n return elements.reduce<Record<string, T> | Record<string, U>>(\n (accum, element, index) => {\n const key = pickProp(element, index);\n\n const accumElem: T | U | undefined = accum[key];\n const transformedElement = transform\n ? // if transform is available, can only be U | undefined\n transform(element, accumElem as U | undefined, index)\n : element;\n\n accum[key] = transformedElement;\n\n return accum;\n },\n {}\n );\n}\n\n// checks that array has at least one element\nexport const isFilledArray = <T>(array: T[]): array is [T, ...T[]] => {\n return array.length > 0;\n};\n\nexport function getRandomInt(): number {\n return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n}\n\nexport function runOnceAndCache<T, Args extends any[]>(\n // can pass `(...any[]) => any but null | undefined`\n func: (...args: Args) => NonNullable<T>\n): (...args: Args) => NonNullable<T> {\n let result: NonNullable<T>;\n\n return (...args) => {\n return result ?? (result = func(...args));\n };\n}\n","import { API_URL, DEFAULT_VERSION } from '../../constants';\nimport { constructSearchString, runOnceAndCache } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n Address,\n RequestParameters,\n} from '../../types';\n\nexport type GetSpender = (\n requestParams?: RequestParameters\n) => Promise<Address>;\ntype GetContracts = (\n requestParams?: RequestParameters\n) => Promise<AdaptersContractsResult>;\n\nexport type GetSpenderFunctions = {\n getSpender: GetSpender;\n getAugustusSwapper: GetSpender;\n getAugustusRFQ: GetSpender;\n getContracts: GetContracts;\n};\n\nexport interface AdaptersContractsResult {\n AugustusSwapper: string;\n TokenTransferProxy: string;\n AugustusRFQ: string;\n Executors: {\n [key: `Executor${number}`]: string;\n };\n ParaswapDelta?: string; // only available on chains with Delta support\n}\n\nexport const constructGetSpender = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetSpenderFunctions => {\n const search = constructSearchString<{ chainId: number; version: string }>({\n chainId,\n version,\n });\n\n const fetchURL = `${apiURL}/adapters/contracts${search}` as const;\n\n const _getContracts: GetContracts = async (requestParams) => {\n const data = await fetcher<AdaptersContractsResult>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n // cached for the same instance of `{getContracts, getSpender, getAugustusSwapper, getAugustusRFQ} = constructGetSpender()`\n // so should persist across same apiUrl & network\n const getContracts = runOnceAndCache(_getContracts);\n\n const getSpender: GetSpender = async (requestParams) => {\n const { TokenTransferProxy } = await getContracts(requestParams);\n return TokenTransferProxy;\n };\n\n const getAugustusSwapper: GetSpender = async (requestParams) => {\n const { AugustusSwapper } = await getContracts(requestParams);\n return AugustusSwapper;\n };\n\n const getAugustusRFQ: GetSpender = async (requestParams) => {\n const { AugustusRFQ } = await getContracts(requestParams);\n return AugustusRFQ;\n };\n\n return { getContracts, getSpender, getAugustusSwapper, getAugustusRFQ };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../types';\nimport type { ExtractAbiMethodNames } from '../helpers/misc';\nimport type { Address, PriceString } from './token';\n\n// much smaller than the whole ERC20_ABI\nconst MinERC20Abi = [\n {\n constant: false,\n inputs: [\n { name: '_spender', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype ApprovalMethods = ExtractAbiMethodNames<typeof MinERC20Abi>;\n\ntype ApproveContractCaller<T> = ConstructProviderFetchInput<\n T,\n 'transactCall'\n>['contractCaller'];\n\nexport type ApproveToken<T> = (\n amount: PriceString,\n tokenAddress: Address,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type GetSpenderAsyncOrSync = (\n requestParams?: RequestParameters\n) => Address | Promise<Address>;\n\nexport function approveTokenMethodFactory<T>(\n contractCaller: ApproveContractCaller<T>,\n getSpender: GetSpenderAsyncOrSync\n): ApproveToken<T> {\n return async (amount, tokenAddress, overrides = {}, requestParams) => {\n const spender = await getSpender(requestParams);\n\n const res = await contractCaller.transactCall<ApprovalMethods>({\n address: tokenAddress,\n abi: MinERC20Abi,\n contractMethod: 'approve',\n args: [spender, amount],\n overrides,\n });\n\n return res;\n };\n}\n","import { constructGetSpender } from './spender';\nimport type {\n ConstructProviderFetchInput,\n TxSendOverrides,\n Address,\n PriceString,\n RequestParameters,\n} from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\n\ntype ApproveTokenBulk<T> = (\n amount: PriceString,\n tokenAddresses: Address[],\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<Awaited<T>[]>;\n\nexport type ApproveTokenFunctions<T> = {\n approveToken: ApproveToken<T>;\n approveTokenBulk: ApproveTokenBulk<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveToken = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenFunctions<T> => {\n // getSpender is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getSpender } = constructGetSpender(options);\n\n const approveToken: ApproveToken<T> = approveTokenMethodFactory<T>(\n options.contractCaller,\n getSpender\n );\n\n const approveTokenBulk: ApproveTokenBulk<T> = async (\n amount,\n tokenAddresses,\n overrides,\n requestParams\n ) => {\n return Promise.all(\n tokenAddresses.map((tokenAddress) =>\n approveToken(amount, tokenAddress, overrides, requestParams)\n )\n );\n };\n\n return { approveToken, approveTokenBulk };\n};\n","import type { MarkOptional } from 'ts-essentials';\n\n/**\n * @type hex token or account address\n */\nexport type Address = string;\n/**\n * @type hex token address or token symbol\n */\nexport type AddressOrSymbol = string;\n/**\n * @type number in string form\n */\nexport type PriceString = string;\n/**\n * @type transaction hash\n */\nexport type TxHash = `0x${string}`;\n\n// @TODO sync with what it actually is\nexport type LendingToken =\n | 'cToken'\n | 'iToken'\n | 'aToken'\n | 'aToken2'\n | 'idleToken'\n | 'Chai'\n | 'bDAI';\n\nexport type TokenType = 'ETH' | 'ERC20' | 'SYNTH';\n\n/**\n * @type Token object returned from API used internally in API\n */\n// consider if need the old class Token for backwards compatipility\n// otherwise no real need\nexport type Token = {\n address: string;\n decimals: number;\n symbol?: string | undefined;\n tokenType: LendingToken | TokenType;\n mainConnector: string;\n connectors: string[];\n network: number;\n img?: string | undefined;\n allowance?: string | undefined;\n balance?: string | undefined;\n};\n\ntype ConstructTokenInput = MarkOptional<\n Token,\n // these props are constructed from other, required props\n 'tokenType' | 'mainConnector' | 'connectors' | 'network'\n>;\n\nexport const constructToken = (tokenProps: ConstructTokenInput): Token => {\n const {\n tokenType = 'ERC20',\n mainConnector = 'ETH',\n connectors: connectorsInput = [],\n network = 1,\n ...rest\n } = tokenProps;\n\n const connectors: Token['connectors'] =\n connectorsInput.length > 0 ? connectorsInput : [mainConnector];\n\n return {\n tokenType,\n connectors,\n mainConnector,\n network,\n ...rest,\n };\n};\n","import { API_URL } from '../../constants';\nimport {\n Token,\n Address,\n constructToken,\n AddressOrSymbol,\n} from '../../helpers/token';\nimport type {\n ConstructFetchInput,\n TokenApiResponse,\n TokensApiResponse,\n RequestParameters,\n} from '../../types';\n\ntype GetBalances = (\n userAddress: Address,\n requestParams?: RequestParameters\n) => Promise<Token[]>;\ntype GetBalance = (\n userAddress: Address,\n tokenAddressOrSymbol: AddressOrSymbol,\n requestParams?: RequestParameters\n) => Promise<Token | typeof NOT_FOUND_RESPONSE>;\n\nexport interface Allowance {\n tokenAddress: Address;\n allowance: string;\n}\n\ntype GetAllowances = (\n userAddress: Address,\n tokenAddresses: Address[],\n requestParams?: RequestParameters\n) => Promise<Allowance[]>;\ntype GetAllowance = (\n userAddress: Address,\n tokenAddress: Address,\n requestParams?: RequestParameters\n) => Promise<Allowance | typeof NOT_FOUND_RESPONSE>;\n\nexport const isAllowance = (\n arg: Awaited<ReturnType<GetAllowance>>\n): arg is Allowance => {\n return 'allowance' in arg;\n};\n\nexport type GetBalancesFunctions = {\n getBalance: GetBalance;\n getBalances: GetBalances;\n getAllowance: GetAllowance;\n getAllowances: GetAllowances;\n};\n\nconst NOT_FOUND_RESPONSE = { message: 'Not Found' } as const;\n\nexport const constructGetBalances = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetBalancesFunctions => {\n const tokensUrl = `${apiURL}/users/tokens/${chainId}` as const;\n\n const getBalances: GetBalances = async (userAddress, requestParams) => {\n const fetchURL = `${tokensUrl}/${userAddress}` as const;\n\n const data = await fetcher<TokensApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n const tokens = data.tokens.map(constructToken);\n\n return tokens;\n };\n\n const getBalance: GetBalance = async (\n userAddress,\n tokenAddressOrSymbol,\n requestParams\n ) => {\n const fetchURL =\n `${tokensUrl}/${userAddress}/${tokenAddressOrSymbol}` as const;\n\n const data = await fetcher<TokenApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n if (!data.token) {\n return NOT_FOUND_RESPONSE;\n }\n\n return constructToken(data.token);\n };\n\n const getAllowances: GetAllowances = async (\n userAddress,\n tokenAddresses,\n requestParams\n ) => {\n const tokenAddressesLowercaseSet = new Set(\n tokenAddresses.map((address) => address.toLowerCase())\n );\n\n const balances = await getBalances(userAddress, requestParams);\n\n const allowances: Allowance[] = balances\n .filter((token) =>\n tokenAddressesLowercaseSet.has(token.address.toLowerCase())\n )\n .map(({ address, allowance = '0' }) => ({\n tokenAddress: address,\n allowance,\n }));\n\n return allowances;\n };\n\n const getAllowance: GetAllowance = async (\n userAddress,\n tokenAddress,\n requestParams\n ) => {\n const balanceOrNotFound = await getBalance(\n userAddress,\n tokenAddress,\n requestParams\n );\n\n if ('message' in balanceOrNotFound) {\n return balanceOrNotFound;\n }\n\n const { address, allowance = '0' } = balanceOrNotFound;\n\n return { tokenAddress: address, allowance };\n };\n\n return {\n getBalance,\n getBalances,\n getAllowance,\n getAllowances,\n };\n};\n","import type {\n ConstructFetchInput,\n APIVersion,\n RequestParameters,\n} from '../../types';\nimport { constructSearchString } from '../../helpers/misc';\nimport { API_URL, DEFAULT_VERSION } from '../../constants';\n\ntype AdaptersAsStrings = string[];\n\nexport type GetAdaptersFunctions = {\n getAdapters: (\n requestParams?: RequestParameters\n ) => Promise<AdaptersAsStrings>;\n};\n\ntype SearchStringParams = {\n chainId: number;\n version?: APIVersion;\n};\n\nexport const constructGetAdapters = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetAdaptersFunctions => {\n const getAdapters: GetAdaptersFunctions['getAdapters'] = async (\n requestParams\n ): Promise<AdaptersAsStrings> => {\n // always pass explicit type to make sure UrlSearchParams are correct\n const query = constructSearchString<SearchStringParams>({\n chainId,\n version,\n });\n\n const fetchURL = `${apiURL}/adapters/list${query}` as const;\n\n const data = await fetcher<AdaptersAsStrings>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n return { getAdapters };\n};\n","import type { PickKeys } from 'ts-essentials';\nimport type { RateOptions } from '../rates';\n\ntype StringArrKeys = PickKeys<RateOptions, string[] | undefined>;\n\ntype MinRateOptionsInput = Pick<RateOptions, StringArrKeys> &\n Pick<RateOptions, 'partner'>;\n\ntype NormalizedRateOptions<\n O extends MinRateOptionsInput,\n T extends { options?: Partial<O> }\n> = Partial<Record<StringArrKeys | 'partner', string>> &\n Partial<Omit<O, StringArrKeys | 'partner'>> &\n Omit<T, 'options'>;\n\nexport function normalizeRateOptions<\n O extends MinRateOptionsInput,\n T extends { options?: Partial<O> }\n>({ options = {}, ...restInput }: T): NormalizedRateOptions<O, T> {\n const {\n excludeContractMethods,\n includeContractMethods,\n partner,\n includeDEXS,\n excludeDEXS,\n excludePools,\n ...restOptions\n } = options;\n\n const [\n _includeDEXS,\n _excludeDEXS,\n _excludePools,\n _excludeContractMethods,\n _includeContractMethods,\n ] = [\n includeDEXS,\n excludeDEXS,\n excludePools,\n excludeContractMethods,\n includeContractMethods,\n // no \"\" empty string\n ].map((array) => array?.join(',') || undefined);\n\n const transformed: Partial<Record<StringArrKeys | 'partner', string>> = {\n excludeContractMethods: _excludeContractMethods,\n includeContractMethods: _includeContractMethods,\n partner,\n includeDEXS: _includeDEXS,\n excludeDEXS: _excludeDEXS,\n excludePools: _excludePools,\n };\n\n return { ...transformed, ...restOptions, ...restInput };\n}\n","import {\n API_URL,\n DEFAULT_VERSION,\n ContractMethodByName,\n} from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n PriceRouteApiResponse,\n Address,\n AddressOrSymbol,\n PriceString,\n OptimalRate,\n RequestParameters,\n} from '../../types';\nimport { normalizeRateOptions } from './helpers/normalizeRateOptions';\n\ntype RateQueryParams = {\n /**\n * @description Source Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n srcToken: string;\n\n /**\n * @description Source Token Decimals. (Can be omitted if Token Symbol is used in `srcToken`).\n */\n srcDecimals?: number;\n\n /**\n * @description Destination Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n destToken: string;\n\n /**\n * @description srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in **WEI/Raw units** (eg. 1WBTC -> 100000000).\n */\n amount: string;\n\n /**\n * @description **SELL** or **BUY**. Default: `SELL`.\n */\n side?: 'SELL' | 'BUY';\n\n /**\n * @description Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Unichain - 130, Sonic - 146). Default: `1`.\n */\n chainId?: number;\n\n /**\n * @description If provided, **others** object is filled in the response with price quotes from other exchanges _(if available for comparison)_. Default: `false`.\n */\n otherExchangePrices?: boolean;\n\n /**\n * @description Comma Separated List of DEXs to include. **Supported DEXs:** UniswapV2, UniswapV3, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, Balancer, MakerDAO, Chai, Aave, Aave2 and more. You can view all currently supported dexes filtered by chain [here](https://api.paraswap.io/adapters/list/1) eg: `UniswapV3,MakerDAO`.\n */\n includeDEXS?: string;\n\n /**\n * @description Comma Separated List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to include in pricing (without spaces). View the list of the supported methods for [V5](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v5#supported-methods) and [V6](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v6.2#supported-methods) eg: `swapExactAmountIn,swapExactAmountInOnUniswapV2`.\n */\n includeContractMethods?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to exclude from pricing (without spaces). View the list of the supported methods for [V5](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v5#supported-methods) and [V6](https://developers.velora.xyz/api/velora-api/velora-market-api/master/api-v6.2#supported-methods).\n */\n excludeContractMethods?: string;\n\n /**\n * @description User's Wallet Address.\n */\n userAddress?: string;\n\n /**\n * @description Dash (-) separated list of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string;\n\n /**\n * @description Partner string.\n */\n partner?: string;\n\n /**\n * @description Destination Token Decimals. (Can be omitted if Token Symbol is used in `destToken`).\n */\n destDecimals?: number;\n\n /**\n * @description In %. It's a way to bypass the API price impact check (default = 15%).\n */\n maxImpact?: number;\n\n /**\n * @description Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account).\n */\n receiver?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n srcTokenTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n destTokenTransferFee?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.\n */\n srcTokenDexTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.\n */\n destTokenDexTransferFee?: string;\n\n /**\n * @description To specify the protocol version. **Values:** 5 or 6.2 **Default**: 6.2.\n */\n version?: number | string;\n\n /**\n * @description Specify that methods without fee support should be excluded from the price route. Default: `false`.\n */\n excludeContractMethodsWithoutFeeModel?: boolean;\n\n /**\n * @description If tokens USD prices are not available, `Bad USD Price` error will be thrown. Use this param to skip this check. Default: `false`.\n */\n ignoreBadUsdPrice?: boolean;\n /**\n * @description \tExclude all RFQs from pricing, e.g.: AugustusRFQ, Hashflow. Default: false\n */\n excludeRFQ?: boolean;\n};\n\n// more details in the docs https://developers.velora.xyz/api/velora-api/velora-market-api/get-rate-for-a-token-pair#query-parameters\nexport type RateOptions = {\n excludeDEXS?: string[];\n includeDEXS?: string[];\n excludePools?: string[];\n excludeContractMethods?: ContractMethodByName[];\n includeContractMethods?: ContractMethodByName[];\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description In %. It's a way to bypass the API price impact check (default = 15%) */\n maxImpact?: number;\n maxUSDImpact?: number;\n otherExchangePrices?: boolean;\n /** @description proceed with priceRoute building even when tokens don't have USD price. Default: false */\n ignoreBadUsdPrice?: boolean;\n /** @description Exclude all RFQs from pricing, e.g.: AugustusRFQ, Hashflow. Default: false */\n excludeRFQ?: boolean;\n /** @description \tSpecify that methods without fee support should be excluded from the price route. Default: false */\n excludeContractMethodsWithoutFeeModel?: boolean;\n /** @description If the source token is a tax token, you should specify the tax amount in BPS. */\n srcTokenTransferFee?: string;\n /** @description If the destination token is a tax token, you should specify the tax amount in BPS. */\n destTokenTransferFee?: string;\n /** @description Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers. */\n srcTokenDexTransferFee?: string;\n /** @description Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers. */\n destTokenDexTransferFee?: string;\n};\n\ntype CommonGetRateInput = {\n amount: PriceString;\n userAddress?: Address;\n side?: 'SELL' | 'BUY';\n options?: RateOptions;\n srcDecimals?: number;\n destDecimals?: number;\n};\n\nexport type GetRateInput = CommonGetRateInput & {\n srcToken: AddressOrSymbol;\n destToken: AddressOrSymbol;\n};\n\nexport type GetRate = (\n options: GetRateInput,\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\ntype GetRateByRouteInput = CommonGetRateInput & {\n route: AddressOrSymbol[];\n};\n\ntype GetRateByRoute = (\n options: GetRateByRouteInput,\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport type GetRateFunctions = {\n getRate: GetRate;\n getRateByRoute: GetRateByRoute;\n};\nconst INVALID_ROUTE = 'Invalid Route';\n\nexport const constructGetRate = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetRateFunctions => {\n const pricesUrl = `${apiURL}/prices` as const;\n\n const getRate: GetRate = async (\n { srcToken, destToken, ...rest },\n requestParams\n ) => {\n const parsedOptions = normalizeRateOptions(rest);\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<Omit<RateQueryParams, 'route'>>({\n srcToken,\n destToken,\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<PriceRouteApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.priceRoute;\n };\n\n const getRateByRoute: GetRateByRoute = async (\n { route, ...rest },\n requestParams\n ) => {\n if (route.length < 2) {\n throw new Error(INVALID_ROUTE);\n }\n\n const parsedOptions = normalizeRateOptions(rest);\n\n const _route = route.join('-');\n\n const search = constructSearchString<\n Omit<RateQueryParams, 'srcToken' | 'destToken'>\n >({\n route: _route, // route can be used in place of srcToken+destToken\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<PriceRouteApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.priceRoute;\n };\n\n return {\n getRate,\n getRateByRoute,\n };\n};\n","import {\n API_URL,\n DEFAULT_VERSION,\n ContractMethodByName,\n} from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n RequestParameters,\n SwapApiResponse,\n} from '../../types';\nimport { normalizeRateOptions } from './helpers/normalizeRateOptions';\n\n/**\n * Types for transaction parameters.\n */\ntype SwapQueryParams = {\n /**\n * @description Source Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n srcToken: string;\n\n /**\n * @description Source Token Decimals. (Can be omitted if Token Symbol is used in `srcToken`).\n */\n srcDecimals?: number;\n\n /**\n * @description Destination Token Address. Instead, **Token Symbol** could be used for tokens listed in the `/tokens` endpoint.\n */\n destToken: string;\n\n /**\n * @description srcToken amount (in case of SELL) or destToken amount (in case of BUY). The amount should be in **WEI/Raw units** (eg. 1WBTC -> 100000000).\n */\n amount: string;\n\n /**\n * @description **SELL** or **BUY**. Default: `SELL`.\n */\n side: 'SELL' | 'BUY';\n\n /**\n * @description Chain ID. (Mainnet - 1, Optimism - 10, BSC - 56, Polygon - 137, Base - 8453, Arbitrum - 42161, Avalanche - 43114, Gnosis - 100, Unichain - 130, Sonic - 146). Default: `1`.\n */\n chainId?: number;\n\n /**\n * @description Comma Separated List of DEXs to include. **Supported DEXs:** Uniswap, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, 0x, MakerDAO, Chai, Aave, Aave2, MultiPath, MegaPath, Curve, Curve3, Saddle, IronV2, BDai, idle, Weth, Beth, UniswapV2, Balancer, 0xRFQt, SushiSwap, LINKSWAP, Synthetix, DefiSwap, Swerve, CoFiX, Shell, DODOV1, DODOV2, OnChainPricing, PancakeSwap, PancakeSwapV2, ApeSwap, Wbnb, acryptos, streetswap, bakeryswap, julswap, vswap, vpegswap, beltfi, ellipsis, QuickSwap, COMETH, Wmatic, Nerve, Dfyn, UniswapV3, Smoothy, PantherSwap, OMM1, OneInchLP, CurveV2, mStable, WaultFinance, MDEX, ShibaSwap, CoinSwap, SakeSwap, JetSwap, Biswap, BProtocol eg: `UniswapV3,0x`.\n */\n includeDEXS?: string;\n\n /**\n * @description Comma Separated List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to include without spaces. **Available values:** swapOnUniswap, buyOnUniswap, swapOnUniswapFork, buyOnUniswapFork, swapOnUniswapV2Fork, buyOnUniswapV2Fork, simpleBuy, simpleSwap, multiSwap, megaSwap, protectedMultiSwap, protectedMegaSwap, protectedSimpleSwap, protectedSimpleBuy, swapOnZeroXv2, swapOnZeroXv4, buy. eg: `simpleSwap,multiSwap`.\n */\n includeContractMethods?: string;\n\n /**\n * @description Comma Separated List of Contract Methods to exclude without spaces. (from the list of contract methods mentioned above).\n */\n excludeContractMethods?: string;\n\n /**\n * @description User's Wallet Address.\n */\n userAddress: string;\n\n /**\n * @description Dash (-) separated list of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string;\n\n /**\n * @description Partner string.\n */\n partner?: string;\n\n /**\n * @description If provided it is used together with `partnerAddress`. Should be in basis points percentage. Look at `slippage` parameter description for understanding better. Eg: `200` (for 2% fee percent). Fees have to be claimed from the Fee Claimer contract unless `_isSurplusToUser_` or `_isDirectFeeTransfer_` are used.\n */\n partnerFeeBps?: string;\n\n /**\n * @description Address that will be entitled to claim fees or surplus. Fees have to be claimed from the Fee Claimer contract unless `_isSurplusToUser_` or `_isDirectFeeTransfer_` are used.\n */\n partnerAddress?: string;\n\n /**\n * @description Allowed slippage percentage represented in basis points. _Eg:_ for **2.5%** slippage, set the value to **2.5 \\* 100 = 250**; for 10% = 1000.\n */\n slippage: number;\n\n /**\n * @description Destination Token Decimals. (Can be omitted if Token Symbol is used in `destToken`).\n */\n destDecimals?: number;\n\n /**\n * @description In %. It's a way to bypass the API price impact check (default = 15%).\n */\n maxImpact?: number;\n\n /**\n * @description Receiver's Wallet address. (Can be omitted if swapping tokens from and to same account).\n */\n receiver?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n srcTokenTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. For example: for a token with a 5% tax, you should set it to 500 as `[(500/10000)*100=5%]`. Note: not all DEXs and contract methods support trading tax tokens, so we will filter those that don't.\n */\n destTokenTransferFee?: string;\n\n /**\n * @description If the source token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs and not on ordinary transfers.\n */\n srcTokenDexTransferFee?: string;\n\n /**\n * @description If the destination token is a tax token, you should specify the tax amount in BPS. Some tokens only charge tax when swapped in/out DEXs, not on ordinary transfers.\n */\n destTokenDexTransferFee?: string;\n\n /**\n * @description To specify the protocol version. **Values:** 5 or 6.2 **Default**: 5.\n */\n version?: number | string;\n\n /**\n * @description If tokens USD prices are not available, `Bad USD Price` error will be thrown. Use this param to skip this check. Default: `false`.\n */\n ignoreBadUsdPrice?: boolean;\n\n /**\n * @description Specify if user should receive surplus instead of partner. Default: `false`.\n */\n isSurplusToUser?: boolean;\n\n /**\n * @description Specify if fees should be sent directly to the partner instead of registering them on FeeClaimer. Default: `false`.\n */\n isDirectFeeTransfer?: boolean;\n\n /**\n * @description Allows for capping the surplus at 1% maximum. Default: `true`.\n */\n isCapSurplus?: boolean;\n\n /**\n * @description Allows to collect surplus. Works with `partnerAddress`. Default: `false`.\n */\n takeSurplus?: boolean;\n};\n\ntype SwapTxInputFields =\n | 'srcToken'\n | 'destToken'\n | 'amount'\n | 'side'\n | 'srcDecimals'\n | 'destDecimals'\n | 'userAddress'\n | 'slippage';\ntype SwapTxInputListFields =\n | 'includeDEXS'\n | 'excludeDEXS'\n | 'includeContractMethods'\n | 'excludeContractMethods'\n | 'route';\n\ntype SwapRateOptions = Omit<\n SwapQueryParams,\n SwapTxInputFields | SwapTxInputListFields | 'chainId' | 'version'\n> & {\n /**\n * @description List of DEXs to include. **Supported DEXs:** Uniswap, Kyber, Bancor, AugustusRFQ, Oasis, Compound, Fulcrum, 0x, MakerDAO, Chai, Aave, Aave2, MultiPath, MegaPath, Curve, Curve3, Saddle, IronV2, BDai, idle, Weth, Beth, UniswapV2, Balancer, 0xRFQt, SushiSwap, LINKSWAP, Synthetix, DefiSwap, Swerve, CoFiX, Shell, DODOV1, DODOV2, OnChainPricing, PancakeSwap, PancakeSwapV2, ApeSwap, Wbnb, acryptos, streetswap, bakeryswap, julswap, vswap, vpegswap, beltfi, ellipsis, QuickSwap, COMETH, Wmatic, Nerve, Dfyn, UniswapV3, Smoothy, PantherSwap, OMM1, OneInchLP, CurveV2, mStable, WaultFinance, MDEX, ShibaSwap, CoinSwap, SakeSwap, JetSwap, Biswap, BProtocol eg: `UniswapV3,0x`.\n */\n includeDEXS?: string[];\n\n /**\n * @description List of DEXs to exclude. (from the list of DEXs mentioned above).\n */\n excludeDEXS?: string[];\n\n /**\n * @description List of Contract Methods to include without spaces. **Available values:** swapOnUniswap, buyOnUniswap, swapOnUniswapFork, buyOnUniswapFork, swapOnUniswapV2Fork, buyOnUniswapV2Fork, simpleBuy, simpleSwap, multiSwap, megaSwap, protectedMultiSwap, protectedMegaSwap, protectedSimpleSwap, protectedSimpleBuy, swapOnZeroXv2, swapOnZeroXv4, buy. eg: `simpleSwap,multiSwap`.\n */\n includeContractMethods?: ContractMethodByName[];\n\n /**\n * @description List of Contract Methods to exclude without spaces. (from the list of contract methods mentioned above).\n */\n excludeContractMethods?: ContractMethodByName[];\n};\n\ntype SwapTxInput = Pick<SwapQueryParams, SwapTxInputFields> & {\n /**\n * @description List of tokens (addresses or symbols from `/tokens`) to comprise the price route. _Max 4 tokens._ _**\\*Note:**_ _If_ `_route_` _is specified, the response will only comprise of the route specified which might not be the optimal route._\n */\n route?: string[];\n\n options?: SwapRateOptions;\n};\n\nexport type SwapTxResult = SwapApiResponse;\n\nexport type GetSwapTxData = (\n options: SwapTxInput,\n requestParams?: RequestParameters\n) => Promise<SwapTxResult>;\n\nexport type GetSwapTxFunctions = {\n getSwapTxData: GetSwapTxData;\n};\n\nexport const constructSwapTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetSwapTxFunctions => {\n const pricesUrl = `${apiURL}/swap` as const;\n\n const getSwapTxData: GetSwapTxData = async (\n { srcToken, destToken, amount, route, ...rest },\n requestParams\n ) => {\n const parsedOptions = normalizeRateOptions(rest);\n\n const _route = route?.join('-');\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<SwapQueryParams>({\n amount,\n srcToken,\n destToken,\n route: _route,\n chainId,\n version,\n ...parsedOptions,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<SwapApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n };\n\n return {\n getSwapTxData,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructToken } from '../../helpers/token';\nimport type {\n RequestParameters,\n ConstructFetchInput,\n Token,\n TokensApiResponse,\n} from '../../types';\n\ntype GetTokens = (extra?: RequestParameters) => Promise<Token[]>;\n\nexport type GetTokensFunctions = {\n getTokens: GetTokens;\n};\n\nexport const constructGetTokens = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetTokensFunctions => {\n const fetchURL = `${apiURL}/tokens/${chainId}` as const;\n\n const getTokens: GetTokens = async (requestParams) => {\n const data = await fetcher<TokensApiResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n const tokens = data.tokens.map(constructToken);\n return tokens;\n };\n\n return { getTokens };\n};\n","export const name = 'AUGUSTUS RFQ';\nexport const version = '1';\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\ntype TypedDataDomain = {\n name?: string;\n version?: string;\n chainId?: bigint | string | number;\n verifyingContract?: string;\n salt?: string;\n};\n\nexport type TypedDataField = {\n name: string;\n type: string;\n};\n\nexport type SignableTypedData = {\n types: Record<string, TypedDataField[]>;\n domain: TypedDataDomain;\n data: Record<string, any>;\n};\n\nexport type Domain = {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n};\n","import type { LimitOrderFromApi } from '../../limitOrders/helpers/types';\nimport { ZERO_ADDRESS } from './buildOrderData';\nimport type { OrderType } from './types';\n\ntype GetBaseFetchUrlInput = {\n apiURL: string;\n chainId: number;\n};\n\nexport type BaseFetchUrlInputConstructor<Kind extends OrderKind> = (\n params: GetBaseFetchUrlInput\n) => UrlByTypeFunction<Kind>;\n\ntype OrderType2URLPart = {\n LIMIT: 'orders';\n P2P: 'p2p';\n};\n\ntype OrderKind = 'nft' | 'ft';\n\nexport type BaseFetchUrl<\n Kind extends OrderKind,\n Type extends OrderType = OrderType\n> = `${string}/${Kind}/${OrderType2URLPart[Type]}/${number}`;\n\nexport type MinFetchUrl<Kind extends OrderKind> = `${string}/${Kind}/order`;\nexport type OrderFillableBalanceFetchUrl<Kind extends OrderKind> =\n `${string}/${Kind}/fillablebalance/${number}`;\n\ninterface UrlByTypeFunction<Kind extends OrderKind> {\n (): MinFetchUrl<Kind>;\n (type: 'LIMIT'): BaseFetchUrl<Kind, 'LIMIT'>;\n (type: 'P2P'): BaseFetchUrl<Kind, 'P2P'>;\n (type: OrderType): BaseFetchUrl<Kind>;\n (type: 'fillablebalance'): OrderFillableBalanceFetchUrl<Kind>;\n (type?: OrderType | 'fillablebalance'):\n | BaseFetchUrl<Kind>\n | MinFetchUrl<Kind>\n | OrderFillableBalanceFetchUrl<Kind>;\n}\n\nexport function baseFetchUrlGetterFactory<Kind extends OrderKind>(\n orderKind: Kind\n): BaseFetchUrlInputConstructor<Kind> {\n return function constructBaseFetchUrlGetter({\n chainId,\n apiURL,\n }: GetBaseFetchUrlInput): UrlByTypeFunction<Kind> {\n function urlGetter(type: 'LIMIT'): BaseFetchUrl<Kind, 'LIMIT'>;\n function urlGetter(type: 'P2P'): BaseFetchUrl<Kind, 'P2P'>;\n function urlGetter(type: OrderType): BaseFetchUrl<Kind>;\n function urlGetter(\n type: 'fillablebalance'\n ): OrderFillableBalanceFetchUrl<Kind>;\n function urlGetter(): MinFetchUrl<Kind>;\n function urlGetter(\n type?: OrderType | 'fillablebalance'\n ):\n | BaseFetchUrl<Kind>\n | MinFetchUrl<Kind>\n | OrderFillableBalanceFetchUrl<Kind> {\n if (!type) return `${apiURL}/${orderKind}/order` as const;\n\n if (type === 'fillablebalance')\n return `${apiURL}/${orderKind}/fillablebalance/${chainId}` as const;\n\n const orderURLpart = type === 'LIMIT' ? 'orders' : 'p2p';\n return `${apiURL}/${orderKind}/${orderURLpart}/${chainId}` as const;\n }\n\n return urlGetter;\n };\n}\n\n// orders with taker = EOA address\n// that can't be filled through AugustusSwapper,\n// only through AugustusRFQ\nexport function isOrderFillableDirectlyOnRFQOnly(\n order: Pick<LimitOrderFromApi, 'taker' | 'takerFromMeta'>\n): boolean {\n // with 0x taker fillable by anyone\n if (order.taker === ZERO_ADDRESS) return false;\n\n // same intended EOA taker and msg.sender taker\n return order.taker.toLowerCase() === order.takerFromMeta.toLowerCase();\n}\n","import {\n BaseFetchUrl,\n baseFetchUrlGetterFactory,\n BaseFetchUrlInputConstructor,\n MinFetchUrl,\n OrderFillableBalanceFetchUrl,\n} from '../../common/orders/misc';\nimport type { OrderData } from './buildOrderData';\n\nexport function sanitizeOrderData({\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n}: OrderData & Record<string, any>): OrderData {\n return {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n };\n}\n\n/* \nGET\n/ft/orders/:chainId/maker/:walletAddress\n/ft/orders/:chainId/taker/:walletAddress\n/ft/p2p/:chainId/maker/:walletAddress\n/ft/p2p/:chainId/taker/:walletAddress\n*/\nexport type GetOrdersURLs = `${BaseFetchUrl<'ft'>}/${\n | 'taker'\n | 'maker'}/${string}`;\n\n/*\nGET\n/ft/fillablebalance/:chainId/:walletAddress/:makerAsset?\n*/\nexport type GetRequiredAllowanceURL =\n `${OrderFillableBalanceFetchUrl<'ft'>}/${string}${`/${string}` | ''}`;\n\n/*\nGET\n/ft/order/:orderHash (get you p2p or orders)\n*/\nexport type GetOrderURL = `${MinFetchUrl<'ft'>}/${string}`;\n\n/* \nPOST create order\n/ft/orders/:chainId/\n/ft/p2p/:chainId/\n*/\nexport type PostOrderURLs = BaseFetchUrl<'ft'>;\n\nexport const constructBaseFetchUrlGetter: BaseFetchUrlInputConstructor<'ft'> =\n baseFetchUrlGetterFactory('ft');\n","import type { Address } from '../../../types';\nimport type { AssetTypeVariant } from './types';\nimport {\n Domain,\n name,\n version,\n ZERO_ADDRESS,\n} from '../../common/orders/buildOrderData';\nimport { getRandomInt } from '../../../helpers/misc';\n\nconst OrderNFT = [\n { name: 'nonceAndMeta', type: 'uint256' },\n { name: 'expiry', type: 'uint128' },\n { name: 'makerAsset', type: 'uint256' },\n { name: 'makerAssetId', type: 'uint256' },\n { name: 'takerAsset', type: 'uint256' },\n { name: 'takerAssetId', type: 'uint256' },\n { name: 'maker', type: 'address' },\n { name: 'taker', type: 'address' },\n { name: 'makerAmount', type: 'uint256' },\n { name: 'takerAmount', type: 'uint256' },\n];\n\nexport interface BuildNFTOrderDataInput {\n chainId: number;\n verifyingContract: Address;\n nonce?: number;\n expiry: number;\n makerAsset: Address;\n takerAsset: Address;\n makerAmount: string;\n takerAmount: string;\n /** @description NFT Token id, will default to 0 (ERC20), provide for NFT */\n makerAssetId: string; // required when BUYing NFT\n /** @description NFT Token id, will default to 0 (ERC20), provide for NFT */\n takerAssetId?: string;\n /** @description Token type: ERC20 = 0, ERC1155 = 1, ERC721 = 2 */\n makerAssetType: AssetTypeVariant;\n /** @description Token type: ERC20 = 0, ERC1155 = 1, ERC721 = 2 */\n takerAssetType: AssetTypeVariant;\n maker: Address;\n // OrderData.taker must be Augustus for p2p limitOrders to involve swap through Augustus\n // this is the actual user taker which will go into nonceAndMeta\n taker?: Address;\n AugustusAddress: Address;\n}\n\nexport type SignableNFTOrderData = {\n types: { OrderNFT: typeof OrderNFT };\n domain: Domain;\n data: NFTOrderData;\n};\n\nexport type BigIntAsString = string;\n\nexport type NFTOrderData = {\n expiry: number;\n // '1' when trading 1 NFT token\n makerAmount: BigIntAsString;\n makerAsset: BigIntAsString;\n // '0' indicates ERC20\n makerAssetId: BigIntAsString;\n // '1' when trading 1 NFT token\n takerAmount: BigIntAsString;\n takerAsset: BigIntAsString;\n // '0' indicates ERC20\n takerAssetId: BigIntAsString;\n nonceAndMeta: BigIntAsString;\n maker: Address;\n taker: Address;\n};\n\nexport function buildOrderData({\n chainId,\n verifyingContract,\n nonce = getRandomInt(),\n expiry,\n makerAsset: _makerAssetAddress,\n takerAsset: _takerAssetAddress,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId = '0',\n makerAssetType,\n takerAssetType,\n maker,\n AugustusAddress,\n // if taker is specified -- p2p order for that taker only to fill through Augustus -- taker = Augustus, takerInNonce = _taker\n // if taker is not specified -- limitOrder for anyone to fill through Augustus -- taker = Augustus, takerInNonce = Zero\n taker: takerInNonce = ZERO_ADDRESS, //@TODO allow Orders outside of AugustusRFQ\n}: BuildNFTOrderDataInput): SignableNFTOrderData {\n // first 160 bits is taker address (for p2p orders),\n // or 0 for limitOrders, so that anyone can be the taker of the Order\n const nonceAndMeta = (\n BigInt(takerInNonce) +\n (BigInt(nonce) << BigInt(160))\n ).toString(10);\n\n const makerAsset = assetAddressToUint(_makerAssetAddress, makerAssetType);\n\n const takerAsset = assetAddressToUint(_takerAssetAddress, takerAssetType);\n\n const orderNFT: NFTOrderData = {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker: AugustusAddress,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n };\n\n return {\n types: { OrderNFT },\n domain: { name, version, chainId, verifyingContract },\n data: orderNFT,\n };\n}\n\n// create a packed number that contains assetAddress and AssetType\nexport function assetAddressToUint(\n assetAddress: Address,\n assetType: AssetTypeVariant\n): BigIntAsString {\n return (BigInt(assetAddress) + (BigInt(assetType) << BigInt(160))).toString(\n 10\n );\n}\n","import {\n BaseFetchUrl,\n baseFetchUrlGetterFactory,\n BaseFetchUrlInputConstructor,\n MinFetchUrl,\n} from '../../common/orders/misc';\nimport {\n assetAddressToUint,\n BuildNFTOrderDataInput,\n NFTOrderData,\n} from './buildOrderData';\n\n// any number can be assigned to AssetType enum\n// https://github.com/Microsoft/TypeScript/issues/22311\n// export enum AssetType {\n// ERC20 = 0,\n// ERC1155 = 1,\n// ERC721 = 2,\n// }\n\nexport const AssetType = {\n ERC20: 0,\n ERC1155: 1,\n ERC721: 2,\n} as const;\n\nexport function sanitizeOrderData({\n nonceAndMeta,\n expiry,\n makerAsset: _makerAsset,\n takerAsset: _takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n // asset types provided when Order has them ,e.g. got Order by hash from API\n makerAssetType,\n takerAssetType,\n}: NFTOrderData &\n Partial<Pick<BuildNFTOrderDataInput, 'makerAssetType' | 'takerAssetType'>> &\n Record<string, any>): NFTOrderData {\n const makerAsset =\n makerAssetType !== undefined && _makerAsset.startsWith('0x')\n ? assetAddressToUint(_makerAsset, makerAssetType)\n : _makerAsset;\n const takerAsset =\n takerAssetType !== undefined && _takerAsset.startsWith('0x')\n ? assetAddressToUint(_takerAsset, takerAssetType)\n : _takerAsset;\n\n return {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n makerAssetId,\n takerAssetId,\n };\n}\n\n/* \nGET\n/nft/orders/:chainId/maker/:walletAddress\n/nft/orders/:chainId/taker/:walletAddress\n/nft/p2p/:chainId/maker/:walletAddress\n/nft/p2p/:chainId/taker/:walletAddress\n*/\nexport type GetOrdersURLs = `${BaseFetchUrl<'nft'>}/${\n | 'taker'\n | 'maker'}/${string}`;\n\n/*\nGET\n/nft/order/:orderHash (get you p2p or orders)\n*/\nexport type GetOrderURL = `${MinFetchUrl<'nft'>}/${string}`;\n\n/* \nPOST create order\n/nft/orders/:chainId/\n/nft/p2p/:chainId/\n*/\nexport type PostOrderURLs = BaseFetchUrl<'nft'>;\n\nexport const constructBaseFetchUrlGetter: BaseFetchUrlInputConstructor<'nft'> =\n baseFetchUrlGetterFactory('nft');\n","import type { WithGasPrice, WithMaxFee } from '../../gas';\nimport type {\n ConstructFetchInput,\n Address,\n FetcherPostInput,\n PriceString,\n OptimalRate,\n RequestParameters,\n} from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { OrderData } from '../limitOrders/buildOrder';\nimport { sanitizeOrderData as sanitizeLimitOrderData } from '../limitOrders/helpers/misc';\nimport { sanitizeOrderData as sanitizeNFTOrderData } from '../nftOrders/helpers/misc';\nimport { AssetTypeVariant } from '../nftOrders/helpers/types';\n\nexport interface TransactionParams {\n to: string;\n from: string;\n value: string;\n data: string;\n gas?: string;\n chainId: number;\n // either gasPrice or maxFeePerGas & maxPriorityFeePerGas will be present\n gasPrice?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n}\n\nexport type SwappableOrder = OrderData & {\n permitMakerAsset?: string;\n signature: string;\n};\n\nexport type SwappableNFTOrder = SwappableOrder & {\n makerAssetId: string;\n takerAssetId: string;\n makerAssetType: AssetTypeVariant;\n takerAssetType: AssetTypeVariant;\n};\n\n// when priceRoute with side=SELL, slippage can replace destAmount\nexport type TxInputAmountsPartSell = {\n slippage: number;\n srcAmount: PriceString;\n destAmount?: never; // disallowed\n};\n// when priceRoute with side=BUY, slippage can replace srcAmount\nexport type TxInputAmountsPartBuy = {\n slippage: number;\n srcAmount?: never; // disallowed\n destAmount: PriceString;\n};\n// both srcAmount and destAmount can be present in absence of slippage\nexport type TxInputAmountsPartBuyOrSell = {\n slippage?: never; // disallowed\n srcAmount: PriceString;\n destAmount: PriceString;\n};\n\n// more details in the docs https://developers.velora.xyz/api/velora-api/velora-market-api/build-parameters-for-transaction#request-body\nexport type BuildTxInputBase = {\n srcToken: Address;\n destToken: Address;\n userAddress: Address;\n /** @description Whenever msg.sender (`userAddress`) i.e. address calling the Velora contract is different than the address sending the transaction, `txOrigin` must be passed along with `userAddress` */\n txOrigin?: string;\n /** @description used with referral link */\n referrer?: string;\n partner?: string;\n partnerAddress?: string;\n partnerFeeBps?: number;\n /** @description If user should receive surplus instead of partner. Default: false */\n isSurplusToUser?: boolean;\n /** @description If fees should be sent directly to the partner instead of registering them on FeeClaimer. v6 only. Default: false */\n isDirectFeeTransfer?: boolean;\n /** @deprecated Use \"takeSurplus\" instead. Positive slippage goes to user, true by default */\n positiveSlippageToUser?: boolean;\n /** @description Set to true to take positive slippage. Works with partnerAddress. Default: false */\n takeSurplus?: boolean;\n /** @description Cap the surplus at 1% maximum. Default: true */\n isCapSurplus?: boolean;\n receiver?: Address;\n srcDecimals?: number;\n destDecimals?: number;\n permit?: string;\n deadline?: string;\n};\n\n// for Swap transaction\nexport type BuildSwapTxInput = BuildTxInputBase & {\n priceRoute: OptimalRate;\n} & (\n | TxInputAmountsPartSell\n | TxInputAmountsPartBuy\n | TxInputAmountsPartBuyOrSell\n ); // this union doesn't allow to mix srcAmount & destAmount & slippage together\n\n// building block for LimitOrders and NFT Orders swaps\n// can only use priceRoute.side=BUY and related TxInputAmountsPart*\ntype BuildTxInputBaseBUYForOrders<\n // to Omit extra keys\n // can't do Omit<> around union, breaks discriminated union\n K extends keyof TxInputAmountsPartBuy | keyof BuildTxInputBase = never\n> = Omit<BuildTxInputBase, K> &\n // destAmount is sum(orders[].makerAmount)\n (| Omit<TxInputAmountsPartBuy, 'destAmount' | K>\n | Omit<TxInputAmountsPartBuyOrSell, 'destAmount' | K>\n );\n\n// for LimitOrder Fill, without swap\nexport type BuildLimitOrderTxInput = BuildTxInputBaseBUYForOrders & {\n orders: SwappableOrder[];\n srcDecimals: number;\n destDecimals: number;\n};\n\n// for NFT Order Fill, without swap\nexport type BuildNFTOrderTxInput =\n // @TODO if NFT can ever be srcToken, change logic\n // for NFT token destDecimals = 0 is acceptable\n BuildTxInputBaseBUYForOrders<'destDecimals'> & {\n orders: SwappableNFTOrder[];\n srcDecimals: number;\n };\n\nexport interface BuildSwapAndLimitOrderTxInput0\n // destAmount is sum(orders[].makerAmount)\n extends Omit<BuildTxInputBase, 'destAmount'> {\n priceRoute: OptimalRate; // priceRoute.side=BUY\n orders: SwappableOrder[];\n destDecimals: number;\n}\n// for Swap + LimitOrder, priceRoute must have side=BUY\nexport type BuildSwapAndLimitOrderTxInput =\n // destAmount is sum(orders[].makerAmount)\n BuildTxInputBaseBUYForOrders & {\n priceRoute: OptimalRate; // priceRoute.side=BUY & priceRoute.contractMethod=simpleBuy\n orders: SwappableOrder[];\n destDecimals: number;\n };\n\n// with slippage for a swap and fill - p2p - order, without to fill a p2p order directly with the intended taker asset\n\n// for Swap + NFT Order, priceRoute must have side=BUY\nexport type BuildSwapAndNFTOrderTxInput =\n // destAmount is sum(orders[].makerAmount)\n BuildTxInputBaseBUYForOrders & {\n priceRoute: OptimalRate; // priceRoute.side=BUY & priceRoute.contractMethod=simpleBuy\n orders: SwappableNFTOrder[];\n };\n\nexport type BuildTxInput =\n | BuildSwapTxInput\n | BuildLimitOrderTxInput\n | BuildNFTOrderTxInput\n | BuildSwapAndLimitOrderTxInput\n | BuildSwapAndNFTOrderTxInput;\n\nexport type BuildOptionsBase = {\n /** @description Allows the API to skip performing onchain checks such as balances, allowances, as well as transaction simulations. The response does not contain `gas` parameter when set to `true` */\n ignoreChecks?: boolean;\n /** @description Allows the API to skip gas checks. The response does not contain `gas` parameter when set to `true` */\n ignoreGasEstimate?: boolean;\n /** @description Allows the API to skip performing onchain allowance checks. */\n ignoreAllowance?: boolean;\n /** @description Allows the API to return the contract parameters only. */\n onlyParams?: boolean;\n};\n\nexport type BuildOptionsWithGasPrice = BuildOptionsBase & Partial<WithGasPrice>;\nexport type BuildOptionsWitWithMaxFee = BuildOptionsBase & Partial<WithMaxFee>;\n\nexport type BuildOptions = BuildOptionsWithGasPrice | BuildOptionsWitWithMaxFee;\n\ntype BuildTx = (\n params: BuildTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildTxFunctions = {\n buildTx: BuildTx;\n};\n\ntype SearchStringParams = BuildOptions;\n\nexport const constructBuildTx = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildTxFunctions => {\n const transactionsURL = `${apiURL}/transactions/${chainId}` as const;\n\n const buildTx: BuildTx = async (params, options = {}, requestParams) => {\n if (\n 'priceRoute' in params &&\n 'destAmount' in params && // isn't provided together with `orders`\n !('orders' in params) // when present, destAmount becomes sum(orders[].makerAmount)\n ) {\n const {\n priceRoute,\n priceRoute: { side },\n } = params;\n const AmountMismatchError =\n side === SwapSide.SELL\n ? 'Source Amount Mismatch'\n : 'Destination Amount Mismatch';\n\n // user provides srcAmount or slippage but not both. so we only validate accordingly.\n assert(\n areAmountsCorrect({\n queryParams: params,\n side,\n priceRoute,\n }),\n AmountMismatchError\n );\n }\n\n // always pass explicit type to make sure UrlSearchParams are correct\n const search = constructSearchString<SearchStringParams>(options);\n\n const fetchURL = `${transactionsURL}/${search}` as const;\n\n const sanitizedParams =\n 'orders' in params && params.orders.length > 0\n ? {\n ...params,\n // make sure we don't pass more with orders than API expects\n orders: params.orders.map((order) => {\n const sanitizedOrderData =\n 'makerAssetId' in order\n ? sanitizeNFTOrderData(order) // assetType is provided here, because Order.*Asset may be address\n : // if Order received from API by hash\n sanitizeLimitOrderData(order);\n\n const sanitizedOrder: SwappableOrder = {\n ...sanitizedOrderData,\n signature: order.signature,\n };\n\n if (order.permitMakerAsset) {\n sanitizedOrder.permitMakerAsset = order.permitMakerAsset;\n }\n\n return sanitizedOrder;\n }),\n }\n : params;\n\n const takeSurplus =\n params.takeSurplus ??\n (params.positiveSlippageToUser !== undefined\n ? !params.positiveSlippageToUser\n : undefined);\n\n if ('positiveSlippageToUser' in sanitizedParams) {\n // positiveSlippageToUser & takeSurplus together will Error in API\n delete sanitizedParams.positiveSlippageToUser;\n }\n if (takeSurplus !== undefined) {\n sanitizedParams.takeSurplus = takeSurplus;\n }\n\n const fetchParams: FetcherPostInput = {\n url: fetchURL,\n method: 'POST',\n data: sanitizedParams,\n requestParams,\n };\n\n const builtTx = await fetcher<TransactionParams>(fetchParams);\n\n return builtTx;\n };\n\n return { buildTx };\n};\n\ninterface AreAmountsCorrectInput {\n queryParams: { srcAmount?: string; destAmount?: string; slippage?: number };\n side: SwapSide;\n priceRoute: OptimalRate;\n}\n\nfunction areAmountsCorrect({\n queryParams,\n side,\n priceRoute,\n}: AreAmountsCorrectInput): boolean {\n // return early after a simpler check if the user was swapping before filling\n if (queryParams.slippage) {\n return (\n (side === SwapSide.BUY &&\n queryParams.destAmount === priceRoute.destAmount) ||\n (side === SwapSide.SELL && queryParams.srcAmount === priceRoute.srcAmount)\n );\n }\n\n // provided amounts match the previously queried price route\n const [inputAmount, priceRouteAmount] =\n side === SwapSide.SELL\n ? [queryParams.srcAmount, priceRoute.srcAmount]\n : [queryParams.destAmount, priceRoute.destAmount];\n\n return inputAmount === priceRouteAmount;\n}\n","import { getRandomInt } from '../../../helpers/misc';\nimport type { Address, APIVersion } from '../../../types';\nimport {\n Domain,\n name,\n version,\n ZERO_ADDRESS,\n} from '../../common/orders/buildOrderData';\n\nconst Order = [\n { name: 'nonceAndMeta', type: 'uint256' },\n { name: 'expiry', type: 'uint128' },\n { name: 'makerAsset', type: 'address' },\n { name: 'takerAsset', type: 'address' },\n { name: 'maker', type: 'address' },\n { name: 'taker', type: 'address' },\n { name: 'makerAmount', type: 'uint256' },\n { name: 'takerAmount', type: 'uint256' },\n];\n\nexport interface BuildOrderDataInput {\n chainId: number;\n verifyingContract: Address;\n nonce?: number;\n expiry: number;\n makerAsset: Address;\n takerAsset: Address;\n makerAmount: string;\n takerAmount: string;\n maker: Address;\n // OrderData.taker must be Augustus (or other Executor) for p2p limitOrders to involve swap through Augustus\n /** @description actual user taker which will go into nonceAndMeta */\n taker?: Address;\n /** @description contract executor (Augustus or similar) that is allowed to execute the order, gois in Order.taker */\n contractTaker?: Address;\n\n AugustusAddress: Address;\n AppVersion: APIVersion;\n}\n\nexport type SignableOrderData = {\n types: { Order: typeof Order };\n domain: Domain;\n data: OrderData;\n};\n\nexport type OrderData = {\n nonceAndMeta: string;\n expiry: number;\n makerAsset: string;\n takerAsset: string;\n maker: string;\n taker: string;\n makerAmount: string;\n takerAmount: string;\n};\n\nexport function buildOrderData({\n chainId,\n verifyingContract,\n nonce = getRandomInt(),\n expiry,\n makerAsset,\n takerAsset,\n makerAmount,\n takerAmount,\n maker,\n AugustusAddress,\n // if taker is specified -- p2p order for that taker only to fill through Augustus (v5) or directly (v6)-- taker = Augustus | _taker, takerInNonce = _taker\n // if taker is not specified -- limitOrder for anyone to fill through Augustus or not -- taker = Zero, takerInNonce = Zero\n taker: takerInNonce = ZERO_ADDRESS,\n // if given, overrides the above choices made based on `taker`\n contractTaker,\n // for v6 only support taker=_taker for OTC orders\n AppVersion,\n}: BuildOrderDataInput): SignableOrderData {\n // first 160 bits is taker address (for p2p orders),\n // or 0 for limitOrders, so that anyone can be the taker of the Order\n const nonceAndMeta = (\n BigInt(takerInNonce) +\n (BigInt(nonce) << BigInt(160))\n ).toString(10);\n\n let taker: string;\n // contractTaker overrides always\n if (contractTaker) {\n taker = contractTaker;\n } else if (takerInNonce === ZERO_ADDRESS) {\n // no takerInNonce -> not p2p order -> allow anyone to fill (not only Augustus)\n taker = ZERO_ADDRESS;\n } else {\n // otherwise for p2p order ->\n if (AppVersion.startsWith('6.')) {\n //support 6.1+ versions\n\n // limit taker to EOA for v6 version (no Arbitrary Token Swaps + OTC Fill, or OTC Fill through AugustusSwapper)\n taker = takerInNonce;\n } else {\n // on v5\n // -> fill through Augustus only\n taker = AugustusAddress;\n }\n }\n\n const order: OrderData = {\n nonceAndMeta,\n expiry,\n makerAsset,\n takerAsset,\n maker,\n taker,\n makerAmount,\n takerAmount,\n };\n\n return {\n types: { Order },\n domain: { name, version, chainId, verifyingContract },\n data: order,\n };\n}\n","import { DEFAULT_VERSION } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetSpender } from '../swap/spender';\nimport {\n buildOrderData,\n BuildOrderDataInput,\n SignableOrderData,\n} from './helpers/buildOrderData';\nexport * from './helpers/buildOrderData';\n\nexport type BuildLimitOrderInput = Omit<\n BuildOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress' | 'AppVersion'\n>;\n\ntype BuildLimitOrder = (\n buildLimitOrderParams: BuildLimitOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableOrderData>;\n\nexport type BuildLimitOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildLimitOrder: BuildLimitOrder;\n};\n\nexport const constructBuildLimitOrder = (\n options: ConstructFetchInput\n): BuildLimitOrderFunctions => {\n const { chainId } = options;\n\n // getContracts is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getContracts } = constructGetSpender(options);\n\n const buildLimitOrder: BuildLimitOrder = async (\n buildLimitOrderParams,\n requestParams\n ) => {\n const { AugustusSwapper: AugustusAddress, AugustusRFQ: verifyingContract } =\n await getContracts(requestParams);\n\n const AppVersion = options.version ?? DEFAULT_VERSION;\n\n return buildOrderData({\n ...buildLimitOrderParams,\n chainId,\n verifyingContract,\n AugustusAddress,\n AppVersion,\n });\n };\n\n return {\n buildLimitOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport type { SignableOrderData } from './buildOrder';\nimport { sanitizeOrderData } from './helpers/misc';\n\nexport type SignLimitOrderFunctions = {\n signLimitOrder: (signableOrderData: SignableOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignLimitOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignLimitOrderFunctions => {\n const signLimitOrder: SignLimitOrderFunctions['signLimitOrder'] = (\n typedData\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableOrderData = {\n ...typedData,\n data: sanitizeOrderData(typedData.data),\n };\n return options.contractCaller.signTypedDataCall(typedDataOnly);\n };\n\n return { signLimitOrder };\n};\n","import type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructGetSpender } from '../swap/spender';\n\nexport type CancelOrder<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelOrderBulk<T> = (\n orderHashes: string[],\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelLimitOrderFunctions<T> = {\n cancelLimitOrder: CancelOrder<T>;\n cancelLimitOrderBulk: CancelOrderBulk<T>;\n};\n\n// much smaller than the whole AugustusRFQ_ABI\nconst MinAugustusRFQAbi = [\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'orderHash',\n type: 'bytes32',\n },\n ],\n name: 'cancelOrder',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'orderHashes',\n type: 'bytes32[]',\n },\n ],\n name: 'cancelOrders',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructCancelLimitOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): CancelLimitOrderFunctions<T> => {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const cancelLimitOrder: CancelOrder<T> = async (\n orderHash,\n overrides = {},\n requestParams\n ) => {\n const verifyingContract = await getAugustusRFQ(requestParams);\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n // @CHECK if verifyingContract is the one we need to approve\n // maybe a Proxy in-between\n address: verifyingContract,\n abi: MinAugustusRFQAbi,\n contractMethod: 'cancelOrder',\n args: [orderHash],\n overrides,\n });\n\n return res;\n };\n\n const cancelLimitOrderBulk: CancelOrderBulk<T> = async (\n orderHashes,\n overrides = {},\n requestParams\n ) => {\n const verifyingContract = await getAugustusRFQ(requestParams);\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n // @CHECK if verifyingContract is the one we need to approve\n // maybe a Proxy in-between\n address: verifyingContract,\n abi: MinAugustusRFQAbi,\n contractMethod: 'cancelOrders',\n args: [orderHashes],\n overrides,\n });\n\n return res;\n };\n\n return {\n cancelLimitOrder,\n cancelLimitOrderBulk,\n };\n};\n","type SplitSignatureResult = {\n v: number;\n r: string;\n s: string;\n compact: string;\n};\n\nexport function splitSignature(signature: string): SplitSignatureResult {\n // Remove \"0x\" prefix if present\n if (signature.startsWith('0x')) {\n signature = signature.slice(2);\n }\n\n // Convert the hex string to a byte array\n const bytes = new Uint8Array(signature.length / 2);\n for (let i = 0; i < signature.length; i += 2) {\n bytes[i / 2] = parseInt(signature.slice(i, i + 2), 16);\n }\n\n // Validate the signature length (64 or 65 bytes)\n if (bytes.length !== 64 && bytes.length !== 65) {\n throw new Error('Invalid signature length: must be 64 or 65 bytes');\n }\n\n // Extract r and s components\n const r = `0x${Array.from(bytes.slice(0, 32), (b) =>\n b.toString(16).padStart(2, '0')\n ).join('')}`;\n let s: string;\n let v;\n\n // Handle 64-byte (EIP-2098 compact) and 65-byte signatures\n if (bytes.length === 64) {\n // Extract v from the highest bit of s and clear the bit in s\n v = 27 + (bytes[32]! >> 7);\n bytes[32]! &= 0x7f; // Clear the highest bit\n s = `0x${Array.from(bytes.slice(32, 64))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n } else {\n s = `0x${Array.from(bytes.slice(32, 64))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n\n // Extract v directly for 65-byte signature\n v = bytes[64]!;\n\n // Normalize v to canonical form (27 or 28)\n if (v < 27) {\n v += 27;\n }\n }\n\n // Compute yParityAndS (_vs) for the compact signature\n const sBytes = Array.from(bytes.slice(32, 64));\n if (v === 28) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n sBytes[0]! |= 0x80; // Set the highest bit if v is 28\n }\n const yParityAndS = `0x${sBytes\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}`;\n\n // Construct the compact signature by concatenating r and yParityAndS\n const compactSignature = r + yParityAndS.slice(2);\n\n return { v, r, s, compact: compactSignature };\n}\n","import { splitSignature } from './signature';\n\ntype EncodeEIP_2612PermitFunctionInput = {\n permitSignature: string;\n owner: string;\n spender: string;\n value: string | bigint;\n deadline: string | number | bigint;\n};\n\n// encoding params for Token.permit() Permit1 function\nexport function encodeEIP_2612PermitFunctionInput({\n owner,\n spender,\n value,\n deadline,\n permitSignature,\n}: EncodeEIP_2612PermitFunctionInput): string {\n const { v, r, s } = splitSignature(permitSignature);\n\n const encodedOwner = encodeAddress(owner);\n const encodedSpender = encodeAddress(spender);\n const encodedValue = encodeUint256(value);\n const encodedDeadline = encodeUint256(deadline.toString());\n const encodedV = encodeUint8(v);\n const encodedR = encodeBytes32(r);\n const encodedS = encodeBytes32(s);\n\n // Concatenate all encoded values, stripping the \"0x\" prefix from each (except the first one)\n return (\n '0x' +\n [\n encodedOwner,\n encodedSpender,\n encodedValue,\n encodedDeadline,\n encodedV,\n encodedR,\n encodedS,\n ]\n .map((val) => val.slice(2)) // Remove \"0x\" prefix from each encoded value\n .join('') // Concatenate the values\n );\n}\n\ntype EncodeDAIlikePermitFunctionInput = {\n permitSignature: string;\n holder: string;\n spender: string;\n nonce: number | bigint | string;\n expiry: number | bigint | string;\n};\n\n// encoding params for DAIlike.permit() function\nexport function encodeDAIlikePermitFunctionInput({\n permitSignature,\n holder,\n spender,\n nonce,\n expiry,\n}: EncodeDAIlikePermitFunctionInput): string {\n const { v, r, s } = splitSignature(permitSignature);\n\n const encodedHolder = encodeAddress(holder);\n const encodedSpender = encodeAddress(spender);\n const encodedNonce = encodeUint256(nonce.toString());\n const encodedExpiry = encodeUint256(expiry.toString());\n const encodedV = encodeUint8(v);\n const encodedR = encodeBytes32(r);\n const encodedS = encodeBytes32(s);\n\n // Concatenate all encoded values, stripping the \"0x\" prefix from each (except the first one)\n return (\n '0x' +\n [\n encodedHolder,\n encodedSpender,\n encodedNonce,\n encodedExpiry,\n encodeBool(true), //allowed=true\n encodedV,\n encodedR,\n encodedS,\n ]\n .map((val) => val.slice(2)) // Remove \"0x\" prefix from each encoded value\n .join('') // Concatenate the values\n );\n}\n\n// encode an address (20 bytes) into 32 bytes\nexport function encodeAddress(address: string): string {\n const strippedAddress = address.replace(/^0x/, ''); // Remove \"0x\" prefix\n return '0x' + strippedAddress.toLowerCase().padStart(64, '0');\n}\n\n// encode a uint256 value\nexport function encodeUint256(value: string | bigint): string {\n const bn = BigInt(value);\n return '0x' + bn.toString(16).padStart(64, '0');\n}\n\n// encode a uint8 value\nexport function encodeUint8(value: number | bigint): string {\n return '0x' + value.toString(16).padStart(64, '0');\n}\n\n// encode a bytes32 value\nexport function encodeBytes32(value: string): string {\n const strippedValue = value.replace(/^0x/, ''); // Remove \"0x\" prefix\n return '0x' + strippedValue.padStart(64, '0').toLowerCase();\n}\n\n//encode a boolean\nexport function encodeBool(value: boolean): string {\n const encodedValue = value ? '1' : '0';\n // padded to 32 bytes\n return '0x' + encodedValue.padStart(64, '0');\n}\n\n/* \nconst EIP_2612_PERMIT_ABI = [\n {\n constant: false,\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'value',\n type: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n },\n {\n name: 'v',\n type: 'uint8',\n },\n {\n name: 'r',\n type: 'bytes32',\n },\n {\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n]; \n*/\n\n/* \nconst DAI_EIP_2612_PERMIT_ABI = [\n {\n constant: false,\n inputs: [\n {\n internalType: 'address',\n name: 'holder',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'allowed',\n type: 'bool',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n];\n */\n","import type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport type { OrderData } from './buildOrder';\nimport { constructGetSpender } from '../swap/spender';\nimport { sanitizeOrderData } from './helpers/misc';\nimport {\n encodeDAIlikePermitFunctionInput,\n encodeEIP_2612PermitFunctionInput,\n} from '../common/orders/encoding';\n\nexport type FillOrderDirectlyFunctions<T> = {\n fillOrderDirectly: FillOrderDirectly<T>;\n};\n\ntype TakerPermitEncodedInputParams = {\n encodedPermitParams: string;\n};\n\ntype TakerPermit1Data = {\n signature: string;\n deadline: number | bigint | string;\n amount?: string;\n isDaiPermit?: false;\n};\n\ntype TakerDaiPermitData = {\n signature: string;\n expiry: number | bigint | string;\n nonce: number | bigint | string;\n isDaiPermit: true;\n};\n\ntype TakerPermitObject =\n | TakerPermitEncodedInputParams\n | TakerPermit1Data\n | TakerDaiPermitData;\n\nexport type FillOrderDirectly<T> = (\n orderFillData: {\n order: OrderData;\n signature: string;\n /** @description Permit1 data or DAI Permit data or Token.parmit() input params encoded; Permit by taker for Taker Asset with AugustusRFQ as spender */\n takerPermit?: TakerPermitObject;\n },\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\n// much smaller than the whole AugustusRFQ_ABI\nconst MinAugustusRFQAbi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'nonceAndMeta',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'expiry',\n type: 'uint128',\n },\n {\n internalType: 'address',\n name: 'makerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'takerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'maker',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'taker',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'makerAmount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'takerAmount',\n type: 'uint256',\n },\n ],\n internalType: 'struct AugustusRFQ.Order',\n name: 'order',\n type: 'tuple',\n },\n {\n internalType: 'bytes',\n name: 'signature',\n type: 'bytes',\n },\n ],\n name: 'fillOrder',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'nonceAndMeta',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'expiry',\n type: 'uint128',\n },\n {\n internalType: 'address',\n name: 'makerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'takerAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'maker',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'taker',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'makerAmount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'takerAmount',\n type: 'uint256',\n },\n ],\n internalType: 'struct AugustusRFQ.Order',\n name: 'order',\n type: 'tuple',\n },\n {\n internalType: 'bytes',\n name: 'signature',\n type: 'bytes',\n },\n {\n internalType: 'uint256',\n name: 'takerTokenFillAmount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'permitTakerAsset',\n type: 'bytes',\n },\n {\n internalType: 'bytes',\n name: 'permitMakerAsset',\n type: 'bytes',\n },\n ],\n name: 'partialFillOrderWithTargetPermit',\n outputs: [\n {\n internalType: 'uint256',\n name: 'makerTokenFilledAmount',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype FillOrderMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport function constructFillOrderDirectly<T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): FillOrderDirectlyFunctions<T> {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const fillOrderDirectly: FillOrderDirectly<T> = async (\n { order, signature, takerPermit },\n overrides = {},\n requestParams\n ) => {\n const AugustusRFQ = await getAugustusRFQ(requestParams);\n\n const sanitizedOrder = sanitizeOrderData(order);\n\n if (!takerPermit) {\n const res = await options.contractCaller.transactCall<FillOrderMethods>({\n address: AugustusRFQ,\n abi: MinAugustusRFQAbi,\n contractMethod: 'fillOrder',\n args: [sanitizedOrder, signature],\n overrides,\n });\n\n return res;\n }\n\n let permitTakerAsset: string;\n if ('encodedPermitParams' in takerPermit) {\n permitTakerAsset = takerPermit.encodedPermitParams;\n } else if ('isDaiPermit' in takerPermit && takerPermit.isDaiPermit) {\n // encoded DAI.permit() function params by taker with AugustusRFQ as spender\n permitTakerAsset = encodeDAIlikePermitFunctionInput({\n holder: order.taker,\n spender: AugustusRFQ,\n expiry: takerPermit.expiry,\n nonce: takerPermit.nonce,\n permitSignature: takerPermit.signature,\n });\n } else {\n // encoded TakerAsset.permit() function params by taker with AugustusRFQ as spender, Permit1 only\n permitTakerAsset = encodeEIP_2612PermitFunctionInput({\n owner: order.taker,\n spender: AugustusRFQ,\n value: takerPermit.amount || order.takerAmount, // can use permit with a bigger value, fallback to exact Order takerAmount\n deadline: takerPermit.deadline,\n permitSignature: takerPermit.signature,\n });\n }\n\n const res = await options.contractCaller.transactCall<FillOrderMethods>({\n address: AugustusRFQ,\n abi: MinAugustusRFQAbi,\n contractMethod: 'partialFillOrderWithTargetPermit',\n args: [\n sanitizedOrder, // order\n signature, // order.signature\n order.takerAmount, // takerTokenFillAmount, can even partially fill\n order.taker, // target\n permitTakerAsset,\n '0x', // permitMakerAsset, unused because hard to account for changing nonce for long running Orders\n ],\n overrides,\n });\n\n return res;\n };\n\n return { fillOrderDirectly };\n}\n","// @TODO getOrder, getOrders from API\n// onchain from contract can't distinguish between filled or cancelled\nimport { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport {\n constructBaseFetchUrlGetter,\n GetOrdersURLs,\n GetOrderURL,\n GetRequiredAllowanceURL as GetRequiredBalanceURL,\n} from './helpers/misc';\nimport type {\n LimitOrderFromApi,\n LimitOrdersApiResponse,\n LimitOrderType,\n} from './helpers/types';\n\ntype PaginationParams = {\n limit?: number;\n offset?: number;\n hideSmallBalances?: boolean;\n orderBy?: 'createdAt' | 'updatedAt' | 'expiry';\n};\n\n// get orders by `maker` or `taker`\nexport type LimitOrdersUserParams = (\n | { maker: Address; type: LimitOrderType }\n | { taker: Address; type: LimitOrderType }\n) &\n PaginationParams;\n\nexport type GetRequiredAllowanceParams = {\n maker: Address;\n token?: Address;\n};\n\ntype GetLimitOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\ntype GetLimitOrders = (\n userParams: LimitOrdersUserParams,\n requestParams?: RequestParameters\n) => Promise<LimitOrdersApiResponse>;\n\ntype GetRequiredBalance = (\n userParams: GetRequiredAllowanceParams,\n requestParams?: RequestParameters\n) => Promise<Record<string, string>>;\n\nexport type GetLimitOrdersFunctions = {\n getLimitOrders: GetLimitOrders;\n getLimitOrderByHash: GetLimitOrderByHash;\n /**\n * Gets fillableBalance for tokens from user's active orders.\n * User needs to have enough balance & allowance to cover active orders before creating new orders.\n * @param userParams - parameters to get allowance for active orders\n * @param {string} userParams.maker - user to get required allowances for\n * @param {string=} userParams.token - if given `token`, the mapping will contain that token address only\n * @param {RequestParameters=} requestParams - requestParams passed to fetcher, can include {signal: AbortSignal, timeout: for axios, etc.}\n * @returns `{Lowercase<Address> => wei number as string}` mapping of token to fillableBalance\n */\n getRequiredBalance: GetRequiredBalance;\n};\n\nexport const constructGetLimitOrders = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetLimitOrdersFunctions => {\n const getBaseFetchURLByEntityType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const getLimitOrders: GetLimitOrders = async (userParams, requestParams) => {\n const baseFetchURL = getBaseFetchURLByEntityType(userParams.type);\n const userURL =\n 'maker' in userParams\n ? (`maker/${userParams.maker}` as const)\n : (`taker/${userParams.taker}` as const);\n\n const { offset, limit, hideSmallBalances, orderBy } = userParams;\n const search = constructSearchString<PaginationParams>({\n offset,\n limit,\n hideSmallBalances,\n orderBy,\n });\n\n const fetchURL = `${baseFetchURL}/${userURL}${search}` as const;\n\n const response = await fetcher<LimitOrdersApiResponse, GetOrdersURLs>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getRequiredBalance: GetRequiredBalance = async (\n userParams,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByEntityType('fillablebalance');\n const userURL = `${baseFetchURL}/${userParams.maker}` as const;\n const fetchURL = userParams.token\n ? (`${userURL}/${userParams.token}` as const)\n : userURL;\n\n const response = await fetcher<\n Record<string, string>,\n GetRequiredBalanceURL\n >({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getLimitOrderByHash: GetLimitOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByEntityType();\n const fetchURL = `${baseFetchURL}/${orderHash}` as const;\n\n const order = await fetcher<LimitOrderFromApi, GetOrderURL>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n return {\n getLimitOrders,\n getLimitOrderByHash,\n getRequiredBalance,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructBaseFetchUrlGetter, PostOrderURLs } from './helpers/misc';\nimport type {\n LimitOrderApiResponse,\n LimitOrderToSend,\n LimitOrderFromApi,\n LimitOrderType,\n} from './helpers/types';\n\ntype PostLimitOrder = (\n limitOrderWithSignatureAndPermit: LimitOrderToSend,\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\nexport type PostLimitOrderFunctions = {\n postLimitOrder: PostLimitOrder;\n postP2POrder: PostLimitOrder;\n};\n\nexport const constructPostLimitOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostLimitOrderFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const postTypedOrder = async (\n limitOrderWithSignatureAndPermit: LimitOrderToSend,\n type: LimitOrderType,\n requestParams?: RequestParameters\n ): Promise<LimitOrderFromApi> => {\n const fetchURL = getBaseFetchURLByOrderType(type);\n\n const { order: newOrder } = await fetcher<\n LimitOrderApiResponse,\n PostOrderURLs\n >({\n url: fetchURL,\n method: 'POST',\n data: limitOrderWithSignatureAndPermit,\n requestParams,\n });\n\n return newOrder;\n };\n\n const postLimitOrder: PostLimitOrder = (\n limitOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n limitOrderWithSignatureAndPermit,\n 'LIMIT',\n requestParams\n );\n };\n\n const postP2POrder: PostLimitOrder = (\n limitOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n limitOrderWithSignatureAndPermit,\n 'P2P',\n requestParams\n );\n };\n\n return { postLimitOrder, postP2POrder };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\nimport { constructApproveToken } from '../swap/approve';\nimport { constructGetSpender } from '../swap/spender';\n\nexport type ApproveTokenForLimitOrderFunctions<T> = {\n /** @description approving AugustusRFQ as spender for makerAsset */\n approveMakerTokenForLimitOrder: ApproveToken<T>;\n /** @description approving AugustusRFQ as spender for takerAsset to call SDK.fillOrderDirectly */\n approveTakerTokenForFillingP2POrderDirectly: ApproveToken<T>;\n /** @description approving AugustusSwapper as spender for takerAsset for Limit Orders that will be executed through it */\n approveTakerTokenForLimitOrder: ApproveToken<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForLimitOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForLimitOrderFunctions<T> => {\n // getAugustusRFQ is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getAugustusRFQ } = constructGetSpender(options);\n\n const approveMakerTokenForLimitOrder: ApproveToken<T> =\n approveTokenMethodFactory<T>(options.contractCaller, getAugustusRFQ);\n\n // approving TokenTransaferProxy as for the swap\n const { approveToken: approveTakerTokenForLimitOrder } =\n constructApproveToken(options);\n\n return {\n approveMakerTokenForLimitOrder,\n approveTakerTokenForFillingP2POrderDirectly: approveMakerTokenForLimitOrder,\n approveTakerTokenForLimitOrder,\n };\n};\n","import type { ConstructFetchInput } from '../../types';\nimport { constructGetSpender, GetSpender } from '../swap/spender';\n\nexport type GetLimitOrdersContractFunctions = {\n getLimitOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\nexport const constructGetLimitOrdersContract = (\n options: ConstructFetchInput\n): GetLimitOrdersContractFunctions => {\n // analogous to getSpender() but for Limit Orders Contract = AugustusRFQ\n\n const {\n getSpender: getTokenTransferProxy,\n getAugustusRFQ: getLimitOrdersContract,\n } = constructGetSpender(options);\n\n return { getLimitOrdersContract, getTokenTransferProxy };\n};\n","import type { ConstructFetchInput, OptimalRate } from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport {\n API_URL,\n SwapSide,\n ContractMethod,\n DEFAULT_VERSION,\n} from '../../constants';\nimport {\n BuildLimitOrderTxInput,\n BuildOptions,\n BuildSwapAndLimitOrderTxInput,\n TransactionParams,\n constructBuildTx,\n} from '../swap/transaction';\nimport { constructGetRate, GetRateInput, RateOptions } from '../swap/rates';\nimport type { OrderData } from './buildOrder';\nimport { isFilledArray } from '../../helpers/misc';\nimport type { RequestParameters } from '../../types';\n\ntype MinBuildSwapAndLimitOrderTxInput = Omit<\n // these are derived from `orders`\n BuildSwapAndLimitOrderTxInput,\n 'srcToken' | 'srcAmount' | 'destToken' | 'destDecimals'\n>;\n\ntype BuildSwapAndLimitOrdersTx = (\n params: MinBuildSwapAndLimitOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\ntype MinBuildLimitOrderTxInput = Omit<\n BuildLimitOrderTxInput,\n // these are derived from `orders`\n 'srcToken' | 'srcAmount' | 'destToken' | 'slippage'\n // `slippage` doesn't participate as we derive `srcAmount` already\n>;\n\ntype BuildLimitOrdersTx = (\n params: MinBuildLimitOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildLimitOrdersTxFunctions = {\n getLimitOrdersRate: GetLimitOrdersRate;\n buildLimitOrderTx: BuildLimitOrdersTx;\n buildSwapAndLimitOrderTx: BuildSwapAndLimitOrdersTx;\n};\n\ntype GetLimitOrdersRate = (\n // `amount`, if given, must equal the total of the orders' `takerAmounts`\n options: Omit<GetRateInput, 'amount' | 'side'> & { amount?: string },\n orders: CheckableOrderData[],\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport const constructBuildLimitOrderTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildLimitOrdersTxFunctions => {\n const { buildTx: buildSwapTx } = constructBuildTx({\n apiURL,\n chainId,\n fetcher,\n version,\n });\n\n const { getRate: getSwapAndLimitOrderRate } = constructGetRate({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n // returns priceRoute that would allow to swap from srcToken to destToken(=order.takerAsset) followed by filling limit orders\n const getLimitOrdersRate: GetLimitOrdersRate = async (\n { srcToken, destToken, amount, options: _options = {}, ...rest },\n orders,\n requestParams\n ) => {\n assert(orders.length > 0, 'must pass at least 1 order');\n\n const { totalTakerAmount, takerAsset } = checkAndParseOrders(orders);\n assert(\n takerAsset.toLowerCase() === destToken.toLowerCase(),\n 'All orders must have the same takerAsset as destToken'\n );\n\n const takerAmountString = totalTakerAmount.toString(10);\n\n if (amount) {\n assert(\n amount === takerAmountString,\n \"`amount` must equal the total of the orders' `takerAmounts`\"\n );\n }\n\n // The pricing must use includeContractMethods=simpleBuy and side=BUY\n const options: RateOptions = {\n ..._options,\n includeContractMethods: [ContractMethod.simpleBuy],\n };\n\n const side = SwapSide.BUY;\n\n const rateInput: GetRateInput = {\n ...rest,\n srcToken,\n destToken,\n amount: takerAmountString,\n side,\n options,\n };\n\n // priceRoute\n const optimalRate = await getSwapAndLimitOrderRate(\n rateInput,\n requestParams\n );\n return optimalRate;\n };\n\n // derive srcToken, destToken and srcAmount from orders[]\n const buildLimitOrderTx: BuildLimitOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { makerAsset, takerAsset, totalTakerAmount } = checkAndParseOrders(\n params.orders\n );\n\n const fillParams: BuildLimitOrderTxInput = {\n ...params,\n // taker supplies takerAsset\n srcToken: takerAsset,\n // no `slippage` in `params`\n srcAmount: totalTakerAmount.toString(10),\n // taker gets makerAsset in the end\n destToken: makerAsset,\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n const buildSwapAndLimitOrderTx: BuildSwapAndLimitOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { makerAsset } = checkAndParseOrders(params.orders);\n\n const fillParams: BuildSwapAndLimitOrderTxInput = {\n ...params,\n // taker supplies srcToken\n srcToken: params.priceRoute.srcToken,\n // which is swapped for makerAsset, that would go towards filling the orders\n destToken: makerAsset,\n destDecimals: params.priceRoute.destDecimals,\n // one or the other\n ...(params.slippage\n ? { slippage: params.slippage }\n : // may sneak in as part of `params`\n { srcAmount: params.priceRoute.srcAmount, slippage: undefined }),\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n return {\n getLimitOrdersRate,\n buildLimitOrderTx,\n buildSwapAndLimitOrderTx,\n };\n};\n\ntype CheckAndParseOrdersResult = Omit<CheckableOrderData, 'takerAmount'> & {\n totalTakerAmount: bigint;\n};\n\ntype CheckableOrderData = Pick<\n OrderData,\n 'takerAsset' | 'makerAsset' | 'takerAmount' | 'maker'\n> & { taker?: OrderData['taker'] };\n\nfunction checkAndParseOrders(\n orders: CheckableOrderData[]\n): CheckAndParseOrdersResult {\n assert(isFilledArray(orders), 'must pass at least 1 order');\n\n const { takerAssetsSet, makerAssetsSet, totalTakerAmount } = orders.reduce<\n Record<'takerAssetsSet' | 'makerAssetsSet', Set<string>> & {\n totalTakerAmount: bigint;\n }\n >(\n (accum, order) => {\n accum.takerAssetsSet.add(order.takerAsset.toLowerCase());\n accum.makerAssetsSet.add(order.makerAsset.toLowerCase());\n\n accum.totalTakerAmount =\n accum.totalTakerAmount + BigInt(order.takerAmount);\n return accum;\n },\n {\n takerAssetsSet: new Set(),\n makerAssetsSet: new Set(),\n totalTakerAmount: BigInt(0),\n }\n );\n\n assert(\n takerAssetsSet.size === 1,\n 'All orders must have the same takerAsset as destToken'\n );\n assert(makerAssetsSet.size === 1, 'All orders must have the same makerAsset');\n\n const [{ maker, taker, makerAsset, takerAsset }] = orders;\n\n return {\n totalTakerAmount,\n maker,\n taker,\n makerAsset,\n takerAsset,\n };\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetSpender } from '../swap/spender';\nimport {\n buildOrderData,\n BuildNFTOrderDataInput,\n SignableNFTOrderData,\n} from './helpers/buildOrderData';\nexport * from './helpers/buildOrderData';\n\nexport type BuildNFTOrderInput = Omit<\n BuildNFTOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress'\n>;\n\ntype BuildNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableNFTOrderData>;\n\nexport type BuildNFTOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildNFTOrder: BuildNFTOrder;\n};\n\nexport const constructBuildNFTOrder = (\n options: ConstructFetchInput\n): BuildNFTOrderFunctions => {\n const { chainId } = options;\n\n // getContracts is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getContracts } = constructGetSpender(options);\n\n const buildNFTOrder: BuildNFTOrder = async (\n buildNFTOrderParams,\n requestParams\n ) => {\n const { AugustusSwapper: AugustusAddress, AugustusRFQ: verifyingContract } =\n await getContracts(requestParams);\n\n return buildOrderData({\n ...buildNFTOrderParams,\n chainId,\n verifyingContract,\n AugustusAddress,\n });\n };\n\n return {\n buildNFTOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport type { SignableNFTOrderData } from './buildOrder';\nimport { sanitizeOrderData } from './helpers/misc';\n\nexport type SignNFTOrderFunctions = {\n signNFTOrder: (signableOrderData: SignableNFTOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignNFTOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignNFTOrderFunctions => {\n const signNFTOrder: SignNFTOrderFunctions['signNFTOrder'] = (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableNFTOrderData = {\n ...typedData,\n // here assetType isn't provided, SignableData must already have corrent BigIntAsString\n // @TODO consider using `template_${types}` for Address, likely bad idea when considering 3rd-party code\n data: sanitizeOrderData(typedData.data),\n };\n return options.contractCaller.signTypedDataCall(typedDataOnly);\n };\n\n return { signNFTOrder };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport {\n CancelOrder,\n CancelOrderBulk,\n constructCancelLimitOrder,\n} from '../limitOrders/cancelOrder';\n\nexport type CancelNFTOrderFunctions<T> = {\n cancelNFTOrder: CancelOrder<T>;\n cancelNFTOrderBulk: CancelOrderBulk<T>;\n};\n\n// should work the same as for LimitOrders\nexport const constructCancelNFTOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): CancelNFTOrderFunctions<T> => {\n const { cancelLimitOrder, cancelLimitOrderBulk } =\n constructCancelLimitOrder(options);\n return {\n cancelNFTOrder: cancelLimitOrder,\n cancelNFTOrderBulk: cancelLimitOrderBulk,\n };\n};\n","import { API_URL } from '../../constants';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport {\n constructBaseFetchUrlGetter,\n GetOrdersURLs,\n GetOrderURL,\n} from './helpers/misc';\nimport type {\n NFTOrderFromAPI,\n NFTOrdersApiResponse,\n NFTOrderType,\n} from './helpers/types';\n\n// get orders by `maker` or `taker`\nexport type NFTOrdersUserParams =\n | { maker: Address; type: NFTOrderType }\n | { taker: Address; type: NFTOrderType };\ntype GetNFTOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\ntype GetNFTOrders = (\n userParams: NFTOrdersUserParams,\n requestParams?: RequestParameters\n) => Promise<NFTOrdersApiResponse>;\n\nexport type GetNFTOrdersFunctions = {\n getNFTOrders: GetNFTOrders;\n getNFTOrderByHash: GetNFTOrderByHash;\n};\n\nexport const constructGetNFTOrders = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetNFTOrdersFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const getNFTOrders: GetNFTOrders = async (userParams, requestParams) => {\n const baseFetchURL = getBaseFetchURLByOrderType(userParams.type);\n const userURL =\n 'maker' in userParams\n ? (`maker/${userParams.maker}` as const)\n : (`taker/${userParams.taker}` as const);\n const fetchURL = `${baseFetchURL}/${userURL}` as const;\n\n const response = await fetcher<NFTOrdersApiResponse, GetOrdersURLs>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n // without any extra calls, return what API returns\n return response;\n };\n\n const getNFTOrderByHash: GetNFTOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const baseFetchURL = getBaseFetchURLByOrderType();\n const fetchURL = `${baseFetchURL}/${orderHash}` as const;\n\n const order = await fetcher<NFTOrderFromAPI, GetOrderURL>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n return {\n getNFTOrders,\n getNFTOrderByHash,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructBaseFetchUrlGetter, PostOrderURLs } from './helpers/misc';\nimport type {\n NFTOrderToSend,\n NFTOrderType,\n NFTOrderFromAPI,\n NFTOrderApiResponse,\n} from './helpers/types';\n\ntype PostNFTOrder = (\n NFTOrderWithSignatureAndPermit: NFTOrderToSend,\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\n\nexport type PostNFTOrderFunctions = {\n postNFTLimitOrder: PostNFTOrder;\n postNFTP2POrder: PostNFTOrder;\n};\n\nexport const constructPostNFTOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostNFTOrderFunctions => {\n const getBaseFetchURLByOrderType = constructBaseFetchUrlGetter({\n apiURL,\n chainId,\n });\n\n const postTypedOrder = async (\n NFTOrderWithSignatureAndPermit: NFTOrderToSend,\n type: NFTOrderType,\n requestParams?: RequestParameters\n ): Promise<NFTOrderFromAPI> => {\n const fetchURL = getBaseFetchURLByOrderType(type);\n\n // @TODO check API return matches\n const { order: newOrder } = await fetcher<\n NFTOrderApiResponse,\n PostOrderURLs\n >({\n url: fetchURL,\n method: 'POST',\n data: NFTOrderWithSignatureAndPermit,\n requestParams,\n });\n\n return { ...newOrder };\n };\n\n const postNFTLimitOrder: PostNFTOrder = (\n NFTOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(\n NFTOrderWithSignatureAndPermit,\n 'LIMIT',\n requestParams\n );\n };\n\n const postNFTP2POrder: PostNFTOrder = (\n NFTOrderWithSignatureAndPermit,\n requestParams\n ) => {\n return postTypedOrder(NFTOrderWithSignatureAndPermit, 'P2P', requestParams);\n };\n\n return { postNFTLimitOrder, postNFTP2POrder };\n};\n","import type { ConstructFetchInput } from '../../types';\nimport { constructGetSpender, GetSpender } from '../swap/spender';\n\nexport type GetNFTOrdersContractFunctions = {\n getNFTOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n// should work the same as LimitOrders\nexport const constructGetNFTOrdersContract = (\n options: ConstructFetchInput\n): GetNFTOrdersContractFunctions => {\n // analogous to getSpender() but for Limit Orders Contract = AugustusRFQ\n\n const {\n getSpender: getTokenTransferProxy,\n getAugustusRFQ: getNFTOrdersContract,\n } = constructGetSpender(options);\n\n return {\n getNFTOrdersContract,\n getTokenTransferProxy,\n };\n};\n","import type { ApproveToken } from '../../helpers/approve';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n Address,\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructApproveToken } from '../swap/approve';\nimport { constructGetNFTOrdersContract } from './getOrdersContract';\n\ntype ApproveNFT<T> = (\n tokenAddress: Address,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type ApproveTokenForNFTOrderFunctions<T> = {\n /** @description approving AugustusSwapper as spender for takerAsset (ERC20) for Limit Orders that will be executed through it */\n approveERC20ForNFTOrder: ApproveToken<T>;\n /** @description approving AugustusRFQ as spender for makerAsset (NFT) */\n approveNFTForNFTOrder: ApproveNFT<T>;\n};\n\nconst MinNFTAbi = [\n {\n constant: false,\n inputs: [\n {\n name: '_operator',\n type: 'address',\n },\n {\n name: '_approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype ApprovalMethods = ExtractAbiMethodNames<typeof MinNFTAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForNFTOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForNFTOrderFunctions<T> => {\n // approving TokenTransaferProxy as for the swap\n const { approveToken: approveERC20ForNFTOrder } =\n constructApproveToken(options);\n\n const { getNFTOrdersContract } = constructGetNFTOrdersContract(options);\n\n const approveNFTForNFTOrder: ApproveNFT<T> = async (\n tokenAddress,\n overrides = {},\n requestParams\n ) => {\n // @TODO add approvetakerAssetForNFTOrder to use AugustusSwapper as spender if we ever have SELL NFT swaps\n const AugustusRFQ = await getNFTOrdersContract(requestParams);\n\n const res = await options.contractCaller.transactCall<ApprovalMethods>({\n address: tokenAddress,\n abi: MinNFTAbi,\n contractMethod: 'setApprovalForAll',\n args: [AugustusRFQ, true],\n overrides,\n });\n\n return res;\n };\n\n return { approveERC20ForNFTOrder, approveNFTForNFTOrder };\n};\n","import type { Address, ConstructFetchInput, OptimalRate } from '../../types';\n\nimport { assert } from 'ts-essentials';\nimport {\n API_URL,\n SwapSide,\n ContractMethod,\n DEFAULT_VERSION,\n} from '../../constants';\nimport {\n BuildNFTOrderTxInput,\n BuildOptions,\n BuildSwapAndNFTOrderTxInput,\n TransactionParams,\n constructBuildTx,\n} from '../swap/transaction';\nimport { constructGetRate, GetRateInput, RateOptions } from '../swap/rates';\nimport type { BigIntAsString, NFTOrderData } from './buildOrder';\nimport { isFilledArray } from '../../helpers/misc';\nimport type { RequestParameters } from '../../types';\ntype MinBuildSwapAndNFTOrderTxInput = Omit<\n // these are derived from `orders`\n BuildSwapAndNFTOrderTxInput,\n 'srcToken' | 'srcAmount' | 'destToken' | 'destDecimals'\n>;\n\ntype BuildSwapAndNFTOrdersTx = (\n params: MinBuildSwapAndNFTOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\ntype MinBuildNFTOrderTxInput = Omit<\n BuildNFTOrderTxInput,\n // these are derived from `orders`\n 'srcToken' | 'srcAmount' | 'destToken' | 'slippage'\n // `slippage` doesn't participate as we derive `srcAmount` already\n>;\n\ntype BuildNFTOrdersTx = (\n params: MinBuildNFTOrderTxInput,\n options?: BuildOptions,\n requestParams?: RequestParameters\n) => Promise<TransactionParams>;\n\nexport type BuildNFTOrdersTxFunctions = {\n getNFTOrdersRate: GetNFTOrdersRate;\n buildNFTOrderTx: BuildNFTOrdersTx;\n buildSwapAndNFTOrderTx: BuildSwapAndNFTOrdersTx;\n};\n\ntype GetNFTOrdersRate = (\n // `amount`, if given, must equal the total of the orders' `takerAmounts`\n options: Omit<GetRateInput, 'amount' | 'side'> & { amount?: string },\n orders: CheckableOrderData[],\n requestParams?: RequestParameters\n) => Promise<OptimalRate>;\n\nexport const constructBuildNFTOrderTx = ({\n apiURL = API_URL,\n version = DEFAULT_VERSION,\n chainId,\n fetcher,\n}: ConstructFetchInput): BuildNFTOrdersTxFunctions => {\n const { buildTx: buildSwapTx } = constructBuildTx({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n const { getRate: getSwapAndNFTOrderRate } = constructGetRate({\n apiURL,\n version,\n chainId,\n fetcher,\n });\n\n // returns priceRoute that would allow from swap from srcToken to destToken(=order.takerAsset) followed by filling NFT orders\n const getNFTOrdersRate: GetNFTOrdersRate = async (\n { srcToken, destToken, amount, options: _options = {}, ...rest },\n orders,\n requestParams\n ) => {\n assert(orders.length > 0, 'must pass at least 1 order');\n\n const { totalTakerAmount, takerAsset } = checkAndParseOrders(orders);\n\n assert(\n takerAsset.toLowerCase() === destToken.toLowerCase(),\n 'All orders must have the same takerAsset as destToken'\n );\n\n const takerAmountString = totalTakerAmount.toString(10);\n\n if (amount) {\n assert(\n amount === takerAmountString,\n \"`amount` must equal the total of the orders' `takerAmounts`\"\n );\n }\n\n // The pricing must use includeContractMethods=simpleBuy and side=BUY\n const options: RateOptions = {\n ..._options,\n includeContractMethods: [ContractMethod.simpleBuy],\n };\n\n const side = SwapSide.BUY;\n\n const rateInput: GetRateInput = {\n ...rest,\n srcToken,\n destToken,\n amount: takerAmountString,\n side,\n options,\n };\n\n // priceRoute\n const optimalRate = await getSwapAndNFTOrderRate(rateInput, requestParams);\n return optimalRate;\n };\n\n // derive srcToken, destToken and srcAmount from orders[]\n const buildNFTOrderTx: BuildNFTOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n const { takerAsset, totalTakerAmount } = checkAndParseOrders(params.orders);\n\n const fillParams: BuildNFTOrderTxInput = {\n ...params,\n // taker supplies takerAsset\n srcToken: takerAsset,\n srcAmount: totalTakerAmount.toString(10),\n // taker gets makerAsset in the end\n destToken: 'NFT', // support any NFT\n };\n\n return buildSwapTx(fillParams, options, requestParams);\n };\n const buildSwapAndNFTOrderTx: BuildSwapAndNFTOrdersTx = (\n params,\n options,\n requestParams\n ) => {\n checkAndParseOrders(params.orders);\n\n const fillParams: BuildSwapAndNFTOrderTxInput = {\n ...params,\n // taker supplies srcToken\n srcToken: params.priceRoute.srcToken,\n // one or the other\n ...(params.slippage\n ? { slippage: params.slippage }\n : // may sneak in as part of `params`\n { srcAmount: params.priceRoute.srcAmount, slippage: undefined }),\n destToken: 'NFT', // support any NFT,\n destDecimals: params.priceRoute.destDecimals,\n };\n return buildSwapTx(fillParams, options, requestParams);\n };\n\n return {\n getNFTOrdersRate,\n buildNFTOrderTx,\n buildSwapAndNFTOrderTx,\n };\n};\n\ntype CheckAndParseOrdersResult = Omit<CheckableOrderData, 'takerAmount'> & {\n totalTakerAmount: bigint;\n};\n\ntype CheckableOrderData = Pick<\n NFTOrderData,\n 'takerAsset' | 'makerAsset' | 'takerAmount' | 'maker'\n> & { taker?: NFTOrderData['taker'] };\n\nfunction checkAndParseOrders(\n orders: CheckableOrderData[]\n): CheckAndParseOrdersResult {\n assert(isFilledArray(orders), 'must pass at least 1 order');\n\n const { takerAssetsSet, makerAssetsSet, totalTakerAmount } = orders.reduce<\n Record<'takerAssetsSet' | 'makerAssetsSet', Set<string>> & {\n totalTakerAmount: bigint;\n }\n >(\n (accum, order) => {\n accum.takerAssetsSet.add(order.takerAsset.toLowerCase());\n accum.makerAssetsSet.add(order.makerAsset.toLowerCase());\n\n accum.totalTakerAmount =\n accum.totalTakerAmount + BigInt(order.takerAmount);\n return accum;\n },\n {\n takerAssetsSet: new Set(),\n makerAssetsSet: new Set(),\n totalTakerAmount: BigInt(0),\n }\n );\n\n assert(\n takerAssetsSet.size === 1,\n 'All orders must have the same takerAsset as destToken'\n );\n assert(makerAssetsSet.size === 1, 'All orders must have the same makerAsset');\n\n const [{ maker, taker, makerAsset, takerAsset }] = orders;\n\n return {\n totalTakerAmount,\n maker,\n taker,\n makerAsset: makerAsset.startsWith('0x')\n ? makerAsset\n : uintToAssetAddress(makerAsset),\n takerAsset: takerAsset.startsWith('0x')\n ? takerAsset\n : uintToAssetAddress(takerAsset),\n };\n}\n\n// extract asset address from makerAsset or takerAsset packed number encoded to contain AssetType\nfunction uintToAssetAddress(assetUint: BigIntAsString): Address {\n return (\n '0x' +\n (BigInt(assetUint) & ((BigInt(1) << BigInt(160)) - BigInt(1))).toString(16)\n );\n}\n","import type { ExtraFetchParams, FetcherFunction } from '../../types';\nimport type { AxiosStatic } from 'axios';\nimport { FetcherError } from '../misc';\n\nexport type AxiosRequirement = Pick<AxiosStatic, 'request' | 'isAxiosError'>;\n\nexport const constructFetcher =\n (axios: AxiosRequirement, extra?: ExtraFetchParams): FetcherFunction =>\n async (params) => {\n try {\n const { requestParams, ...rest } = params;\n // adding apiKey to headers if it's provided\n const headers = extra?.apiKey\n ? {\n ...extra.headers,\n 'X-API-KEY': extra.apiKey,\n ...rest.headers,\n ...requestParams?.headers,\n }\n : { ...extra?.headers, ...rest.headers, ...requestParams?.headers };\n\n const allParams = { ...rest, ...requestParams, headers };\n\n const { data } = await axios.request(allParams);\n\n return data;\n } catch (error: any) {\n if (axios.isAxiosError(error)) {\n // attach a more meaningful message and other props\n throw new FetcherError(error);\n }\n\n throw error;\n }\n };\n","import type { ExtraFetchParams, FetcherFunction } from '../../types';\nimport { FetcherError } from '../misc';\n\n// @TODO may not work with node-fetch\ntype Fetch = typeof fetch;\n\nexport const constructFetcher =\n (\n fetch: Fetch,\n extra?: ExtraFetchParams & { keepalive?: boolean }\n ): FetcherFunction =>\n async (params) => {\n try {\n const { url, method, requestParams } = params;\n const body = method === 'POST' ? JSON.stringify(params.data) : null;\n // Only JSON response for POST requests\n const POSTheaders =\n method === 'POST' && body\n ? {\n 'Content-Type': 'application/json',\n }\n : undefined;\n\n // adding apiKey to headers if it's provided\n const apiHeaders = extra?.apiKey\n ? { 'X-API-KEY': extra.apiKey }\n : undefined;\n\n // all headers combined\n const headers =\n POSTheaders ||\n apiHeaders ||\n params.headers ||\n requestParams?.headers ||\n extra?.headers\n ? {\n ...extra?.headers,\n ...apiHeaders,\n ...POSTheaders,\n ...params.headers,\n ...requestParams?.headers,\n }\n : undefined;\n\n const response = await fetch(url, {\n method,\n body,\n keepalive: extra?.keepalive,\n ...requestParams,\n headers,\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n // @TODO figure out if this works analogous to AxiosError, especially code ==? status\n throw new FetcherError({\n code: String(response.status),\n response: {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.entries()),\n config: { url, method },\n },\n message: response.statusText,\n isAxiosError: false,\n });\n }\n\n return data;\n } catch (error: any) {\n if (error instanceof FetcherError) throw error;\n throw new FetcherError(error);\n }\n };\n","import type {\n Address,\n ContractCallerFunctions,\n NoExtraKeysCheck,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport type {\n JsonRpcProvider,\n BaseProvider,\n JsonRpcSigner,\n} from '@ethersproject/providers';\nimport type { Signer } from '@ethersproject/abstract-signer';\nimport type {\n Contract as EthersV5Contract,\n ContractFunction as EthersContractFunctionV5,\n PopulatedTransaction as EthersPopulatedTransactionV5,\n PayableOverrides,\n CallOverrides,\n ContractTransaction,\n} from '@ethersproject/contracts';\n\nimport type { BigNumber as EthersBigNumberV5 } from '@ethersproject/bignumber';\n\nimport { assert } from 'ts-essentials';\n\nexport interface EthersV5ProviderDeps {\n ethersProviderOrSigner: BaseProvider | Signer;\n EthersContract: typeof EthersV5Contract; // passing Contract in allows not to include ethers as dependency\n}\n\nexport const constructEthersV5ContractCaller = (\n {\n ethersProviderOrSigner: providerOrSigner,\n EthersContract: Contract,\n }: EthersV5ProviderDeps,\n account?: Address\n): ContractCallerFunctions<ContractTransaction> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new Contract(address, abi, providerOrSigner);\n\n assertEthersContractHasMethodsV5(contract, contractMethod);\n // drop keys not in CallOverrides\n const { block, gas, ...restOverrides } = overrides;\n // reassign values to keys in CallOverrides\n const normalizedOverrides = {\n ...restOverrides,\n blockTag: block,\n gasLimit: gas,\n };\n\n // type FinalCallOverrides = normalizedOverrides has extra props ? never : normalizedOverrides\n type FinalCallOverrides = NoExtraKeysCheck<\n typeof normalizedOverrides,\n CallOverrides\n >;\n\n // enforce overrides shape ethers accepts\n // TS will break if normalizedOverrides type has any keys not also present in CallOverrides\n const callOverrides: FinalCallOverrides = normalizedOverrides;\n // returns whatever the Contract.method returns: BigNumber, string, boolean\n return contract.callStatic[contractMethod](...args, callOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<ContractTransaction> = async (\n params\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const signer =\n 'getSigner' in providerOrSigner\n ? providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const contract = new Contract(address, abi, signer);\n\n assertEthersContractHasMethodsV5(contract, contractMethod);\n // drop keys not in PayableOverrides\n const { gas, from, ...restOverrides } = overrides;\n // reassign values to keys in PayableOverrides\n const normalizedOverrides = {\n ...restOverrides,\n gasLimit: gas,\n };\n\n // type FinalPayableOverrides = normalizedOverrides has extra props ? never : normalizedOverrides\n type FinalPayableOverrides = NoExtraKeysCheck<\n typeof normalizedOverrides,\n PayableOverrides\n >;\n\n // enforce overrides shape ethers accepts\n // TS will break if normalizedOverrides type has any keys not also present in PayableOverrides\n const txOverrides: FinalPayableOverrides = normalizedOverrides;\n const txResponse: ContractTransaction = await contract[contractMethod](\n ...args,\n txOverrides\n );\n\n return txResponse;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const signer =\n 'getSigner' in providerOrSigner\n ? providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n assert(isTypedDataCapableSigner(signer), 'Signer can sign typed data');\n\n const { data, domain, types } = typedData;\n\n return signer._signTypedData(domain, types, data);\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\nfunction isEthersProvider(\n providerOrSigner: BaseProvider | Signer\n): providerOrSigner is BaseProvider {\n return '_isProvider' in providerOrSigner && providerOrSigner._isProvider;\n}\n\nfunction isEthersProviderWithSigner(\n providerOrSigner: JsonRpcProvider | BaseProvider | Signer\n): providerOrSigner is JsonRpcProvider {\n return isEthersProvider(providerOrSigner) && 'getSigner' in providerOrSigner;\n}\n\nfunction isEthersSigner(\n providerOrSigner: BaseProvider | Signer\n): providerOrSigner is Signer {\n return '_isSigner' in providerOrSigner && providerOrSigner._isSigner;\n}\n\nfunction isTypedDataCapableSigner(\n signer: Signer\n): signer is Signer & Pick<JsonRpcSigner, '_signTypedData'> {\n return '_signTypedData' in signer;\n}\n\n/// ethers v5\ntype EthersContractWithMethodV5<T extends string> = EthersV5Contract & {\n readonly [method in T]: EthersContractFunctionV5;\n} & {\n readonly functions: { [method in T]: EthersContractFunctionV5 };\n\n readonly callStatic: { [method in T]: EthersContractFunctionV5 };\n readonly estimateGas: {\n [method in T]: EthersContractFunctionV5<EthersBigNumberV5>;\n };\n readonly populateTransaction: {\n [method in T]: EthersContractFunctionV5<EthersPopulatedTransactionV5>;\n };\n};\n\nfunction ethersContractHasMethodsV5<T extends string>(\n contract: EthersV5Contract,\n ...methods: T[]\n): contract is EthersContractWithMethodV5<T> {\n return methods.every((method) => typeof contract[method] === 'function');\n}\n\nfunction assertEthersContractHasMethodsV5<T extends string>(\n contract: EthersV5Contract,\n ...methods: T[]\n): asserts contract is EthersContractWithMethodV5<T> {\n assert(\n ethersContractHasMethodsV5(contract, ...methods),\n `Contract must have methods: ${methods.join(', ')}`\n );\n}\n","import type {\n Address,\n ContractCallerFunctions,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport { assert } from 'ts-essentials';\nimport type {\n JsonRpcProvider,\n Signer,\n ContractRunner,\n Contract as EthersContract,\n Overrides,\n ContractTransactionResponse,\n} from 'ethers';\n\nexport interface EthersV6ProviderDeps {\n ethersV6ProviderOrSigner: ContractRunner | Signer;\n EthersV6Contract: typeof EthersContract; // passing Contract in allows not to include ethers as dependency\n}\n\nexport const constructContractCaller = (\n {\n ethersV6ProviderOrSigner: providerOrSigner,\n EthersV6Contract: Contract,\n }: EthersV6ProviderDeps,\n account?: Address\n): ContractCallerFunctions<ContractTransactionResponse> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new Contract(address, abi, providerOrSigner);\n\n // drop keys not in CallOverrides\n const { block, gas, ...restOverrides } = overrides;\n // reassign values to keys in CallOverrides\n const normalizedOverrides: Overrides = {\n ...restOverrides,\n blockTag: block,\n gasLimit: gas,\n };\n\n const callableContractFunction = contract.getFunction(contractMethod);\n\n // returns whatever the Contract[\"method\"].staticCall returns: BigNumber, string, boolean\n return callableContractFunction.staticCall(...args, normalizedOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<\n ContractTransactionResponse\n > = async (params) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const signer =\n 'getSigner' in providerOrSigner\n ? await providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const contract = new Contract(address, abi, signer);\n\n // drop keys not in PayableOverrides\n const { gas, from, ...restOverrides } = overrides;\n // reassign values to keys in PayableOverrides\n const normalizedOverrides: Overrides = {\n ...restOverrides,\n gasLimit: gas,\n };\n\n // if no method for contractMethod, ethers will throw\n const callableContractFunction = contract.getFunction(contractMethod);\n\n const txResponse = await callableContractFunction.send(\n ...args,\n normalizedOverrides\n );\n\n return txResponse;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n isEthersProviderWithSigner(providerOrSigner) ||\n isEthersSigner(providerOrSigner),\n 'ethers must be an instance of Signer or JsonRpcProvider to create a signer'\n );\n\n const signer =\n 'getSigner' in providerOrSigner\n ? await providerOrSigner.getSigner(account)\n : providerOrSigner;\n\n const { data, domain, types } = typedData;\n\n return signer.signTypedData(domain, types, data);\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\nfunction isEthersProviderWithSigner(\n providerOrSigner: JsonRpcProvider | ContractRunner | Signer\n): providerOrSigner is JsonRpcProvider {\n return 'getSigner' in providerOrSigner;\n}\n\nfunction isEthersSigner(\n providerOrSigner: ContractRunner | Signer\n): providerOrSigner is Signer {\n return 'getAddress' in providerOrSigner;\n}\n","import { assert } from 'ts-essentials';\nimport { TypedDataField } from '../../methods/common/orders/buildOrderData';\n\n// regex from @ethersproject/hash TypedDataEncoder.constructor\n// may be overly strict, but reliable\nconst baseTypeRegex = /^([^\\x5b]*)(\\x5b|$)/;\n\nexport function findPrimaryType<P extends string>(\n types: Record<P, TypedDataField[]>\n): P {\n const candidates = Object.keys(types) as P[];\n const candidatesSet = new Set(candidates);\n\n candidates.forEach((candidate) => {\n const typedDataFields = types[candidate];\n if (!typedDataFields) return;\n\n typedDataFields.forEach(({ type }) => {\n // Get the base type (drop any array specifiers)\n const baseType = type.match(baseTypeRegex)?.[1];\n if (!baseType) return;\n\n // if type was referred to as a child of another type, it can't be the primaryType\n candidatesSet.delete(baseType as P);\n });\n });\n\n const [primaryType] = Array.from(candidatesSet);\n\n assert(\n primaryType,\n `No primary type found in SignableTypedData types, ${JSON.stringify(types)}`\n );\n\n return primaryType;\n}\n","import type {\n Address,\n ContractCallerFunctions,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport type { PayableCallOptions, AbiItem } from 'web3';\nimport type Web3 from 'web3';\nimport type { ContractAbi, Contract as Web3Contract } from 'web3';\nimport type { PayableTxOptions } from 'web3-eth-contract';\nimport { assert } from 'ts-essentials';\nimport { findPrimaryType } from './helpers';\n\ntype ContractMethodRes = ReturnType<Web3ContractSendMethod>;\nexport type Web3UnpromiEvent = Pick<\n ReturnType<ContractMethodRes['send']>,\n 'on' | 'once'\n>;\n\ntype SendOptions = PayableTxOptions;\ntype CallOptions = PayableCallOptions;\n\nexport const constructContractCaller = (\n web3: Web3,\n account?: Address\n): ContractCallerFunctions<Web3UnpromiEvent> => {\n const staticCall: StaticContractCallerFn = async (params) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new web3.eth.Contract(\n abi as AbiItem[], // FIXME abi types ethers dependant\n address\n );\n\n assertWeb3ContractHasMethods(contract, contractMethod);\n\n const { block, gas, value, ...restOverrides } = overrides;\n\n const normalizedOverrides: CallOptions = {\n ...restOverrides,\n gas: gas?.toString(10),\n value: value?.toString(10),\n };\n\n return contract.methods[contractMethod](...args).call(normalizedOverrides);\n };\n\n const transactCall: TransactionContractCallerFn<Web3UnpromiEvent> = async (\n params\n ) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n assert(account, 'account must be specified to send transactions');\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const contract = new web3.eth.Contract(\n abi as unknown as AbiItem[], // FIXME\n address\n );\n\n assertWeb3ContractHasMethods(contract, contractMethod);\n\n const { gas, from, value, nonce, ...restOverrides } = overrides;\n\n const _from = from || account;\n\n assert(_from, 'from is required');\n\n const normalizedOverrides: SendOptions = {\n ...restOverrides,\n from: _from,\n gas: gas?.toString(10),\n value: value?.toString(10),\n nonce: nonce?.toString(10),\n };\n\n const preparedCall = contract.methods[contractMethod](...args);\n\n const promiEvent = preparedCall.send(normalizedOverrides);\n\n // can't just return promiEvent, because async function returns a Promise<PromiEvent>\n // and await Promise<PromiEvent> automatically awaits the value of PromiEvent,\n // that is await Promise<PromiEvent> = Awaited<PromiEvent> that doesn't have .on|once\n // so that functionality becomes lost\n // transactCall can be made sync, but approve has to be async to await getSpender()\n const unpromiEvent: Web3UnpromiEvent = {\n on: promiEvent.on.bind(promiEvent),\n once: promiEvent.once.bind(promiEvent),\n };\n\n return unpromiEvent;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(web3.currentProvider, 'web3.currentProvider is not set');\n\n assert(account, 'account must be specified to sign data');\n\n const { data, domain, types } = typedData;\n\n const _typedData = {\n types: {\n EIP712Domain: [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n ],\n ...types,\n },\n primaryType: findPrimaryType(types),\n domain,\n message: data,\n };\n\n // account must be among unlocked accounts\n const signature = await web3.eth.signTypedData(account, _typedData as any);\n return signature;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\n/// web3@4\ntype Web3ContractSendMethod = Web3Contract<ContractAbi>['methods'][string];\n\ntype Web3ContractWithMethod<T extends string> = Web3Contract<ContractAbi> & {\n methods: { [method in T]: Web3ContractSendMethod };\n};\n\nfunction web3ContractHasMethods<T extends string>(\n contract: Web3Contract<ContractAbi>,\n ...methods: T[]\n): contract is Web3ContractWithMethod<T> {\n return methods.every(\n (method) => typeof contract.methods[method] === 'function'\n );\n}\n\nfunction assertWeb3ContractHasMethods<T extends string>(\n contract: Web3Contract<ContractAbi>,\n ...methods: T[]\n): asserts contract is Web3ContractWithMethod<T> {\n assert(\n web3ContractHasMethods(contract, ...methods),\n `Contract must have methods: ${methods.join(', ')}`\n );\n}\n","import type {\n Address,\n ContractCallerFunctions,\n ContractCallStaticInput,\n SignTypedDataContractCallerFn,\n StaticContractCallerFn,\n TransactionContractCallerFn,\n} from '../../types';\nimport { assert, MarkOptional } from 'ts-essentials';\n\nimport type {\n PublicActions,\n WalletActions,\n Hex,\n BlockTag,\n Chain,\n Transport,\n TypedDataDomain,\n Account,\n} from 'viem';\nimport { findPrimaryType } from './helpers';\nimport { TransactionParams } from '../../methods/swap/transaction';\n\nexport type MinViemClient = Partial<\n Pick<PublicActions<Transport, Chain>, 'readContract'> &\n Pick<\n WalletActions<Chain>,\n 'writeContract' | 'signTypedData' | 'signMessage'\n >\n> & { account?: Account };\n\nexport const constructContractCaller = (\n viemClient: MinViemClient,\n account?: Address\n): ContractCallerFunctions<Hex> => {\n const staticCall: StaticContractCallerFn = async <\n T,\n M extends string = string\n >(\n params: ContractCallStaticInput<M>\n ): Promise<T> => {\n assert(\n viemClient.readContract,\n 'Viem client must have readContract Public Action'\n );\n const { address, abi, contractMethod, args, overrides } = params;\n\n const { block } = overrides;\n\n const { blockNumber, blockTag } =\n typeof block === 'number'\n ? { blockNumber: BigInt(block) }\n : { blockTag: block as BlockTag };\n\n const result = viemClient.readContract({\n account: viemClient.account || (account as Hex),\n address: address as Hex,\n abi,\n functionName: contractMethod,\n args,\n blockTag,\n blockNumber,\n });\n\n return result as T; // can't get specific type for generic abi & method\n };\n\n const transactCall: TransactionContractCallerFn<Hex> = async (params) => {\n assert(account, 'account must be specified sign transactions');\n assert(\n viemClient.writeContract,\n 'Viem client must have writeContract Wallet Action'\n );\n\n const { address, abi, contractMethod, args, overrides } = params;\n\n const viemTxParams = txParamsToViemTxParams({\n ...overrides,\n to: address,\n gas: overrides.gas?.toString(10),\n value: overrides.value?.toString(10),\n });\n\n const gasPriceParams =\n 'maxFeePerGas' in viemTxParams\n ? {\n maxFeePerGas: viemTxParams.maxFeePerGas,\n maxPriorityFeePerGas: viemTxParams.maxPriorityFeePerGas,\n }\n : 'gasPrice' in viemTxParams\n ? { gasPrice: viemTxParams.gasPrice }\n : {};\n\n const txHash = await viemClient.writeContract({\n // either `viemClient` has account assigned to it,\n // or the provider `viemClient` was created with must control `account` (viemClient.getAddresses()[0]===account);\n // otherwise breaks with ` ProviderError: Unknown account 0x...`\n account: viemClient.account || (account as Hex),\n address: address as Hex,\n abi,\n functionName: contractMethod,\n args: argsToViemArgs(args),\n value: viemTxParams.value,\n gas: viemTxParams.gas,\n // ...viemTxParams,\n // account: (overrides.from || account) as Hex,\n nonce: overrides.nonce,\n ...gasPriceParams,\n });\n\n return txHash;\n };\n\n const signTypedDataCall: SignTypedDataContractCallerFn = async (\n typedData\n ) => {\n assert(account, 'account must be specified to create a signer');\n assert(\n viemClient.signTypedData,\n 'Viem client must have signTypedData Wallet Action'\n );\n\n const { data, domain, types } = typedData;\n\n const primaryType = findPrimaryType(types);\n\n const chainId =\n domain.chainId === undefined ? undefined : Number(domain.chainId);\n const viemDomain: TypedDataDomain = {\n chainId,\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract as Hex,\n salt: domain.salt as Hex,\n };\n\n const signature = await viemClient.signTypedData({\n // either `viemClient` has account assigned to it,\n // or the provider `viemClient` was created with must control `account` (viemClient.getAddresses()[0]===account)\n account: viemClient.account || (account as Hex),\n domain: viemDomain,\n types,\n primaryType,\n message: data,\n });\n\n return signature;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n};\n\ntype ViemTxParams = {\n to: Hex;\n data?: Hex;\n value?: bigint;\n nonce?: number;\n gas?: bigint;\n} & (\n | { maxFeePerGas?: bigint; maxPriorityFeePerGas?: bigint }\n | { gasPrice?: bigint }\n);\n\nexport function txParamsToViemTxParams(\n txParams: Omit<\n MarkOptional<TransactionParams, 'data' | 'value'>,\n 'chainId' | 'from'\n >\n): ViemTxParams {\n const gas = txParams.gas !== undefined ? BigInt(txParams.gas) : undefined;\n const gasPrice =\n txParams.gasPrice !== undefined ? BigInt(txParams.gasPrice) : undefined;\n const maxFeePerGas =\n txParams.maxFeePerGas !== undefined\n ? BigInt(txParams.maxFeePerGas)\n : undefined;\n const maxPriorityFeePerGas =\n txParams.maxPriorityFeePerGas !== undefined\n ? BigInt(txParams.maxPriorityFeePerGas)\n : undefined;\n\n const viemTxParams = {\n to: txParams.to as Hex,\n data: txParams.data as Hex,\n value: txParams.value !== undefined ? BigInt(txParams.value) : undefined,\n gas,\n ...(txParams.maxFeePerGas !== undefined\n ? { maxFeePerGas, maxPriorityFeePerGas }\n : { gasPrice }),\n };\n return viemTxParams;\n}\n\nfunction argsToViemArgs(args: any[]): any[] {\n return args.map((arg) => {\n if (typeof arg === 'string') {\n if (arg.startsWith('0x')) {\n return arg;\n }\n const asNumber = Number(arg);\n if (Number.isNaN(asNumber)) {\n return arg;\n }\n return BigInt(asNumber);\n }\n return arg;\n });\n}\n","import type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport { constructGetSpender } from '../swap/spender';\n\ntype GetDeltaContract = (\n requestParams?: RequestParameters\n) => Promise<Address | null>;\nexport type GetDeltaContractFunctions = {\n /** @description returns ParaswapDelta contract address when Delta is available on current chain */\n getDeltaContract: GetDeltaContract;\n};\n\nexport const constructGetDeltaContract = (\n options: ConstructFetchInput\n): GetDeltaContractFunctions => {\n // analogous to getSpender() but for Delta Orders Contract = ParaswapDelta\n\n const { getContracts } = constructGetSpender(options);\n\n const getDeltaContract: GetDeltaContract = async (requestParams) => {\n const { ParaswapDelta } = await getContracts(requestParams);\n return ParaswapDelta || null;\n };\n\n return { getDeltaContract };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\n\nexport type PartnerFeeResponse = {\n partnerFee: number; // in %, e.g. 0.12\n partnerAddress: string;\n takeSurplus: boolean;\n};\n\ntype PartnerFeeQueryParams = {\n partner: string;\n};\n\ntype GetPartnerFee = (\n options: PartnerFeeQueryParams,\n requestParams?: RequestParameters\n) => Promise<PartnerFeeResponse>;\n\nexport type GetPartnerFeeFunctions = {\n getPartnerFee: GetPartnerFee;\n};\n\nexport const constructGetPartnerFee = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetPartnerFeeFunctions => {\n const partnerFeeUrl = `${apiURL}/prices/partnerfee/${chainId}` as const;\n\n // going on the assumption that one `partner` will correspond to one `partnerFee` during the lifetime of SDK instance,\n // to avoid unnecessary network requests\n const cachedPartnerFee = new Map<string, PartnerFeeResponse>();\n\n const getPartnerFee: GetPartnerFee = async (options, requestParams) => {\n if (cachedPartnerFee.has(options.partner)) {\n return cachedPartnerFee.get(options.partner)!;\n }\n\n const search = constructSearchString<PartnerFeeQueryParams>(options);\n\n const fetchURL = `${partnerFeeUrl}/${search}` as const;\n\n const data = await fetcher<PartnerFeeResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n cachedPartnerFee.set(options.partner, data);\n\n return data;\n };\n\n return {\n getPartnerFee,\n };\n};\n","import { MarkOptional } from 'ts-essentials';\nimport { Domain, ZERO_ADDRESS } from '../../common/orders/buildOrderData';\nimport { Bridge, DeltaAuctionOrder } from './types';\n\n// Order(address owner,address beneficiary,address srcToken,address destToken,uint256 srcAmount,uint256 destAmount,uint256 deadline,uint256 nonce,bytes permit, bridge Bridge)\";\nconst SWAP_ORDER_EIP_712_TYPES = {\n Order: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'srcAmount', type: 'uint256' },\n { name: 'destAmount', type: 'uint256' },\n { name: 'expectedAmount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'kind', type: 'uint8' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n },\n ],\n};\n\nexport type SignableDeltaOrderData = {\n types: {\n Order: typeof SWAP_ORDER_EIP_712_TYPES.Order;\n Bridge: typeof SWAP_ORDER_EIP_712_TYPES.Bridge;\n };\n domain: Domain;\n data: DeltaAuctionOrder;\n};\n\ntype SignDeltaOrderInput = {\n orderInput: DeltaAuctionOrder;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function produceDeltaOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: SignDeltaOrderInput): SignableDeltaOrderData {\n const typedData = {\n types: {\n Order: SWAP_ORDER_EIP_712_TYPES.Order,\n Bridge: SWAP_ORDER_EIP_712_TYPES.Bridge,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: orderInput,\n };\n\n return typedData;\n}\n\nexport type DeltaOrderDataInput = MarkOptional<\n Omit<DeltaAuctionOrder, 'partnerAndFee'>,\n 'beneficiary' | 'deadline' | 'nonce' | 'permit'\n>;\n\nexport type BuildDeltaOrderDataInput = MarkOptional<\n DeltaOrderDataInput,\n 'metadata'\n> & {\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n bridge: Bridge;\n};\n\n// default deadline = 1 hour for now (may be changed later)\nexport const DELTA_DEFAULT_EXPIRY = 60 * 60; // seconds\n\nexport function buildDeltaSignableOrderData({\n owner,\n beneficiary = owner,\n\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n\n deadline = Math.floor(Date.now() / 1000 + DELTA_DEFAULT_EXPIRY),\n nonce = Date.now().toString(10), // random enough to not cause collisions\n\n permit = '0x',\n\n kind,\n metadata = '0x',\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n\n chainId,\n paraswapDeltaAddress,\n bridge,\n}: BuildDeltaOrderDataInput): SignableDeltaOrderData {\n const orderInput: DeltaAuctionOrder = {\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee: producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n }),\n bridge,\n kind,\n metadata,\n };\n\n return produceDeltaOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n });\n}\n\ntype ProducePartnerAndFeeInput = {\n partnerFeeBps: number;\n partnerAddress: string;\n partnerTakesSurplus: boolean;\n capSurplus: boolean;\n};\n\n// fee and address are encoded together\nfunction producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n}: ProducePartnerAndFeeInput): string {\n const capSurplusShifted = BigInt(capSurplus) << BigInt(9);\n if (partnerAddress === ZERO_ADDRESS) {\n return capSurplusShifted.toString(10);\n } else {\n const partnerAndFee =\n (BigInt(partnerAddress) << BigInt(96)) |\n BigInt(partnerFeeBps.toFixed(0)) |\n (BigInt(partnerTakesSurplus) << BigInt(8)) |\n capSurplusShifted;\n\n return partnerAndFee.toString(10);\n }\n}\n","import { SwapSide } from '../../../constants';\n\nenum OrderKind {\n Sell = 0,\n Buy = 1,\n}\n\nexport const SwapSideToOrderKind = {\n [SwapSide.SELL]: OrderKind.Sell,\n [SwapSide.BUY]: OrderKind.Buy,\n} as const;\n\nexport type DeltaAuctionOrder = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary: string; // beneficiary==owner if no transferTo\n /** @description The address of the src token */\n srcToken: string; // lowercase\n /** @description The address of the dest token */\n destToken: string; // lowercase\n /** @description The amount of src token to swap */\n srcAmount: string; // wei\n /** @description The minimum amount of dest token to receive */\n destAmount: string; // wei\n /** @description The expected amount of token to receive */\n expectedAmount: string; // wei\n /** @description The kind of the order */\n kind: OrderKind;\n /** @description Metadata for the order, hex string */\n metadata: string;\n /** @description The deadline for the order */\n deadline: number; // seconds\n /** @description The nonce of the order */\n nonce: string; // can be random, can even be Date.now()\n /** @description Optional permit signature for the src token */\n permit: string; //can be \"0x\"\n /** @description Encoded partner address, fee bps, and flags for the order. partnerAndFee = (partner << 96) | (partnerTakesSurplus << 8) | fee in bps (max fee is 2%) */\n partnerAndFee: string;\n /** @description The bridge input */\n bridge: Bridge;\n};\n\nexport type Bridge = {\n protocolSelector: string; // Hex string\n destinationChainId: number;\n /** @description The address of the output token. Same as Order.destToken but on destination chain, so can still be a different address */\n outputToken: string;\n scalingFactor: number;\n\n /** @description Data specific to the protocol */\n protocolData: string; // Hex string\n};\n\nexport type DeltaAuctionStatus =\n | 'NOT_STARTED'\n | 'AWAITING_PRE_SIGNATURE'\n | 'RUNNING'\n | 'EXECUTING'\n | 'EXECUTED'\n | 'FAILED'\n | 'EXPIRED'\n | 'CANCELLED'\n | 'CANCELLING'\n | 'SUSPENDED';\n\ntype DeltaAuctionTransaction = {\n id: string;\n hash: string;\n orderId: string;\n bidId: string | null;\n blockNumber: number;\n blockHash: string;\n blockTimestamp: string | null; // ISO string, null for older Orders\n gasUsed: bigint;\n gasPrice: bigint;\n blobGasUsed: bigint;\n blobGasPrice: bigint;\n index: number;\n status: number;\n from: string;\n to: string;\n receivedAmount: string;\n receivedAmountUSD: number;\n spentAmount: string;\n spentAmountUSD: number;\n filledPercent: number; // in base points\n protocolFee: string;\n partnerFee: string;\n agent: string;\n auctionId: string;\n};\n\nexport type DeltaAuction = {\n id: string;\n deltaVersion: string; // 1.0 or 2.0 currently\n user: string;\n signature: string;\n status: DeltaAuctionStatus;\n order: DeltaAuctionOrder;\n orderHash: string | null; // not available on old Orders only\n transactions: DeltaAuctionTransaction[];\n chainId: number;\n partner: string;\n referrerAddress: string | null;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n partiallyFillable: boolean;\n\n excludeAgents: string[] | null;\n includeAgents: string[] | null;\n\n bridgeMetadata: BridgeMetadata | null;\n bridgeStatus: BridgeStatus | null;\n\n // @TODO only returned after POST Order so far\n // orderVersion: string; // \"2.0.0\"\n // deltaGasOverhead: number;\n\n type: 'MARKET' | 'LIMIT'; // @TODO when available in API for individual /order/:hash|:id\n};\n\nexport type BridgeMetadata = {\n /** @description The amount that user should expect to get */\n outputAmount: string;\n /** @description The cross-chain deadline. If deadline passes, the bridgeStatus would be expired */\n fillDeadline: number;\n /** @description The deposit id */\n depositId: number;\n /** @description The transaction hash on the destination chain that fulfilled the order. When bridgeStatus='filled' */\n fillTx?: string;\n /** @description The transaction hash on the source chain that refunded the deposit. When bridgeStatus='refunded' */\n depositRefundTxHash?: string;\n};\n\n// refunded is basically failed\nexport type BridgeStatus = 'pending' | 'filled' | 'expired' | 'refunded';\n\n//// available on BridgePrice ////\n\ntype BridgeQuoteFee = {\n feeToken: string;\n amount: string;\n amountInSrcToken: string;\n amountInUSD: string;\n};\n\nexport type BridgePriceInfo = {\n protocolName: string;\n destAmountAfterBridge: string;\n destUSDAfterBridge: string;\n fees: BridgeQuoteFee[];\n estimatedTimeMs: number;\n fastest: boolean;\n bestReturn: boolean;\n recommended: boolean;\n};\n","import type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { BridgePrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildDeltaSignableOrderData,\n type BuildDeltaOrderDataInput,\n type SignableDeltaOrderData,\n} from './helpers/buildDeltaOrderData';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport { SwapSide } from '../../constants';\nimport type { MarkOptional } from 'ts-essentials';\nimport { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nexport type { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\n\nexport type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type BuildDeltaOrderDataParams = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary?: string; // beneficiary==owner if no transferTo\n /** @description The address of the src token */\n srcToken: string; // lowercase\n /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */\n destToken: string; // lowercase\n /** @description The amount of src token to swap */\n srcAmount: string; // wei\n /** @description The minimum amount of dest token to receive */\n destAmount: string; // wei, deltaPrice.destAmount - slippage\n /** @description The deadline for the order */\n deadline?: number; // seconds\n /** @description The nonce of the order */\n nonce?: number | string; // can be random, can even be Date.now()\n /** @description Optional permit signature for the src token https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits-order#supported-permits */\n permit?: string; //can be \"0x\"\n /** @description Partner string. */\n partner?: string;\n\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) */\n deltaPrice: MarkOptional<\n Pick<\n BridgePrice,\n | 'destAmount'\n | 'partner'\n | 'partnerFee'\n | 'destToken'\n | 'srcAmount'\n | 'bridge'\n >,\n 'partner' | 'partnerFee'\n >;\n\n /** @description partner fee in basis points (bps), 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description partner address */\n partnerAddress?: string;\n /** @description take surplus */\n partnerTakesSurplus?: boolean;\n\n /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n\n /** @description The side of the order. Default is SELL */\n side?: SwapSideUnion;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n};\n\ntype BuildDeltaOrder = (\n buildOrderParams: BuildDeltaOrderDataParams,\n requestParams?: RequestParameters\n) => Promise<SignableDeltaOrderData>;\n\nexport type BuildDeltaOrderFunctions = {\n /** @description Build Orders to be posted to Delta API for execution */\n buildDeltaOrder: BuildDeltaOrder;\n};\n\nexport const constructBuildDeltaOrder = (\n options: ConstructFetchInput\n): BuildDeltaOrderFunctions => {\n const { chainId } = options;\n\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n // cached internally for `partner`\n const { getPartnerFee } = constructGetPartnerFee(options);\n\n const buildDeltaOrder: BuildDeltaOrder = async (options, requestParams) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${chainId}`);\n }\n\n ////// Partner logic //////\n\n // externally supplied partner fee data takes precedence\n let partnerAddress = options.partnerAddress;\n let partnerFeeBps =\n options.partnerFeeBps ??\n (options.deltaPrice.partnerFee\n ? options.deltaPrice.partnerFee * 100\n : undefined);\n let partnerTakesSurplus = options.partnerTakesSurplus;\n\n // if fee given, takeSurplus is ignored\n const feeOrTakeSurplusSupplied =\n partnerFeeBps !== undefined || partnerTakesSurplus !== undefined;\n\n if (partnerAddress === undefined || feeOrTakeSurplusSupplied) {\n const partner = options.partner || options.deltaPrice.partner;\n if (!partner) {\n // if no partner given in options or deltaPrice, default partnerAddress to zero,\n // unless supplied explicitly\n partnerAddress = partnerAddress ?? ZERO_ADDRESS;\n } else {\n const partnerFeeResponse = await getPartnerFee(\n { partner },\n requestParams\n );\n\n partnerAddress = partnerAddress ?? partnerFeeResponse.partnerAddress;\n // deltaPrice.partnerFee and partnerFeeResponse.partnerFee should be the same, but give priority to externally provided\n partnerFeeBps = partnerFeeBps ?? partnerFeeResponse.partnerFee;\n partnerTakesSurplus =\n partnerTakesSurplus ?? partnerFeeResponse.takeSurplus;\n }\n }\n\n partnerFeeBps = partnerFeeBps ?? 0;\n partnerTakesSurplus = partnerTakesSurplus ?? false;\n\n const swapSide = options.side ?? SwapSide.SELL;\n\n const expectedAmount =\n swapSide === SwapSide.SELL\n ? options.deltaPrice.destAmount\n : options.deltaPrice.srcAmount;\n\n const input: BuildDeltaOrderDataInput = {\n owner: options.owner,\n beneficiary: options.beneficiary,\n srcToken: options.srcToken,\n // for some cases of WETH->ETH crosschain swaps, the destToken is changed to WETH or ETH,\n // this is already reflected in deltaPrice\n destToken: options.deltaPrice.destToken,\n srcAmount: options.srcAmount,\n destAmount: options.destAmount,\n expectedAmount,\n deadline: options.deadline,\n nonce: options.nonce?.toString(10),\n permit: options.permit,\n kind: SwapSideToOrderKind[swapSide],\n metadata: options.metadata,\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n\n capSurplus: options.capSurplus,\n\n bridge: options.deltaPrice.bridge, // ZERO_BRIDGE for same-chain Orders\n };\n\n return buildDeltaSignableOrderData(input);\n };\n\n return {\n buildDeltaOrder,\n };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { DeltaAuctionOrder, DeltaAuction } from './helpers/types';\n\nexport type DeltaOrderToPost = {\n /** @description Partner string */\n partner?: string;\n /** @description Referrer address */\n referrerAddress?: string;\n order: DeltaAuctionOrder;\n /** @description Signature of the order from order.owner address. EOA signatures must be submitted in ERC-2098 Compact Representation. */\n signature: string;\n chainId: number;\n /** @description designates the Order as being able to partially filled, as opposed to fill-or-kill */\n partiallyFillable?: boolean;\n\n /** @description Type of the order. MARKET or LIMIT. Default is MARKET */\n type?: 'MARKET' | 'LIMIT';\n\n includeAgents?: string[];\n excludeAgents?: string[];\n};\n\nexport type PostDeltaOrderParams = Omit<DeltaOrderToPost, 'chainId'>;\n\nexport type DeltaOrderApiResponse = Omit<DeltaAuction, 'transactions'> & {\n orderVersion: string; // \"2.0.0\"\n deltaGasOverhead: number; // @TODO may be removed\n type: 'MARKET' | 'LIMIT';\n};\n\ntype PostDeltaOrder = (\n postData: PostDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderApiResponse>;\n\nexport type PostDeltaOrderFunctions = {\n postDeltaOrder: PostDeltaOrder;\n};\n\nexport const constructPostDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postDeltaOrder: PostDeltaOrder = (postData, requestParams) => {\n const deltaOrderToPost: DeltaOrderToPost = { ...postData, chainId };\n\n return fetcher<DeltaOrderApiResponse>({\n url: postOrderUrl,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postDeltaOrder };\n};\n","import type { SignableDeltaOrderData } from './buildDeltaOrderData';\n\nexport function sanitizeDeltaOrderData({\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n bridge,\n kind,\n metadata,\n}: SignableDeltaOrderData['data'] &\n Record<string, any>): SignableDeltaOrderData['data'] {\n return {\n owner,\n beneficiary,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n bridge,\n kind,\n metadata,\n };\n}\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\nimport { sanitizeDeltaOrderData } from './helpers/misc';\n\ntype SignDeltaOrder = (\n signableOrderData: SignableDeltaOrderData\n) => Promise<string>;\n\nexport type SignDeltaOrderFunctions = {\n signDeltaOrder: SignDeltaOrder;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignDeltaOrderFunctions => {\n const signDeltaOrder: SignDeltaOrder = async (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...typedData,\n data: sanitizeDeltaOrderData(typedData.data),\n };\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceDeltaOrderTypedData,\n SignableDeltaOrderData,\n} from './helpers/buildDeltaOrderData';\nimport { sanitizeDeltaOrderData } from './helpers/misc';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { DeltaAuctionOrder } from './helpers/types';\n\ntype HashDeltaOrderTypedData = (\n signableOrderData: SignableDeltaOrderData\n) => string;\n\ntype HashDeltaOrder = (\n orderData: DeltaAuctionOrder,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type SetDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignDeltaOrder<T> = (\n signableOrderData: SignableDeltaOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignDeltaOrderFunctions<T> = {\n hashDeltaOrderTypedData: HashDeltaOrderTypedData;\n hashDeltaOrder: HashDeltaOrder;\n setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T>;\n preSignDeltaOrder: PreSignDeltaOrder<T>;\n};\n\nconst PreSignatureModuleAbi = [\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: 'orderHash',\n type: 'bytes32',\n },\n {\n internalType: 'bool',\n name: 'preSigned',\n type: 'bool',\n },\n ],\n name: 'setPreSignature',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructPreSignDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignDeltaOrderFunctions<T> => {\n const hashDeltaOrderTypedData: HashDeltaOrderTypedData = (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...typedData,\n data: sanitizeDeltaOrderData(typedData.data),\n };\n\n const orderHash = produceDeltaOrderHash(typedDataOnly);\n\n return orderHash;\n };\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashDeltaOrder: HashDeltaOrder = async (orderData, requestParams) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const typedData = produceDeltaOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n });\n return hashDeltaOrderTypedData(typedData);\n };\n\n const setDeltaOrderPreSignature: SetDeltaOrderPreSignature<T> = async (\n orderHash,\n overrides = {},\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: PreSignatureModuleAbi,\n contractMethod: 'setPreSignature',\n args: [orderHash, true],\n overrides,\n });\n\n return res;\n };\n\n const preSignDeltaOrder: PreSignDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashDeltaOrderTypedData(signableOrderData);\n const res = await setDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashDeltaOrderTypedData,\n hashDeltaOrder,\n setDeltaOrderPreSignature,\n preSignDeltaOrder,\n };\n};\n\nexport function produceDeltaOrderHash(\n typedData: SignableDeltaOrderData\n): string {\n return hashTypedData({\n domain: {\n name: typedData.domain.name,\n version: typedData.domain.version,\n chainId: typedData.domain.chainId,\n verifyingContract: typedData.domain.verifyingContract as `0x${string}`,\n },\n types: typedData.types,\n primaryType: findPrimaryType(typedData.types),\n message: typedData.data,\n });\n}\n","import { Prettify } from 'viem';\nimport { Bridge } from '../..';\nimport { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n} from '../../types';\nimport { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nimport { BridgePriceInfo } from './helpers/types';\n\ntype SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type DeltaPriceParams = {\n /** @description Source Token Address. Not Native Token */\n srcToken: string;\n /** @description Destination Token Address */\n destToken: string;\n /** @description srcToken amount in wei */\n amount: string;\n /** @description Source Token Decimals */\n srcDecimals: number;\n /** @description Destination Token Decimals */\n destDecimals: number;\n /** @description User's Wallet Address */\n userAddress?: string;\n /** @description Beneficiary Address */\n beneficiary?: string; // beneficiary==owner if no transferTo\n /** @description Partner string. */\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n /** @description SELL or BUY, default is SELL */\n side?: SwapSideUnion;\n\n includeAgents?: string[];\n excludeAgents?: string[];\n includeBridges?: string[];\n excludeBridges?: string[];\n\n /** @description Allow swap on destChain after bridge. Default is true. */\n allowBridgeAndSwap?: boolean;\n};\n\ntype DeltaPriceQueryOptions = Omit<\n DeltaPriceParams,\n 'includeAgents' | 'excludeAgents' | 'includeBridges' | 'excludeBridges'\n> & {\n chainId: number; // will return error from API on unsupported chains\n includeAgents?: string;\n excludeAgents?: string;\n includeBridges?: string;\n excludeBridges?: string;\n};\n\n// for same-chain Orders, all 0 params\nexport const DEFAULT_BRIDGE = {\n protocolSelector: '0x00000000', // 4 bytes\n destinationChainId: 0,\n outputToken: ZERO_ADDRESS,\n scalingFactor: 0,\n protocolData: '0x',\n} as const satisfies Bridge;\n\nexport type DeltaPrice = {\n srcToken: string;\n destToken: string;\n srcAmount: string;\n /** @description Available for BUY side */\n srcAmountBeforeFee?: string;\n destAmount: string;\n /** @description Available for SELL side */\n destAmountBeforeFee?: string;\n /** @description amount of the final outcome token */\n receivedDestAmount: string;\n receivedDestUSD: string;\n /** @description Available for SELL side */\n receivedDestAmountBeforeFee?: string;\n /** @description Available for SELL side */\n receivedDestUSDBeforeFee?: string;\n gasCost: string;\n gasCostBeforeFee: string;\n gasCostUSD: string;\n gasCostUSDBeforeFee: string;\n srcUSD: string;\n /** @description Available for BUY side */\n srcUSDBeforeFee?: string;\n destUSD: string;\n /** @description Available for SELL side */\n destUSDBeforeFee?: string;\n partner: string;\n partnerFee: number; // in %\n hmac: string;\n bridge: Bridge; // for single-chain DeltaPrice, it's DEFAULT_BRIDGE\n};\n\ntype AvailableBridgePrice = Pick<\n DeltaPrice,\n | 'destToken'\n | 'destAmount'\n | 'destAmountBeforeFee' // Available for SELL side\n | 'destUSD'\n | 'destUSDBeforeFee' // Available for SELL side\n | 'gasCostUSD'\n | 'gasCost'\n | 'gasCostUSDBeforeFee'\n | 'gasCostBeforeFee'\n | 'receivedDestAmount'\n | 'receivedDestAmountBeforeFee'\n | 'receivedDestUSD'\n | 'receivedDestUSDBeforeFee'\n>;\n\nexport type AvailableBridge = Prettify<\n AvailableBridgePrice & Pick<BridgePrice, 'bridge' | 'bridgeInfo'>\n>;\n\nexport type BridgePrice = Omit<DeltaPrice, 'bridge'> & {\n // destAmountAfterBridge: string; // became bridgeInfo.destAmountAfterBridge\n // destUSDAfterBridge: string; // became bridgeInfo.destUSDAfterBridge\n // bridgeFee: string; // became bridgeInfo.fees[0].amount\n // bridgeFeeUSD: string; // became bridgeInfo.fees[0].amountInUSD\n // poolAddress: string;\n bridge: Bridge;\n bridgeInfo: BridgePriceInfo;\n availableBridges: AvailableBridge[];\n};\n\ntype DeltaPriceResponse = {\n price: DeltaPrice | BridgePrice;\n deltaAddress: string;\n};\n\ninterface GetDeltaPrice {\n (\n options: DeltaPriceParams & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<BridgePrice>;\n (\n options: DeltaPriceParams & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<DeltaPrice>;\n (options: DeltaPriceParams, requestParams?: RequestParameters): Promise<\n DeltaPrice | BridgePrice\n >;\n}\n\nexport type GetDeltaPriceFunctions = {\n getDeltaPrice: GetDeltaPrice;\n};\n\nexport const constructGetDeltaPrice = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetDeltaPriceFunctions => {\n const pricesUrl = `${apiURL}/delta/prices` as const;\n\n async function getDeltaPrice(\n options: DeltaPriceParams & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<BridgePrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<DeltaPrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams,\n requestParams?: RequestParameters\n ): Promise<DeltaPrice | BridgePrice>;\n async function getDeltaPrice(\n options: DeltaPriceParams,\n requestParams?: RequestParameters\n ): Promise<DeltaPrice | BridgePrice> {\n const {\n includeAgents,\n excludeAgents,\n includeBridges,\n excludeBridges,\n ...rest\n } = options;\n const includeAgentsString = includeAgents\n ? includeAgents.join(',')\n : undefined;\n const excludeAgentsString = excludeAgents\n ? excludeAgents.join(',')\n : undefined;\n const includeBridgesString = includeBridges\n ? includeBridges.join(',')\n : undefined;\n const excludeBridgesString = excludeBridges\n ? excludeBridges.join(',')\n : undefined;\n\n const search = constructSearchString<DeltaPriceQueryOptions>({\n ...rest,\n chainId,\n side: options.side ?? SwapSide.SELL,\n includeAgents: includeAgentsString,\n excludeAgents: excludeAgentsString,\n includeBridges: includeBridgesString,\n excludeBridges: excludeBridgesString,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<DeltaPriceResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.price;\n }\n\n return {\n getDeltaPrice,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { DeltaAuction, DeltaAuctionStatus } from './helpers/types';\n\nexport type DeltaOrderFromAPI = Omit<DeltaAuction, 'signature'>;\n\nexport type DeltaOrderFilterByStatus =\n | DeltaAuctionStatus\n | 'INSUFFICIENT_BALANCE'\n | 'INSUFFICIENT_ALLOWANCE'\n | 'INVALIDATED'\n | 'ACTIVE'\n | 'INACTIVE';\n\ntype GetDeltaOrderById = (\n orderId: string,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI>;\n\ntype GetDeltaOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI>;\n\ntype OrdersFilter = {\n /** @description Order.owner to fetch Delta Order for */\n userAddress: Address;\n /** @description Pagination option, page. Default 1 */\n page?: number;\n /** @description Pagination option, limit. Default 100 */\n limit?: number;\n /** @description Filter by chainId, without this filter, orders from all chains are returned */\n chainId?: number[];\n /**\n * @description\n * Filter by any known DeltaAuctionStatus and some custom statuses:\n * - **INSUFFICIENT_BALANCE** — returned as SUSPENDED from API\n * - **INSUFFICIENT_ALLOWANCE** — returned as SUSPENDED from API\n * - **INVALIDATED** — returned as FAILED from API\n * - **ACTIVE** — All orders with NOT_STARTED, RUNNING, EXECUTING, CANCELLING or SUSPENDED statuses.\n * - **INACTIVE** — All orders with EXECUTED, FAILED, EXPIRED, CANCELLED or INVALIDATED statuses.\n */\n status?: DeltaOrderFilterByStatus[];\n /** @description Filter by type. MARKET, LIMIT. Orders with both types are returned if not specified */\n type?: 'MARKET' | 'LIMIT';\n};\ntype OrderFiltersQuery = Omit<OrdersFilter, 'chainId' | 'status'> & {\n chainId?: string;\n status?: string;\n};\n\ntype GetDeltaOrders = (\n options: OrdersFilter,\n requestParams?: RequestParameters\n) => Promise<DeltaOrderFromAPI[]>;\n\ntype GetRequiredBalanceParams = {\n userAddress: Address;\n tokenAddress?: Address;\n};\n\ntype GetRequiredBalance = (\n userParams: GetRequiredBalanceParams,\n requestParams?: RequestParameters\n) => Promise<Record<string, string>>; // token -> balance in Limit Orders\n\nexport type GetDeltaOrdersFunctions = {\n getDeltaOrderById: GetDeltaOrderById;\n getDeltaOrderByHash: GetDeltaOrderByHash;\n getDeltaOrders: GetDeltaOrders;\n getRequiredBalanceForDeltaLimitOrders: GetRequiredBalance;\n};\n\nexport const constructGetDeltaOrders = ({\n apiURL = API_URL,\n fetcher,\n chainId,\n}: ConstructFetchInput): GetDeltaOrdersFunctions => {\n const baseUrl = `${apiURL}/delta/orders` as const;\n\n const getDeltaOrderById: GetDeltaOrderById = async (\n orderId,\n requestParams\n ) => {\n const fetchURL = `${baseUrl}/${orderId}` as const;\n\n const order = await fetcher<DeltaOrderFromAPI>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrderByHash: GetDeltaOrderByHash = async (\n orderHash,\n requestParams\n ) => {\n const fetchURL = `${baseUrl}/hash/${orderHash}` as const;\n\n const order = await fetcher<DeltaOrderFromAPI>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrders: GetDeltaOrders = async (options, requestParams) => {\n const chainIdString = options.chainId?.join(',');\n const statusString = options.status?.join(',');\n\n const search = constructSearchString<OrderFiltersQuery>({\n userAddress: options.userAddress,\n page: options.page,\n limit: options.limit,\n type: options.type,\n chainId: chainIdString,\n status: statusString,\n });\n\n const fetchURL = `${baseUrl}${search}` as const;\n\n const orders = await fetcher<DeltaOrderFromAPI[]>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return orders;\n };\n\n const getRequiredBalanceForDeltaLimitOrders: GetRequiredBalance = async (\n userParams,\n requestParams\n ) => {\n const userURL =\n `${baseUrl}/fillablebalance/${chainId}/${userParams.userAddress}` as const;\n const fetchURL = userParams.tokenAddress\n ? (`${userURL}/${userParams.tokenAddress}` as const)\n : userURL;\n\n const response = await fetcher<Record<string, string>>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return response;\n };\n\n return {\n getDeltaOrderById,\n getDeltaOrderByHash,\n getDeltaOrders,\n getRequiredBalanceForDeltaLimitOrders,\n };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';\nimport { constructGetDeltaContract } from './getDeltaContract';\n\nexport type ApproveTokenForDeltaFunctions<T> = {\n /** @description approving ParaswapDelta contract as spender for Token */\n approveTokenForDelta: ApproveToken<T>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructApproveTokenForDelta = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): ApproveTokenForDeltaFunctions<T> => {\n // getDeltaContract is cached internally for the same instance of SDK\n // so should persist across same apiUrl & network\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const getParaswapDeltaAddress = async (requestParams?: RequestParameters) => {\n const deltaContract = await getDeltaContract(requestParams);\n if (!deltaContract) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n return deltaContract;\n };\n\n const approveTokenForDelta: ApproveToken<T> = approveTokenMethodFactory<T>(\n options.contractCaller,\n getParaswapDeltaAddress\n );\n\n return {\n approveTokenForDelta,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\n\n// srcChainId -> destChainId -> outputToken[]\n// output Tokens that are supported for a srcChainId -> destChainId pair\nexport type BridgeInfo = Record<number, Record<number, Address[]>>;\ntype BridgeInfoResponse = { supportedTokens: BridgeInfo };\n\ntype GetBridgeInfoParams = {\n /** @description Include tokens that can be swapped on destChain after bridge. Default is true. */\n allowBridgeAndSwap?: boolean;\n /** @description Include only the specified bridges. Default is all bridges. */\n bridges?: string[];\n};\n\ntype BridgeInfoQuery = {\n allowBridgeAndSwap?: boolean;\n bridges?: string;\n};\n\ntype GetBridgeInfo = (\n params?: GetBridgeInfoParams,\n requestParams?: RequestParameters\n) => Promise<BridgeInfo>;\n\nexport type BridgeProtocolResponse = {\n protocol: string;\n displayName: string;\n icon: string;\n};\n\ntype BridgeProtocolsResponse = {\n bridgeProtocols: BridgeProtocolResponse[];\n};\n\ntype GetBridgeProtocols = (\n requestParams?: RequestParameters\n) => Promise<BridgeProtocolResponse[]>;\n\nexport type GetBridgeInfoFunctions = {\n getBridgeInfo: GetBridgeInfo;\n getBridgeProtocols: GetBridgeProtocols;\n};\n\nexport const constructGetBridgeInfo = ({\n apiURL = API_URL,\n fetcher,\n}: ConstructFetchInput): GetBridgeInfoFunctions => {\n const deltaBridgeUrl = `${apiURL}/delta/prices` as const;\n\n const getBridgeInfo: GetBridgeInfo = async (params = {}, requestParams) => {\n const { allowBridgeAndSwap, bridges } = params;\n const bridgesString = bridges ? bridges.join(',') : undefined;\n\n const search = constructSearchString<BridgeInfoQuery>({\n allowBridgeAndSwap,\n bridges: bridgesString,\n });\n\n const fetchURL = `${deltaBridgeUrl}/bridge-info${search}` as const;\n\n const data = await fetcher<BridgeInfoResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.supportedTokens;\n };\n\n const getBridgeProtocols: GetBridgeProtocols = async (requestParams) => {\n const fetchURL = `${deltaBridgeUrl}/bridge-protocols` as const;\n\n const data = await fetcher<BridgeProtocolsResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.bridgeProtocols;\n };\n\n return {\n getBridgeInfo,\n getBridgeProtocols,\n };\n};\n","import { API_URL } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type {\n Address,\n ConstructFetchInput,\n RequestParameters,\n} from '../../types';\n\ntype TokenSupportedInDeltaResponse = { supported: boolean };\ntype IsTokenSupportedInDeltaQueryOptions = {\n token: Address;\n chainId: number;\n};\n\ntype IsTokenSupportedInDelta = (\n token: Address,\n requestParams?: RequestParameters\n) => Promise<boolean>;\n\nexport type IsTokenSupportedInDeltaFunctions = {\n isTokenSupportedInDelta: IsTokenSupportedInDelta;\n};\n\nexport const constructIsTokenSupportedInDelta = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): IsTokenSupportedInDeltaFunctions => {\n const bridgeInfoUrl = `${apiURL}/delta/prices/is-token-supported` as const;\n\n const isTokenSupportedInDelta: IsTokenSupportedInDelta = async (\n token,\n requestParams\n ) => {\n const search = constructSearchString<IsTokenSupportedInDeltaQueryOptions>({\n token,\n chainId,\n });\n\n const fetchURL = `${bridgeInfoUrl}/${search}` as const;\n\n const data = await fetcher<TokenSupportedInDeltaResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data.supported;\n };\n\n return {\n isTokenSupportedInDelta,\n };\n};\n","import { API_URL, SwapSide } from '../../constants';\nimport { constructSearchString } from '../../helpers/misc';\nimport type { BridgePrice, DeltaPrice } from '../delta/getDeltaPrice';\nimport type {\n ConstructFetchInput,\n EnumerateLiteral,\n RequestParameters,\n OptimalRate,\n} from '../../types';\n\ntype TradeMode = 'delta' | 'market' | 'all';\n// enable passing enum value by string\ntype SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\nexport type QuoteParams<M extends TradeMode = TradeMode> = {\n /** @description Source Token Address */\n srcToken: string;\n /** @description Destination Token Address */\n destToken: string;\n /** @description srcToken amount (in case of SELL) or destToken amount (in case of BUY), in wei */\n amount: string;\n /** @description Source Token Decimals. */\n srcDecimals: number;\n /** @description Destination Token Decimals */\n destDecimals: number;\n /** @description SELL or BUY, default is SELL */\n side?: SwapSideUnion;\n /** @description User's Wallet Address */\n userAddress?: string;\n /** @description Partner string */\n partner?: string;\n /** @description Used together with `partner` if provided. Represented in basis points, 50bps=0.5% */\n partnerFeeBps?: number;\n /** @description Maximum price impact (in percentage) acceptable for the trade */\n maxImpact?: number;\n /** @description Maximum price impact (in USD) acceptable for the trade */\n maxUSDImpact?: number;\n /** @description Preferred mode for the trade. In case of \"all\", Delta pricing is returned, with Market as a fallback */\n mode: M;\n};\n\ntype QuoteQueryOptions = QuoteParams & {\n chainId: number; // will return error from API on unsupported chains\n};\n\ntype FallbackReason = {\n errorType: string;\n details: string;\n};\n\nexport type QuoteWithMarketPrice = {\n market: OptimalRate;\n};\n\nexport type QuoteWithDeltaPrice = {\n delta: DeltaPrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithBridgePrice = {\n delta: BridgePrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithDeltaPriceAndBridgePrice = {\n delta: DeltaPrice | BridgePrice;\n deltaAddress: string;\n};\n\nexport type QuoteWithMarketPriceAsFallback = QuoteWithMarketPrice & {\n fallbackReason: FallbackReason;\n};\n\nexport type QuoteResponse =\n | QuoteWithDeltaPrice\n | QuoteWithMarketPrice\n | QuoteWithBridgePrice\n | QuoteWithMarketPriceAsFallback\n | QuoteWithDeltaPriceAndBridgePrice;\n\ninterface GetQuoteFunc {\n (\n options: QuoteParams<'delta'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPrice>;\n (\n options: QuoteParams<'delta'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n (\n options: QuoteParams<'delta'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPriceAndBridgePrice>;\n (\n options: QuoteParams<'market'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithMarketPrice>;\n (\n options: QuoteParams<'all'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n (\n options: QuoteParams<'all'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n (options: QuoteParams<'all'>, requestParams?: RequestParameters): Promise<\n QuoteWithDeltaPriceAndBridgePrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n (\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse>;\n}\n\nexport type GetQuoteFunctions = {\n getQuote: GetQuoteFunc;\n};\n\nexport const constructGetQuote = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): GetQuoteFunctions => {\n const pricesUrl = `${apiURL}/quote` as const;\n\n function getQuote(\n options: QuoteParams<'delta'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPrice>;\n function getQuote(\n options: QuoteParams<'delta'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n function getQuote(\n options: QuoteParams<'delta'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithDeltaPriceAndBridgePrice>;\n function getQuote(\n options: QuoteParams<'market'>,\n requestParams?: RequestParameters\n ): Promise<QuoteWithMarketPrice>;\n function getQuote(\n options: QuoteParams<'all'> & { destChainId?: undefined },\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPrice | QuoteWithMarketPriceAsFallback // \"all\" mode tries for deltaPrice and falls back to market priceRoute\n >;\n function getQuote(\n options: QuoteParams<'all'> & { destChainId: number },\n requestParams?: RequestParameters\n ): Promise<QuoteWithBridgePrice>;\n function getQuote(\n options: QuoteParams<'all'>,\n requestParams?: RequestParameters\n ): Promise<\n QuoteWithDeltaPriceAndBridgePrice | QuoteWithMarketPriceAsFallback\n >;\n function getQuote(\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse>;\n async function getQuote(\n options: QuoteParams,\n requestParams?: RequestParameters\n ): Promise<QuoteResponse> {\n const search = constructSearchString<QuoteQueryOptions>({\n ...options,\n chainId,\n side: options.side ?? SwapSide.SELL,\n });\n\n const fetchURL = `${pricesUrl}/${search}` as const;\n\n const data = await fetcher<QuoteResponse>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return data;\n }\n\n return {\n getQuote,\n };\n};\n","import { Domain } from '../../common/orders/buildOrderData';\n\nconst ORDER_CANCELLATIONS_EIP_712_TYPES = {\n OrderCancellations: [{ name: 'orderIds', type: 'string[]' }],\n};\n\nexport type CancelDeltaOrderData = {\n orderIds: string[];\n};\n\nexport type SignableCancelDeltaOrderData = {\n types: {\n OrderCancellations: (typeof ORDER_CANCELLATIONS_EIP_712_TYPES)['OrderCancellations'];\n };\n domain: Domain;\n data: CancelDeltaOrderData;\n};\n\ntype BuildCancelDeltaOrderInput = {\n orderInput: CancelDeltaOrderData;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function buildCancelDeltaOrderSignableData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: BuildCancelDeltaOrderInput): SignableCancelDeltaOrderData {\n const typedData = {\n types: {\n OrderCancellations: ORDER_CANCELLATIONS_EIP_712_TYPES.OrderCancellations,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: {\n // explicityly pick only the necessary fields,\n // otherwise signing will break if more is present\n orderIds: orderInput.orderIds,\n },\n };\n\n return typedData;\n}\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport {\n buildCancelDeltaOrderSignableData,\n CancelDeltaOrderData,\n} from './helpers/buildCancelDeltaOrderData';\n\ntype SuccessResponse = { success: true };\n\ntype CancelDeltaOrderRequestParams = {\n orderIds: string[];\n signature: string;\n};\n\nexport type SignCancelDeltaOrderRequest = (\n params: CancelDeltaOrderData,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type PostCancelDeltaOrderRequest = (\n params: CancelDeltaOrderRequestParams,\n requestParams?: RequestParameters\n) => Promise<SuccessResponse>;\n\nexport type CancelDeltaOrder = (\n params: CancelDeltaOrderData,\n requestParams?: RequestParameters\n) => Promise<SuccessResponse>;\n\nexport type CancelDeltaOrderFunctions = {\n signCancelLimitDeltaOrderRequest: SignCancelDeltaOrderRequest;\n postCancelLimitDeltaOrderRequest: PostCancelDeltaOrderRequest;\n /** @description Cancel a Limit Delta order */\n cancelLimitDeltaOrders: CancelDeltaOrder;\n};\n\nexport const constructCancelDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller' | 'fetcher' | 'apiURL' | 'chainId'\n >\n): CancelDeltaOrderFunctions => {\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const signCancelLimitDeltaOrderRequest: SignCancelDeltaOrderRequest = async (\n params,\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${options.chainId}`);\n }\n\n const typedData = buildCancelDeltaOrderSignableData({\n orderInput: params,\n paraswapDeltaAddress: ParaswapDelta,\n chainId: options.chainId,\n });\n const signature = await options.contractCaller.signTypedDataCall(typedData);\n\n return signature;\n };\n\n const postCancelLimitDeltaOrderRequest: PostCancelDeltaOrderRequest = async (\n params,\n requestParams\n ) => {\n const cancelUrl = `${options.apiURL}/delta/orders/cancel` as const;\n\n const res = await options.fetcher<SuccessResponse>({\n url: cancelUrl,\n method: 'POST',\n data: params,\n requestParams,\n });\n\n return res;\n };\n\n const cancelLimitDeltaOrders: CancelDeltaOrder = async (\n { orderIds },\n requestParams\n ) => {\n const signature = await signCancelLimitDeltaOrderRequest(\n { orderIds },\n requestParams\n );\n\n const res = await postCancelLimitDeltaOrderRequest(\n {\n orderIds,\n signature,\n },\n requestParams\n );\n\n return res;\n };\n\n return {\n signCancelLimitDeltaOrderRequest,\n postCancelLimitDeltaOrderRequest,\n cancelLimitDeltaOrders,\n };\n};\n","import type {\n AnyFunction,\n ConstructBaseInput,\n ConstructFetchInput,\n ConstructProviderFetchInput,\n} from '../types';\nimport type { Merge, UnionToIntersection } from 'ts-essentials';\nimport type { ApproveTokenFunctions } from '../methods/swap/approve';\nimport type { CancelLimitOrderFunctions } from '../methods/limitOrders/cancelOrder';\nimport type { ApproveTokenForLimitOrderFunctions } from '../methods/limitOrders/approveForOrder';\nimport type { CancelNFTOrderFunctions } from '../methods/nftOrders/cancelOrder';\nimport type { ApproveTokenForNFTOrderFunctions } from '../methods/nftOrders/approveForOrder';\nimport type { FillOrderDirectlyFunctions } from '../methods/limitOrders/fillOrderDirectly';\nimport type { ApproveTokenForDeltaFunctions } from '../methods/delta/approveForDelta';\nimport type { PreSignDeltaOrderFunctions } from '../methods/delta/preSignDeltaOrder';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\n\nexport type SDKConfig<TxResponse = any> = ConstructProviderFetchInput<\n TxResponse,\n 'staticCall' | 'transactCall' | 'signTypedDataCall'\n> &\n ConstructFetchInput;\n\ntype SDKFunction<T extends ConstructBaseInput> = (\n config: T\n) => Record<string, AnyFunction | Record<string, AnyFunction>>;\n\ntype IntersectionOfReturns<Funcs extends AnyFunction[]> = UnionToIntersection<\n ReturnType<Funcs[number]>\n>;\n\ntype PartialSDKResult<\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n> = InferWithTxResponse<Config, Funcs>;\n\ntype InferWithTxResponse<\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n> = Config extends SDKConfig<infer TxResponse> // if can infer TxResponse inside Config\n ? // and if returns can be successfully intersected\n IntersectionOfReturns<Funcs> extends Record<string, any>\n ? MergeExtendableRecursively<\n IntersectionOfReturns<Funcs>,\n [\n // if there are ApproveTokenFunctions or CancelLimitOrderFunctions in the intersection\n // which means constructApproveToken or constructCancelLimitOrder was passed in Funcs\n ApproveTokenFunctions<TxResponse>,\n CancelLimitOrderFunctions<TxResponse>,\n FillOrderDirectlyFunctions<TxResponse>,\n ApproveTokenForLimitOrderFunctions<TxResponse>,\n CancelNFTOrderFunctions<TxResponse>,\n ApproveTokenForNFTOrderFunctions<TxResponse>,\n ApproveTokenForDeltaFunctions<TxResponse>,\n PreSignDeltaOrderFunctions<TxResponse>\n ]\n // then merge IntersectionOfReturns<Funcs> with them recursively\n >\n : IntersectionOfReturns<Funcs>\n : IntersectionOfReturns<Funcs>;\n\n// merges Accum with Replacement\n// if Accum has keys of Replacement\ntype MergeExtendableOnce<\n Accum extends Record<string, any>,\n Replacement extends Record<string, any>\n> = Accum extends Record<keyof Replacement, any>\n ? Merge<Accum, Replacement>\n : Accum;\n\n// recursively merges Accum with each Replacement\n// if Accum has keys of Replacement\ntype MergeExtendableRecursively<\n Accum extends Record<string, any>,\n Replacements extends Record<string, any>[]\n> = Replacements extends [\n head: infer Head extends Record<string, any>,\n ...tail: infer Tail\n]\n ? Tail extends Record<string, any>[]\n ? MergeExtendableRecursively<MergeExtendableOnce<Accum, Head>, Tail>\n : MergeExtendableOnce<Accum, Head>\n : Accum;\n\n/** @description construct composable SDK with methods you choose yourself */\nexport const constructPartialSDK = <\n Config extends ConstructBaseInput,\n Funcs extends [SDKFunction<Config>, ...SDKFunction<Config>[]]\n>(\n config: Config, // config is auto-inferred to cover the used functions\n ...funcs: Funcs\n): PartialSDKResult<Config, Funcs> & Required<ConstructBaseInput> => {\n const sdkFuncs = funcs.reduce<Partial<IntersectionOfReturns<Funcs>>>(\n (accum, func) => {\n const sdkSlice = func(config);\n return Object.assign(accum, sdkSlice);\n },\n {}\n );\n\n const sdk = {\n ...sdkFuncs,\n apiURL: config.apiURL ?? API_URL,\n version: config.version ?? DEFAULT_VERSION,\n chainId: config.chainId,\n } as PartialSDKResult<Config, Funcs> & Required<ConstructBaseInput>;\n\n return sdk;\n};\n","import { constructPartialSDK, SDKConfig } from '../../sdk/partial';\nimport { constructGetAdapters, GetAdaptersFunctions } from './adapters';\nimport { ApproveTokenFunctions, constructApproveToken } from './approve';\nimport { constructGetBalances, GetBalancesFunctions } from './balance';\nimport { constructGetRate, GetRateFunctions } from './rates';\nimport { constructGetSpender, GetSpenderFunctions } from './spender';\nimport { constructSwapTx, GetSwapTxFunctions } from './swapTx';\nimport { constructGetTokens, GetTokensFunctions } from './token';\nimport { BuildTxFunctions, constructBuildTx } from './transaction';\n\nexport type SwapSDKMethods<TxResponse> = GetBalancesFunctions &\n GetTokensFunctions &\n GetSpenderFunctions &\n ApproveTokenFunctions<TxResponse> &\n BuildTxFunctions &\n GetAdaptersFunctions &\n GetRateFunctions &\n GetSwapTxFunctions;\n\n/** @description construct SDK with every Swap-related method, fetching from API and token approval */\nexport const constructSwapSDK = <TxResponse>(\n config: SDKConfig<TxResponse>\n): SwapSDKMethods<TxResponse> => {\n const constructApproveTokenWithTxResponse = constructApproveToken<TxResponse>;\n\n // include all available Swap methods\n return constructPartialSDK(\n config,\n constructGetBalances,\n constructGetTokens,\n constructGetSpender,\n constructApproveTokenWithTxResponse,\n constructBuildTx,\n constructGetAdapters,\n constructGetRate,\n constructSwapTx\n );\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { LimitOrderToSend, LimitOrderFromApi } from './helpers/types';\nimport {\n BuildLimitOrderFunctions,\n BuildLimitOrderInput,\n constructBuildLimitOrder,\n} from './buildOrder';\nimport {\n CancelLimitOrderFunctions,\n constructCancelLimitOrder,\n} from './cancelOrder';\nimport { constructGetLimitOrders, GetLimitOrdersFunctions } from './getOrders';\nimport { constructPostLimitOrder, PostLimitOrderFunctions } from './postOrder';\nimport { constructSignLimitOrder, SignLimitOrderFunctions } from './signOrder';\nimport {\n constructApproveTokenForLimitOrder,\n ApproveTokenForLimitOrderFunctions,\n} from './approveForOrder';\nimport {\n GetLimitOrdersContractFunctions,\n constructGetLimitOrdersContract,\n} from './getOrdersContract';\nimport {\n BuildLimitOrdersTxFunctions,\n constructBuildLimitOrderTx,\n} from './transaction';\nimport type { Address } from '@paraswap/core';\nimport {\n FillOrderDirectlyFunctions,\n constructFillOrderDirectly,\n} from './fillOrderDirectly';\n\ntype SubmitLimitOrder = (\n buildLimitOrderParams: BuildLimitOrderInput,\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\ntype SubmitP2POrder = (\n buildLimitOrderParams: BuildLimitOrderInput & { taker: Address },\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<LimitOrderFromApi>;\n\nexport type SubmitLimitOrderFuncs = {\n submitLimitOrder: SubmitLimitOrder;\n submitP2POrder: SubmitP2POrder;\n};\n\nexport const constructSubmitLimitOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitLimitOrderFuncs => {\n const { buildLimitOrder } = constructBuildLimitOrder(options);\n const { signLimitOrder } = constructSignLimitOrder(options);\n const { postLimitOrder, postP2POrder } = constructPostLimitOrder(options);\n\n const prepareLimitOrder = async (\n buildLimitOrderParams: BuildLimitOrderInput,\n extra?: { permitMakerAsset?: string }\n ): Promise<LimitOrderToSend> => {\n const orderData = await buildLimitOrder(buildLimitOrderParams);\n const signature = await signLimitOrder(orderData);\n\n const orderWithSignature: LimitOrderToSend = {\n ...orderData.data,\n ...extra,\n signature,\n };\n\n return orderWithSignature;\n };\n\n const submitLimitOrder: SubmitLimitOrder = async (\n buildLimitOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: LimitOrderToSend = await prepareLimitOrder(\n buildLimitOrderParams,\n extra\n );\n\n const newOrder = await postLimitOrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n const submitP2POrder: SubmitP2POrder = async (\n buildLimitOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: LimitOrderToSend = await prepareLimitOrder(\n buildLimitOrderParams,\n extra\n );\n\n const newOrder = await postP2POrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n return { submitLimitOrder, submitP2POrder };\n};\n\nexport type LimitOrderHandlers<T> = SubmitLimitOrderFuncs &\n BuildLimitOrderFunctions &\n SignLimitOrderFunctions &\n PostLimitOrderFunctions &\n GetLimitOrdersFunctions &\n GetLimitOrdersContractFunctions &\n BuildLimitOrdersTxFunctions &\n CancelLimitOrderFunctions<T> &\n ApproveTokenForLimitOrderFunctions<T> &\n FillOrderDirectlyFunctions<T>;\n\n/** @description construct SDK with every LimitOrders-related method, fetching from API and contract calls */\nexport const constructAllLimitOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall' | 'staticCall'\n >\n): LimitOrderHandlers<TxResponse> => {\n const limitOrdersGetters = constructGetLimitOrders(options);\n const limitOrdersContractGetter = constructGetLimitOrdersContract(options);\n\n const limitOrdersSubmit = constructSubmitLimitOrder(options);\n const limitOrdersBuild = constructBuildLimitOrder(options);\n const limitOrdersSign = constructSignLimitOrder(options);\n const limitOrdersPost = constructPostLimitOrder(options);\n\n const limitOrdersCancel = constructCancelLimitOrder(options);\n const limitOrdersApproveToken = constructApproveTokenForLimitOrder(options);\n\n const limitOrdersFillOrderDirectly = constructFillOrderDirectly(options);\n\n const limitOrdersBuildTx = constructBuildLimitOrderTx(options);\n\n return {\n ...limitOrdersGetters,\n ...limitOrdersContractGetter,\n ...limitOrdersSubmit,\n ...limitOrdersBuild,\n ...limitOrdersSign,\n ...limitOrdersPost,\n ...limitOrdersCancel,\n ...limitOrdersApproveToken,\n ...limitOrdersFillOrderDirectly,\n ...limitOrdersBuildTx,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport {\n BuildDeltaOrderDataParams,\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from './buildDeltaOrder';\nimport {\n constructPostDeltaOrder,\n DeltaOrderApiResponse,\n DeltaOrderToPost,\n PostDeltaOrderFunctions,\n} from './postDeltaOrder';\nimport {\n constructSignDeltaOrder,\n SignDeltaOrderFunctions,\n} from './signDeltaOrder';\nimport {\n GetDeltaContractFunctions,\n constructGetDeltaContract,\n} from './getDeltaContract';\nimport {\n constructGetDeltaPrice,\n GetDeltaPriceFunctions,\n} from './getDeltaPrice';\nimport {\n constructGetDeltaOrders,\n GetDeltaOrdersFunctions,\n} from './getDeltaOrders';\nimport {\n constructGetPartnerFee,\n GetPartnerFeeFunctions,\n} from './getPartnerFee';\nimport {\n ApproveTokenForDeltaFunctions,\n constructApproveTokenForDelta,\n} from './approveForDelta';\nimport {\n constructGetBridgeInfo,\n GetBridgeInfoFunctions,\n} from './getBridgeInfo';\nimport {\n constructIsTokenSupportedInDelta,\n IsTokenSupportedInDeltaFunctions,\n} from './isTokenSupportedInDelta';\nimport {\n CancelDeltaOrderFunctions,\n constructCancelDeltaOrder,\n} from './cancelDeltaOrder';\nimport {\n constructPreSignDeltaOrder,\n PreSignDeltaOrderFunctions,\n} from './preSignDeltaOrder';\n\nexport type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {\n /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */\n partiallyFillable?: boolean;\n /** @description Referrer address */\n referrerAddress?: string;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitDeltaOrder = (\n orderParams: SubmitDeltaOrderParams\n) => Promise<DeltaOrderApiResponse>;\n\nexport type SubmitDeltaOrderFuncs = {\n submitDeltaOrder: SubmitDeltaOrder;\n};\n\nexport const constructSubmitDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitDeltaOrderFuncs => {\n const { buildDeltaOrder } = constructBuildDeltaOrder(options);\n // in the normal submitOrderFlow preSign tx is not involved\n const { signDeltaOrder } = constructSignDeltaOrder(options);\n const { postDeltaOrder } = constructPostDeltaOrder(options);\n\n const submitDeltaOrder: SubmitDeltaOrder = async (orderParams) => {\n const orderData = await buildDeltaOrder(orderParams);\n const signature = await signDeltaOrder(orderData);\n\n const response = await postDeltaOrder({\n signature,\n partner: orderParams.partner,\n order: orderData.data,\n partiallyFillable: orderParams.partiallyFillable,\n referrerAddress: orderParams.referrerAddress,\n type: orderParams.type,\n includeAgents: orderParams.includeAgents,\n excludeAgents: orderParams.excludeAgents,\n });\n\n return response;\n };\n\n return { submitDeltaOrder };\n};\n\nexport type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &\n ApproveTokenForDeltaFunctions<T> &\n BuildDeltaOrderFunctions &\n GetDeltaOrdersFunctions &\n GetDeltaPriceFunctions &\n GetDeltaContractFunctions &\n GetPartnerFeeFunctions &\n GetBridgeInfoFunctions &\n IsTokenSupportedInDeltaFunctions &\n PostDeltaOrderFunctions &\n SignDeltaOrderFunctions &\n PreSignDeltaOrderFunctions<T> &\n CancelDeltaOrderFunctions;\n\n/** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */\nexport const constructAllDeltaOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall'\n >\n): DeltaOrderHandlers<TxResponse> => {\n const deltaOrdersGetters = constructGetDeltaOrders(options);\n const deltaOrdersContractGetter = constructGetDeltaContract(options);\n const deltaPrice = constructGetDeltaPrice(options);\n\n const partnerFee = constructGetPartnerFee(options);\n const bridgeInfo = constructGetBridgeInfo(options);\n const isTokenSupportedInDelta = constructIsTokenSupportedInDelta(options);\n\n const approveTokenForDelta = constructApproveTokenForDelta(options);\n\n const deltaOrdersSubmit = constructSubmitDeltaOrder(options);\n\n const deltaOrdersBuild = constructBuildDeltaOrder(options);\n const deltaOrdersSign = constructSignDeltaOrder(options);\n const deltaOrdersPreSign = constructPreSignDeltaOrder(options);\n const deltaOrdersPost = constructPostDeltaOrder(options);\n\n const deltaOrdersCancel = constructCancelDeltaOrder(options);\n\n return {\n ...deltaOrdersGetters,\n ...deltaOrdersContractGetter,\n ...deltaPrice,\n ...partnerFee,\n ...bridgeInfo,\n ...isTokenSupportedInDelta,\n ...approveTokenForDelta,\n ...deltaOrdersSubmit,\n ...deltaOrdersBuild,\n ...deltaOrdersSign,\n ...deltaOrdersPreSign,\n ...deltaOrdersPost,\n ...deltaOrdersCancel,\n };\n};\n","import type {\n ConstructProviderFetchInput,\n RequestParameters,\n} from '../../types';\nimport type { NFTOrderToSend, NFTOrderFromAPI } from './helpers/types';\nimport {\n BuildNFTOrderFunctions,\n BuildNFTOrderInput,\n constructBuildNFTOrder,\n} from './buildOrder';\nimport {\n CancelNFTOrderFunctions,\n constructCancelNFTOrder,\n} from './cancelOrder';\nimport { constructGetNFTOrders, GetNFTOrdersFunctions } from './getOrders';\nimport { constructPostNFTOrder, PostNFTOrderFunctions } from './postOrder';\nimport { constructSignNFTOrder, SignNFTOrderFunctions } from './signOrder';\nimport {\n constructApproveTokenForNFTOrder,\n ApproveTokenForNFTOrderFunctions,\n} from './approveForOrder';\nimport {\n GetNFTOrdersContractFunctions,\n constructGetNFTOrdersContract,\n} from './getOrdersContract';\nimport {\n BuildNFTOrdersTxFunctions,\n constructBuildNFTOrderTx,\n} from './transaction';\n\ntype SubmitNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n extra?: { permitMakerAsset?: string },\n requestParams?: RequestParameters\n) => Promise<NFTOrderFromAPI>;\n\nexport type SubmitNFTOrderFuncs = {\n submitNFTOrder: SubmitNFTOrder;\n submitP2POrder: SubmitNFTOrder;\n};\n\nexport const constructSubmitNFTOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitNFTOrderFuncs => {\n const { buildNFTOrder } = constructBuildNFTOrder(options);\n const { signNFTOrder } = constructSignNFTOrder(options);\n const { postNFTLimitOrder, postNFTP2POrder } = constructPostNFTOrder(options);\n\n const prepareNFTOrder = async (\n buildNFTOrderParams: BuildNFTOrderInput,\n extra?: { permitMakerAsset?: string }\n ): Promise<NFTOrderToSend> => {\n const orderData = await buildNFTOrder(buildNFTOrderParams);\n const signature = await signNFTOrder(orderData);\n\n const orderWithSignature: NFTOrderToSend = {\n ...orderData.data,\n ...extra,\n signature,\n };\n\n return orderWithSignature;\n };\n\n const submitNFTOrder: SubmitNFTOrder = async (\n buildNFTOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: NFTOrderToSend = await prepareNFTOrder(\n buildNFTOrderParams,\n extra\n );\n\n const newOrder = await postNFTLimitOrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n const submitP2POrder: SubmitNFTOrder = async (\n buildNFTOrderParams,\n extra = {},\n requestParams\n ) => {\n const orderWithSignature: NFTOrderToSend = await prepareNFTOrder(\n buildNFTOrderParams,\n extra\n );\n\n const newOrder = await postNFTP2POrder(orderWithSignature, requestParams);\n\n return newOrder;\n };\n\n return { submitNFTOrder, submitP2POrder };\n};\n\nexport type NFTOrderHandlers<T> = SubmitNFTOrderFuncs &\n BuildNFTOrderFunctions &\n SignNFTOrderFunctions &\n PostNFTOrderFunctions &\n GetNFTOrdersFunctions &\n GetNFTOrdersContractFunctions &\n BuildNFTOrdersTxFunctions &\n CancelNFTOrderFunctions<T> &\n ApproveTokenForNFTOrderFunctions<T>;\n\n/** @description construct SDK with every NFTOrders-related method, fetching from API and contract calls */\nexport const constructAllNFTOrdersHandlers = <TxResponse>(\n options: ConstructProviderFetchInput<\n TxResponse,\n 'signTypedDataCall' | 'transactCall' | 'staticCall'\n >\n): NFTOrderHandlers<TxResponse> => {\n const NFTOrdersGetters = constructGetNFTOrders(options);\n const NFTOrdersContractGetter = constructGetNFTOrdersContract(options);\n\n const NFTOrdersSubmit = constructSubmitNFTOrder(options);\n const NFTOrdersBuild = constructBuildNFTOrder(options);\n const NFTOrdersSign = constructSignNFTOrder(options);\n const NFTOrdersPost = constructPostNFTOrder(options);\n\n const NFTOrdersCancel = constructCancelNFTOrder(options);\n const NFTOrdersApproveToken = constructApproveTokenForNFTOrder(options);\n\n const NFTOrdersBuildTx = constructBuildNFTOrderTx(options);\n\n return {\n ...NFTOrdersGetters,\n ...NFTOrdersContractGetter,\n ...NFTOrdersSubmit,\n ...NFTOrdersBuild,\n ...NFTOrdersSign,\n ...NFTOrdersPost,\n ...NFTOrdersCancel,\n ...NFTOrdersApproveToken,\n ...NFTOrdersBuildTx,\n };\n};\n","import type { SDKConfig } from './partial';\nimport { constructSwapSDK, SwapSDKMethods } from '../methods/swap';\nimport {\n constructAllLimitOrdersHandlers,\n LimitOrderHandlers,\n} from '../methods/limitOrders';\nimport {\n constructAllNFTOrdersHandlers,\n NFTOrderHandlers,\n} from '../methods/nftOrders';\nimport {\n constructAllDeltaOrdersHandlers,\n DeltaOrderHandlers,\n} from '../methods/delta';\nimport {\n constructGetQuote,\n GetQuoteFunctions,\n} from '../methods/quote/getQuote';\nimport { ConstructBaseInput } from '../types';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\n\nexport type AllSDKMethods<TxResponse> = {\n swap: SwapSDKMethods<TxResponse>;\n limitOrders: LimitOrderHandlers<TxResponse>;\n nftOrders: NFTOrderHandlers<TxResponse>;\n delta: DeltaOrderHandlers<TxResponse>;\n quote: GetQuoteFunctions;\n} & Required<ConstructBaseInput>;\n\n/** @description construct SDK with every method, for swap and limitOrders */\nexport const constructFullSDK = <TxResponse = any>(\n config: SDKConfig<TxResponse>\n): AllSDKMethods<TxResponse> => {\n // include all available functions\n const swap: SwapSDKMethods<TxResponse> = constructSwapSDK(config);\n const limitOrders: LimitOrderHandlers<TxResponse> =\n constructAllLimitOrdersHandlers(config);\n const nftOrders: NFTOrderHandlers<TxResponse> =\n constructAllNFTOrdersHandlers(config);\n const delta: DeltaOrderHandlers<TxResponse> =\n constructAllDeltaOrdersHandlers(config);\n const quote = constructGetQuote(config);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: config.apiURL ?? API_URL,\n chainId: config.chainId,\n version: config.version ?? DEFAULT_VERSION,\n };\n};\n","import { constructPartialSDK, SDKConfig } from './partial';\nimport {\n GetAdaptersFunctions,\n constructGetAdapters,\n} from '../methods/swap/adapters';\nimport {\n GetBalancesFunctions,\n constructGetBalances,\n} from '../methods/swap/balance';\nimport { GetRateFunctions, constructGetRate } from '../methods/swap/rates';\nimport {\n GetSpenderFunctions,\n constructGetSpender,\n} from '../methods/swap/spender';\nimport { GetTokensFunctions, constructGetTokens } from '../methods/swap/token';\nimport {\n BuildTxFunctions,\n constructBuildTx,\n} from '../methods/swap/transaction';\nimport { constructSwapTx, GetSwapTxFunctions } from '../methods/swap/swapTx';\n\nimport {\n constructAxiosFetcher,\n constructFetchFetcher,\n constructEthersV5ContractCaller,\n constructEthersV6ContractCaller,\n constructWeb3ContractCaller,\n constructViemContractCaller,\n} from '../helpers';\n\nimport type {\n ConstructBaseInput,\n ConstructFetchInput,\n ContractCallerFunctions,\n TransactionContractCallerFn,\n TxHash,\n Address,\n FetcherFunction,\n ExtraFetchParams,\n} from '../types';\n\nimport type { EthersProviderDeps, MinViemClient } from '../helpers';\nimport type Web3 from 'web3';\n\nimport type { SwapSDKMethods } from '../methods/swap';\nimport {\n BuildLimitOrderFunctions,\n constructBuildLimitOrder,\n} from '../methods/limitOrders/buildOrder';\nimport {\n constructPostLimitOrder,\n PostLimitOrderFunctions,\n} from '../methods/limitOrders/postOrder';\nimport {\n constructGetLimitOrders,\n GetLimitOrdersFunctions,\n} from '../methods/limitOrders/getOrders';\nimport {\n constructGetLimitOrdersContract,\n GetLimitOrdersContractFunctions,\n} from '../methods/limitOrders/getOrdersContract';\nimport {\n constructBuildLimitOrderTx,\n BuildLimitOrdersTxFunctions,\n} from '../methods/limitOrders/transaction';\nimport {\n constructAllLimitOrdersHandlers,\n LimitOrderHandlers,\n} from '../methods/limitOrders';\n\nimport {\n constructGetNFTOrdersContract,\n GetNFTOrdersContractFunctions,\n} from '../methods/nftOrders/getOrdersContract';\nimport {\n constructGetNFTOrders,\n GetNFTOrdersFunctions,\n} from '../methods/nftOrders/getOrders';\nimport {\n BuildNFTOrderFunctions,\n constructBuildNFTOrder,\n} from '../methods/nftOrders/buildOrder';\nimport {\n constructPostNFTOrder,\n PostNFTOrderFunctions,\n} from '../methods/nftOrders/postOrder';\nimport {\n constructBuildNFTOrderTx,\n BuildNFTOrdersTxFunctions,\n} from '../methods/nftOrders/transaction';\nimport {\n constructAllNFTOrdersHandlers,\n NFTOrderHandlers,\n} from '../methods/nftOrders';\n\nimport { constructSwapSDK } from '../methods/swap';\nimport type { AxiosRequirement } from '../helpers/fetchers/axios';\nimport { API_URL, DEFAULT_VERSION } from '../constants';\nimport {\n constructAllDeltaOrdersHandlers,\n DeltaOrderHandlers,\n} from '../methods/delta';\nimport {\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from '../methods/delta/buildDeltaOrder';\nimport {\n constructGetDeltaOrders,\n GetDeltaOrdersFunctions,\n} from '../methods/delta/getDeltaOrders';\nimport {\n constructGetDeltaPrice,\n GetDeltaPriceFunctions,\n} from '../methods/delta/getDeltaPrice';\nimport {\n constructGetDeltaContract,\n GetDeltaContractFunctions,\n} from '../methods/delta/getDeltaContract';\nimport {\n constructGetPartnerFee,\n GetPartnerFeeFunctions,\n} from '../methods/delta/getPartnerFee';\nimport {\n constructPostDeltaOrder,\n PostDeltaOrderFunctions,\n} from '../methods/delta/postDeltaOrder';\nimport {\n constructGetQuote,\n GetQuoteFunctions,\n} from '../methods/quote/getQuote';\nimport {\n constructGetBridgeInfo,\n GetBridgeInfoFunctions,\n} from '../methods/delta/getBridgeInfo';\nimport {\n constructIsTokenSupportedInDelta,\n IsTokenSupportedInDeltaFunctions,\n} from '../methods/delta/isTokenSupportedInDelta';\n\nexport type SwapFetchMethods = GetBalancesFunctions &\n GetTokensFunctions &\n GetSpenderFunctions &\n BuildTxFunctions &\n GetAdaptersFunctions &\n GetRateFunctions &\n GetSwapTxFunctions;\n\nexport type LimitOrdersFetchMethods = GetLimitOrdersContractFunctions &\n GetLimitOrdersFunctions &\n BuildLimitOrderFunctions &\n PostLimitOrderFunctions &\n BuildLimitOrdersTxFunctions;\n\nexport type NFTOrdersFetchMethods = GetNFTOrdersContractFunctions &\n GetNFTOrdersFunctions &\n BuildNFTOrderFunctions &\n PostNFTOrderFunctions &\n BuildNFTOrdersTxFunctions;\n\nexport type DeltaFetchMethods = BuildDeltaOrderFunctions &\n GetDeltaOrdersFunctions &\n GetDeltaPriceFunctions &\n GetDeltaContractFunctions &\n GetPartnerFeeFunctions &\n GetBridgeInfoFunctions &\n IsTokenSupportedInDeltaFunctions &\n PostDeltaOrderFunctions;\n\nexport type SimpleFetchSDK = {\n swap: SwapFetchMethods;\n limitOrders: LimitOrdersFetchMethods;\n nftOrders: NFTOrdersFetchMethods;\n delta: DeltaFetchMethods;\n quote: QuoteFetchMethods;\n} & Required<ConstructBaseInput>;\n\nexport type QuoteFetchMethods = GetQuoteFunctions;\n\nexport type SimpleSDK = {\n swap: SwapSDKMethods<TxHash>;\n limitOrders: LimitOrderHandlers<TxHash>;\n nftOrders: NFTOrderHandlers<TxHash>;\n delta: DeltaOrderHandlers<TxHash>;\n quote: QuoteFetchMethods;\n} & Required<ConstructBaseInput>;\n\nexport type FetcherOptions = (\n | {\n axios: AxiosRequirement;\n }\n | { fetch: typeof fetch }\n | { fetcher: FetcherFunction }\n) &\n ExtraFetchParams;\n\ntype SimpleOptions = ConstructBaseInput & FetcherOptions;\n\nexport type ProviderOptions = (\n | EthersProviderDeps\n | { web3: Web3 }\n | { viemClient: MinViemClient }\n) & {\n account: Address;\n};\n\nconst constructFetcher = (options: FetcherOptions): FetcherFunction => {\n if ('axios' in options) {\n return constructAxiosFetcher(options.axios, options);\n }\n if ('fetch' in options) {\n return constructFetchFetcher(options.fetch, options);\n }\n return (params) => {\n // adding apiKey to headers if it's provided\n const headers = options?.apiKey\n ? {\n ...options.headers,\n 'X-API-KEY': options.apiKey,\n ...params.headers,\n ...params.requestParams?.headers,\n }\n : {\n ...options.headers,\n ...params.headers,\n ...params.requestParams?.headers,\n };\n\n return options.fetcher({ ...params, headers });\n };\n};\n\n/** @description construct SDK with methods that fetch from API and optionally with blockchain provider calling methods */\nexport function constructSimpleSDK(options: SimpleOptions): SimpleFetchSDK;\n\nexport function constructSimpleSDK(\n options: SimpleOptions,\n providerOptions: ProviderOptions\n): SimpleSDK;\nexport function constructSimpleSDK(\n options: SimpleOptions,\n providerOptions?: ProviderOptions\n): SimpleFetchSDK | SimpleSDK {\n const fetcher = constructFetcher(options);\n\n if (!providerOptions) {\n const config: ConstructFetchInput = {\n apiURL: options.apiURL,\n chainId: options.chainId,\n version: options.version,\n fetcher,\n };\n\n // include all available functions that don't need `contractCaller`\n const swap: SwapFetchMethods = constructPartialSDK(\n config,\n constructGetBalances,\n constructGetTokens,\n constructGetSpender,\n constructBuildTx,\n constructGetAdapters,\n constructGetRate,\n constructSwapTx\n );\n\n const limitOrders = constructPartialSDK(\n config,\n constructBuildLimitOrder,\n constructPostLimitOrder,\n constructGetLimitOrders,\n constructGetLimitOrdersContract,\n constructBuildLimitOrderTx\n );\n\n const nftOrders = constructPartialSDK(\n config,\n constructBuildNFTOrder,\n constructPostNFTOrder,\n constructGetNFTOrders,\n constructGetNFTOrdersContract,\n constructBuildNFTOrderTx\n );\n\n const delta = constructPartialSDK(\n config,\n constructBuildDeltaOrder,\n constructPostDeltaOrder,\n constructGetDeltaOrders,\n constructGetDeltaPrice,\n constructGetDeltaContract,\n constructGetPartnerFee,\n constructGetBridgeInfo,\n constructIsTokenSupportedInDelta\n );\n\n const quote = constructPartialSDK(config, constructGetQuote);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: options.apiURL ?? API_URL,\n chainId: options.chainId,\n version: options.version ?? DEFAULT_VERSION,\n };\n }\n\n const contractCaller = constructSimpleContractCaller(providerOptions);\n\n const config: SDKConfig<TxHash> = {\n apiURL: options.apiURL,\n version: options.version,\n chainId: options.chainId,\n fetcher,\n contractCaller,\n };\n\n const swap: SwapSDKMethods<TxHash> = constructSwapSDK(config);\n\n const limitOrders: LimitOrderHandlers<TxHash> =\n constructAllLimitOrdersHandlers<TxHash>(config);\n\n const nftOrders: NFTOrderHandlers<TxHash> =\n constructAllNFTOrdersHandlers<TxHash>(config);\n\n const delta: DeltaOrderHandlers<TxHash> =\n constructAllDeltaOrdersHandlers<TxHash>(config);\n\n const quote = constructGetQuote(config);\n\n return {\n swap,\n limitOrders,\n nftOrders,\n delta,\n quote,\n apiURL: options.apiURL ?? API_URL,\n chainId: options.chainId,\n version: options.version ?? DEFAULT_VERSION,\n };\n}\n\nfunction constructSimpleContractCaller(\n providerOptions: ProviderOptions\n): ContractCallerFunctions<TxHash> {\n if ('ethersProviderOrSigner' in providerOptions) {\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructEthersV5ContractCaller(\n providerOptions,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (\n params\n ) => {\n const contractTx = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return contractTx.hash as TxHash;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n }\n\n if ('ethersV6ProviderOrSigner' in providerOptions) {\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructEthersV6ContractCaller(\n providerOptions,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (\n params\n ) => {\n const contractTx = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return contractTx.hash as TxHash;\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n }\n\n if ('viemClient' in providerOptions) {\n const contractCaller = constructViemContractCaller(\n providerOptions.viemClient,\n providerOptions.account\n );\n return contractCaller;\n }\n\n const {\n staticCall,\n transactCall: _transactCall,\n signTypedDataCall,\n } = constructWeb3ContractCaller(\n providerOptions.web3,\n providerOptions.account\n );\n\n const transactCall: TransactionContractCallerFn<TxHash> = async (params) => {\n const unpromiEvent = await _transactCall(params);\n\n // as soon as tx is sent\n // returning tx hash, it's up to the user to wait for tx\n return new Promise<TxHash>((resolve, reject) => {\n unpromiEvent.once('transactionHash', (hash) => resolve(hash as TxHash));\n unpromiEvent.once('error', reject);\n });\n };\n\n return { staticCall, transactCall, signTypedDataCall };\n}\n"],"names":["API_URL","DEFAULT_VERSION","objectToFilledEntries","object","Object","entries","filter","_ref","value","undefined","map","_ref2","key","String","constructSearchString","queryOptions","queryEntries","queryString","URLSearchParams","toString","isFetcherError","error","FetcherError","_Error","_ref3","_this","code","request","response","isAxiosError","message","call","status","Error","captureStackTrace","name","constructor","_assertThisInitialized","data","isDataWithError","isDataWithError2","errorType","description","_inheritsLoose","_wrapNativeSuper","isObject","obj","isFilledArray","array","length","getRandomInt","Math","floor","random","Number","MAX_SAFE_INTEGER","runOnceAndCache","func","result","_result","apply","arguments","constructGetSpender","_ref$apiURL","apiURL","_ref$version","version","chainId","fetcher","search","fetchURL","_getContracts","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requestParams","wrap","_callee$","_context","prev","next","url","method","sent","abrupt","stop","_x","getContracts","getSpender","_callee2","_yield$getContracts","TokenTransferProxy","_callee2$","_context2","_x2","getAugustusSwapper","_ref4","_callee3","_yield$getContracts2","AugustusSwapper","_callee3$","_context3","_x3","getAugustusRFQ","_ref5","_callee4","_yield$getContracts3","AugustusRFQ","_callee4$","_context4","_x4","MinERC20Abi","constant","inputs","type","outputs","payable","stateMutability","approveTokenMethodFactory","contractCaller","amount","tokenAddress","overrides","spender","res","transactCall","address","abi","contractMethod","args","constructApproveToken","options","_constructGetSpender","approveToken","approveTokenBulk","tokenAddresses","Promise","all","constructToken","tokenProps","_tokenProps$tokenType","tokenType","_tokenProps$mainConne","mainConnector","_tokenProps$connector","connectors","connectorsInput","_tokenProps$network","network","rest","_objectWithoutPropertiesLoose","_excluded","_extends","isAllowance","arg","NOT_FOUND_RESPONSE","constructGetBalances","tokensUrl","getBalances","userAddress","tokens","getBalance","tokenAddressOrSymbol","token","_x5","getAllowances","tokenAddressesLowercaseSet","balances","allowances","Set","toLowerCase","has","_ref5$allowance","allowance","_x6","_x7","_x8","getAllowance","_ref6","balanceOrNotFound","_balanceOrNotFound$al","_x9","_x10","_x11","constructGetAdapters","getAdapters","query","normalizeRateOptions","_ref$options","restInput","excludeContractMethods","includeContractMethods","partner","includeDEXS","excludeDEXS","excludePools","restOptions","_excluded2","_map","join","_includeDEXS","_excludeDEXS","_excludePools","_excludeContractMethods","_includeContractMethods","transformed","INVALID_ROUTE","constructGetRate","pricesUrl","getRate","srcToken","destToken","parsedOptions","priceRoute","getRateByRoute","route","_route","constructSwapTx","getSwapTxData","constructGetTokens","getTokens","ZERO_ADDRESS","baseFetchUrlGetterFactory","orderKind","constructBaseFetchUrlGetter","urlGetter","orderURLpart","sanitizeOrderData","nonceAndMeta","expiry","makerAsset","takerAsset","maker","taker","makerAmount","takerAmount","OrderNFT","buildOrderData","verifyingContract","_ref$nonce","nonce","_makerAssetAddress","_takerAssetAddress","makerAssetId","_ref$takerAssetId","takerAssetId","makerAssetType","takerAssetType","AugustusAddress","_ref$taker","takerInNonce","BigInt","assetAddressToUint","orderNFT","types","domain","assetAddress","assetType","AssetType","ERC20","ERC1155","ERC721","_makerAsset","_takerAsset","startsWith","constructBuildTx","transactionsURL","buildTx","params","_params$takeSurplus","side","AmountMismatchError","sanitizedParams","takeSurplus","fetchParams","builtTx","SwapSide","SELL","assert","areAmountsCorrect","queryParams","orders","order","sanitizedOrderData","sanitizeNFTOrderData","sanitizeLimitOrderData","sanitizedOrder","signature","permitMakerAsset","positiveSlippageToUser","slippage","BUY","destAmount","srcAmount","inputAmount","priceRouteAmount","Order","contractTaker","AppVersion","constructBuildLimitOrder","buildLimitOrder","buildLimitOrderParams","_options$version","constructSignLimitOrder","signLimitOrder","typedData","typedDataOnly","signTypedDataCall","MinAugustusRFQAbi","internalType","constructCancelLimitOrder","cancelLimitOrder","orderHash","cancelLimitOrderBulk","orderHashes","splitSignature","slice","bytes","Uint8Array","i","parseInt","r","Array","from","b","padStart","s","v","sBytes","yParityAndS","compactSignature","compact","encodeEIP_2612PermitFunctionInput","owner","deadline","permitSignature","_splitSignature","encodedOwner","encodeAddress","encodedSpender","encodedValue","encodeUint256","encodedDeadline","encodedV","encodeUint8","encodedR","encodeBytes32","encodedS","val","encodeDAIlikePermitFunctionInput","holder","_splitSignature2","encodedHolder","encodedNonce","encodedExpiry","encodeBool","strippedAddress","replace","bn","strippedValue","components","constructFillOrderDirectly","fillOrderDirectly","takerPermit","_res","permitTakerAsset","encodedPermitParams","isDaiPermit","constructGetLimitOrders","getBaseFetchURLByEntityType","getLimitOrders","userParams","baseFetchURL","userURL","offset","limit","hideSmallBalances","orderBy","getRequiredBalance","getLimitOrderByHash","constructPostLimitOrder","getBaseFetchURLByOrderType","postTypedOrder","limitOrderWithSignatureAndPermit","_yield$fetcher","newOrder","postLimitOrder","postP2POrder","constructApproveTokenForLimitOrder","approveMakerTokenForLimitOrder","_constructApproveToke","approveTakerTokenForLimitOrder","approveTakerTokenForFillingP2POrderDirectly","constructGetLimitOrdersContract","getTokenTransferProxy","getLimitOrdersContract","constructBuildLimitOrderTx","_constructBuildTx","buildSwapTx","_constructGetRate","getSwapAndLimitOrderRate","getLimitOrdersRate","_ref2$options","_options","_checkAndParseOrders","totalTakerAmount","takerAmountString","rateInput","optimalRate","checkAndParseOrders","ContractMethod","simpleBuy","buildLimitOrderTx","_checkAndParseOrders2","fillParams","buildSwapAndLimitOrderTx","_checkAndParseOrders3","destDecimals","_orders$reduce","reduce","accum","takerAssetsSet","add","makerAssetsSet","size","_orders$","constructBuildNFTOrder","buildNFTOrder","buildNFTOrderParams","constructSignNFTOrder","signNFTOrder","constructCancelNFTOrder","_constructCancelLimit","cancelNFTOrder","cancelNFTOrderBulk","constructGetNFTOrders","getNFTOrders","getNFTOrderByHash","constructPostNFTOrder","NFTOrderWithSignatureAndPermit","postNFTLimitOrder","postNFTP2POrder","constructGetNFTOrdersContract","getNFTOrdersContract","MinNFTAbi","constructApproveTokenForNFTOrder","approveERC20ForNFTOrder","_constructGetNFTOrder","approveNFTForNFTOrder","constructBuildNFTOrderTx","getSwapAndNFTOrderRate","getNFTOrdersRate","buildNFTOrderTx","buildSwapAndNFTOrderTx","uintToAssetAddress","assetUint","constructFetcher","axios","extra","headers","allParams","_yield$axios$request","apiKey","t0","fetch","body","POSTheaders","apiHeaders","JSON","stringify","keepalive","json","ok","statusText","fromEntries","config","constructEthersV5ContractCaller","account","providerOrSigner","ethersProviderOrSigner","Contract","EthersContract","staticCall","_contract$callStatic","contract","block","gas","restOverrides","normalizedOverrides","callOverrides","assertEthersContractHasMethodsV5","blockTag","gasLimit","callStatic","concat","signer","txOverrides","txResponse","isEthersProviderWithSigner","isEthersSigner","getSigner","isTypedDataCapableSigner","_signTypedData","isEthersProvider","_isProvider","_isSigner","ethersContractHasMethodsV5","_len","methods","_key","every","_len2","_key2","constructContractCaller","ethersV6ProviderOrSigner","EthersV6Contract","callableContractFunction","getFunction","send","signTypedData","baseTypeRegex","findPrimaryType","candidates","keys","candidatesSet","forEach","candidate","typedDataFields","_type$match","baseType","match","_Array$from","primaryType","web3","_contract$methods","currentProvider","eth","assertWeb3ContractHasMethods","_contract$methods2","_from","preparedCall","promiEvent","unpromiEvent","on","bind","once","_typedData","EIP712Domain","web3ContractHasMethods","viemClient","blockNumber","readContract","functionName","_overrides$gas","_overrides$value","viemTxParams","gasPriceParams","txHash","writeContract","txParamsToViemTxParams","to","maxFeePerGas","maxPriorityFeePerGas","gasPrice","argsToViemArgs","viemDomain","salt","txParams","asNumber","isNaN","constructGetDeltaContract","getDeltaContract","ParaswapDelta","constructGetPartnerFee","partnerFeeUrl","cachedPartnerFee","Map","getPartnerFee","get","set","SWAP_ORDER_EIP_712_TYPES","Bridge","produceDeltaOrderTypedData","orderInput","paraswapDeltaAddress","DELTA_DEFAULT_EXPIRY","buildDeltaSignableOrderData","_ref2$beneficiary","beneficiary","expectedAmount","_ref2$deadline","Date","now","_ref2$nonce","_ref2$permit","permit","kind","_ref2$metadata","metadata","partnerAddress","partnerFeeBps","_ref2$partnerTakesSur","partnerTakesSurplus","_ref2$capSurplus","capSurplus","bridge","partnerAndFee","producePartnerAndFee","capSurplusShifted","toFixed","OrderKind","SwapSideToOrderKind","_SwapSideToOrderKind","Sell","Buy","constructBuildDeltaOrder","_constructGetDeltaCon","_constructGetPartnerF","buildDeltaOrder","_options$partnerFeeBp","_partnerFeeBps2","_partnerTakesSurplus2","_options$side","_options$nonce","feeOrTakeSurplusSupplied","_partnerAddress","_partnerAddress2","_partnerFeeBps","_partnerTakesSurplus","partnerFeeResponse","swapSide","input","deltaPrice","partnerFee","constructPostDeltaOrder","postOrderUrl","postDeltaOrder","postData","deltaOrderToPost","sanitizeDeltaOrderData","constructSignDeltaOrder","signDeltaOrder","PreSignatureModuleAbi","constructPreSignDeltaOrder","hashDeltaOrderTypedData","produceDeltaOrderHash","hashDeltaOrder","orderData","setDeltaOrderPreSignature","preSignDeltaOrder","signableOrderData","hashTypedData","constructGetDeltaPrice","getDeltaPrice","_getDeltaPrice","includeAgents","excludeAgents","includeBridges","excludeBridges","includeAgentsString","excludeAgentsString","includeBridgesString","excludeBridgesString","price","constructGetDeltaOrders","baseUrl","getDeltaOrderById","orderId","getDeltaOrderByHash","getDeltaOrders","_options$chainId","_options$status","chainIdString","statusString","page","getRequiredBalanceForDeltaLimitOrders","constructApproveTokenForDelta","getParaswapDeltaAddress","deltaContract","approveTokenForDelta","constructGetBridgeInfo","deltaBridgeUrl","getBridgeInfo","_params","allowBridgeAndSwap","bridges","bridgesString","supportedTokens","getBridgeProtocols","bridgeProtocols","constructIsTokenSupportedInDelta","bridgeInfoUrl","isTokenSupportedInDelta","supported","constructGetQuote","getQuote","_getQuote","ORDER_CANCELLATIONS_EIP_712_TYPES","OrderCancellations","buildCancelDeltaOrderSignableData","orderIds","constructCancelDeltaOrder","signCancelLimitDeltaOrderRequest","postCancelLimitDeltaOrderRequest","cancelUrl","cancelLimitDeltaOrders","constructPartialSDK","_config$apiURL","_config$version","funcs","sdkFuncs","sdkSlice","assign","sdk","constructSwapSDK","constructApproveTokenWithTxResponse","constructSubmitLimitOrder","_constructBuildLimitO","_constructSignLimitOr","_constructPostLimitOr","prepareLimitOrder","orderWithSignature","submitLimitOrder","submitP2POrder","constructAllLimitOrdersHandlers","limitOrdersGetters","limitOrdersContractGetter","limitOrdersSubmit","limitOrdersBuild","limitOrdersSign","limitOrdersPost","limitOrdersCancel","limitOrdersApproveToken","limitOrdersFillOrderDirectly","limitOrdersBuildTx","constructSubmitDeltaOrder","_constructBuildDeltaO","_constructSignDeltaOr","_constructPostDeltaOr","submitDeltaOrder","orderParams","partiallyFillable","referrerAddress","constructAllDeltaOrdersHandlers","deltaOrdersGetters","deltaOrdersContractGetter","bridgeInfo","deltaOrdersSubmit","deltaOrdersBuild","deltaOrdersSign","deltaOrdersPreSign","deltaOrdersPost","deltaOrdersCancel","constructSubmitNFTOrder","_constructBuildNFTOrd","_constructSignNFTOrde","_constructPostNFTOrde","prepareNFTOrder","submitNFTOrder","constructAllNFTOrdersHandlers","NFTOrdersGetters","NFTOrdersContractGetter","NFTOrdersSubmit","NFTOrdersBuild","NFTOrdersSign","NFTOrdersPost","NFTOrdersCancel","NFTOrdersApproveToken","NFTOrdersBuildTx","constructFullSDK","swap","limitOrders","nftOrders","delta","quote","constructAxiosFetcher","constructFetchFetcher","_params$requestParams","_params$requestParams2","constructSimpleSDK","providerOptions","_options$apiURL2","_options$version2","_options$apiURL","constructSimpleContractCaller","_constructEthersV5Con","_transactCall","contractTx","hash","_constructEthersV6Con","constructEthersV6ContractCaller","constructViemContractCaller","_constructWeb3Contrac","constructWeb3ContractCaller","resolve","reject"],"mappings":"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"}