@velora-dex/sdk 9.5.2 → 9.5.3-dev.0

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/misc.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/signDeltaOrder.ts","../src/methods/delta/helpers/abi.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/delta/helpers/buildExternalOrderData.ts","../src/methods/delta/buildExternalDeltaOrder.ts","../src/methods/delta/signExternalDeltaOrder.ts","../src/methods/delta/postExternalDeltaOrder.ts","../src/methods/delta/preSignExternalDeltaOrder.ts","../src/methods/delta/constants.ts","../src/methods/delta/helpers/buildTWAPOrderData.ts","../src/methods/delta/buildTWAPDeltaOrder.ts","../src/methods/delta/signTWAPDeltaOrder.ts","../src/methods/delta/postTWAPDeltaOrder.ts","../src/methods/delta/preSignTWAPDeltaOrder.ts","../src/methods/quote/getQuote.ts","../src/methods/delta/helpers/buildCancelDeltaOrderData.ts","../src/methods/delta/cancelDeltaOrder.ts","../src/methods/delta/deltaTokenModule.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 degenMode?: 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 degenMode?: boolean;\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 degenMode?: 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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type BuildLimitOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildLimitOrder: BuildLimitOrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type SignLimitOrderFunctions = {\n signLimitOrder: (signableOrderData: SignableOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type PostLimitOrderFunctions = {\n postLimitOrder: PostLimitOrder;\n postP2POrder: PostLimitOrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type GetLimitOrdersContractFunctions = {\n getLimitOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type BuildNFTOrderInput = Omit<\n BuildNFTOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress'\n>;\n\ntype BuildNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableNFTOrderData>;\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type BuildNFTOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildNFTOrder: BuildNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type SignNFTOrderFunctions = {\n signNFTOrder: (signableOrderData: SignableNFTOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type CancelNFTOrderFunctions<T> = {\n cancelNFTOrder: CancelOrder<T>;\n cancelNFTOrderBulk: CancelOrderBulk<T>;\n};\n\n// should work the same as for LimitOrders\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type GetNFTOrdersFunctions = {\n getNFTOrders: GetNFTOrders;\n getNFTOrderByHash: GetNFTOrderByHash;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type PostNFTOrderFunctions = {\n postNFTLimitOrder: PostNFTOrder;\n postNFTP2POrder: PostNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type GetNFTOrdersContractFunctions = {\n getNFTOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n// should work the same as LimitOrders\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 { ZERO_ADDRESS } from '../../common/orders/buildOrderData';\nimport type { SignableDeltaOrderData } from './buildDeltaOrderData';\nimport type { SignableExternalOrderData } from './buildExternalOrderData';\nimport type { SignableTWAPOrderData } from './buildTWAPOrderData';\nimport type { GetPartnerFeeFunctions } from '../getPartnerFee';\nimport type { RequestParameters } from '../../../types';\nimport type { DeltaAmountsWithSlippage, SwapSideUnion } from './types';\nimport { SwapSide } from '../../../constants';\nimport { assert } from 'ts-essentials';\n\n// default deadline = 10 min\nexport const DELTA_DEFAULT_EXPIRY = 10 * 60; // seconds\n\ntype ProducePartnerAndFeeInput = {\n partnerFeeBps: number;\n partnerAddress: string;\n partnerTakesSurplus: boolean;\n capSurplus: boolean;\n};\n\n// fee and address are encoded together\nexport function 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\ntype ApplySlippageInput = {\n amount: string;\n slippageBps: number;\n increase: boolean;\n};\n\nexport function applySlippage({\n amount,\n slippageBps,\n increase,\n}: ApplySlippageInput): string {\n assert(\n Number.isInteger(slippageBps) && slippageBps >= 0 && slippageBps <= 10_000,\n 'slippageBps must be an integer between 0 and 10_000'\n );\n\n const BPS_BASE = 10_000n;\n const amt = BigInt(amount);\n const bps = BigInt(slippageBps);\n\n return increase\n ? ((amt * (BPS_BASE + bps)) / BPS_BASE).toString(10)\n : ((amt * (BPS_BASE - bps)) / BPS_BASE).toString(10);\n}\n\nexport type ResolvePartnerFeeInput = {\n partnerAddress?: string;\n partnerFeeBps?: number;\n partnerTakesSurplus?: boolean;\n partner?: string;\n deltaPrice: { partner?: string; partnerFee?: number };\n};\n\nexport type ResolvedPartnerFee = {\n partnerAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus: boolean;\n};\n\nexport async function resolvePartnerFee(\n options: ResolvePartnerFeeInput,\n getPartnerFee: GetPartnerFeeFunctions['getPartnerFee'],\n requestParams?: RequestParameters\n): Promise<ResolvedPartnerFee> {\n // externally supplied partner fee data takes precedence\n let partnerAddress = options.partnerAddress;\n let partnerFeeBps =\n options.partnerFeeBps ??\n (options.deltaPrice.partnerFee !== undefined\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 * 100;\n partnerTakesSurplus =\n partnerTakesSurplus ?? partnerFeeResponse.takeSurplus;\n }\n }\n\n return {\n partnerAddress,\n partnerFeeBps: partnerFeeBps ?? 0,\n partnerTakesSurplus: partnerTakesSurplus ?? false,\n };\n}\n\nexport type ResolveAmountsInput = DeltaAmountsWithSlippage & {\n deltaPrice: { destAmount: string; srcAmount: string };\n};\n\nexport type ResolvedAmounts = {\n srcAmount: string;\n destAmount: string;\n expectedAmount: string;\n swapSide: SwapSideUnion;\n};\n\nexport function resolveAmounts(options: ResolveAmountsInput): ResolvedAmounts {\n let srcAmount: string;\n let destAmount: string;\n\n const swapSide: SwapSideUnion =\n options.slippage !== undefined\n ? options.srcAmount !== undefined\n ? SwapSide.SELL\n : SwapSide.BUY\n : options.side ?? SwapSide.SELL;\n\n if (options.slippage !== undefined) {\n if (options.srcAmount !== undefined) {\n // SELL with slippage: destAmount auto-computed\n srcAmount = options.srcAmount;\n destAmount = applySlippage({\n amount: options.deltaPrice.destAmount,\n slippageBps: options.slippage,\n increase: false,\n });\n } else {\n // BUY with slippage: srcAmount auto-computed\n destAmount = options.destAmount;\n srcAmount = applySlippage({\n amount: options.deltaPrice.srcAmount,\n slippageBps: options.slippage,\n increase: true,\n });\n }\n } else {\n srcAmount = options.srcAmount;\n destAmount = options.destAmount;\n }\n\n const expectedAmount =\n swapSide === SwapSide.SELL\n ? options.deltaPrice.destAmount\n : options.deltaPrice.srcAmount;\n\n return { srcAmount, destAmount, expectedAmount, swapSide };\n}\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\nexport function sanitizeExternalOrderData({\n owner,\n handler,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n kind,\n metadata,\n data,\n}: SignableExternalOrderData['data'] &\n Record<string, any>): SignableExternalOrderData['data'] {\n return {\n owner,\n handler,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n kind,\n metadata,\n data,\n };\n}\n\nexport function sanitizeTWAPOrderData(\n orderData: SignableTWAPOrderData['data']\n): SignableTWAPOrderData['data'] {\n const common = {\n owner: orderData.owner,\n beneficiary: orderData.beneficiary,\n srcToken: orderData.srcToken,\n destToken: orderData.destToken,\n nonce: orderData.nonce,\n partnerAndFee: orderData.partnerAndFee,\n deadline: orderData.deadline,\n interval: orderData.interval,\n numSlices: orderData.numSlices,\n permit: orderData.permit,\n metadata: orderData.metadata,\n bridge: orderData.bridge,\n };\n\n if ('destAmountPerSlice' in orderData) {\n // TWAPOrder (SELL)\n return {\n ...common,\n destAmountPerSlice: orderData.destAmountPerSlice,\n totalSrcAmount: orderData.totalSrcAmount,\n };\n }\n\n // TWAPBuyOrder (BUY)\n return {\n ...common,\n totalDestAmount: orderData.totalDestAmount,\n maxSrcAmount: orderData.maxSrcAmount,\n };\n}\n","import { MarkOptional } from 'ts-essentials';\nimport { Domain } from '../../common/orders/buildOrderData';\nimport { Bridge, DeltaAuctionOrder } from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\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 return {\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\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\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","import type { EnumerateLiteral } from '../../../types';\nimport { SwapSide } from '../../../constants';\n\nexport type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\n/** @description SELL with slippage: srcAmount provided, destAmount auto-computed from deltaPrice.destAmount */\nexport type DeltaAmountsSellSlippage = {\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage: number;\n /** @description The amount of src token to swap */\n srcAmount: string;\n destAmount?: never;\n /** @description The side of the order */\n side?: 'SELL';\n};\n/** @description BUY with slippage: destAmount provided, srcAmount auto-computed from deltaPrice.srcAmount */\nexport type DeltaAmountsBuySlippage = {\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage: number;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n srcAmount?: never;\n /** @description The side of the order */\n side?: 'BUY';\n};\n/** @description Explicit amounts, no slippage (backward-compatible) */\nexport type DeltaAmountsExplicit = {\n slippage?: never;\n /** @description The amount of src token to swap */\n srcAmount: string;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n /** @description The side of the order. Default is SELL */\n side?: SwapSideUnion;\n};\n\nexport type DeltaAmountsWithSlippage =\n | DeltaAmountsSellSlippage\n | DeltaAmountsBuySlippage\n | DeltaAmountsExplicit;\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 ExternalDeltaOrder = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the external handler contract */\n handler: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token */\n destToken: string;\n /** @description The amount of src token to swap */\n srcAmount: string;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n /** @description The expected amount of token to receive */\n expectedAmount: string;\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;\n /** @description The nonce of the order */\n nonce: string;\n /** @description Optional permit signature for the src token */\n permit: string;\n /** @description Encoded partner address, fee bps, and flags for the order */\n partnerAndFee: string;\n /** @description Protocol-specific encoded bytes for the external handler */\n data: string;\n};\n\ntype TWAPDeltaOrderBase = {\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 nonce of the order */\n nonce: string; // can be random, can even be Date.now()\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 deadline for the order */\n deadline: number; // seconds\n /** @description The interval between each slice execution */\n interval: number; // seconds\n /** @description The number of slices to execute */\n numSlices: number;\n /** @description Optional permit signature for the src token */\n permit: string; //can be \"0x\"\n /** @description Metadata for the order, hex string */\n metadata: string;\n /** @description The bridge input */\n bridge: Bridge;\n};\n\nexport type TWAPDeltaOrder = TWAPDeltaOrderBase & {\n /** @description The amount of dest token to receive per slice */\n destAmountPerSlice: string; // wei\n /** @description The total amount of src token to swap */\n totalSrcAmount: string; // wei\n /** @description Optional permit signature for the src token */\n};\n\nexport type TWAPBuyDeltaOrder = TWAPDeltaOrderBase & {\n /** @description The total amount of dest token to buy across all slices */\n totalDestAmount: string; // wei\n /** @description The maximum amount of src token willing to spend */\n maxSrcAmount: string; // wei\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 | 'REFUNDED';\n\nexport type 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 OnChainOrderMap = {\n Order: DeltaAuctionOrder;\n ExternalOrder: ExternalDeltaOrder;\n TWAPOrder: TWAPDeltaOrder;\n TWAPBuyOrder: TWAPBuyDeltaOrder;\n};\n\ntype DeltaAuctionBase = {\n id: string;\n deltaVersion: string; // 1.0 or 2.0 currently\n user: string;\n status: DeltaAuctionStatus;\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 type: 'MARKET' | 'LIMIT';\n};\n\nexport type DeltaAuction<T extends OnChainOrderType = OnChainOrderType> =\n T extends T\n ? DeltaAuctionBase & {\n onChainOrderType: T;\n order: OnChainOrderMap[T];\n }\n : never;\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\nexport type OnChainOrderType =\n | 'Order'\n | 'ExternalOrder'\n | 'TWAPOrder'\n | 'TWAPBuyOrder';\n\nexport type TWAPOnChainOrderType = 'TWAPOrder' | 'TWAPBuyOrder';\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 { ConstructFetchInput, RequestParameters } 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 type { DeltaAmountsWithSlippage } from './helpers/types';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport { resolvePartnerFee, resolveAmounts } from './helpers/misc';\nimport type { MarkOptional } from 'ts-essentials';\nexport type { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\n\ntype BuildDeltaOrderDataParamsBase = {\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 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 Metadata for the order, hex string */\n metadata?: string;\n};\n\nexport type BuildDeltaOrderDataParams = BuildDeltaOrderDataParamsBase &\n DeltaAmountsWithSlippage;\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 const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(options, getPartnerFee, requestParams);\n\n const { srcAmount, destAmount, expectedAmount, swapSide } =\n resolveAmounts(options);\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,\n 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 { constructSearchString } from '../../helpers/misc';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type {\n DeltaAuction,\n OnChainOrderMap,\n OnChainOrderType,\n} from './helpers/types';\n\nexport type DeltaOrderToPost<T extends OnChainOrderType = 'Order'> = {\n /** @description Partner string */\n partner?: string;\n /** @description Referrer address */\n referrerAddress?: string;\n order: OnChainOrderMap[T];\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 degenMode?: boolean;\n};\n\ntype PostDeltaOrder = (\n postData: PostDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'Order'>>;\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 { degenMode, ...postData } = _postData;\n const deltaOrderToPost: DeltaOrderToPost = { ...postData, chainId };\n\n const search = constructSearchString<{ degenMode?: boolean }>({\n degenMode,\n });\n const fetchURL = `${postOrderUrl}/${search}` as const;\n\n return fetcher<DeltaAuction<'Order'>>({\n url: fetchURL,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postDeltaOrder };\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","export const 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","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 { PreSignatureModuleAbi } from './helpers/abi';\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\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 { 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 /** @description In %. It's a way to bypass the API price impact check (default = 15%) */\n maxImpact?: number;\n maxUSDImpact?: number;\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 degenMode?: 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\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 | 'srcAmount'\n | 'srcAmountBeforeFee' // Available for BUY side\n | 'srcUSD'\n | 'srcUSDBeforeFee' // Available for BUY side\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 {\n DeltaAuction,\n DeltaAuctionStatus,\n OnChainOrderType,\n} from './helpers/types';\n\n/** @deprecated Use DeltaAuction directly */\nexport type DeltaOrderFromAPI = DeltaAuction;\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<DeltaAuction>;\n\ntype GetDeltaOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction>;\n\ntype OrdersFilter<T extends OnChainOrderType = OnChainOrderType> = {\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 /** @description Filter by on-chain order type. Order, ExternalOrder. Orders of all types are returned if not specified */\n onChainOrderType?: T;\n};\ntype OrderFiltersQuery = Omit<OrdersFilter, 'chainId' | 'status'> & {\n chainId?: string;\n status?: string;\n};\n\ntype GetDeltaOrders = {\n <T extends OnChainOrderType>(\n options: OrdersFilter<T> & { onChainOrderType: T },\n requestParams?: RequestParameters\n ): Promise<DeltaAuction<T>[]>;\n (options: OrdersFilter, requestParams?: RequestParameters): Promise<\n DeltaAuction[]\n >;\n};\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<DeltaAuction>({\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<DeltaAuction>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrders: GetDeltaOrders = async <\n T extends OnChainOrderType = OnChainOrderType\n >(\n options: OrdersFilter<T>,\n requestParams?: RequestParameters\n ) => {\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 onChainOrderType: options.onChainOrderType,\n chainId: chainIdString,\n status: statusString,\n });\n\n const fetchURL = `${baseUrl}${search}` as const;\n\n const orders = await fetcher<DeltaAuction<T>[]>({\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 { MarkOptional } from 'ts-essentials';\nimport { Domain } from '../../common/orders/buildOrderData';\nimport { ExternalDeltaOrder } from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\n\nconst EXTERNAL_ORDER_EIP_712_TYPES = {\n ExternalOrder: [\n { name: 'owner', type: 'address' },\n { name: 'handler', 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: 'data', type: 'bytes' },\n ],\n};\n\nexport type SignableExternalOrderData = {\n types: {\n ExternalOrder: typeof EXTERNAL_ORDER_EIP_712_TYPES.ExternalOrder;\n };\n domain: Domain;\n data: ExternalDeltaOrder;\n};\n\ntype SignExternalOrderInput = {\n orderInput: ExternalDeltaOrder;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function produceExternalOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: SignExternalOrderInput): SignableExternalOrderData {\n return {\n types: {\n ExternalOrder: EXTERNAL_ORDER_EIP_712_TYPES.ExternalOrder,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: orderInput,\n };\n}\n\nexport type ExternalOrderDataInput = MarkOptional<\n Omit<ExternalDeltaOrder, 'partnerAndFee'>,\n 'deadline' | 'nonce' | 'permit'\n>;\n\nexport type BuildExternalOrderDataInput = MarkOptional<\n ExternalOrderDataInput,\n 'metadata'\n> & {\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n};\n\nexport function buildExternalOrderSignableData({\n owner,\n handler,\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),\n\n permit = '0x',\n\n kind,\n metadata = '0x',\n data,\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n\n chainId,\n paraswapDeltaAddress,\n}: BuildExternalOrderDataInput): SignableExternalOrderData {\n const orderInput: ExternalDeltaOrder = {\n owner,\n handler,\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 kind,\n metadata,\n data,\n };\n\n return produceExternalOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n });\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { DeltaPrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildExternalOrderSignableData,\n type BuildExternalOrderDataInput,\n type SignableExternalOrderData,\n} from './helpers/buildExternalOrderData';\nimport type { DeltaAmountsWithSlippage } from './helpers/types';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport type { MarkOptional } from 'ts-essentials';\nimport { resolvePartnerFee, resolveAmounts } from './helpers/misc';\nexport type { SignableExternalOrderData } from './helpers/buildExternalOrderData';\n\ntype BuildExternalDeltaOrderParamsBase = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the external handler contract */\n handler: string;\n /** @description Protocol-specific encoded bytes for the external handler */\n data: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token */\n destToken: string;\n /** @description The deadline for the order */\n deadline?: number;\n /** @description The nonce of the order */\n nonce?: number | string;\n /** @description Optional permit signature for the src token */\n permit?: string;\n /** @description Partner string */\n partner?: string;\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 /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) */\n deltaPrice: MarkOptional<\n Pick<\n DeltaPrice,\n 'destAmount' | 'partner' | 'partnerFee' | 'destToken' | 'srcAmount'\n >,\n 'partner' | 'partnerFee'\n >;\n};\n\nexport type BuildExternalDeltaOrderParams = BuildExternalDeltaOrderParamsBase &\n DeltaAmountsWithSlippage;\n\ntype BuildExternalDeltaOrder = (\n buildOrderParams: BuildExternalDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<SignableExternalOrderData>;\n\nexport type BuildExternalDeltaOrderFunctions = {\n /** @description Build External Orders to be posted to Delta API for execution */\n buildExternalDeltaOrder: BuildExternalDeltaOrder;\n};\n\nexport const constructBuildExternalDeltaOrder = (\n options: ConstructFetchInput\n): BuildExternalDeltaOrderFunctions => {\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 buildExternalDeltaOrder: BuildExternalDeltaOrder = async (\n options,\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${chainId}`);\n }\n\n const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(options, getPartnerFee, requestParams);\n\n const { srcAmount, destAmount, expectedAmount, swapSide } =\n resolveAmounts(options);\n\n const input: BuildExternalOrderDataInput = {\n owner: options.owner,\n handler: options.handler,\n srcToken: options.srcToken,\n destToken: options.deltaPrice.destToken,\n srcAmount,\n 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 data: options.data,\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n\n capSurplus: options.capSurplus,\n };\n\n return buildExternalOrderSignableData(input);\n };\n\n return {\n buildExternalDeltaOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableExternalOrderData } from './helpers/buildExternalOrderData';\nimport { sanitizeExternalOrderData } from './helpers/misc';\n\ntype SignExternalDeltaOrder = (\n signableOrderData: SignableExternalOrderData\n) => Promise<string>;\n\nexport type SignExternalDeltaOrderFunctions = {\n signExternalDeltaOrder: SignExternalDeltaOrder;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignExternalDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignExternalDeltaOrderFunctions => {\n const signExternalDeltaOrder: SignExternalDeltaOrder = async (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableExternalOrderData = {\n ...typedData,\n data: sanitizeExternalOrderData(typedData.data),\n };\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signExternalDeltaOrder };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type { DeltaAuction } from './helpers/types';\nimport type { DeltaOrderToPost } from './postDeltaOrder';\n\nexport type PostExternalDeltaOrderParams = Omit<\n DeltaOrderToPost<'ExternalOrder'>,\n 'chainId'\n>;\n\ntype PostExternalDeltaOrder = (\n postData: PostExternalDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'ExternalOrder'>>;\n\nexport type PostExternalDeltaOrderFunctions = {\n postExternalDeltaOrder: PostExternalDeltaOrder;\n};\n\nexport const constructPostExternalDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostExternalDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postExternalDeltaOrder: PostExternalDeltaOrder = (\n postData,\n requestParams\n ) => {\n const deltaOrderToPost: DeltaOrderToPost<'ExternalOrder'> = {\n ...postData,\n chainId,\n };\n\n return fetcher<DeltaAuction<'ExternalOrder'>>({\n url: postOrderUrl,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postExternalDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceExternalOrderTypedData,\n SignableExternalOrderData,\n} from './helpers/buildExternalOrderData';\nimport { sanitizeExternalOrderData } from './helpers/misc';\nimport { PreSignatureModuleAbi } from './helpers/abi';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { ExternalDeltaOrder } from './helpers/types';\n\ntype HashExternalDeltaOrderTypedData = (\n signableOrderData: SignableExternalOrderData\n) => string;\n\ntype HashExternalDeltaOrder = (\n orderData: ExternalDeltaOrder,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type SetExternalDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignExternalDeltaOrder<T> = (\n signableOrderData: SignableExternalOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignExternalDeltaOrderFunctions<T> = {\n hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData;\n hashExternalDeltaOrder: HashExternalDeltaOrder;\n setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<T>;\n preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T>;\n};\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructPreSignExternalDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignExternalDeltaOrderFunctions<T> => {\n const hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData = (\n typedData\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableExternalOrderData = {\n ...typedData,\n data: sanitizeExternalOrderData(typedData.data),\n };\n\n const orderHash = produceExternalOrderHash(typedDataOnly);\n\n return orderHash;\n };\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashExternalDeltaOrder: HashExternalDeltaOrder = async (\n orderData,\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 = produceExternalOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n });\n return hashExternalDeltaOrderTypedData(typedData);\n };\n\n const setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<\n T\n > = async (orderHash, overrides = {}, 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 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 preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashExternalDeltaOrderTypedData(signableOrderData);\n const res = await setExternalDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashExternalDeltaOrderTypedData,\n hashExternalDeltaOrder,\n setExternalDeltaOrderPreSignature,\n preSignExternalDeltaOrder,\n };\n};\n\nexport function produceExternalOrderHash(\n typedData: SignableExternalOrderData\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 { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nimport { Bridge } from './helpers/types';\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","import { Domain } from '../../common/orders/buildOrderData';\nimport {\n Bridge,\n TWAPDeltaOrder,\n TWAPBuyDeltaOrder,\n TWAPOnChainOrderType,\n OnChainOrderMap,\n} from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\n\nconst BRIDGE_EIP_712_TYPE = [\n { name: 'protocolSelector', type: 'bytes4' },\n { name: 'destinationChainId', type: 'uint256' },\n { name: 'outputToken', type: 'address' },\n { name: 'scalingFactor', type: 'int8' },\n { name: 'protocolData', type: 'bytes' },\n];\n\nconst TWAP_ORDER_EIP_712_TYPES = {\n TWAPOrder: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'deadline', type: 'uint64' },\n { name: 'interval', type: 'uint64' },\n { name: 'numSlices', type: 'uint32' },\n { name: 'destAmountPerSlice', type: 'uint256' },\n { name: 'totalSrcAmount', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: BRIDGE_EIP_712_TYPE,\n};\n\nconst TWAP_BUY_ORDER_EIP_712_TYPES = {\n TWAPBuyOrder: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'deadline', type: 'uint64' },\n { name: 'interval', type: 'uint64' },\n { name: 'numSlices', type: 'uint32' },\n { name: 'totalDestAmount', type: 'uint256' },\n { name: 'maxSrcAmount', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: BRIDGE_EIP_712_TYPE,\n};\n\nexport type SignableTWAPSellOrderData = {\n types: typeof TWAP_ORDER_EIP_712_TYPES;\n domain: Domain;\n data: TWAPDeltaOrder;\n};\n\nexport type SignableTWAPBuyOrderData = {\n types: typeof TWAP_BUY_ORDER_EIP_712_TYPES;\n domain: Domain;\n data: TWAPBuyDeltaOrder;\n};\n\nexport type SignableTWAPOrderData =\n | SignableTWAPSellOrderData\n | SignableTWAPBuyOrderData;\n\ntype ProduceTWAPOrderTypedDataInput<T extends TWAPOnChainOrderType> = {\n orderInput: OnChainOrderMap[T];\n paraswapDeltaAddress: string;\n chainId: number;\n onChainOrderType: T;\n};\n\nexport function produceTWAPOrderTypedData(\n params: ProduceTWAPOrderTypedDataInput<'TWAPOrder'>\n): SignableTWAPSellOrderData;\nexport function produceTWAPOrderTypedData(\n params: ProduceTWAPOrderTypedDataInput<'TWAPBuyOrder'>\n): SignableTWAPBuyOrderData;\nexport function produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType,\n}: ProduceTWAPOrderTypedDataInput<TWAPOnChainOrderType>) {\n const domain: Domain = {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n };\n\n if (onChainOrderType === 'TWAPOrder') {\n return {\n types: TWAP_ORDER_EIP_712_TYPES,\n domain,\n data: orderInput,\n };\n }\n\n return {\n types: TWAP_BUY_ORDER_EIP_712_TYPES,\n domain,\n data: orderInput,\n };\n}\n\nexport type TWAPOrderCommonInput = {\n owner: string;\n beneficiary?: string;\n srcToken: string;\n destToken: string;\n nonce?: string;\n deadline?: number;\n permit?: string;\n metadata?: string;\n interval: number;\n numSlices: number;\n bridge: Bridge;\n\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n};\n\nexport type BuildTWAPSellOrderDataInput = TWAPOrderCommonInput & {\n onChainOrderType: 'TWAPOrder';\n destAmountPerSlice: string;\n totalSrcAmount: string;\n};\n\nexport type BuildTWAPBuyOrderDataInput = TWAPOrderCommonInput & {\n onChainOrderType: 'TWAPBuyOrder';\n totalDestAmount: string;\n maxSrcAmount: string;\n};\n\nexport type BuildTWAPOrderDataInput =\n | BuildTWAPSellOrderDataInput\n | BuildTWAPBuyOrderDataInput;\n\nexport function buildTWAPSignableOrderData(\n input: BuildTWAPOrderDataInput\n): SignableTWAPOrderData {\n const {\n owner,\n beneficiary = owner,\n srcToken,\n destToken,\n nonce = Date.now().toString(10),\n permit = '0x',\n metadata = '0x',\n interval,\n numSlices,\n bridge,\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType,\n } = input;\n\n const deadline =\n input.deadline ??\n // all slices must execute before the deadline,\n // so we add the total duration of the TWAP (interval * numSlices) to the current time,\n // plus a buffer defined by DELTA_DEFAULT_EXPIRY\n Math.floor(Date.now() / 1000 + interval * numSlices + DELTA_DEFAULT_EXPIRY);\n\n const partnerAndFee = producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n });\n\n const commonFields = {\n owner,\n beneficiary,\n srcToken,\n destToken,\n nonce,\n partnerAndFee,\n deadline,\n interval,\n numSlices,\n permit,\n metadata,\n bridge,\n };\n\n if (onChainOrderType === 'TWAPOrder') {\n const orderInput: TWAPDeltaOrder = {\n ...commonFields,\n destAmountPerSlice: input.destAmountPerSlice,\n totalSrcAmount: input.totalSrcAmount,\n };\n\n return produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType: 'TWAPOrder',\n });\n }\n\n const orderInput: TWAPBuyDeltaOrder = {\n ...commonFields,\n totalDestAmount: input.totalDestAmount,\n maxSrcAmount: input.maxSrcAmount,\n };\n\n return produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType: 'TWAPBuyOrder',\n });\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { DEFAULT_BRIDGE } from './constants';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { BridgePrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildTWAPSignableOrderData,\n TWAPOrderCommonInput,\n type BuildTWAPOrderDataInput,\n type SignableTWAPOrderData,\n} from './helpers/buildTWAPOrderData';\nimport { applySlippage, resolvePartnerFee } from './helpers/misc';\nimport type { MarkOptional } from 'ts-essentials';\nexport type { SignableTWAPOrderData } from './helpers/buildTWAPOrderData';\n\ntype BuildTWAPDeltaOrderParamsBase = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary?: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */\n destToken: string;\n /** @description The deadline for the order */\n deadline?: number;\n /** @description The nonce of the order */\n nonce?: number | string;\n /** @description Optional permit signature for the src token */\n permit?: string;\n /** @description Partner string */\n partner?: string;\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n /** @description Seconds between slice executions (min 60) */\n interval: number;\n /** @description Number of slices (min 2) */\n numSlices: number;\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage?: number;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) for a single slice */\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 /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n};\n\nexport type BuildTWAPSellOrderParams = BuildTWAPDeltaOrderParamsBase & {\n /** @description Must be \"TWAPOrder\" for sell orders */\n onChainOrderType: 'TWAPOrder';\n /** @description Total source token amount across all slices */\n totalSrcAmount: string;\n};\n\nexport type BuildTWAPBuyOrderParams = BuildTWAPDeltaOrderParamsBase & {\n /** @description Must be \"TWAPBuyOrder\" for buy orders */\n onChainOrderType: 'TWAPBuyOrder';\n /** @description Total destination token amount to buy across all slices */\n totalDestAmount: string;\n /** @description Maximum source token amount willing to spend */\n maxSrcAmount: string;\n};\n\nexport type BuildTWAPDeltaOrderParams =\n | BuildTWAPSellOrderParams\n | BuildTWAPBuyOrderParams;\n\ntype BuildTWAPDeltaOrder = (\n buildOrderParams: BuildTWAPDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<SignableTWAPOrderData>;\n\nexport type BuildTWAPDeltaOrderFunctions = {\n /** @description Build TWAP Orders (sell or buy) to be posted to Delta API for execution */\n buildTWAPDeltaOrder: BuildTWAPDeltaOrder;\n};\n\nexport const constructBuildTWAPDeltaOrder = (\n options: ConstructFetchInput\n): BuildTWAPDeltaOrderFunctions => {\n const { chainId } = options;\n\n const { getDeltaContract } = constructGetDeltaContract(options);\n const { getPartnerFee } = constructGetPartnerFee(options);\n\n const buildTWAPDeltaOrder: BuildTWAPDeltaOrder = 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 ${chainId}`);\n }\n\n const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(params, getPartnerFee, requestParams);\n\n const commonInput: TWAPOrderCommonInput = {\n owner: params.owner,\n beneficiary: params.beneficiary,\n srcToken: params.srcToken,\n destToken: params.deltaPrice.destToken,\n deadline: params.deadline,\n nonce: params.nonce?.toString(10),\n permit: params.permit,\n metadata: params.metadata,\n interval: params.interval,\n numSlices: params.numSlices,\n bridge: {\n ...params.deltaPrice.bridge,\n // TWAP child orders get their bridge data at execution time\n protocolData: DEFAULT_BRIDGE.protocolData,\n },\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n capSurplus: params.capSurplus,\n };\n\n let input: BuildTWAPOrderDataInput;\n\n if (params.onChainOrderType === 'TWAPOrder') {\n const slippage = params.slippage ?? 0;\n const destAmountPerSlice =\n slippage > 0\n ? applySlippage({\n amount: params.deltaPrice.destAmount,\n slippageBps: slippage,\n increase: false,\n })\n : params.deltaPrice.destAmount;\n\n input = {\n ...commonInput,\n onChainOrderType: 'TWAPOrder',\n destAmountPerSlice,\n totalSrcAmount: params.totalSrcAmount,\n };\n } else {\n const slippage = params.slippage ?? 0;\n const maxSrcAmount =\n slippage > 0\n ? applySlippage({\n amount: params.maxSrcAmount,\n slippageBps: slippage,\n increase: true,\n })\n : params.maxSrcAmount;\n\n input = {\n ...commonInput,\n onChainOrderType: 'TWAPBuyOrder',\n totalDestAmount: params.totalDestAmount,\n maxSrcAmount,\n };\n }\n\n return buildTWAPSignableOrderData(input);\n };\n\n return {\n buildTWAPDeltaOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableTWAPOrderData } from './helpers/buildTWAPOrderData';\nimport { sanitizeTWAPOrderData } from './helpers/misc';\n\ntype SignTWAPDeltaOrder = (\n signableOrderData: SignableTWAPOrderData\n) => Promise<string>;\n\nexport type SignTWAPDeltaOrderFunctions = {\n signTWAPDeltaOrder: SignTWAPDeltaOrder;\n};\n\nexport const constructSignTWAPDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignTWAPDeltaOrderFunctions => {\n const signTWAPDeltaOrder: SignTWAPDeltaOrder = async (typedData) => {\n const typedDataOnly = {\n ...typedData,\n data: sanitizeTWAPOrderData(typedData.data),\n } as SignableTWAPOrderData;\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signTWAPDeltaOrder };\n};\n","import { Prettify } from 'ts-essentials';\nimport { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type { DeltaAuction, TWAPOnChainOrderType } from './helpers/types';\nimport type { DeltaOrderToPost } from './postDeltaOrder';\nimport { constructSearchString } from '../../helpers/misc';\n\nexport type PostTWAPDeltaOrderParams = Prettify<\n Omit<\n DeltaOrderToPost<'TWAPOrder'> | DeltaOrderToPost<'TWAPBuyOrder'>,\n 'chainId'\n > & {\n /** @description Must be \"TWAPOrder\" or \"TWAPBuyOrder\" */\n onChainOrderType: TWAPOnChainOrderType;\n degenMode?: boolean;\n }\n>;\n\ntype PostTWAPDeltaOrder = (\n postData: PostTWAPDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;\n\nexport type PostTWAPDeltaOrderFunctions = {\n postTWAPDeltaOrder: PostTWAPDeltaOrder;\n};\n\nexport const constructPostTWAPDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostTWAPDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postTWAPDeltaOrder: PostTWAPDeltaOrder = (_postData, requestParams) => {\n const { degenMode, ...postData } = _postData;\n const deltaOrderToPost: DeltaOrderToPost<'TWAPOrder' | 'TWAPBuyOrder'> = {\n ...postData,\n chainId,\n };\n\n const search = constructSearchString<{ degenMode?: boolean }>({\n degenMode,\n });\n\n const fetchURL = `${postOrderUrl}/${search}` as const;\n\n return fetcher<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>({\n url: fetchURL,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postTWAPDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceTWAPOrderTypedData,\n SignableTWAPOrderData,\n} from './helpers/buildTWAPOrderData';\nimport { sanitizeTWAPOrderData } from './helpers/misc';\nimport { PreSignatureModuleAbi } from './helpers/abi';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { TWAPDeltaOrder, TWAPBuyDeltaOrder } from './helpers/types';\nimport { TypedDataField } from '../common/orders/buildOrderData';\n\ntype HashTWAPDeltaOrderTypedData = (\n signableOrderData: SignableTWAPOrderData\n) => string;\n\ntype HashTWAPDeltaOrder = {\n (\n orderData: TWAPDeltaOrder,\n onChainOrderType: 'TWAPOrder',\n requestParams?: RequestParameters\n ): Promise<string>;\n\n (\n orderData: TWAPBuyDeltaOrder,\n onChainOrderType: 'TWAPBuyOrder',\n requestParams?: RequestParameters\n ): Promise<string>;\n};\n\nexport type SetTWAPDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignTWAPDeltaOrder<T> = (\n signableOrderData: SignableTWAPOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignTWAPDeltaOrderFunctions<T> = {\n hashTWAPDeltaOrderTypedData: HashTWAPDeltaOrderTypedData;\n hashTWAPDeltaOrder: HashTWAPDeltaOrder;\n setTWAPDeltaOrderPreSignature: SetTWAPDeltaOrderPreSignature<T>;\n preSignTWAPDeltaOrder: PreSignTWAPDeltaOrder<T>;\n};\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\nexport const constructPreSignTWAPDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignTWAPDeltaOrderFunctions<T> => {\n const hashTWAPDeltaOrderTypedData: HashTWAPDeltaOrderTypedData = (\n typedData\n ) => {\n const typedDataOnly = {\n ...typedData,\n data: sanitizeTWAPOrderData(typedData.data),\n } as SignableTWAPOrderData;\n\n const orderHash = produceTWAPOrderHash(typedDataOnly);\n\n return orderHash;\n };\n\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashTWAPDeltaOrder: HashTWAPDeltaOrder = async (\n orderData,\n onChainOrderType,\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 // TwapOrder (SELL)\n if (onChainOrderType === 'TWAPOrder' && 'totalSrcAmount' in orderData) {\n const typedData = produceTWAPOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n onChainOrderType,\n });\n return hashTWAPDeltaOrderTypedData(typedData);\n }\n\n // TWAPBuyOrder (BUY)\n if (onChainOrderType === 'TWAPBuyOrder' && 'maxSrcAmount' in orderData) {\n const typedData = produceTWAPOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n onChainOrderType,\n });\n return hashTWAPDeltaOrderTypedData(typedData);\n }\n\n throw new Error(\n `Invalid order data for onChainOrderType ${onChainOrderType}`\n );\n };\n\n const setTWAPDeltaOrderPreSignature: SetTWAPDeltaOrderPreSignature<\n T\n > = async (orderHash, overrides = {}, 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 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 preSignTWAPDeltaOrder: PreSignTWAPDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashTWAPDeltaOrderTypedData(signableOrderData);\n const res = await setTWAPDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashTWAPDeltaOrderTypedData,\n hashTWAPDeltaOrder,\n setTWAPDeltaOrderPreSignature,\n preSignTWAPDeltaOrder,\n };\n};\n\nexport function produceTWAPOrderHash(typedData: SignableTWAPOrderData): string {\n const types = typedData.types as Record<\n 'TWAPOrder' | 'TWAPBuyOrder' | 'Bridge',\n TypedDataField[]\n >;\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,\n primaryType: findPrimaryType(types),\n message: typedData.data,\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 ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport { sanitizeDeltaOrderData, sanitizeTWAPOrderData } from './helpers/misc';\nimport { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\nimport { produceDeltaOrderHash } from './preSignDeltaOrder';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n DeltaAuctionOrder,\n TWAPDeltaOrder,\n TWAPBuyDeltaOrder,\n} from './helpers/types';\n\nexport type CancelAndWithdrawDeltaOrderParams = {\n order: DeltaAuctionOrder;\n /** @description A boolean indicating whether the order is a fillable order. False by default */\n isFillable?: boolean;\n};\n\nexport type CancelAndWithdrawDeltaOrder<T> = (\n params: CancelAndWithdrawDeltaOrderParams,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type WithdrawDeltaNative<T> = (\n amount: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSignParams = {\n orderHash: string;\n depositAmount: string;\n};\n\nexport type DepositNativeAndPreSign<T> = (\n params: DepositNativeAndPreSignParams,\n overrides?: Omit<TxSendOverrides, 'value'>, // value is set internally based on depositAmount\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelTWAPAndWithdrawDeltaOrder<T> = (\n order: TWAPDeltaOrder,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelTWAPBuyAndWithdrawDeltaOrder<T> = (\n order: TWAPBuyDeltaOrder,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSignDeltaOrderParams = Pick<\n DepositNativeAndPreSignParams,\n 'depositAmount'\n> & {\n signableOrderData: SignableDeltaOrderData;\n};\n\nexport type DepositNativeAndPreSignDeltaOrder<T> = (\n params: DepositNativeAndPreSignDeltaOrderParams,\n overrides?: Omit<TxSendOverrides, 'value'>, // value is set internally based on depositAmount\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DeltaTokenModuleFunctions<T> = {\n /** @description Cancel an order on-chain and withdraw native ETH back to the owner */\n cancelAndWithdrawDeltaOrder: CancelAndWithdrawDeltaOrder<T>;\n /** @description Withdraw Delta Wrapped Native tokens as native ETH */\n withdrawDeltaNative: WithdrawDeltaNative<T>;\n /** @description Deposit native ETH and pre-sign a Delta order */\n depositNativeAndPreSign: DepositNativeAndPreSign<T>;\n /** @description Deposit native ETH and pre-sign a Delta order from signable order data */\n depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<T>;\n /** @description Cancel a TWAP sell order on-chain and withdraw native ETH back to the owner */\n cancelTWAPAndWithdrawDeltaOrder: CancelTWAPAndWithdrawDeltaOrder<T>;\n /** @description Cancel a TWAP buy order on-chain and withdraw native ETH back to the owner */\n cancelTWAPBuyAndWithdrawDeltaOrder: CancelTWAPBuyAndWithdrawDeltaOrder<T>;\n};\n\nconst DeltaTokenModuleAbi = [\n {\n type: 'function',\n name: 'cancelAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct Order',\n components: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'destAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'expectedAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'kind',\n type: 'uint8',\n internalType: 'enum OrderKind',\n },\n {\n name: 'nonce',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'permit',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'metadata',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n {\n name: 'isFillable',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelTWAPAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct TWAPOrder',\n components: [\n { name: 'owner', type: 'address', internalType: 'address' },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'deadline', type: 'uint64', internalType: 'uint64' },\n { name: 'interval', type: 'uint64', internalType: 'uint64' },\n { name: 'numSlices', type: 'uint32', internalType: 'uint32' },\n {\n name: 'destAmountPerSlice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'totalSrcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'permit', type: 'bytes', internalType: 'bytes' },\n { name: 'metadata', type: 'bytes', internalType: 'bytes' },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelTWAPBuyAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct TWAPBuyOrder',\n components: [\n { name: 'owner', type: 'address', internalType: 'address' },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'deadline', type: 'uint64', internalType: 'uint64' },\n { name: 'interval', type: 'uint64', internalType: 'uint64' },\n { name: 'numSlices', type: 'uint32', internalType: 'uint32' },\n {\n name: 'totalDestAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxSrcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'permit', type: 'bytes', internalType: 'bytes' },\n { name: 'metadata', type: 'bytes', internalType: 'bytes' },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdrawNative',\n inputs: [\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'depositNativeAndPreSign',\n inputs: [\n {\n name: 'orderHash',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof DeltaTokenModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructDeltaTokenModule = <T>(\n options: Pick<\n ConstructProviderFetchInput<T, 'transactCall'>,\n 'contractCaller' | 'fetcher' | 'apiURL' | 'chainId'\n >\n): DeltaTokenModuleFunctions<T> => {\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const cancelAndWithdrawDeltaOrder: CancelAndWithdrawDeltaOrder<T> = async (\n { order, isFillable = false },\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: DeltaTokenModuleAbi,\n contractMethod: 'cancelAndWithdraw',\n args: [sanitizeDeltaOrderData(order), isFillable],\n overrides,\n });\n\n return res;\n };\n\n const withdrawDeltaNative: WithdrawDeltaNative<T> = async (\n amount,\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: DeltaTokenModuleAbi,\n contractMethod: 'withdrawNative',\n args: [amount],\n overrides,\n });\n\n return res;\n };\n\n const depositNativeAndPreSign: DepositNativeAndPreSign<T> = async (\n { orderHash, depositAmount },\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: DeltaTokenModuleAbi,\n contractMethod: 'depositNativeAndPreSign',\n args: [orderHash],\n overrides: {\n ...overrides,\n value: depositAmount,\n },\n });\n\n return res;\n };\n\n const depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<\n T\n > = async (\n { signableOrderData, depositAmount },\n overrides = {},\n requestParams\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...signableOrderData,\n data: sanitizeDeltaOrderData(signableOrderData.data),\n };\n\n const orderHash = produceDeltaOrderHash(typedDataOnly);\n const res = await depositNativeAndPreSign(\n { orderHash, depositAmount },\n overrides,\n requestParams\n );\n return res;\n };\n\n const cancelTWAPAndWithdrawDeltaOrder: CancelTWAPAndWithdrawDeltaOrder<\n T\n > = async (order, overrides = {}, 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 res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: DeltaTokenModuleAbi,\n contractMethod: 'cancelTWAPAndWithdraw',\n args: [sanitizeTWAPOrderData(order)],\n overrides,\n });\n\n return res;\n };\n\n const cancelTWAPBuyAndWithdrawDeltaOrder: CancelTWAPBuyAndWithdrawDeltaOrder<\n T\n > = async (order, overrides = {}, 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 res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: DeltaTokenModuleAbi,\n contractMethod: 'cancelTWAPBuyAndWithdraw',\n args: [sanitizeTWAPOrderData(order)],\n overrides,\n });\n\n return res;\n };\n\n return {\n cancelAndWithdrawDeltaOrder,\n withdrawDeltaNative,\n depositNativeAndPreSign,\n depositNativeAndPreSignDeltaOrder,\n cancelTWAPAndWithdrawDeltaOrder,\n cancelTWAPBuyAndWithdrawDeltaOrder,\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 type { PreSignExternalDeltaOrderFunctions } from '../methods/delta/preSignExternalDeltaOrder';\nimport type { DeltaTokenModuleFunctions } from '../methods/delta/deltaTokenModule';\nimport type { PreSignTWAPDeltaOrderFunctions } from '../methods/delta/preSignTWAPDeltaOrder';\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 PreSignExternalDeltaOrderFunctions<TxResponse>,\n DeltaTokenModuleFunctions<TxResponse>,\n PreSignTWAPDeltaOrderFunctions<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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type SubmitLimitOrderFuncs = {\n submitLimitOrder: SubmitLimitOrder;\n submitP2POrder: SubmitP2POrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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/**\n * @description construct SDK with every LimitOrders-related method, fetching from API and contract calls\n * @deprecated Limit Orders are deprecated and will be removed in a future version.\n */\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 type { DeltaAuction } from './helpers/types';\nimport {\n BuildDeltaOrderDataParams,\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from './buildDeltaOrder';\nimport {\n constructPostDeltaOrder,\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';\nimport {\n DeltaTokenModuleFunctions,\n constructDeltaTokenModule,\n} from './deltaTokenModule';\nimport {\n BuildExternalDeltaOrderParams,\n BuildExternalDeltaOrderFunctions,\n constructBuildExternalDeltaOrder,\n} from './buildExternalDeltaOrder';\nimport {\n constructSignExternalDeltaOrder,\n SignExternalDeltaOrderFunctions,\n} from './signExternalDeltaOrder';\nimport {\n constructPostExternalDeltaOrder,\n PostExternalDeltaOrderFunctions,\n} from './postExternalDeltaOrder';\nimport {\n constructPreSignExternalDeltaOrder,\n PreSignExternalDeltaOrderFunctions,\n} from './preSignExternalDeltaOrder';\nimport {\n BuildTWAPDeltaOrderParams,\n BuildTWAPDeltaOrderFunctions,\n constructBuildTWAPDeltaOrder,\n} from './buildTWAPDeltaOrder';\nimport {\n constructSignTWAPDeltaOrder,\n SignTWAPDeltaOrderFunctions,\n} from './signTWAPDeltaOrder';\nimport {\n constructPostTWAPDeltaOrder,\n PostTWAPDeltaOrderFunctions,\n} from './postTWAPDeltaOrder';\nimport {\n constructPreSignTWAPDeltaOrder,\n PreSignTWAPDeltaOrderFunctions,\n} from './preSignTWAPDeltaOrder';\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 degenMode?: boolean;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitDeltaOrder = (\n orderParams: SubmitDeltaOrderParams\n) => Promise<DeltaAuction<'Order'>>;\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 degenMode: orderParams.degenMode,\n });\n\n return response;\n };\n\n return { submitDeltaOrder };\n};\n\nexport type SubmitExternalDeltaOrderParams = BuildExternalDeltaOrderParams & {\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 SubmitExternalDeltaOrder = (\n orderParams: SubmitExternalDeltaOrderParams\n) => Promise<DeltaAuction<'ExternalOrder'>>;\n\nexport type SubmitExternalDeltaOrderFuncs = {\n submitExternalDeltaOrder: SubmitExternalDeltaOrder;\n};\n\nexport const constructSubmitExternalDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitExternalDeltaOrderFuncs => {\n const { buildExternalDeltaOrder } = constructBuildExternalDeltaOrder(options);\n const { signExternalDeltaOrder } = constructSignExternalDeltaOrder(options);\n const { postExternalDeltaOrder } = constructPostExternalDeltaOrder(options);\n\n const submitExternalDeltaOrder: SubmitExternalDeltaOrder = async (\n orderParams\n ) => {\n const orderData = await buildExternalDeltaOrder(orderParams);\n const signature = await signExternalDeltaOrder(orderData);\n\n const response = await postExternalDeltaOrder({\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 { submitExternalDeltaOrder };\n};\n\nexport type SubmitTWAPDeltaOrderParams = BuildTWAPDeltaOrderParams & {\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 degenMode?: boolean;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitTWAPDeltaOrder = (\n orderParams: SubmitTWAPDeltaOrderParams\n) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;\n\nexport type SubmitTWAPDeltaOrderFuncs = {\n submitTWAPDeltaOrder: SubmitTWAPDeltaOrder;\n};\n\nexport const constructSubmitTWAPDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitTWAPDeltaOrderFuncs => {\n const { buildTWAPDeltaOrder } = constructBuildTWAPDeltaOrder(options);\n const { signTWAPDeltaOrder } = constructSignTWAPDeltaOrder(options);\n const { postTWAPDeltaOrder } = constructPostTWAPDeltaOrder(options);\n\n const submitTWAPDeltaOrder: SubmitTWAPDeltaOrder = async (orderParams) => {\n const orderData = await buildTWAPDeltaOrder(orderParams);\n const signature = await signTWAPDeltaOrder(orderData);\n\n const response = await postTWAPDeltaOrder({\n signature,\n partner: orderParams.partner,\n order: orderData.data,\n onChainOrderType: orderParams.onChainOrderType,\n partiallyFillable: orderParams.partiallyFillable,\n referrerAddress: orderParams.referrerAddress,\n type: orderParams.type,\n includeAgents: orderParams.includeAgents,\n excludeAgents: orderParams.excludeAgents,\n degenMode: orderParams.degenMode,\n });\n\n return response;\n };\n\n return { submitTWAPDeltaOrder };\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 DeltaTokenModuleFunctions<T> &\n SubmitExternalDeltaOrderFuncs &\n BuildExternalDeltaOrderFunctions &\n SignExternalDeltaOrderFunctions &\n PostExternalDeltaOrderFunctions &\n PreSignExternalDeltaOrderFunctions<T> &\n SubmitTWAPDeltaOrderFuncs &\n BuildTWAPDeltaOrderFunctions &\n SignTWAPDeltaOrderFunctions &\n PostTWAPDeltaOrderFunctions &\n PreSignTWAPDeltaOrderFunctions<T>;\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 const deltaTokenModule = constructDeltaTokenModule(options);\n\n const externalDeltaOrdersSubmit = constructSubmitExternalDeltaOrder(options);\n const externalDeltaOrdersBuild = constructBuildExternalDeltaOrder(options);\n const externalDeltaOrdersSign = constructSignExternalDeltaOrder(options);\n const externalDeltaOrdersPost = constructPostExternalDeltaOrder(options);\n const externalDeltaOrdersPreSign =\n constructPreSignExternalDeltaOrder(options);\n\n const twapDeltaOrdersSubmit = constructSubmitTWAPDeltaOrder(options);\n const twapDeltaOrdersBuild = constructBuildTWAPDeltaOrder(options);\n const twapDeltaOrdersSign = constructSignTWAPDeltaOrder(options);\n const twapDeltaOrdersPost = constructPostTWAPDeltaOrder(options);\n const twapDeltaOrdersPreSign = constructPreSignTWAPDeltaOrder(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 ...deltaTokenModule,\n ...externalDeltaOrdersSubmit,\n ...externalDeltaOrdersBuild,\n ...externalDeltaOrdersSign,\n ...externalDeltaOrdersPost,\n ...externalDeltaOrdersPreSign,\n ...twapDeltaOrdersSubmit,\n ...twapDeltaOrdersBuild,\n ...twapDeltaOrdersSign,\n ...twapDeltaOrdersPost,\n ...twapDeltaOrdersPreSign,\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type SubmitNFTOrderFuncs = {\n submitNFTOrder: SubmitNFTOrder;\n submitP2POrder: SubmitNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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/**\n * @description construct SDK with every NFTOrders-related method, fetching from API and contract calls\n * @deprecated NFT Orders are deprecated and will be removed in a future version.\n */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrderHandlers<TxResponse>;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type LimitOrdersFetchMethods = GetLimitOrdersContractFunctions &\n GetLimitOrdersFunctions &\n BuildLimitOrderFunctions &\n PostLimitOrderFunctions &\n BuildLimitOrdersTxFunctions;\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrdersFetchMethods;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrderHandlers<TxHash>;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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","DELTA_DEFAULT_EXPIRY","producePartnerAndFee","partnerFeeBps","partnerAddress","partnerTakesSurplus","capSurplus","capSurplusShifted","partnerAndFee","toFixed","applySlippage","slippageBps","increase","isInteger","BPS_BASE","amt","bps","resolvePartnerFee","_resolvePartnerFee","_options$partnerFeeBp","_partnerFeeBps2","_partnerTakesSurplus2","feeOrTakeSurplusSupplied","_partnerAddress","_partnerAddress2","_partnerFeeBps","_partnerTakesSurplus","partnerFeeResponse","deltaPrice","partnerFee","resolveAmounts","_options$side","swapSide","expectedAmount","sanitizeDeltaOrderData","beneficiary","permit","bridge","kind","metadata","sanitizeExternalOrderData","handler","sanitizeTWAPOrderData","orderData","common","interval","numSlices","destAmountPerSlice","totalSrcAmount","totalDestAmount","maxSrcAmount","SWAP_ORDER_EIP_712_TYPES","Bridge","produceDeltaOrderTypedData","orderInput","paraswapDeltaAddress","buildDeltaSignableOrderData","_ref2$beneficiary","_ref2$deadline","Date","now","_ref2$nonce","_ref2$permit","_ref2$metadata","_ref2$partnerTakesSur","_ref2$capSurplus","OrderKind","SwapSideToOrderKind","_SwapSideToOrderKind","Sell","Buy","constructBuildDeltaOrder","_constructGetDeltaCon","_constructGetPartnerF","buildDeltaOrder","_options$nonce","_yield$resolvePartner","_resolveAmounts","input","constructPostDeltaOrder","postOrderUrl","postDeltaOrder","_postData","degenMode","postData","deltaOrderToPost","constructSignDeltaOrder","signDeltaOrder","PreSignatureModuleAbi","constructPreSignDeltaOrder","hashDeltaOrderTypedData","produceDeltaOrderHash","hashDeltaOrder","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","onChainOrderType","getRequiredBalanceForDeltaLimitOrders","constructApproveTokenForDelta","getParaswapDeltaAddress","deltaContract","approveTokenForDelta","constructGetBridgeInfo","deltaBridgeUrl","getBridgeInfo","_params","allowBridgeAndSwap","bridges","bridgesString","supportedTokens","getBridgeProtocols","bridgeProtocols","constructIsTokenSupportedInDelta","bridgeInfoUrl","isTokenSupportedInDelta","supported","EXTERNAL_ORDER_EIP_712_TYPES","ExternalOrder","produceExternalOrderTypedData","buildExternalOrderSignableData","constructBuildExternalDeltaOrder","buildExternalDeltaOrder","constructSignExternalDeltaOrder","signExternalDeltaOrder","constructPostExternalDeltaOrder","postExternalDeltaOrder","constructPreSignExternalDeltaOrder","hashExternalDeltaOrderTypedData","produceExternalOrderHash","hashExternalDeltaOrder","setExternalDeltaOrderPreSignature","preSignExternalDeltaOrder","DEFAULT_BRIDGE","protocolSelector","destinationChainId","outputToken","scalingFactor","protocolData","BRIDGE_EIP_712_TYPE","TWAP_ORDER_EIP_712_TYPES","TWAPOrder","TWAP_BUY_ORDER_EIP_712_TYPES","TWAPBuyOrder","produceTWAPOrderTypedData","buildTWAPSignableOrderData","_input$deadline","_input$beneficiary","_input$nonce","_input$permit","_input$metadata","_input$partnerTakesSu","_input$capSurplus","commonFields","constructBuildTWAPDeltaOrder","buildTWAPDeltaOrder","_params$nonce","commonInput","_params$slippage","_params$slippage2","_slippage","constructSignTWAPDeltaOrder","signTWAPDeltaOrder","constructPostTWAPDeltaOrder","postTWAPDeltaOrder","constructPreSignTWAPDeltaOrder","hashTWAPDeltaOrderTypedData","produceTWAPOrderHash","hashTWAPDeltaOrder","setTWAPDeltaOrderPreSignature","preSignTWAPDeltaOrder","constructGetQuote","getQuote","_getQuote","ORDER_CANCELLATIONS_EIP_712_TYPES","OrderCancellations","buildCancelDeltaOrderSignableData","orderIds","constructCancelDeltaOrder","signCancelLimitDeltaOrderRequest","postCancelLimitDeltaOrderRequest","cancelUrl","cancelLimitDeltaOrders","DeltaTokenModuleAbi","constructDeltaTokenModule","cancelAndWithdrawDeltaOrder","_ref$isFillable","isFillable","withdrawDeltaNative","depositNativeAndPreSign","depositAmount","depositNativeAndPreSignDeltaOrder","_ref7","_x12","cancelTWAPAndWithdrawDeltaOrder","_ref8","_callee5","_callee5$","_context5","_x13","_x14","_x15","cancelTWAPBuyAndWithdrawDeltaOrder","_ref9","_callee6","_callee6$","_context6","_x16","_x17","_x18","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","constructSubmitExternalDeltaOrder","_constructBuildExtern","_constructSignExterna","_constructPostExterna","submitExternalDeltaOrder","constructSubmitTWAPDeltaOrder","_constructBuildTWAPDe","_constructSignTWAPDel","_constructPostTWAPDel","submitTWAPDeltaOrder","constructAllDeltaOrdersHandlers","deltaOrdersGetters","deltaOrdersContractGetter","bridgeInfo","deltaOrdersSubmit","deltaOrdersBuild","deltaOrdersSign","deltaOrdersPreSign","deltaOrdersPost","deltaOrdersCancel","deltaTokenModule","externalDeltaOrdersSubmit","externalDeltaOrdersBuild","externalDeltaOrdersSign","externalDeltaOrdersPost","externalDeltaOrdersPreSign","twapDeltaOrdersSubmit","twapDeltaOrdersBuild","twapDeltaOrdersSign","twapDeltaOrdersPost","twapDeltaOrdersPreSign","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/misc.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/signDeltaOrder.ts","../src/methods/delta/helpers/abi.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/delta/helpers/buildExternalOrderData.ts","../src/methods/delta/buildExternalDeltaOrder.ts","../src/methods/delta/signExternalDeltaOrder.ts","../src/methods/delta/postExternalDeltaOrder.ts","../src/methods/delta/preSignExternalDeltaOrder.ts","../src/methods/delta/constants.ts","../src/methods/delta/helpers/buildTWAPOrderData.ts","../src/methods/delta/buildTWAPDeltaOrder.ts","../src/methods/delta/signTWAPDeltaOrder.ts","../src/methods/delta/postTWAPDeltaOrder.ts","../src/methods/delta/preSignTWAPDeltaOrder.ts","../src/methods/quote/getQuote.ts","../src/methods/delta/helpers/buildCancelDeltaOrderData.ts","../src/methods/delta/cancelDeltaOrder.ts","../src/methods/delta/deltaTokenModule.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","../src/methods/delta/helpers/orders.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 degenMode?: 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 degenMode?: boolean;\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 degenMode?: 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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type BuildLimitOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildLimitOrder: BuildLimitOrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type SignLimitOrderFunctions = {\n signLimitOrder: (signableOrderData: SignableOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type PostLimitOrderFunctions = {\n postLimitOrder: PostLimitOrder;\n postP2POrder: PostLimitOrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type GetLimitOrdersContractFunctions = {\n getLimitOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type BuildNFTOrderInput = Omit<\n BuildNFTOrderDataInput,\n 'chainId' | 'verifyingContract' | 'AugustusAddress'\n>;\n\ntype BuildNFTOrder = (\n buildNFTOrderParams: BuildNFTOrderInput,\n requestParams?: RequestParameters\n) => Promise<SignableNFTOrderData>;\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type BuildNFTOrderFunctions = {\n /** @description Build Orders that will be excuted through AugustusSwapper */\n buildNFTOrder: BuildNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type SignNFTOrderFunctions = {\n signNFTOrder: (signableOrderData: SignableNFTOrderData) => Promise<string>;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type CancelNFTOrderFunctions<T> = {\n cancelNFTOrder: CancelOrder<T>;\n cancelNFTOrderBulk: CancelOrderBulk<T>;\n};\n\n// should work the same as for LimitOrders\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type GetNFTOrdersFunctions = {\n getNFTOrders: GetNFTOrders;\n getNFTOrderByHash: GetNFTOrderByHash;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type PostNFTOrderFunctions = {\n postNFTLimitOrder: PostNFTOrder;\n postNFTP2POrder: PostNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type GetNFTOrdersContractFunctions = {\n getNFTOrdersContract: GetSpender;\n getTokenTransferProxy: GetSpender;\n};\n\n// should work the same as LimitOrders\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 { ZERO_ADDRESS } from '../../common/orders/buildOrderData';\nimport type { SignableDeltaOrderData } from './buildDeltaOrderData';\nimport type { SignableExternalOrderData } from './buildExternalOrderData';\nimport type { SignableTWAPOrderData } from './buildTWAPOrderData';\nimport type { GetPartnerFeeFunctions } from '../getPartnerFee';\nimport type { RequestParameters } from '../../../types';\nimport type { DeltaAmountsWithSlippage, SwapSideUnion } from './types';\nimport { SwapSide } from '../../../constants';\nimport { assert } from 'ts-essentials';\n\n// default deadline = 10 min\nexport const DELTA_DEFAULT_EXPIRY = 10 * 60; // seconds\n\ntype ProducePartnerAndFeeInput = {\n partnerFeeBps: number;\n partnerAddress: string;\n partnerTakesSurplus: boolean;\n capSurplus: boolean;\n};\n\n// fee and address are encoded together\nexport function 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\ntype ApplySlippageInput = {\n amount: string;\n slippageBps: number;\n increase: boolean;\n};\n\nexport function applySlippage({\n amount,\n slippageBps,\n increase,\n}: ApplySlippageInput): string {\n assert(\n Number.isInteger(slippageBps) && slippageBps >= 0 && slippageBps <= 10_000,\n 'slippageBps must be an integer between 0 and 10_000'\n );\n\n const BPS_BASE = 10_000n;\n const amt = BigInt(amount);\n const bps = BigInt(slippageBps);\n\n return increase\n ? ((amt * (BPS_BASE + bps)) / BPS_BASE).toString(10)\n : ((amt * (BPS_BASE - bps)) / BPS_BASE).toString(10);\n}\n\nexport type ResolvePartnerFeeInput = {\n partnerAddress?: string;\n partnerFeeBps?: number;\n partnerTakesSurplus?: boolean;\n partner?: string;\n deltaPrice: { partner?: string; partnerFee?: number };\n};\n\nexport type ResolvedPartnerFee = {\n partnerAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus: boolean;\n};\n\nexport async function resolvePartnerFee(\n options: ResolvePartnerFeeInput,\n getPartnerFee: GetPartnerFeeFunctions['getPartnerFee'],\n requestParams?: RequestParameters\n): Promise<ResolvedPartnerFee> {\n // externally supplied partner fee data takes precedence\n let partnerAddress = options.partnerAddress;\n let partnerFeeBps =\n options.partnerFeeBps ??\n (options.deltaPrice.partnerFee !== undefined\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 * 100;\n partnerTakesSurplus =\n partnerTakesSurplus ?? partnerFeeResponse.takeSurplus;\n }\n }\n\n return {\n partnerAddress,\n partnerFeeBps: partnerFeeBps ?? 0,\n partnerTakesSurplus: partnerTakesSurplus ?? false,\n };\n}\n\nexport type ResolveAmountsInput = DeltaAmountsWithSlippage & {\n deltaPrice: { destAmount: string; srcAmount: string };\n};\n\nexport type ResolvedAmounts = {\n srcAmount: string;\n destAmount: string;\n expectedAmount: string;\n swapSide: SwapSideUnion;\n};\n\nexport function resolveAmounts(options: ResolveAmountsInput): ResolvedAmounts {\n let srcAmount: string;\n let destAmount: string;\n\n const swapSide: SwapSideUnion =\n options.slippage !== undefined\n ? options.srcAmount !== undefined\n ? SwapSide.SELL\n : SwapSide.BUY\n : options.side ?? SwapSide.SELL;\n\n if (options.slippage !== undefined) {\n if (options.srcAmount !== undefined) {\n // SELL with slippage: destAmount auto-computed\n srcAmount = options.srcAmount;\n destAmount = applySlippage({\n amount: options.deltaPrice.destAmount,\n slippageBps: options.slippage,\n increase: false,\n });\n } else {\n // BUY with slippage: srcAmount auto-computed\n destAmount = options.destAmount;\n srcAmount = applySlippage({\n amount: options.deltaPrice.srcAmount,\n slippageBps: options.slippage,\n increase: true,\n });\n }\n } else {\n srcAmount = options.srcAmount;\n destAmount = options.destAmount;\n }\n\n const expectedAmount =\n swapSide === SwapSide.SELL\n ? options.deltaPrice.destAmount\n : options.deltaPrice.srcAmount;\n\n return { srcAmount, destAmount, expectedAmount, swapSide };\n}\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\nexport function sanitizeExternalOrderData({\n owner,\n handler,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n kind,\n metadata,\n data,\n}: SignableExternalOrderData['data'] &\n Record<string, any>): SignableExternalOrderData['data'] {\n return {\n owner,\n handler,\n srcToken,\n destToken,\n srcAmount,\n destAmount,\n expectedAmount,\n deadline,\n nonce,\n permit,\n partnerAndFee,\n kind,\n metadata,\n data,\n };\n}\n\nexport function sanitizeTWAPOrderData(\n orderData: SignableTWAPOrderData['data']\n): SignableTWAPOrderData['data'] {\n const common = {\n owner: orderData.owner,\n beneficiary: orderData.beneficiary,\n srcToken: orderData.srcToken,\n destToken: orderData.destToken,\n nonce: orderData.nonce,\n partnerAndFee: orderData.partnerAndFee,\n deadline: orderData.deadline,\n interval: orderData.interval,\n numSlices: orderData.numSlices,\n permit: orderData.permit,\n metadata: orderData.metadata,\n bridge: orderData.bridge,\n };\n\n if ('destAmountPerSlice' in orderData) {\n // TWAPOrder (SELL)\n return {\n ...common,\n destAmountPerSlice: orderData.destAmountPerSlice,\n totalSrcAmount: orderData.totalSrcAmount,\n };\n }\n\n // TWAPBuyOrder (BUY)\n return {\n ...common,\n totalDestAmount: orderData.totalDestAmount,\n maxSrcAmount: orderData.maxSrcAmount,\n };\n}\n","import { MarkOptional } from 'ts-essentials';\nimport { Domain } from '../../common/orders/buildOrderData';\nimport { Bridge, DeltaAuctionOrder } from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\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 return {\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\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\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","import type { EnumerateLiteral } from '../../../types';\nimport { SwapSide } from '../../../constants';\nimport { Prettify } from 'ts-essentials';\n\nexport type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;\n\n/** @description SELL with slippage: srcAmount provided, destAmount auto-computed from deltaPrice.destAmount */\nexport type DeltaAmountsSellSlippage = {\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage: number;\n /** @description The amount of src token to swap */\n srcAmount: string;\n destAmount?: never;\n /** @description The side of the order */\n side?: 'SELL';\n};\n/** @description BUY with slippage: destAmount provided, srcAmount auto-computed from deltaPrice.srcAmount */\nexport type DeltaAmountsBuySlippage = {\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage: number;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n srcAmount?: never;\n /** @description The side of the order */\n side?: 'BUY';\n};\n/** @description Explicit amounts, no slippage (backward-compatible) */\nexport type DeltaAmountsExplicit = {\n slippage?: never;\n /** @description The amount of src token to swap */\n srcAmount: string;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n /** @description The side of the order. Default is SELL */\n side?: SwapSideUnion;\n};\n\nexport type DeltaAmountsWithSlippage =\n | DeltaAmountsSellSlippage\n | DeltaAmountsBuySlippage\n | DeltaAmountsExplicit;\n\nexport enum 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 ExternalDeltaOrder = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the external handler contract */\n handler: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token */\n destToken: string;\n /** @description The amount of src token to swap */\n srcAmount: string;\n /** @description The minimum amount of dest token to receive */\n destAmount: string;\n /** @description The expected amount of token to receive */\n expectedAmount: string;\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;\n /** @description The nonce of the order */\n nonce: string;\n /** @description Optional permit signature for the src token */\n permit: string;\n /** @description Encoded partner address, fee bps, and flags for the order */\n partnerAndFee: string;\n /** @description Protocol-specific encoded bytes for the external handler */\n data: string;\n};\n\ntype TWAPDeltaOrderBase = {\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 nonce of the order */\n nonce: string; // can be random, can even be Date.now()\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 deadline for the order */\n deadline: number; // seconds\n /** @description The interval between each slice execution */\n interval: number; // seconds\n /** @description The number of slices to execute */\n numSlices: number;\n /** @description Optional permit signature for the src token */\n permit: string; //can be \"0x\"\n /** @description Metadata for the order, hex string */\n metadata: string;\n /** @description The bridge input */\n bridge: Bridge;\n};\n\nexport type TWAPDeltaOrder = TWAPDeltaOrderBase & {\n /** @description The amount of dest token to receive per slice */\n destAmountPerSlice: string; // wei\n /** @description The total amount of src token to swap */\n totalSrcAmount: string; // wei\n /** @description Optional permit signature for the src token */\n};\n\nexport type TWAPBuyDeltaOrder = TWAPDeltaOrderBase & {\n /** @description The total amount of dest token to buy across all slices */\n totalDestAmount: string; // wei\n /** @description The maximum amount of src token willing to spend */\n maxSrcAmount: string; // wei\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 | 'REFUNDED';\n\nexport type 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 // bridge* fileds = null for single-chain orders and all TWAP orders\n bridgeMetadata: BridgeMetadata | null;\n bridgeStatus: BridgeStatus | null;\n bridgeProtocol: string | null;\n bridgeOverride: Pick<Bridge, 'protocolSelector' | 'protocolData'> | null;\n};\n\nexport type OnChainOrderMap = {\n Order: DeltaAuctionOrder;\n ExternalOrder: ExternalDeltaOrder;\n TWAPOrder: TWAPDeltaOrder;\n TWAPBuyOrder: TWAPBuyDeltaOrder;\n};\n\ntype BaseBridgeAuctionFields = Pick<\n DeltaAuctionBase,\n 'bridgeMetadata' | 'bridgeStatus'\n>;\n\ntype BridgeAuctionFiledsMap = {\n Order: BaseBridgeAuctionFields;\n ExternalOrder: BaseBridgeAuctionFields;\n TWAPOrder: Record<keyof BaseBridgeAuctionFields, null>;\n TWAPBuyOrder: Record<keyof BaseBridgeAuctionFields, null>;\n};\n\ntype DeltaAuctionBase = {\n id: string;\n deltaVersion: string; // 1.0 or 2.0 currently\n user: string;\n status: DeltaAuctionStatus;\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 type: 'MARKET' | 'LIMIT';\n};\n\nexport type DeltaAuction<T extends OnChainOrderType = OnChainOrderType> =\n T extends T\n ? Prettify<\n DeltaAuctionBase & {\n onChainOrderType: T;\n order: OnChainOrderMap[T];\n } & BridgeAuctionFiledsMap[T]\n >\n : never;\n\nexport type DeltaAuctionDelta = DeltaAuction<'Order'>;\nexport type DeltaAuctionExternal = DeltaAuction<'ExternalOrder'>;\nexport type DeltaAuctionTWAP = DeltaAuction<'TWAPOrder'>;\nexport type DeltaAuctionTWAPBuy = DeltaAuction<'TWAPBuyOrder'>;\n\nexport type DeltaAuctionUnion =\n | DeltaAuctionDelta\n | DeltaAuctionExternal\n | DeltaAuctionTWAP\n | DeltaAuctionTWAPBuy;\n\nexport type DeltaOrderUnion = OnChainOrderMap[keyof OnChainOrderMap];\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; // available for Across protocol\n /** @description The deposit id */\n depositId?: number; // available for Across protocol\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\nexport type OnChainOrderType =\n | 'Order'\n | 'ExternalOrder'\n | 'TWAPOrder'\n | 'TWAPBuyOrder';\n\nexport type TWAPOnChainOrderType = 'TWAPOrder' | 'TWAPBuyOrder';\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\nexport type UnifiedDeltaOrderData = {\n /** @description amounts at the start of Order execution and after Order execution. May differ from each other */\n amounts: {\n /** @description expected amounts at the start of Order execution */\n expected: {\n srcAmount: string;\n destAmount: string;\n };\n /** @description final amounts after Order execution. May be less than expected if there is slippage or only partial execution was achieved */\n final?: {\n srcAmount: string;\n destAmount: string;\n };\n };\n /** @description source chain id */\n srcChainId: number;\n /** @description destination chain id (same as source chain id for single chain orders) */\n destChainId: number;\n /** @description input token amount */\n srcAmount: string;\n /** @description output token amount (expected amount for pending orders, actual received amount for executed orders) */\n destAmount: string;\n /** @description input token address */\n srcToken: string;\n /** @description output token address */\n destToken: string;\n /** @description swap side of the order */\n swapSide: SwapSideUnion;\n /** @description filled percent of the order (based on transactions[].filledPercent) */\n filledPercent: number;\n};\n","import type { ConstructFetchInput, RequestParameters } 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 type { DeltaAmountsWithSlippage } from './helpers/types';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport { resolvePartnerFee, resolveAmounts } from './helpers/misc';\nimport type { MarkOptional } from 'ts-essentials';\nexport type { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\n\ntype BuildDeltaOrderDataParamsBase = {\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 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 Metadata for the order, hex string */\n metadata?: string;\n};\n\nexport type BuildDeltaOrderDataParams = BuildDeltaOrderDataParamsBase &\n DeltaAmountsWithSlippage;\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 const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(options, getPartnerFee, requestParams);\n\n const { srcAmount, destAmount, expectedAmount, swapSide } =\n resolveAmounts(options);\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,\n 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 { constructSearchString } from '../../helpers/misc';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type {\n DeltaAuction,\n OnChainOrderMap,\n OnChainOrderType,\n} from './helpers/types';\n\nexport type DeltaOrderToPost<T extends OnChainOrderType = 'Order'> = {\n /** @description Partner string */\n partner?: string;\n /** @description Referrer address */\n referrerAddress?: string;\n order: OnChainOrderMap[T];\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 degenMode?: boolean;\n};\n\ntype PostDeltaOrder = (\n postData: PostDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'Order'>>;\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 { degenMode, ...postData } = _postData;\n const deltaOrderToPost: DeltaOrderToPost = { ...postData, chainId };\n\n const search = constructSearchString<{ degenMode?: boolean }>({\n degenMode,\n });\n const fetchURL = `${postOrderUrl}/${search}` as const;\n\n return fetcher<DeltaAuction<'Order'>>({\n url: fetchURL,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postDeltaOrder };\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","export const 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","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 { PreSignatureModuleAbi } from './helpers/abi';\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\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 { 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 /** @description In %. It's a way to bypass the API price impact check (default = 15%) */\n maxImpact?: number;\n maxUSDImpact?: number;\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 degenMode?: 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\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 | 'srcAmount'\n | 'srcAmountBeforeFee' // Available for BUY side\n | 'srcUSD'\n | 'srcUSDBeforeFee' // Available for BUY side\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 {\n DeltaAuction,\n DeltaAuctionStatus,\n OnChainOrderType,\n} from './helpers/types';\n\n/** @deprecated Use DeltaAuction directly */\nexport type DeltaOrderFromAPI = DeltaAuction;\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<DeltaAuction>;\n\ntype GetDeltaOrderByHash = (\n orderHash: string,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction>;\n\ntype OrdersFilter<T extends OnChainOrderType = OnChainOrderType> = {\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 /** @description Filter by on-chain order type. Order, ExternalOrder. Orders of all types are returned if not specified */\n onChainOrderType?: T;\n};\ntype OrderFiltersQuery = Omit<OrdersFilter, 'chainId' | 'status'> & {\n chainId?: string;\n status?: string;\n};\n\ntype GetDeltaOrders = {\n <T extends OnChainOrderType>(\n options: OrdersFilter<T> & { onChainOrderType: T },\n requestParams?: RequestParameters\n ): Promise<DeltaAuction<T>[]>;\n (options: OrdersFilter, requestParams?: RequestParameters): Promise<\n DeltaAuction[]\n >;\n};\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<DeltaAuction>({\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<DeltaAuction>({\n url: fetchURL,\n method: 'GET',\n requestParams,\n });\n\n return order;\n };\n\n const getDeltaOrders: GetDeltaOrders = async <\n T extends OnChainOrderType = OnChainOrderType\n >(\n options: OrdersFilter<T>,\n requestParams?: RequestParameters\n ) => {\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 onChainOrderType: options.onChainOrderType,\n chainId: chainIdString,\n status: statusString,\n });\n\n const fetchURL = `${baseUrl}${search}` as const;\n\n const orders = await fetcher<DeltaAuction<T>[]>({\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 { MarkOptional } from 'ts-essentials';\nimport { Domain } from '../../common/orders/buildOrderData';\nimport { ExternalDeltaOrder } from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\n\nconst EXTERNAL_ORDER_EIP_712_TYPES = {\n ExternalOrder: [\n { name: 'owner', type: 'address' },\n { name: 'handler', 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: 'data', type: 'bytes' },\n ],\n};\n\nexport type SignableExternalOrderData = {\n types: {\n ExternalOrder: typeof EXTERNAL_ORDER_EIP_712_TYPES.ExternalOrder;\n };\n domain: Domain;\n data: ExternalDeltaOrder;\n};\n\ntype SignExternalOrderInput = {\n orderInput: ExternalDeltaOrder;\n paraswapDeltaAddress: string;\n chainId: number;\n};\n\nexport function produceExternalOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n}: SignExternalOrderInput): SignableExternalOrderData {\n return {\n types: {\n ExternalOrder: EXTERNAL_ORDER_EIP_712_TYPES.ExternalOrder,\n },\n domain: {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n },\n data: orderInput,\n };\n}\n\nexport type ExternalOrderDataInput = MarkOptional<\n Omit<ExternalDeltaOrder, 'partnerAndFee'>,\n 'deadline' | 'nonce' | 'permit'\n>;\n\nexport type BuildExternalOrderDataInput = MarkOptional<\n ExternalOrderDataInput,\n 'metadata'\n> & {\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n};\n\nexport function buildExternalOrderSignableData({\n owner,\n handler,\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),\n\n permit = '0x',\n\n kind,\n metadata = '0x',\n data,\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n\n chainId,\n paraswapDeltaAddress,\n}: BuildExternalOrderDataInput): SignableExternalOrderData {\n const orderInput: ExternalDeltaOrder = {\n owner,\n handler,\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 kind,\n metadata,\n data,\n };\n\n return produceExternalOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n });\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { DeltaPrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildExternalOrderSignableData,\n type BuildExternalOrderDataInput,\n type SignableExternalOrderData,\n} from './helpers/buildExternalOrderData';\nimport type { DeltaAmountsWithSlippage } from './helpers/types';\nimport { SwapSideToOrderKind } from './helpers/types';\nimport type { MarkOptional } from 'ts-essentials';\nimport { resolvePartnerFee, resolveAmounts } from './helpers/misc';\nexport type { SignableExternalOrderData } from './helpers/buildExternalOrderData';\n\ntype BuildExternalDeltaOrderParamsBase = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the external handler contract */\n handler: string;\n /** @description Protocol-specific encoded bytes for the external handler */\n data: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token */\n destToken: string;\n /** @description The deadline for the order */\n deadline?: number;\n /** @description The nonce of the order */\n nonce?: number | string;\n /** @description Optional permit signature for the src token */\n permit?: string;\n /** @description Partner string */\n partner?: string;\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 /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) */\n deltaPrice: MarkOptional<\n Pick<\n DeltaPrice,\n 'destAmount' | 'partner' | 'partnerFee' | 'destToken' | 'srcAmount'\n >,\n 'partner' | 'partnerFee'\n >;\n};\n\nexport type BuildExternalDeltaOrderParams = BuildExternalDeltaOrderParamsBase &\n DeltaAmountsWithSlippage;\n\ntype BuildExternalDeltaOrder = (\n buildOrderParams: BuildExternalDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<SignableExternalOrderData>;\n\nexport type BuildExternalDeltaOrderFunctions = {\n /** @description Build External Orders to be posted to Delta API for execution */\n buildExternalDeltaOrder: BuildExternalDeltaOrder;\n};\n\nexport const constructBuildExternalDeltaOrder = (\n options: ConstructFetchInput\n): BuildExternalDeltaOrderFunctions => {\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 buildExternalDeltaOrder: BuildExternalDeltaOrder = async (\n options,\n requestParams\n ) => {\n const ParaswapDelta = await getDeltaContract(requestParams);\n if (!ParaswapDelta) {\n throw new Error(`Delta is not available on chain ${chainId}`);\n }\n\n const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(options, getPartnerFee, requestParams);\n\n const { srcAmount, destAmount, expectedAmount, swapSide } =\n resolveAmounts(options);\n\n const input: BuildExternalOrderDataInput = {\n owner: options.owner,\n handler: options.handler,\n srcToken: options.srcToken,\n destToken: options.deltaPrice.destToken,\n srcAmount,\n 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 data: options.data,\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n\n capSurplus: options.capSurplus,\n };\n\n return buildExternalOrderSignableData(input);\n };\n\n return {\n buildExternalDeltaOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableExternalOrderData } from './helpers/buildExternalOrderData';\nimport { sanitizeExternalOrderData } from './helpers/misc';\n\ntype SignExternalDeltaOrder = (\n signableOrderData: SignableExternalOrderData\n) => Promise<string>;\n\nexport type SignExternalDeltaOrderFunctions = {\n signExternalDeltaOrder: SignExternalDeltaOrder;\n};\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructSignExternalDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignExternalDeltaOrderFunctions => {\n const signExternalDeltaOrder: SignExternalDeltaOrder = async (typedData) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableExternalOrderData = {\n ...typedData,\n data: sanitizeExternalOrderData(typedData.data),\n };\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signExternalDeltaOrder };\n};\n","import { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type { DeltaAuction } from './helpers/types';\nimport type { DeltaOrderToPost } from './postDeltaOrder';\n\nexport type PostExternalDeltaOrderParams = Omit<\n DeltaOrderToPost<'ExternalOrder'>,\n 'chainId'\n>;\n\ntype PostExternalDeltaOrder = (\n postData: PostExternalDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'ExternalOrder'>>;\n\nexport type PostExternalDeltaOrderFunctions = {\n postExternalDeltaOrder: PostExternalDeltaOrder;\n};\n\nexport const constructPostExternalDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostExternalDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postExternalDeltaOrder: PostExternalDeltaOrder = (\n postData,\n requestParams\n ) => {\n const deltaOrderToPost: DeltaOrderToPost<'ExternalOrder'> = {\n ...postData,\n chainId,\n };\n\n return fetcher<DeltaAuction<'ExternalOrder'>>({\n url: postOrderUrl,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postExternalDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceExternalOrderTypedData,\n SignableExternalOrderData,\n} from './helpers/buildExternalOrderData';\nimport { sanitizeExternalOrderData } from './helpers/misc';\nimport { PreSignatureModuleAbi } from './helpers/abi';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { ExternalDeltaOrder } from './helpers/types';\n\ntype HashExternalDeltaOrderTypedData = (\n signableOrderData: SignableExternalOrderData\n) => string;\n\ntype HashExternalDeltaOrder = (\n orderData: ExternalDeltaOrder,\n requestParams?: RequestParameters\n) => Promise<string>;\n\nexport type SetExternalDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignExternalDeltaOrder<T> = (\n signableOrderData: SignableExternalOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignExternalDeltaOrderFunctions<T> = {\n hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData;\n hashExternalDeltaOrder: HashExternalDeltaOrder;\n setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<T>;\n preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T>;\n};\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructPreSignExternalDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignExternalDeltaOrderFunctions<T> => {\n const hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData = (\n typedData\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableExternalOrderData = {\n ...typedData,\n data: sanitizeExternalOrderData(typedData.data),\n };\n\n const orderHash = produceExternalOrderHash(typedDataOnly);\n\n return orderHash;\n };\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashExternalDeltaOrder: HashExternalDeltaOrder = async (\n orderData,\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 = produceExternalOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n });\n return hashExternalDeltaOrderTypedData(typedData);\n };\n\n const setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<\n T\n > = async (orderHash, overrides = {}, 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 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 preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashExternalDeltaOrderTypedData(signableOrderData);\n const res = await setExternalDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashExternalDeltaOrderTypedData,\n hashExternalDeltaOrder,\n setExternalDeltaOrderPreSignature,\n preSignExternalDeltaOrder,\n };\n};\n\nexport function produceExternalOrderHash(\n typedData: SignableExternalOrderData\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 { ZERO_ADDRESS } from '../common/orders/buildOrderData';\nimport { Bridge } from './helpers/types';\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","import { Domain } from '../../common/orders/buildOrderData';\nimport {\n Bridge,\n TWAPDeltaOrder,\n TWAPBuyDeltaOrder,\n TWAPOnChainOrderType,\n OnChainOrderMap,\n} from './types';\nimport { DELTA_DEFAULT_EXPIRY, producePartnerAndFee } from './misc';\n\nconst BRIDGE_EIP_712_TYPE = [\n { name: 'protocolSelector', type: 'bytes4' },\n { name: 'destinationChainId', type: 'uint256' },\n { name: 'outputToken', type: 'address' },\n { name: 'scalingFactor', type: 'int8' },\n { name: 'protocolData', type: 'bytes' },\n];\n\nconst TWAP_ORDER_EIP_712_TYPES = {\n TWAPOrder: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'deadline', type: 'uint64' },\n { name: 'interval', type: 'uint64' },\n { name: 'numSlices', type: 'uint32' },\n { name: 'destAmountPerSlice', type: 'uint256' },\n { name: 'totalSrcAmount', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: BRIDGE_EIP_712_TYPE,\n};\n\nconst TWAP_BUY_ORDER_EIP_712_TYPES = {\n TWAPBuyOrder: [\n { name: 'owner', type: 'address' },\n { name: 'beneficiary', type: 'address' },\n { name: 'srcToken', type: 'address' },\n { name: 'destToken', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'partnerAndFee', type: 'uint256' },\n { name: 'deadline', type: 'uint64' },\n { name: 'interval', type: 'uint64' },\n { name: 'numSlices', type: 'uint32' },\n { name: 'totalDestAmount', type: 'uint256' },\n { name: 'maxSrcAmount', type: 'uint256' },\n { name: 'permit', type: 'bytes' },\n { name: 'metadata', type: 'bytes' },\n { name: 'bridge', type: 'Bridge' },\n ],\n Bridge: BRIDGE_EIP_712_TYPE,\n};\n\nexport type SignableTWAPSellOrderData = {\n types: typeof TWAP_ORDER_EIP_712_TYPES;\n domain: Domain;\n data: TWAPDeltaOrder;\n};\n\nexport type SignableTWAPBuyOrderData = {\n types: typeof TWAP_BUY_ORDER_EIP_712_TYPES;\n domain: Domain;\n data: TWAPBuyDeltaOrder;\n};\n\nexport type SignableTWAPOrderData =\n | SignableTWAPSellOrderData\n | SignableTWAPBuyOrderData;\n\ntype ProduceTWAPOrderTypedDataInput<T extends TWAPOnChainOrderType> = {\n orderInput: OnChainOrderMap[T];\n paraswapDeltaAddress: string;\n chainId: number;\n onChainOrderType: T;\n};\n\nexport function produceTWAPOrderTypedData(\n params: ProduceTWAPOrderTypedDataInput<'TWAPOrder'>\n): SignableTWAPSellOrderData;\nexport function produceTWAPOrderTypedData(\n params: ProduceTWAPOrderTypedDataInput<'TWAPBuyOrder'>\n): SignableTWAPBuyOrderData;\nexport function produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType,\n}: ProduceTWAPOrderTypedDataInput<TWAPOnChainOrderType>) {\n const domain: Domain = {\n name: 'Portikus',\n version: '2.0.0',\n chainId,\n verifyingContract: paraswapDeltaAddress,\n };\n\n if (onChainOrderType === 'TWAPOrder') {\n return {\n types: TWAP_ORDER_EIP_712_TYPES,\n domain,\n data: orderInput,\n };\n }\n\n return {\n types: TWAP_BUY_ORDER_EIP_712_TYPES,\n domain,\n data: orderInput,\n };\n}\n\nexport type TWAPOrderCommonInput = {\n owner: string;\n beneficiary?: string;\n srcToken: string;\n destToken: string;\n nonce?: string;\n deadline?: number;\n permit?: string;\n metadata?: string;\n interval: number;\n numSlices: number;\n bridge: Bridge;\n\n partnerAddress: string;\n paraswapDeltaAddress: string;\n partnerFeeBps: number;\n partnerTakesSurplus?: boolean;\n capSurplus?: boolean;\n chainId: number;\n};\n\nexport type BuildTWAPSellOrderDataInput = TWAPOrderCommonInput & {\n onChainOrderType: 'TWAPOrder';\n destAmountPerSlice: string;\n totalSrcAmount: string;\n};\n\nexport type BuildTWAPBuyOrderDataInput = TWAPOrderCommonInput & {\n onChainOrderType: 'TWAPBuyOrder';\n totalDestAmount: string;\n maxSrcAmount: string;\n};\n\nexport type BuildTWAPOrderDataInput =\n | BuildTWAPSellOrderDataInput\n | BuildTWAPBuyOrderDataInput;\n\nexport function buildTWAPSignableOrderData(\n input: BuildTWAPOrderDataInput\n): SignableTWAPOrderData {\n const {\n owner,\n beneficiary = owner,\n srcToken,\n destToken,\n nonce = Date.now().toString(10),\n permit = '0x',\n metadata = '0x',\n interval,\n numSlices,\n bridge,\n\n partnerAddress,\n partnerFeeBps,\n partnerTakesSurplus = false,\n capSurplus = true,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType,\n } = input;\n\n const deadline =\n input.deadline ??\n // all slices must execute before the deadline,\n // so we add the total duration of the TWAP (interval * numSlices) to the current time,\n // plus a buffer defined by DELTA_DEFAULT_EXPIRY\n Math.floor(Date.now() / 1000 + interval * numSlices + DELTA_DEFAULT_EXPIRY);\n\n const partnerAndFee = producePartnerAndFee({\n partnerFeeBps,\n partnerAddress,\n partnerTakesSurplus,\n capSurplus,\n });\n\n const commonFields = {\n owner,\n beneficiary,\n srcToken,\n destToken,\n nonce,\n partnerAndFee,\n deadline,\n interval,\n numSlices,\n permit,\n metadata,\n bridge,\n };\n\n if (onChainOrderType === 'TWAPOrder') {\n const orderInput: TWAPDeltaOrder = {\n ...commonFields,\n destAmountPerSlice: input.destAmountPerSlice,\n totalSrcAmount: input.totalSrcAmount,\n };\n\n return produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType: 'TWAPOrder',\n });\n }\n\n const orderInput: TWAPBuyDeltaOrder = {\n ...commonFields,\n totalDestAmount: input.totalDestAmount,\n maxSrcAmount: input.maxSrcAmount,\n };\n\n return produceTWAPOrderTypedData({\n orderInput,\n chainId,\n paraswapDeltaAddress,\n onChainOrderType: 'TWAPBuyOrder',\n });\n}\n","import type { ConstructFetchInput, RequestParameters } from '../../types';\nimport { DEFAULT_BRIDGE } from './constants';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { BridgePrice } from './getDeltaPrice';\nimport { constructGetPartnerFee } from './getPartnerFee';\nimport {\n buildTWAPSignableOrderData,\n TWAPOrderCommonInput,\n type BuildTWAPOrderDataInput,\n type SignableTWAPOrderData,\n} from './helpers/buildTWAPOrderData';\nimport { applySlippage, resolvePartnerFee } from './helpers/misc';\nimport type { MarkOptional } from 'ts-essentials';\nexport type { SignableTWAPOrderData } from './helpers/buildTWAPOrderData';\n\ntype BuildTWAPDeltaOrderParamsBase = {\n /** @description The address of the order owner */\n owner: string;\n /** @description The address of the order beneficiary */\n beneficiary?: string;\n /** @description The address of the src token */\n srcToken: string;\n /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */\n destToken: string;\n /** @description The deadline for the order */\n deadline?: number;\n /** @description The nonce of the order */\n nonce?: number | string;\n /** @description Optional permit signature for the src token */\n permit?: string;\n /** @description Partner string */\n partner?: string;\n /** @description Destination Chain ID for Crosschain Orders */\n destChainId?: number;\n /** @description Seconds between slice executions (min 60) */\n interval: number;\n /** @description Number of slices (min 2) */\n numSlices: number;\n /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */\n slippage?: number;\n\n /** @description price response received from /delta/prices (getDeltaPrice method) for a single slice */\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 /** @description A boolean indicating whether the surplus should be capped. True by default */\n capSurplus?: boolean;\n /** @description Metadata for the order, hex string */\n metadata?: string;\n};\n\nexport type BuildTWAPSellOrderParams = BuildTWAPDeltaOrderParamsBase & {\n /** @description Must be \"TWAPOrder\" for sell orders */\n onChainOrderType: 'TWAPOrder';\n /** @description Total source token amount across all slices */\n totalSrcAmount: string;\n};\n\nexport type BuildTWAPBuyOrderParams = BuildTWAPDeltaOrderParamsBase & {\n /** @description Must be \"TWAPBuyOrder\" for buy orders */\n onChainOrderType: 'TWAPBuyOrder';\n /** @description Total destination token amount to buy across all slices */\n totalDestAmount: string;\n /** @description Maximum source token amount willing to spend */\n maxSrcAmount: string;\n};\n\nexport type BuildTWAPDeltaOrderParams =\n | BuildTWAPSellOrderParams\n | BuildTWAPBuyOrderParams;\n\ntype BuildTWAPDeltaOrder = (\n buildOrderParams: BuildTWAPDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<SignableTWAPOrderData>;\n\nexport type BuildTWAPDeltaOrderFunctions = {\n /** @description Build TWAP Orders (sell or buy) to be posted to Delta API for execution */\n buildTWAPDeltaOrder: BuildTWAPDeltaOrder;\n};\n\nexport const constructBuildTWAPDeltaOrder = (\n options: ConstructFetchInput\n): BuildTWAPDeltaOrderFunctions => {\n const { chainId } = options;\n\n const { getDeltaContract } = constructGetDeltaContract(options);\n const { getPartnerFee } = constructGetPartnerFee(options);\n\n const buildTWAPDeltaOrder: BuildTWAPDeltaOrder = 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 ${chainId}`);\n }\n\n const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =\n await resolvePartnerFee(params, getPartnerFee, requestParams);\n\n const commonInput: TWAPOrderCommonInput = {\n owner: params.owner,\n beneficiary: params.beneficiary,\n srcToken: params.srcToken,\n destToken: params.deltaPrice.destToken,\n deadline: params.deadline,\n nonce: params.nonce?.toString(10),\n permit: params.permit,\n metadata: params.metadata,\n interval: params.interval,\n numSlices: params.numSlices,\n bridge: {\n ...params.deltaPrice.bridge,\n // TWAP child orders get their bridge data at execution time\n protocolData: DEFAULT_BRIDGE.protocolData,\n },\n\n chainId,\n paraswapDeltaAddress: ParaswapDelta,\n partnerAddress,\n partnerTakesSurplus,\n partnerFeeBps,\n capSurplus: params.capSurplus,\n };\n\n let input: BuildTWAPOrderDataInput;\n\n if (params.onChainOrderType === 'TWAPOrder') {\n const slippage = params.slippage ?? 0;\n const destAmountPerSlice =\n slippage > 0\n ? applySlippage({\n amount: params.deltaPrice.destAmount,\n slippageBps: slippage,\n increase: false,\n })\n : params.deltaPrice.destAmount;\n\n input = {\n ...commonInput,\n onChainOrderType: 'TWAPOrder',\n destAmountPerSlice,\n totalSrcAmount: params.totalSrcAmount,\n };\n } else {\n const slippage = params.slippage ?? 0;\n const maxSrcAmount =\n slippage > 0\n ? applySlippage({\n amount: params.maxSrcAmount,\n slippageBps: slippage,\n increase: true,\n })\n : params.maxSrcAmount;\n\n input = {\n ...commonInput,\n onChainOrderType: 'TWAPBuyOrder',\n totalDestAmount: params.totalDestAmount,\n maxSrcAmount,\n };\n }\n\n return buildTWAPSignableOrderData(input);\n };\n\n return {\n buildTWAPDeltaOrder,\n };\n};\n","import type { ConstructProviderFetchInput } from '../../types';\nimport { SignableTWAPOrderData } from './helpers/buildTWAPOrderData';\nimport { sanitizeTWAPOrderData } from './helpers/misc';\n\ntype SignTWAPDeltaOrder = (\n signableOrderData: SignableTWAPOrderData\n) => Promise<string>;\n\nexport type SignTWAPDeltaOrderFunctions = {\n signTWAPDeltaOrder: SignTWAPDeltaOrder;\n};\n\nexport const constructSignTWAPDeltaOrder = (\n options: Pick<\n ConstructProviderFetchInput<any, 'signTypedDataCall'>,\n 'contractCaller'\n >\n): SignTWAPDeltaOrderFunctions => {\n const signTWAPDeltaOrder: SignTWAPDeltaOrder = async (typedData) => {\n const typedDataOnly = {\n ...typedData,\n data: sanitizeTWAPOrderData(typedData.data),\n } as SignableTWAPOrderData;\n const signature = await options.contractCaller.signTypedDataCall(\n typedDataOnly\n );\n\n return signature;\n };\n\n return { signTWAPDeltaOrder };\n};\n","import { Prettify } from 'ts-essentials';\nimport { API_URL } from '../../constants';\nimport type { ConstructFetchInput, RequestParameters } from '../../types';\nimport type { DeltaAuction, TWAPOnChainOrderType } from './helpers/types';\nimport type { DeltaOrderToPost } from './postDeltaOrder';\nimport { constructSearchString } from '../../helpers/misc';\n\nexport type PostTWAPDeltaOrderParams = Prettify<\n Omit<\n DeltaOrderToPost<'TWAPOrder'> | DeltaOrderToPost<'TWAPBuyOrder'>,\n 'chainId'\n > & {\n /** @description Must be \"TWAPOrder\" or \"TWAPBuyOrder\" */\n onChainOrderType: TWAPOnChainOrderType;\n degenMode?: boolean;\n }\n>;\n\ntype PostTWAPDeltaOrder = (\n postData: PostTWAPDeltaOrderParams,\n requestParams?: RequestParameters\n) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;\n\nexport type PostTWAPDeltaOrderFunctions = {\n postTWAPDeltaOrder: PostTWAPDeltaOrder;\n};\n\nexport const constructPostTWAPDeltaOrder = ({\n apiURL = API_URL,\n chainId,\n fetcher,\n}: ConstructFetchInput): PostTWAPDeltaOrderFunctions => {\n const postOrderUrl = `${apiURL}/delta/orders` as const;\n\n const postTWAPDeltaOrder: PostTWAPDeltaOrder = (_postData, requestParams) => {\n const { degenMode, ...postData } = _postData;\n const deltaOrderToPost: DeltaOrderToPost<'TWAPOrder' | 'TWAPBuyOrder'> = {\n ...postData,\n chainId,\n };\n\n const search = constructSearchString<{ degenMode?: boolean }>({\n degenMode,\n });\n\n const fetchURL = `${postOrderUrl}/${search}` as const;\n\n return fetcher<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>({\n url: fetchURL,\n method: 'POST',\n data: deltaOrderToPost,\n requestParams,\n });\n };\n\n return { postTWAPDeltaOrder };\n};\n","import { hashTypedData } from 'viem/utils';\nimport type {\n ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport {\n produceTWAPOrderTypedData,\n SignableTWAPOrderData,\n} from './helpers/buildTWAPOrderData';\nimport { sanitizeTWAPOrderData } from './helpers/misc';\nimport { PreSignatureModuleAbi } from './helpers/abi';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport { findPrimaryType } from '../../helpers/providers/helpers';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport type { TWAPDeltaOrder, TWAPBuyDeltaOrder } from './helpers/types';\nimport { TypedDataField } from '../common/orders/buildOrderData';\n\ntype HashTWAPDeltaOrderTypedData = (\n signableOrderData: SignableTWAPOrderData\n) => string;\n\ntype HashTWAPDeltaOrder = {\n (\n orderData: TWAPDeltaOrder,\n onChainOrderType: 'TWAPOrder',\n requestParams?: RequestParameters\n ): Promise<string>;\n\n (\n orderData: TWAPBuyDeltaOrder,\n onChainOrderType: 'TWAPBuyOrder',\n requestParams?: RequestParameters\n ): Promise<string>;\n};\n\nexport type SetTWAPDeltaOrderPreSignature<T> = (\n orderHash: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignTWAPDeltaOrder<T> = (\n signableOrderData: SignableTWAPOrderData,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type PreSignTWAPDeltaOrderFunctions<T> = {\n hashTWAPDeltaOrderTypedData: HashTWAPDeltaOrderTypedData;\n hashTWAPDeltaOrder: HashTWAPDeltaOrder;\n setTWAPDeltaOrderPreSignature: SetTWAPDeltaOrderPreSignature<T>;\n preSignTWAPDeltaOrder: PreSignTWAPDeltaOrder<T>;\n};\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;\n\nexport const constructPreSignTWAPDeltaOrder = <T>(\n options: ConstructProviderFetchInput<T, 'transactCall'>\n): PreSignTWAPDeltaOrderFunctions<T> => {\n const hashTWAPDeltaOrderTypedData: HashTWAPDeltaOrderTypedData = (\n typedData\n ) => {\n const typedDataOnly = {\n ...typedData,\n data: sanitizeTWAPOrderData(typedData.data),\n } as SignableTWAPOrderData;\n\n const orderHash = produceTWAPOrderHash(typedDataOnly);\n\n return orderHash;\n };\n\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const hashTWAPDeltaOrder: HashTWAPDeltaOrder = async (\n orderData,\n onChainOrderType,\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 // TwapOrder (SELL)\n if (onChainOrderType === 'TWAPOrder' && 'totalSrcAmount' in orderData) {\n const typedData = produceTWAPOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n onChainOrderType,\n });\n return hashTWAPDeltaOrderTypedData(typedData);\n }\n\n // TWAPBuyOrder (BUY)\n if (onChainOrderType === 'TWAPBuyOrder' && 'maxSrcAmount' in orderData) {\n const typedData = produceTWAPOrderTypedData({\n orderInput: orderData,\n chainId: options.chainId,\n paraswapDeltaAddress: ParaswapDelta,\n onChainOrderType,\n });\n return hashTWAPDeltaOrderTypedData(typedData);\n }\n\n throw new Error(\n `Invalid order data for onChainOrderType ${onChainOrderType}`\n );\n };\n\n const setTWAPDeltaOrderPreSignature: SetTWAPDeltaOrderPreSignature<\n T\n > = async (orderHash, overrides = {}, 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 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 preSignTWAPDeltaOrder: PreSignTWAPDeltaOrder<T> = async (\n signableOrderData,\n overrides = {},\n requestParams\n ) => {\n const orderHash = hashTWAPDeltaOrderTypedData(signableOrderData);\n const res = await setTWAPDeltaOrderPreSignature(\n orderHash,\n overrides,\n requestParams\n );\n return res;\n };\n\n return {\n hashTWAPDeltaOrderTypedData,\n hashTWAPDeltaOrder,\n setTWAPDeltaOrderPreSignature,\n preSignTWAPDeltaOrder,\n };\n};\n\nexport function produceTWAPOrderHash(typedData: SignableTWAPOrderData): string {\n const types = typedData.types as Record<\n 'TWAPOrder' | 'TWAPBuyOrder' | 'Bridge',\n TypedDataField[]\n >;\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,\n primaryType: findPrimaryType(types),\n message: typedData.data,\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 ConstructProviderFetchInput,\n RequestParameters,\n TxSendOverrides,\n} from '../../types';\nimport { constructGetDeltaContract } from './getDeltaContract';\nimport { sanitizeDeltaOrderData, sanitizeTWAPOrderData } from './helpers/misc';\nimport { SignableDeltaOrderData } from './helpers/buildDeltaOrderData';\nimport { produceDeltaOrderHash } from './preSignDeltaOrder';\nimport type { ExtractAbiMethodNames } from '../../helpers/misc';\nimport type {\n DeltaAuctionOrder,\n TWAPDeltaOrder,\n TWAPBuyDeltaOrder,\n} from './helpers/types';\n\nexport type CancelAndWithdrawDeltaOrderParams = {\n order: DeltaAuctionOrder;\n /** @description A boolean indicating whether the order is a fillable order. False by default */\n isFillable?: boolean;\n};\n\nexport type CancelAndWithdrawDeltaOrder<T> = (\n params: CancelAndWithdrawDeltaOrderParams,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type WithdrawDeltaNative<T> = (\n amount: string,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSignParams = {\n orderHash: string;\n depositAmount: string;\n};\n\nexport type DepositNativeAndPreSign<T> = (\n params: DepositNativeAndPreSignParams,\n overrides?: Omit<TxSendOverrides, 'value'>, // value is set internally based on depositAmount\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelTWAPAndWithdrawDeltaOrder<T> = (\n order: TWAPDeltaOrder,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type CancelTWAPBuyAndWithdrawDeltaOrder<T> = (\n order: TWAPBuyDeltaOrder,\n overrides?: TxSendOverrides,\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DepositNativeAndPreSignDeltaOrderParams = Pick<\n DepositNativeAndPreSignParams,\n 'depositAmount'\n> & {\n signableOrderData: SignableDeltaOrderData;\n};\n\nexport type DepositNativeAndPreSignDeltaOrder<T> = (\n params: DepositNativeAndPreSignDeltaOrderParams,\n overrides?: Omit<TxSendOverrides, 'value'>, // value is set internally based on depositAmount\n requestParams?: RequestParameters\n) => Promise<T>;\n\nexport type DeltaTokenModuleFunctions<T> = {\n /** @description Cancel an order on-chain and withdraw native ETH back to the owner */\n cancelAndWithdrawDeltaOrder: CancelAndWithdrawDeltaOrder<T>;\n /** @description Withdraw Delta Wrapped Native tokens as native ETH */\n withdrawDeltaNative: WithdrawDeltaNative<T>;\n /** @description Deposit native ETH and pre-sign a Delta order */\n depositNativeAndPreSign: DepositNativeAndPreSign<T>;\n /** @description Deposit native ETH and pre-sign a Delta order from signable order data */\n depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<T>;\n /** @description Cancel a TWAP sell order on-chain and withdraw native ETH back to the owner */\n cancelTWAPAndWithdrawDeltaOrder: CancelTWAPAndWithdrawDeltaOrder<T>;\n /** @description Cancel a TWAP buy order on-chain and withdraw native ETH back to the owner */\n cancelTWAPBuyAndWithdrawDeltaOrder: CancelTWAPBuyAndWithdrawDeltaOrder<T>;\n};\n\nconst DeltaTokenModuleAbi = [\n {\n type: 'function',\n name: 'cancelAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct Order',\n components: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'destAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'expectedAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'kind',\n type: 'uint8',\n internalType: 'enum OrderKind',\n },\n {\n name: 'nonce',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'permit',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'metadata',\n type: 'bytes',\n internalType: 'bytes',\n },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n {\n name: 'isFillable',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelTWAPAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct TWAPOrder',\n components: [\n { name: 'owner', type: 'address', internalType: 'address' },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'deadline', type: 'uint64', internalType: 'uint64' },\n { name: 'interval', type: 'uint64', internalType: 'uint64' },\n { name: 'numSlices', type: 'uint32', internalType: 'uint32' },\n {\n name: 'destAmountPerSlice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'totalSrcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'permit', type: 'bytes', internalType: 'bytes' },\n { name: 'metadata', type: 'bytes', internalType: 'bytes' },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelTWAPBuyAndWithdraw',\n inputs: [\n {\n name: 'order',\n type: 'tuple',\n internalType: 'struct TWAPBuyOrder',\n components: [\n { name: 'owner', type: 'address', internalType: 'address' },\n {\n name: 'beneficiary',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'srcToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'destToken',\n type: 'address',\n internalType: 'address',\n },\n { name: 'nonce', type: 'uint256', internalType: 'uint256' },\n {\n name: 'partnerAndFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'deadline', type: 'uint64', internalType: 'uint64' },\n { name: 'interval', type: 'uint64', internalType: 'uint64' },\n { name: 'numSlices', type: 'uint32', internalType: 'uint32' },\n {\n name: 'totalDestAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'maxSrcAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n { name: 'permit', type: 'bytes', internalType: 'bytes' },\n { name: 'metadata', type: 'bytes', internalType: 'bytes' },\n {\n name: 'bridge',\n type: 'tuple',\n internalType: 'struct Bridge',\n components: [\n {\n name: 'protocolSelector',\n type: 'bytes4',\n internalType: 'bytes4',\n },\n {\n name: 'destinationChainId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'outputToken',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'scalingFactor',\n type: 'int8',\n internalType: 'int8',\n },\n {\n name: 'protocolData',\n type: 'bytes',\n internalType: 'bytes',\n },\n ],\n },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdrawNative',\n inputs: [\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'depositNativeAndPreSign',\n inputs: [\n {\n name: 'orderHash',\n type: 'bytes32',\n internalType: 'bytes32',\n },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n] as const;\n\ntype AvailableMethods = ExtractAbiMethodNames<typeof DeltaTokenModuleAbi>;\n\n// returns whatever `contractCaller` returns\n// to allow for better versatility\nexport const constructDeltaTokenModule = <T>(\n options: Pick<\n ConstructProviderFetchInput<T, 'transactCall'>,\n 'contractCaller' | 'fetcher' | 'apiURL' | 'chainId'\n >\n): DeltaTokenModuleFunctions<T> => {\n // cached internally\n const { getDeltaContract } = constructGetDeltaContract(options);\n\n const cancelAndWithdrawDeltaOrder: CancelAndWithdrawDeltaOrder<T> = async (\n { order, isFillable = false },\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: DeltaTokenModuleAbi,\n contractMethod: 'cancelAndWithdraw',\n args: [sanitizeDeltaOrderData(order), isFillable],\n overrides,\n });\n\n return res;\n };\n\n const withdrawDeltaNative: WithdrawDeltaNative<T> = async (\n amount,\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: DeltaTokenModuleAbi,\n contractMethod: 'withdrawNative',\n args: [amount],\n overrides,\n });\n\n return res;\n };\n\n const depositNativeAndPreSign: DepositNativeAndPreSign<T> = async (\n { orderHash, depositAmount },\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: DeltaTokenModuleAbi,\n contractMethod: 'depositNativeAndPreSign',\n args: [orderHash],\n overrides: {\n ...overrides,\n value: depositAmount,\n },\n });\n\n return res;\n };\n\n const depositNativeAndPreSignDeltaOrder: DepositNativeAndPreSignDeltaOrder<\n T\n > = async (\n { signableOrderData, depositAmount },\n overrides = {},\n requestParams\n ) => {\n // types allow to pass OrderData & extra_stuff, but tx will break like that\n const typedDataOnly: SignableDeltaOrderData = {\n ...signableOrderData,\n data: sanitizeDeltaOrderData(signableOrderData.data),\n };\n\n const orderHash = produceDeltaOrderHash(typedDataOnly);\n const res = await depositNativeAndPreSign(\n { orderHash, depositAmount },\n overrides,\n requestParams\n );\n return res;\n };\n\n const cancelTWAPAndWithdrawDeltaOrder: CancelTWAPAndWithdrawDeltaOrder<\n T\n > = async (order, overrides = {}, 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 res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: DeltaTokenModuleAbi,\n contractMethod: 'cancelTWAPAndWithdraw',\n args: [sanitizeTWAPOrderData(order)],\n overrides,\n });\n\n return res;\n };\n\n const cancelTWAPBuyAndWithdrawDeltaOrder: CancelTWAPBuyAndWithdrawDeltaOrder<\n T\n > = async (order, overrides = {}, 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 res = await options.contractCaller.transactCall<AvailableMethods>({\n address: ParaswapDelta,\n abi: DeltaTokenModuleAbi,\n contractMethod: 'cancelTWAPBuyAndWithdraw',\n args: [sanitizeTWAPOrderData(order)],\n overrides,\n });\n\n return res;\n };\n\n return {\n cancelAndWithdrawDeltaOrder,\n withdrawDeltaNative,\n depositNativeAndPreSign,\n depositNativeAndPreSignDeltaOrder,\n cancelTWAPAndWithdrawDeltaOrder,\n cancelTWAPBuyAndWithdrawDeltaOrder,\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 type { PreSignExternalDeltaOrderFunctions } from '../methods/delta/preSignExternalDeltaOrder';\nimport type { DeltaTokenModuleFunctions } from '../methods/delta/deltaTokenModule';\nimport type { PreSignTWAPDeltaOrderFunctions } from '../methods/delta/preSignTWAPDeltaOrder';\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 PreSignExternalDeltaOrderFunctions<TxResponse>,\n DeltaTokenModuleFunctions<TxResponse>,\n PreSignTWAPDeltaOrderFunctions<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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type SubmitLimitOrderFuncs = {\n submitLimitOrder: SubmitLimitOrder;\n submitP2POrder: SubmitP2POrder;\n};\n\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\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/**\n * @description construct SDK with every LimitOrders-related method, fetching from API and contract calls\n * @deprecated Limit Orders are deprecated and will be removed in a future version.\n */\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 type { DeltaAuction } from './helpers/types';\nimport {\n BuildDeltaOrderDataParams,\n BuildDeltaOrderFunctions,\n constructBuildDeltaOrder,\n} from './buildDeltaOrder';\nimport {\n constructPostDeltaOrder,\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';\nimport {\n DeltaTokenModuleFunctions,\n constructDeltaTokenModule,\n} from './deltaTokenModule';\nimport {\n BuildExternalDeltaOrderParams,\n BuildExternalDeltaOrderFunctions,\n constructBuildExternalDeltaOrder,\n} from './buildExternalDeltaOrder';\nimport {\n constructSignExternalDeltaOrder,\n SignExternalDeltaOrderFunctions,\n} from './signExternalDeltaOrder';\nimport {\n constructPostExternalDeltaOrder,\n PostExternalDeltaOrderFunctions,\n} from './postExternalDeltaOrder';\nimport {\n constructPreSignExternalDeltaOrder,\n PreSignExternalDeltaOrderFunctions,\n} from './preSignExternalDeltaOrder';\nimport {\n BuildTWAPDeltaOrderParams,\n BuildTWAPDeltaOrderFunctions,\n constructBuildTWAPDeltaOrder,\n} from './buildTWAPDeltaOrder';\nimport {\n constructSignTWAPDeltaOrder,\n SignTWAPDeltaOrderFunctions,\n} from './signTWAPDeltaOrder';\nimport {\n constructPostTWAPDeltaOrder,\n PostTWAPDeltaOrderFunctions,\n} from './postTWAPDeltaOrder';\nimport {\n constructPreSignTWAPDeltaOrder,\n PreSignTWAPDeltaOrderFunctions,\n} from './preSignTWAPDeltaOrder';\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 degenMode?: boolean;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitDeltaOrder = (\n orderParams: SubmitDeltaOrderParams\n) => Promise<DeltaAuction<'Order'>>;\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 degenMode: orderParams.degenMode,\n });\n\n return response;\n };\n\n return { submitDeltaOrder };\n};\n\nexport type SubmitExternalDeltaOrderParams = BuildExternalDeltaOrderParams & {\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 SubmitExternalDeltaOrder = (\n orderParams: SubmitExternalDeltaOrderParams\n) => Promise<DeltaAuction<'ExternalOrder'>>;\n\nexport type SubmitExternalDeltaOrderFuncs = {\n submitExternalDeltaOrder: SubmitExternalDeltaOrder;\n};\n\nexport const constructSubmitExternalDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitExternalDeltaOrderFuncs => {\n const { buildExternalDeltaOrder } = constructBuildExternalDeltaOrder(options);\n const { signExternalDeltaOrder } = constructSignExternalDeltaOrder(options);\n const { postExternalDeltaOrder } = constructPostExternalDeltaOrder(options);\n\n const submitExternalDeltaOrder: SubmitExternalDeltaOrder = async (\n orderParams\n ) => {\n const orderData = await buildExternalDeltaOrder(orderParams);\n const signature = await signExternalDeltaOrder(orderData);\n\n const response = await postExternalDeltaOrder({\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 { submitExternalDeltaOrder };\n};\n\nexport type SubmitTWAPDeltaOrderParams = BuildTWAPDeltaOrderParams & {\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 degenMode?: boolean;\n} & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;\n\ntype SubmitTWAPDeltaOrder = (\n orderParams: SubmitTWAPDeltaOrderParams\n) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;\n\nexport type SubmitTWAPDeltaOrderFuncs = {\n submitTWAPDeltaOrder: SubmitTWAPDeltaOrder;\n};\n\nexport const constructSubmitTWAPDeltaOrder = (\n options: ConstructProviderFetchInput<any, 'signTypedDataCall'>\n): SubmitTWAPDeltaOrderFuncs => {\n const { buildTWAPDeltaOrder } = constructBuildTWAPDeltaOrder(options);\n const { signTWAPDeltaOrder } = constructSignTWAPDeltaOrder(options);\n const { postTWAPDeltaOrder } = constructPostTWAPDeltaOrder(options);\n\n const submitTWAPDeltaOrder: SubmitTWAPDeltaOrder = async (orderParams) => {\n const orderData = await buildTWAPDeltaOrder(orderParams);\n const signature = await signTWAPDeltaOrder(orderData);\n\n const response = await postTWAPDeltaOrder({\n signature,\n partner: orderParams.partner,\n order: orderData.data,\n onChainOrderType: orderParams.onChainOrderType,\n partiallyFillable: orderParams.partiallyFillable,\n referrerAddress: orderParams.referrerAddress,\n type: orderParams.type,\n includeAgents: orderParams.includeAgents,\n excludeAgents: orderParams.excludeAgents,\n degenMode: orderParams.degenMode,\n });\n\n return response;\n };\n\n return { submitTWAPDeltaOrder };\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 DeltaTokenModuleFunctions<T> &\n SubmitExternalDeltaOrderFuncs &\n BuildExternalDeltaOrderFunctions &\n SignExternalDeltaOrderFunctions &\n PostExternalDeltaOrderFunctions &\n PreSignExternalDeltaOrderFunctions<T> &\n SubmitTWAPDeltaOrderFuncs &\n BuildTWAPDeltaOrderFunctions &\n SignTWAPDeltaOrderFunctions &\n PostTWAPDeltaOrderFunctions &\n PreSignTWAPDeltaOrderFunctions<T>;\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 const deltaTokenModule = constructDeltaTokenModule(options);\n\n const externalDeltaOrdersSubmit = constructSubmitExternalDeltaOrder(options);\n const externalDeltaOrdersBuild = constructBuildExternalDeltaOrder(options);\n const externalDeltaOrdersSign = constructSignExternalDeltaOrder(options);\n const externalDeltaOrdersPost = constructPostExternalDeltaOrder(options);\n const externalDeltaOrdersPreSign =\n constructPreSignExternalDeltaOrder(options);\n\n const twapDeltaOrdersSubmit = constructSubmitTWAPDeltaOrder(options);\n const twapDeltaOrdersBuild = constructBuildTWAPDeltaOrder(options);\n const twapDeltaOrdersSign = constructSignTWAPDeltaOrder(options);\n const twapDeltaOrdersPost = constructPostTWAPDeltaOrder(options);\n const twapDeltaOrdersPreSign = constructPreSignTWAPDeltaOrder(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 ...deltaTokenModule,\n ...externalDeltaOrdersSubmit,\n ...externalDeltaOrdersBuild,\n ...externalDeltaOrdersSign,\n ...externalDeltaOrdersPost,\n ...externalDeltaOrdersPreSign,\n ...twapDeltaOrdersSubmit,\n ...twapDeltaOrdersBuild,\n ...twapDeltaOrdersSign,\n ...twapDeltaOrdersPost,\n ...twapDeltaOrdersPreSign,\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\nexport type SubmitNFTOrderFuncs = {\n submitNFTOrder: SubmitNFTOrder;\n submitP2POrder: SubmitNFTOrder;\n};\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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/**\n * @description construct SDK with every NFTOrders-related method, fetching from API and contract calls\n * @deprecated NFT Orders are deprecated and will be removed in a future version.\n */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrderHandlers<TxResponse>;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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\n/** @deprecated Limit Orders are deprecated and will be removed in a future version. */\nexport type LimitOrdersFetchMethods = GetLimitOrdersContractFunctions &\n GetLimitOrdersFunctions &\n BuildLimitOrderFunctions &\n PostLimitOrderFunctions &\n BuildLimitOrdersTxFunctions;\n\n/** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrdersFetchMethods;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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 /** @deprecated Limit Orders are deprecated and will be removed in a future version. */\n limitOrders: LimitOrderHandlers<TxHash>;\n /** @deprecated NFT Orders are deprecated and will be removed in a future version. */\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","import type { NonEmptyArray, Prettify } from 'ts-essentials';\nimport {\n Bridge,\n DeltaAuction,\n DeltaAuctionOrder,\n DeltaAuctionStatus,\n DeltaAuctionTransaction,\n DeltaAuctionTWAP,\n DeltaAuctionTWAPBuy,\n DeltaAuctionUnion,\n DeltaOrderUnion,\n ExternalDeltaOrder,\n OnChainOrderType,\n OrderKind,\n SwapSideUnion,\n TWAPBuyDeltaOrder,\n TWAPDeltaOrder,\n UnifiedDeltaOrderData,\n} from './types';\n\n///// CHECKS //////\n\n/**\n * @description Checks whether an order is a TWAP Sell or TWAP Buy order.\n */\nfunction isTWAPOrder(\n order: DeltaOrderUnion\n): order is TWAPDeltaOrder | TWAPBuyDeltaOrder {\n return 'numSlices' in order && typeof order.numSlices === 'number';\n}\n\n/**\n * @description Checks whether an order is a TWAP Sell order.\n */\nfunction isTWAPSellOrder(order: DeltaOrderUnion): order is TWAPDeltaOrder {\n return (\n isTWAPOrder(order) &&\n 'totalSrcAmount' in order &&\n typeof order.totalSrcAmount === 'string'\n );\n}\n/**\n * @description Checks whether an order is a TWAP Buy order.\n */\nfunction isTWAPBuyOrder(order: DeltaOrderUnion): order is TWAPBuyDeltaOrder {\n return (\n isTWAPOrder(order) &&\n 'totalDestAmount' in order &&\n typeof order.totalDestAmount === 'string'\n );\n}\n\n/**\n * @description Checks whether an order is an External order.\n */\nfunction isExternalOrder(order: DeltaOrderUnion): order is ExternalDeltaOrder {\n return 'handler' in order;\n}\n\n/**\n * @description Checks whether an order is a regular Delta auction order.\n */\nfunction isDeltaOrder(order: DeltaOrderUnion): order is DeltaAuctionOrder {\n return (\n !isExternalOrder(order) && 'kind' in order && typeof order.kind === 'number'\n );\n}\n\n/**\n * @description Checks whether an auction is a TWAP auction.\n */\nfunction isTWAPAuction<T extends OnChainOrderType>(auction: {\n onChainOrderType: T;\n}): auction is { onChainOrderType: ('TWAPOrder' | 'TWAPBuyOrder') & T } {\n return isTWAPSellAuction(auction) || isTWAPBuyAuction(auction);\n}\n\n/**\n * @description Checks whether an auction is a TWAP Sell auction.\n */\nfunction isTWAPSellAuction<T extends OnChainOrderType>(auction: {\n onChainOrderType: T;\n}): auction is { onChainOrderType: 'TWAPOrder' & T } {\n return auction.onChainOrderType === 'TWAPOrder';\n}\n\n/**\n * @description Checks whether an auction is a TWAP Buy auction.\n */\nfunction isTWAPBuyAuction<T extends OnChainOrderType>(auction: {\n onChainOrderType: T;\n}): auction is { onChainOrderType: 'TWAPBuyOrder' & T } {\n return auction.onChainOrderType === 'TWAPBuyOrder';\n}\n\n/**\n * @description Checks whether an auction is a Delta auction.\n */\nfunction isDeltaAuction<T extends OnChainOrderType>(auction: {\n onChainOrderType: T;\n}): auction is { onChainOrderType: 'Order' & T } {\n return auction.onChainOrderType === 'Order';\n}\n\n/**\n * @description Checks whether an auction is an External auction.\n */\nfunction isExternalAuction<T extends OnChainOrderType>(auction: {\n onChainOrderType: T;\n}): auction is { onChainOrderType: 'ExternalOrder' & T } {\n return auction.onChainOrderType === 'ExternalOrder';\n}\n\nconst checks = {\n isTWAPOrder,\n isTWAPSellOrder,\n isTWAPBuyOrder,\n isExternalOrder,\n isDeltaOrder,\n isTWAPAuction,\n isTWAPSellAuction,\n isTWAPBuyAuction,\n isDeltaAuction,\n isExternalAuction,\n isOrderCrosschain,\n isExecutedAuction,\n isPartiallyExecutedAuction,\n isFailedAuction,\n isCanceledAuction,\n isExpiredAuction,\n isPendingAuction,\n};\n\n///// GETTERS //////\n\n/**\n * @description Returns the expected source amount for a TWAP order.\n */\nfunction getExpectedTwapSrcAmount(\n order:\n | Pick<TWAPDeltaOrder, 'totalSrcAmount'>\n | Pick<TWAPBuyDeltaOrder, 'maxSrcAmount'>\n) {\n if ('totalSrcAmount' in order) {\n // SELL\n return order.totalSrcAmount;\n }\n\n return order.maxSrcAmount; // BUY\n}\n\n/**\n * @description Returns the expected destination amount for a TWAP order.\n */\nfunction getExpectedTwapDestAmount(\n order:\n | Pick<TWAPDeltaOrder, 'destAmountPerSlice' | 'numSlices' | 'bridge'>\n | Pick<TWAPBuyDeltaOrder, 'totalDestAmount' | 'bridge'>\n) {\n const destAmount =\n 'destAmountPerSlice' in order\n ? BigInt(order.destAmountPerSlice) * BigInt(order.numSlices) // SELL\n : BigInt(order.totalDestAmount); // BUY\n\n if (isOrderCrosschain(order)) {\n return scaleByFactor(destAmount, order.bridge.scalingFactor).toString();\n }\n\n return destAmount.toString();\n}\n\n/**\n * @description Returns expected source and destination amounts for a TWAP order.\n */\nfunction getExpectedTwapOrderAmounts(\n order: TWAPDeltaOrder | TWAPBuyDeltaOrder\n) {\n const srcAmount = getExpectedTwapSrcAmount(order);\n const destAmount = getExpectedTwapDestAmount(order);\n return { srcAmount, destAmount };\n}\n\n/**\n * @description Returns expected and, when available, final amounts for a TWAP auction.\n */\nfunction getTwapAuctionAmounts(\n twapAuction:\n | Pick<DeltaAuctionTWAP, 'status' | 'transactions' | 'order'>\n | Pick<DeltaAuctionTWAPBuy, 'status' | 'transactions' | 'order'>\n) {\n const isExecuted = isExecutedAuction(twapAuction);\n\n const expected = getExpectedTwapOrderAmounts(twapAuction.order);\n if (isExecuted) {\n const final = getTransactionAmounts(twapAuction.transactions);\n return {\n final,\n expected,\n };\n }\n return {\n expected,\n };\n}\n\nconst getters = {\n getUnifiedDeltaOrderData,\n getExpectedTwapSrcAmount,\n getExpectedTwapDestAmount,\n getExpectedTwapOrderAmounts,\n getTwapAuctionAmounts,\n getAuctionDestChainId,\n getSwapSideFromDeltaOrder,\n getSwapSideFromTwapOrderType,\n getAuctionSwapSide,\n getOrderTokenAddresses,\n getTransactionAmounts,\n getAuctionAmounts,\n getFilledPercent,\n};\n\nexport const OrderHelpers = {\n checks,\n getters,\n};\n\n// -------------------- Auction Unified Data --------------------\n\n/**\n * @description Returns the destination chain id for the auction.\n */\nfunction getAuctionDestChainId({\n order,\n chainId,\n}: Pick<DeltaAuction, 'order' | 'chainId'>) {\n return isOrderCrosschain(order) ? order.bridge.destinationChainId : chainId;\n}\n\nconst OrderKindToSwapSide = {\n [OrderKind.Sell]: 'SELL',\n [OrderKind.Buy]: 'BUY',\n} as const;\n\n/**\n * @description Returns swap side from a Delta or External order kind.\n */\nfunction getSwapSideFromDeltaOrder(\n order: DeltaAuctionOrder | ExternalDeltaOrder\n): SwapSideUnion {\n return OrderKindToSwapSide[order.kind];\n}\n\nconst TwapTypeToSwapSide = {\n TWAPOrder: 'SELL',\n TWAPBuyOrder: 'BUY',\n} as const;\n\n/**\n * @description Returns swap side from TWAP on-chain order type.\n */\nfunction getSwapSideFromTwapOrderType(\n onChainOrderType: 'TWAPOrder' | 'TWAPBuyOrder'\n): SwapSideUnion {\n return TwapTypeToSwapSide[onChainOrderType];\n}\n\n/**\n * @description Returns swap side for any auction type.\n */\nfunction getAuctionSwapSide(auction: DeltaAuction): SwapSideUnion {\n if (isTWAPAuction(auction)) {\n // TWAP orders have onChainOrderType instead of kind\n return getSwapSideFromTwapOrderType(auction.onChainOrderType);\n }\n return getSwapSideFromDeltaOrder(auction.order);\n}\n\n/**\n * @description Returns unified order data with normalized amounts, tokens, and side.\n */\nfunction getUnifiedDeltaOrderData(\n auction: DeltaAuction\n): UnifiedDeltaOrderData {\n const { order, chainId } = auction;\n\n const { srcToken, destToken } = getOrderTokenAddresses(order);\n const { expected, final } = getAuctionAmounts(auction);\n\n const srcChainId = chainId;\n const destChainId = getAuctionDestChainId({ order, chainId });\n\n const swapSide = getAuctionSwapSide(auction);\n\n const filledPercent = getFilledPercent(auction);\n\n return {\n srcChainId,\n destChainId,\n srcAmount: final?.srcAmount || expected.srcAmount,\n destAmount: final?.destAmount || expected.destAmount,\n amounts: {\n expected,\n final,\n },\n srcToken,\n destToken,\n swapSide,\n filledPercent,\n };\n}\n\n/**\n * @description Returns source and destination token addresses for an order.\n */\nfunction getOrderTokenAddresses(order: DeltaAuction['order']) {\n const srcToken = order.srcToken;\n const destToken = isOrderCrosschain(order)\n ? order.bridge.outputToken\n : order.destToken;\n return {\n srcToken,\n destToken,\n };\n}\n\n/**\n * @description Aggregates transaction amounts into total source and destination values.\n */\nfunction getTransactionAmounts(transactions: DeltaAuctionTransaction[]) {\n const { srcAmount, destAmount } = transactions.reduce(\n (acc, { spentAmount, receivedAmount, bridgeMetadata }) => {\n return {\n srcAmount: acc.srcAmount + BigInt(spentAmount),\n destAmount:\n acc.destAmount +\n BigInt(bridgeMetadata ? bridgeMetadata.outputAmount : receivedAmount),\n };\n },\n {\n srcAmount: 0n,\n destAmount: 0n,\n }\n );\n\n return {\n srcAmount: srcAmount.toString(),\n destAmount: destAmount.toString(),\n };\n}\n\n/**\n * @description Returns expected and, when available, final amounts for an auction.\n */\nfunction getAuctionAmounts(auction: DeltaAuction) {\n const isTwap = checks.isTWAPAuction(auction);\n if (isTwap) {\n return getTwapAuctionAmounts(auction);\n }\n\n let expected = {\n srcAmount: auction.order.srcAmount,\n destAmount: auction.order.expectedAmount || auction.order.destAmount,\n };\n\n const order = auction.order;\n\n if (isOrderCrosschain(order)) {\n expected = {\n srcAmount: expected.srcAmount,\n destAmount: scaleByFactor(\n BigInt(expected.destAmount),\n order.bridge.scalingFactor\n ).toString(),\n };\n }\n\n const isExecuted = isExecutedAuction(auction);\n if (isExecuted) {\n const final = getTransactionAmounts(auction.transactions);\n return {\n final,\n expected,\n };\n }\n return {\n expected,\n };\n}\n\n/**\n * @description Checks whether an order includes valid cross-chain bridge details.\n */\nfunction isOrderCrosschain<T extends { bridge?: Bridge } | object>(\n order: T\n // Extract<ExternalOrder, { bridge?: Bridge }> == never\n): order is Prettify<Extract<T, { bridge?: Bridge }> & { bridge: Bridge }> {\n return (\n 'bridge' in order && !!order.bridge && order.bridge.destinationChainId !== 0\n );\n}\n\nfunction scaleByFactor(amount: bigint, scalingFactor: number): bigint {\n if (!amount) return 0n;\n\n if (scalingFactor === undefined) return amount;\n\n const base = 10n;\n\n return scalingFactor < 0\n ? amount / base ** BigInt(-scalingFactor)\n : amount * base ** BigInt(scalingFactor);\n}\n\ntype ExecutedDeltaAuctionProps = {\n status: 'EXECUTED';\n transactions: NonEmptyArray<DeltaAuctionTransaction>;\n};\n\n/**\n * @description Checks whether an auction is fully executed.\n */\nfunction isExecutedAuction<\n T extends Pick<DeltaAuction, 'order' | 'status' | 'transactions'>\n>(auction: T): auction is T & ExecutedDeltaAuctionProps {\n if (auction.status !== 'EXECUTED') return false;\n\n if (isOrderCrosschain(auction.order)) {\n const filledPercent = getFilledPercent(auction);\n return filledPercent === 100;\n }\n\n return true;\n}\n\nconst failedAuctionStatuses = [\n 'FAILED',\n 'EXPIRED',\n 'CANCELLED',\n 'REFUNDED',\n] as const;\n\nconst failedAuctionStatusesSet = new Set<DeltaAuctionStatus>(\n failedAuctionStatuses\n);\n\ntype FailedDeltaAuctionProps =\n | {\n status: (typeof failedAuctionStatuses)[number];\n }\n | {\n status: 'EXECUTED'; // srcChain tx succeeded\n bridgeStatus: 'expired' | 'refunded'; // destChain tx failed or relayer didn't deliver\n };\n\n/**\n * @description Checks whether an auction is failed on source or destination chain.\n */\nfunction isFailedAuction<\n T extends Pick<DeltaAuction, 'status' | 'order' | 'bridgeStatus'>\n>(auction: T): auction is T & FailedDeltaAuctionProps {\n // already failed on srcChain, whether Order is crosschain or not\n if (failedAuctionStatusesSet.has(auction.status)) return true;\n\n // crosschain Order is executed on srcChain, but failed on destChain\n if (auction.status === 'EXECUTED' && isOrderCrosschain(auction.order)) {\n return (\n auction.bridgeStatus === 'expired' || auction.bridgeStatus === 'refunded'\n );\n }\n\n return false;\n}\n\n/**\n * @description Checks whether an auction status is cancelled.\n */\nfunction isCanceledAuction<T extends Pick<DeltaAuction, 'status'>>(\n auction: T\n): auction is T & {\n status: 'CANCELLED';\n} {\n return auction.status === 'CANCELLED';\n}\n\n/**\n * @description Checks whether an auction status is expired.\n */\nfunction isExpiredAuction<T extends Pick<DeltaAuction, 'status'>>(\n auction: T\n): auction is T & {\n status: 'EXPIRED';\n} {\n return auction.status === 'EXPIRED';\n}\n\nconst pendingAuctionStatuses = [\n 'NOT_STARTED',\n 'AWAITING_PRE_SIGNATURE',\n 'RUNNING',\n 'EXECUTING',\n] as const;\n\nconst pendingAuctionStatusesSet = new Set<DeltaAuctionStatus>(\n pendingAuctionStatuses\n);\n/**\n * @description Checks whether an auction status is in pending execution states.\n */\nfunction isPendingAuction<T extends Pick<DeltaAuction, 'status'>>(\n auction: T\n): auction is T & {\n status: (typeof pendingAuctionStatuses)[number];\n} {\n return pendingAuctionStatusesSet.has(auction.status);\n}\n\n/**\n * @description Auction can be cancelled in the middle of execution,\n * or crosschain-TWAP slices may not all be bridged,\n * or order can be suspended if it runs out of user balance/allowance.\n * Orders in the middle of normal execution can also be considered partially executed if they have any transactions.\n */\nfunction isPartiallyExecutedAuction<\n T extends Pick<DeltaAuction, 'order' | 'transactions'>\n>(\n auction: T\n): auction is T & { transactions: NonEmptyArray<DeltaAuctionTransaction> } {\n if (auction.transactions.length === 0) return false;\n\n const filledPercent = getFilledPercent(auction);\n\n return filledPercent > 0 && filledPercent < 100;\n}\n\n/**\n * @description Calculates filled percentage from auction transaction filled bps values.\n */\nfunction getFilledPercent(\n auction: Pick<DeltaAuction, 'order' | 'transactions'>\n): number {\n const transaction = !isOrderCrosschain(auction.order)\n ? auction.transactions\n : auction.transactions.filter(\n (transaction) => transaction.bridgeStatus === 'filled'\n );\n\n const filledPercentBps = transaction.reduce((acc, { filledPercent }) => {\n return acc + filledPercent;\n }, 0);\n\n const filledPercent = filledPercentBps / 100;\n return filledPercent;\n}\n\n///// TESTS //////\n// @TODO remove\n\nconst auction = {} as DeltaAuctionUnion;\nconst minAuction = {\n onChainOrderType: 'TWAPOrder' as OnChainOrderType,\n gas: 6,\n};\nif (isTWAPAuction(minAuction)) {\n console.log('🚀 ~ auction:', minAuction);\n /**\n * {\n onChainOrderType: OnChainOrderType;\n gas: number;\n } & {\n onChainOrderType: \"TWAPOrder\" | \"TWAPBuyOrder\";\n }\n */\n}\nif (isTWAPAuction(auction)) {\n console.log('🚀 ~ auction:', auction);\n /**\n (DeltaAuctionBase & {\n onChainOrderType: \"TWAPOrder\";\n order: TWAPDeltaOrder;\n }) | (DeltaAuctionBase & {\n onChainOrderType: \"TWAPBuyOrder\";\n order: TWAPBuyDeltaOrder;\n })\n */\n}\nif (isTWAPSellAuction(auction)) {\n console.log('🚀 ~ auction:', auction);\n /**\n * DeltaAuctionBase & {\n onChainOrderType: \"TWAPOrder\";\n order: TWAPDeltaOrder;\n }\n */\n}\nif (isTWAPBuyAuction(auction)) {\n console.log('🚀 ~ auction:', auction);\n /**\n * DeltaAuctionBase & {\n onChainOrderType: \"TWAPBuyOrder\";\n order: TWAPBuyDeltaOrder;\n }\n */\n}\nif (isDeltaAuction(auction)) {\n console.log('🚀 ~ auction:', auction);\n /**\n * DeltaAuctionBase & {\n onChainOrderType: \"Order\";\n order: DeltaAuctionOrder;\n }\n */\n}\n\nif (isExternalAuction(auction)) {\n console.log('🚀 ~ auction:', auction);\n /**\n * DeltaAuctionBase & {\n onChainOrderType: \"ExternalOrder\";\n order: ExternalDeltaOrder;\n }\n */\n}\n// ------------------------------------------------------------ //\n\nconst orderAny = {} as DeltaOrderUnion;\nif (isOrderCrosschain(orderAny)) {\n console.log('🚀 ~ order:', orderAny);\n /**\n DeltaAuctionOrder | TWAPDeltaOrder | TWAPBuyDeltaOrder\n */\n}\nconst orderExternal = {} as ExternalDeltaOrder;\nif (isOrderCrosschain(orderExternal)) {\n console.log('🚀 ~ order:', orderExternal);\n /**\n never\n */\n}\nconst orderLike = {} as { bridge?: Bridge; a: 2 };\nif (isOrderCrosschain(orderLike)) {\n console.log('🚀 ~ order:', orderLike);\n /**\n * {\n bridge: Bridge;\n a: 2;\n }\n */\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","DELTA_DEFAULT_EXPIRY","producePartnerAndFee","partnerFeeBps","partnerAddress","partnerTakesSurplus","capSurplus","capSurplusShifted","partnerAndFee","toFixed","applySlippage","slippageBps","increase","isInteger","BPS_BASE","amt","bps","resolvePartnerFee","_resolvePartnerFee","_options$partnerFeeBp","_partnerFeeBps2","_partnerTakesSurplus2","feeOrTakeSurplusSupplied","_partnerAddress","_partnerAddress2","_partnerFeeBps","_partnerTakesSurplus","partnerFeeResponse","deltaPrice","partnerFee","resolveAmounts","_options$side","swapSide","expectedAmount","sanitizeDeltaOrderData","beneficiary","permit","bridge","kind","metadata","sanitizeExternalOrderData","handler","sanitizeTWAPOrderData","orderData","common","interval","numSlices","destAmountPerSlice","totalSrcAmount","totalDestAmount","maxSrcAmount","SWAP_ORDER_EIP_712_TYPES","Bridge","produceDeltaOrderTypedData","orderInput","paraswapDeltaAddress","buildDeltaSignableOrderData","_ref2$beneficiary","_ref2$deadline","Date","now","_ref2$nonce","_ref2$permit","_ref2$metadata","_ref2$partnerTakesSur","_ref2$capSurplus","OrderKind","SwapSideToOrderKind","_SwapSideToOrderKind","Sell","Buy","constructBuildDeltaOrder","_constructGetDeltaCon","_constructGetPartnerF","buildDeltaOrder","_options$nonce","_yield$resolvePartner","_resolveAmounts","input","constructPostDeltaOrder","postOrderUrl","postDeltaOrder","_postData","degenMode","postData","deltaOrderToPost","constructSignDeltaOrder","signDeltaOrder","PreSignatureModuleAbi","constructPreSignDeltaOrder","hashDeltaOrderTypedData","produceDeltaOrderHash","hashDeltaOrder","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","onChainOrderType","getRequiredBalanceForDeltaLimitOrders","constructApproveTokenForDelta","getParaswapDeltaAddress","deltaContract","approveTokenForDelta","constructGetBridgeInfo","deltaBridgeUrl","getBridgeInfo","_params","allowBridgeAndSwap","bridges","bridgesString","supportedTokens","getBridgeProtocols","bridgeProtocols","constructIsTokenSupportedInDelta","bridgeInfoUrl","isTokenSupportedInDelta","supported","EXTERNAL_ORDER_EIP_712_TYPES","ExternalOrder","produceExternalOrderTypedData","buildExternalOrderSignableData","constructBuildExternalDeltaOrder","buildExternalDeltaOrder","constructSignExternalDeltaOrder","signExternalDeltaOrder","constructPostExternalDeltaOrder","postExternalDeltaOrder","constructPreSignExternalDeltaOrder","hashExternalDeltaOrderTypedData","produceExternalOrderHash","hashExternalDeltaOrder","setExternalDeltaOrderPreSignature","preSignExternalDeltaOrder","DEFAULT_BRIDGE","protocolSelector","destinationChainId","outputToken","scalingFactor","protocolData","BRIDGE_EIP_712_TYPE","TWAP_ORDER_EIP_712_TYPES","TWAPOrder","TWAP_BUY_ORDER_EIP_712_TYPES","TWAPBuyOrder","produceTWAPOrderTypedData","buildTWAPSignableOrderData","_input$deadline","_input$beneficiary","_input$nonce","_input$permit","_input$metadata","_input$partnerTakesSu","_input$capSurplus","commonFields","constructBuildTWAPDeltaOrder","buildTWAPDeltaOrder","_params$nonce","commonInput","_params$slippage","_params$slippage2","_slippage","constructSignTWAPDeltaOrder","signTWAPDeltaOrder","constructPostTWAPDeltaOrder","postTWAPDeltaOrder","constructPreSignTWAPDeltaOrder","hashTWAPDeltaOrderTypedData","produceTWAPOrderHash","hashTWAPDeltaOrder","setTWAPDeltaOrderPreSignature","preSignTWAPDeltaOrder","constructGetQuote","getQuote","_getQuote","ORDER_CANCELLATIONS_EIP_712_TYPES","OrderCancellations","buildCancelDeltaOrderSignableData","orderIds","constructCancelDeltaOrder","signCancelLimitDeltaOrderRequest","postCancelLimitDeltaOrderRequest","cancelUrl","cancelLimitDeltaOrders","DeltaTokenModuleAbi","constructDeltaTokenModule","cancelAndWithdrawDeltaOrder","_ref$isFillable","isFillable","withdrawDeltaNative","depositNativeAndPreSign","depositAmount","depositNativeAndPreSignDeltaOrder","_ref7","_x12","cancelTWAPAndWithdrawDeltaOrder","_ref8","_callee5","_callee5$","_context5","_x13","_x14","_x15","cancelTWAPBuyAndWithdrawDeltaOrder","_ref9","_callee6","_callee6$","_context6","_x16","_x17","_x18","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","constructSubmitExternalDeltaOrder","_constructBuildExtern","_constructSignExterna","_constructPostExterna","submitExternalDeltaOrder","constructSubmitTWAPDeltaOrder","_constructBuildTWAPDe","_constructSignTWAPDel","_constructPostTWAPDel","submitTWAPDeltaOrder","constructAllDeltaOrdersHandlers","deltaOrdersGetters","deltaOrdersContractGetter","bridgeInfo","deltaOrdersSubmit","deltaOrdersBuild","deltaOrdersSign","deltaOrdersPreSign","deltaOrdersPost","deltaOrdersCancel","deltaTokenModule","externalDeltaOrdersSubmit","externalDeltaOrdersBuild","externalDeltaOrdersSign","externalDeltaOrdersPost","externalDeltaOrdersPreSign","twapDeltaOrdersSubmit","twapDeltaOrdersBuild","twapDeltaOrdersSign","twapDeltaOrdersPost","twapDeltaOrdersPreSign","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","isTWAPOrder","isTWAPSellOrder","isTWAPBuyOrder","isExternalOrder","isDeltaOrder","isTWAPAuction","auction","isTWAPSellAuction","isTWAPBuyAuction","isDeltaAuction","isExternalAuction","checks","isOrderCrosschain","isExecutedAuction","isPartiallyExecutedAuction","isFailedAuction","isCanceledAuction","isExpiredAuction","isPendingAuction","getExpectedTwapSrcAmount","getExpectedTwapDestAmount","scaleByFactor","getExpectedTwapOrderAmounts","getTwapAuctionAmounts","twapAuction","isExecuted","expected","final","getTransactionAmounts","transactions","getters","getUnifiedDeltaOrderData","getAuctionDestChainId","getSwapSideFromDeltaOrder","getSwapSideFromTwapOrderType","getAuctionSwapSide","getOrderTokenAddresses","getAuctionAmounts","getFilledPercent","OrderHelpers","OrderKindToSwapSide","_OrderKindToSwapSide","TwapTypeToSwapSide","_getOrderTokenAddress","_getAuctionAmounts","srcChainId","destChainId","filledPercent","amounts","_transactions$reduce","acc","spentAmount","receivedAmount","bridgeMetadata","outputAmount","isTwap","base","pow","failedAuctionStatuses","failedAuctionStatusesSet","bridgeStatus","pendingAuctionStatuses","pendingAuctionStatusesSet","transaction","filledPercentBps","minAuction","console","log","orderAny","orderExternal","orderLike"],"mappings":"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"}