@polymarket/client 0.1.0-beta.1 → 0.1.0-beta.3

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 +0,0 @@
1
- {"version":3,"sources":["../src/input.ts","../src/pagination.ts","../src/response.ts","../src/rpc.ts","../src/wallet.ts","../src/actions/params.ts","../src/actions/account.ts","../src/actions/activity.ts","../src/abis.ts","../src/types.ts","../src/workflow.ts","../src/actions/gasless.ts","../src/actions/approvals.ts","../src/actions/auth.ts","../src/actions/builders.ts","../src/actions/clob.ts","../src/actions/comments.ts","../src/polymarket-url.ts","../src/actions/events.ts","../src/actions/leaderboards.ts","../src/actions/markets.ts","../src/actions/orders/cancel.ts","../src/actions/orders/estimate.ts","../src/actions/orders/post.ts","../src/actions/orders/context.ts","../src/actions/orders/math.ts","../src/actions/orders/limit.ts","../src/actions/orders/market.ts","../src/actions/orders/orders.ts","../src/actions/orders/typed-data.ts","../src/actions/orders/types.ts","../src/actions/orders/prepare.ts","../src/actions/orders/allowance.ts","../src/actions/orders/trade.ts","../src/actions/portfolio.ts","../src/actions/positions.ts","../src/actions/profiles.ts","../src/actions/search.ts","../src/actions/series.ts","../src/actions/sports.ts","../src/actions/subscriptions.ts","../src/actions/tags.ts","../src/actions/teams.ts","../src/actions/transfers.ts"],"names":["parseUserInput","input","schema","result","UserInputError","PageSizeSchema","z","OffsetCursorStateSchema","paginate","fetchPage","initialCursor","emptyItems","createEmptyPaginator","createPaginator","cursor","unwrap","nextCursor","currentCursor","page","encodeOffsetCursor","state","toPaginationCursor","decodeOffsetCursor","pageSize","error","validateWith","response","ResultAsync","UnexpectedResponseError","payload","parseResponse","readBlob","endpoint","ok","err","JsonRpcClient","#url","url","request","#post","RequestRejectedError","isRpcHexString","json","ky","TransportError","body","isJsonRpcResponse","isJsonRpcContractRevert","isJsonRpcError","message","stringifyJsonRpcErrorData","value","isRecord","data","resolveAccountIdentity","environment","signer","wallet","classifyWalletType","toSignatureType","walletType","WalletType","SignatureType","PROXY_BYTECODE_TEMPLATE","proxyWalletBytecodeHash","config","bytecode","expectHexString","Hash","deriveProxyWalletAddress","expectEvmAddress","ContractAddress","AbiParameters","deriveSafeWalletAddress","ERC1967_CONST1","ERC1967_CONST2","ERC1967_PREFIX","deriveUupsDepositWalletAddress","walletId","args","depositWalletInitCodeHash","ERC1967_BEACON_CONST1","ERC1967_BEACON_CONST2","ERC1967_BEACON_CONST3","ERC1967_BEACON_PREFIX","FACTORY_BEACON_SELECTOR","deriveBeaconDepositWalletAddress","depositWalletBeaconInitCodeHash","implementation","argsByteLength","prefix","Bytes","beacon","getDepositWalletFactoryBeacon","rpc","factory","decodeAddressReturnData","ZERO_ADDRESS","isBeaconDepositWalletFactory","isSameEvmAddress","deriveCurrentDepositWalletAddress","never","toSearchParams","params","mappings","isSnakeCaseSearchParamMappings","toSnakeCaseSearchParams","searchParams","paramKey","searchParamKey","isSearchParamArray","item","toSearchParamValue","snakeCase","exceptions","toDataSearchParams","key","toSnakeCase","character","FetchClosedOnlyModeError","makeErrorGuard","RateLimitError","SigningError","fetchClosedOnlyMode","client","ClosedOnlyModeSchema","ListOpenOrdersRequestSchema","PaginationCursorSchema","ListOpenOrdersError","listOpenOrders","OpenOrdersPageSchema","END_CURSOR","FetchOrderRequestSchema","FetchOrderError","fetchOrder","OpenOrderSchema","ListAccountTradesRequestFields","ListAccountTradesRequestSchema","ListAccountTradesError","listAccountTrades","ClobTradesPageSchema","FetchNotificationsError","DropNotificationsRequestSchema","fetchNotifications","signatureType","NotificationsResponseSchema","DropNotificationsError","dropNotifications","FetchBalanceAllowanceRequestSchema","AssetTypeSchema","FetchBalanceAllowanceError","fetchBalanceAllowance","BalanceAllowanceResponseSchema","UpdateBalanceAllowanceRequestSchema","UpdateBalanceAllowanceError","updateBalanceAllowance","FetchOrderScoringRequestSchema","FetchOrderScoringError","fetchOrderScoring","OrderScoringResponseSchema","FetchOrdersScoringRequestSchema","FetchOrdersScoringError","fetchOrdersScoring","OrdersScoringResponseSchema","ListUserEarningsForDayRequestSchema","ListUserEarningsForDayError","listUserEarningsForDay","UserEarningsPageSchema","FetchTotalEarningsForUserForDayError","fetchTotalEarningsForUserForDay","TotalUserEarningsResponseSchema","ListUserEarningsAndMarketsConfigRequestSchema","ListUserEarningsAndMarketsConfigError","listUserEarningsAndMarketsConfig","UserRewardsEarningsPageSchema","FetchRewardPercentagesError","fetchRewardPercentages","RewardsPercentagesSchema","ActivitySortBySchema","SortDirectionSchema","TradeFilterTypeSchema","ListTradesRequestSchema","SideSchema","ListActivityRequestSchema","ActivityTypeSchema","ListTradesError","listTrades","decoded","ListTradesResponseSchema","trades","hasMore","ListActivityError","listActivity","ListActivityResponseSchema","activity","ZERO_BYTES32","ERC20_APPROVE_FUNCTION","AbiFunction","ERC20_TRANSFER_FUNCTION","ERC1155_SET_APPROVAL_FOR_ALL_FUNCTION","CTF_SPLIT_POSITION_FUNCTION","CTF_MERGE_POSITIONS_FUNCTION","CTF_REDEEM_POSITIONS_FUNCTION","SAFE_MULTISEND_FUNCTION","PROXY_FACTORY_FUNCTION","BINARY_OUTCOME_PARTITION","BINARY_OUTCOME_INDEX_SETS","MAX_UINT256","Erc20ApprovalCallError","erc20ApprovalCall","tokenAddress","spender","amount","encodeErc20ApproveCall","erc1155ApprovalForAllCall","operator","approved","encodeErc1155SetApprovalForAllCall","Erc20TransferCallError","erc20TransferCall","recipient","encodeErc20TransferCall","CtfRedeemPositionsCallError","SplitPositionCallError","splitPositionCall","targetAddress","collateralTokenAddress","conditionId","encodeSplitPositionCall","MergePositionsCallError","mergePositionsCall","encodeMergePositionsCall","ctfRedeemPositionsCall","conditionalTokensAddress","encodeCtfRedeemPositionsCall","invariant","expectUint256","label","encodeProxyCall","calls","call","encodeSafeMultisendCall","encodedTransactions","encodeSafeMultisendTransaction","WaitForTransactionError","TimeoutError","TransactionFailedError","expectTransactionHandle","CancelledSigningError","authenticateWith","workflow","completeWith","requestAddress","signerTransactionRequest","chainId","EIP712_DOMAIN","SAFE_TRANSACTION","DEPOSIT_WALLET_DOMAIN_NAME","DEPOSIT_WALLET_DOMAIN_VERSION","DEPOSIT_WALLET_DEFAULT_DEADLINE_SECONDS","DEPOSIT_WALLET_CALL","DEPOSIT_WALLET_BATCH","FetchExecuteParamsRequestSchema","RelayerTransactionType","FetchExecuteParamsError","fetchExecuteParams","RelayerExecuteParamsSchema","FetchGaslessTransactionRequestSchema","TransactionIdSchema","IsGaslessReadyRequestSchema","EvmAddressSchema","IsGaslessReadyError","isGaslessReady","resolveGaslessReadinessTarget","RelayerDeployedResponseSchema","deployed","GaslessTransactionMetadataSchema","GASLESS_SUBMIT_RETRY_ATTEMPTS","DeployDepositWalletError","deployDepositWallet","executeGasless","fetchTransaction","GaslessTransactionSchema","TransactionCallSchema","isHexString","PrepareGaslessTransactionRequestSchema","val","expectNonEmptyArray","PrepareGaslessTransactionError","prepareGaslessTransaction","attempt","prepareProxyWalletGaslessTransaction","prepareDepositWalletGaslessTransaction","prepareSafeWalletGaslessTransaction","isRetryableGaslessSubmitError","delay","executeParams","to","relayerFee","gasPrice","gasLimit","relayHub","relay","hash","buildProxyTransactionHash","signature","expectEvmSignature","signGaslessMessage","toDepositWalletCall","deadline","signGaslessTypedData","createDepositWalletBatchTypedDataPayload","transaction","aggregateSafeTransactionCalls","safePayload","createSafeTypedDataPayload","OxTypedData","packSafeSignature","createSafeSignatureParams","RelayerExecuteRequestSchema","RelayerExecuteResponseSchema","GaslessTransactionHandle","match","submittedNonce","onChainNonce","safeMultisend","operation","from","nonce","prefixlessSignature","v","packedV","WaitForGaslessTransactionError","#client","pollCount","RelayerTransactionState","transactionHash","PrepareErc20ApprovalRequestSchema","PrepareErc20ApprovalError","prepareErc20Approval","sendErc20ApprovalTransaction","ApproveErc20Error","approveErc20","PrepareErc1155ApprovalForAllRequestSchema","PrepareErc1155ApprovalForAllError","prepareErc1155ApprovalForAll","sendErc1155ApprovalForAllTransaction","ApproveErc1155ForAllError","approveErc1155ForAll","PrepareTradingApprovalsError","prepareTradingApprovals","erc20ApprovalCalls","erc1155ApprovalCalls","index","handle","SetupTradingApprovalsError","setupTradingApprovals","CreateApiKeyError","createApiKey","toL1Headers","ApiKeyCredsSchema","DeriveApiKeyError","deriveApiKey","CreateOrDeriveApiKeyError","createOrDeriveApiKey","FetchApiKeysError","fetchApiKeys","ApiKeysResponseSchema","DeleteApiKeyError","deleteApiKey","CreateBuilderApiKeyError","createBuilderApiKey","BuilderApiKeyCredsSchema","FetchBuilderApiKeysError","fetchBuilderApiKeys","BuilderApiKeysResponseSchema","RevokeBuilderApiKeyError","revokeBuilderApiKey","auth","ListBuilderTradesRequestSchema","BuilderCodeSchema","ListBuilderTradesError","listBuilderTrades","PaginatedBuilderTradesSchema","FetchMidpointRequestSchema","FetchMidpointError","fetchMidpoint","MidpointSchema","FetchMidpointsRequestSchema","FetchMidpointsError","fetchMidpoints","toTokenRequestPayload","MidpointsSchema","FetchTickSizeRequestSchema","FetchTickSizeError","fetchTickSize","FetchTickSizeResponseSchema","FetchNegRiskRequestSchema","FetchNegRiskError","fetchNegRisk","FetchNegRiskResponseSchema","ResolveConditionByTokenRequestSchema","TokenIdSchema","ResolveConditionByTokenError","resolveConditionByToken","ResolveConditionByTokenResponseSchema","FetchMarketInfoRequestSchema","ConditionIdSchema","FetchMarketInfoError","fetchMarketInfo","FetchMarketInfoResponseSchema","FetchBuilderFeeRatesRequestSchema","FetchBuilderFeeRatesError","fetchBuilderFeeRates","FetchBuilderFeeRatesResponseSchema","FetchPriceRequestSchema","OrderSideSchema","FetchPriceError","fetchPrice","PriceSchema","FetchPricesRequestSchema","FetchPricesError","fetchPrices","toTokenWithSideRequestPayload","PricesSchema","FetchOrderBookRequestSchema","FetchOrderBookError","fetchOrderBook","FetchOrderBookResponseSchema","FetchOrderBooksRequestSchema","FetchOrderBooksError","fetchOrderBooks","OrderBooksSchema","FetchSpreadRequestSchema","FetchSpreadError","fetchSpread","SpreadSchema","FetchSpreadsRequestSchema","FetchSpreadsError","fetchSpreads","SpreadsSchema","FetchLastTradePriceRequestSchema","FetchLastTradePriceError","fetchLastTradePrice","LastTradePriceSchema","FetchLastTradePricesRequestSchema","FetchLastTradePricesError","fetchLastTradePrices","LastTradePricesSchema","ListPriceHistoryRequestSchema","PriceHistoryIntervalSchema","FetchPriceHistoryError","fetchPriceHistory","PriceHistorySchema","ListCurrentRewardsRequestSchema","ListCurrentRewardsError","listCurrentRewards","PaginatedCurrentRewardsSchema","ListMarketRewardsRequestSchema","ListMarketRewardsError","listMarketRewards","PaginatedMarketRewardsSchema","tokenId","side","ListCommentsRequestSchema","EventIdSchema","SeriesIdSchema","CommentParentEntityTypeSchema","FetchCommentsByIdRequestSchema","CommentIdSchema","ListCommentsByUserAddressRequestSchema","ListCommentsError","listComments","ListCommentsResponseSchema","comments","FetchCommentsByIdError","fetchCommentsById","ListCommentsByUserAddressError","listCommentsByUserAddress","address","parsePolymarketSlugUrl","rawUrl","resource","cause","actualResource","slug","extraSegments","ListEventsRequestSchema","IsoDateTimeStringSchema","IsoCalendarDateStringSchema","FetchEventRequestSchema","FetchEventTagsRequestSchema","FetchEventLiveVolumeRequestSchema","ListEventsError","listEvents","toEventsSearchParams","ListEventsKeysetResponseSchema","FetchEventError","fetchEvent","toFetchEventByIdSearchParams","EventSchema","toFetchEventBySlugSearchParams","FetchEventTagsError","fetchEventTags","FetchEventTagsResponseSchema","FetchEventLiveVolumeError","fetchEventLiveVolume","FetchEventLiveVolumeResponseSchema","ListBuilderLeaderboardRequestSchema","TimePeriodSchema","ListBuilderVolumeRequestSchema","ListTraderLeaderboardRequestSchema","LeaderboardCategorySchema","LeaderboardOrderBySchema","ListBuilderLeaderboardError","listBuilderLeaderboard","ListBuilderLeaderboardResponseSchema","builders","ListBuilderVolumeError","fetchBuilderVolume","ListBuilderVolumeResponseSchema","ListTraderLeaderboardError","listTraderLeaderboard","ListTraderLeaderboardResponseSchema","traders","ListMarketsRequestSchema","FetchMarketByIdRequestSchema","FetchMarketBySlugRequestSchema","FetchMarketByUrlRequestSchema","FetchMarketRequestSchema","FetchMarketTagsRequestSchema","ListMarketHoldersRequestSchema","ListOpenInterestRequestSchema","MarketPositionStatusSchema","MarketPositionSortBySchema","MarketPositionSortDirectionSchema","ListMarketPositionsRequestSchema","ListMarketsError","listMarkets","toMarketsSearchParams","ListMarketsKeysetResponseSchema","FetchMarketError","fetchMarket","fetchMarketById","fetchMarketBySlug","FetchMarketTagsError","fetchMarketTags","FetchMarketTagsResponseSchema","ListMarketHoldersError","listMarketHolders","ListMarketHoldersResponseSchema","ListOpenInterestError","listOpenInterest","ListOpenInterestResponseSchema","ListMarketPositionsError","listMarketPositions","ListMarketPositionsResponseSchema","positions","MarketSchema","CancelOrderRequestSchema","CancelOrdersRequestSchema","CancelMarketOrdersRequestSchema","CancelOrderError","cancelOrder","cancel","CancelOrdersError","cancelOrders","CancelAllError","cancelAll","CancelMarketOrdersError","cancelMarketOrders","path","CancelOrdersResponseSchema","BaseEstimateMarketPriceRequestSchema","OrderType","EstimateMarketPriceRequestSchema","OrderSide","PositiveDecimalNumberSchema","EstimateMarketPriceError","InsufficientLiquidityError","estimateMarketPrice","tickSize","resolveEstimatedMarketPrice","orderBook","price","calculateBuyMarketPrice","calculateSellMarketPrice","isValidPrice","amountToMatch","orderType","sum","position","bestPosition","PostOrdersRequestSchema","PostOrderError","PostOrdersError","postOrder","order","createSendOrderPayload","OrderResponseSchema","postOrders","orders","OrderResponsesSchema","resolveRoundingConfig","resolveExchangeAddress","negRisk","parseAmount","roundDown","decimals","decimalPlaces","roundUp","roundNormal","mantissa","exponent","fractionalPart","fractionalPlaces","exponentValue","PrepareLimitOrderParamsSchema","context","minimumExpiration","prepareLimitOrderDraft","resolveLimitOrderContext","amounts","computeLimitOrderAmounts","account","resolvePrice","roundConfig","rawPrice","rawTakerAmount","rawMakerAmount","BasePrepareMarketOrderParamsSchema","PrepareMarketOrderParamsSchema","prepareMarketOrderDraft","resolveMarketOrderContext","computeMarketOrderAmounts","resolvedAmount","resolveMarketOrderAmount","feeInfo","builderTakerFeeRate","fetchMarketFeeInfo","fetchBuilderTakerFeeRate","adjustBuyAmountForFees","builderCode","platformFeeRate","platformFee","totalCost","BYTES32_ZERO","createUnsignedOrder","generateOrderSalt","createSignedOrder","_chainId","_exchangeAddress","signedFields","bytes","byte","ORDER_STRUCTURE","TYPED_DATA_SIGN_STRUCTURE","PROTOCOL_NAME","PROTOCOL_VERSION","ORDER_TYPE_STRING","ORDER_TYPE_HASH","DOMAIN_TYPE_HASH","PROTOCOL_NAME_HASH","PROTOCOL_VERSION_HASH","createLegacyOrderTypedDataPayload","createOrderTypedDataMessage","createOrderTypedDataPayload","orderPayload","createOrderSignature","contentsType","contentsTypeLength","expectErc1271Signature","createAppDomainSeparator","createOrderContentsHash","encodeOrderSide","signOrder","PrepareMarketOrderError","prepareMarketOrder","draft","unsignedOrder","PrepareLimitOrderError","prepareLimitOrder","PrepareMarketOrderPostingError","prepareMarketOrderPosting","createOrderPostingWorkflow","PrepareLimitOrderPostingError","prepareLimitOrderPosting","workflowPromise","resolveCurrentAllowance","assetType","AssetType","allowances","resolveAllowanceAmount","CreateMarketOrderError","createMarketOrder","PlaceMarketOrderError","placeMarketOrder","postOrderWithAllowanceRecovery","CreateLimitOrderError","createLimitOrder","PlaceLimitOrderError","placeLimitOrder","postSignedOrder","isBalanceOrAllowanceRequestRejection","retryResponse","approveOrderAndRetry","ensureOrderApproval","exchangeAddress","requiredAllowance","PositionSortBySchema","PositionSortDirectionSchema","ClosedPositionSortBySchema","ListPositionsRequestSchema","ListClosedPositionsRequestSchema","FetchPortfolioValueRequestSchema","FetchTradedMarketCountRequestSchema","DownloadAccountingSnapshotRequestSchema","ListPositionsError","listPositions","ListPositionsResponseSchema","ListClosedPositionsError","listClosedPositions","ListClosedPositionsResponseSchema","FetchPortfolioValueError","fetchPortfolioValue","FetchPortfolioValueResponseSchema","FetchTradedMarketCountError","fetchTradedMarketCount","TradedSchema","DownloadAccountingSnapshotError","downloadAccountingSnapshot","PrepareSplitPositionRequestSchema","PrepareMergePositionsRequestSchema","PrepareRedeemPositionsRequestSchema","PrepareSplitPositionError","PrepareMergePositionsError","PrepareRedeemPositionsError","prepareSplitPosition","negativeRisk","resolveMarketNegativeRiskFlag","resolveLifecycleTargetAddress","sendSplitPositionTransaction","SplitPositionError","splitPosition","prepareMergePositions","binaryPositions","expectBinaryPositions","expectNegativeRiskFlag","resolveMergeAmount","sendMergePositionsTransaction","MergePositionsError","mergePositions","prepareRedeemPositions","resolveBinaryPositionsConditionId","sendRedeemPositionsTransaction","RedeemPositionsError","redeemPositions","markets","market","isPresent","yesPosition","noPosition","first","firstPosition","requestedAmount","maxAmount","calculateMaxMergeAmount","yesAmount","toPositionAmount","noAmount","expectedOutcomeIndex","isNullish","toTokenBaseUnits","size","numericSize","FetchPublicProfileRequestSchema","FetchPublicProfileError","fetchPublicProfile","PublicProfileSchema","SearchRequestSchema","SearchError","search","PublicSearchResponseSchema","toSearchResults","ListSeriesRequestSchema","FetchSeriesRequestSchema","ListSeriesError","listSeries","ListSeriesResponseSchema","series","FetchSeriesError","fetchSeries","SeriesSchema","ListSportsError","listSports","ListSportsMetadataResponseSchema","FetchSportsMarketTypesError","fetchSportsMarketTypes","SportsMarketTypesResponseSchema","subscribe","subscriptions","handles","spec","subscribeOne","mergedSubscription","children","closing","close","child","iterable","merge","ListTagsRequestSchema","FetchTagRequestSchema","RelatedTagsByIdRequestSchema","RelatedTagsBySlugRequestSchema","RelatedTagResourcesByIdRequestSchema","RelatedTagResourcesBySlugRequestSchema","ListTagsError","listTags","ListTagsResponseSchema","tags","FetchTagError","fetchTag","TagSchema","FetchRelatedTagsError","fetchRelatedTags","ListRelatedTagsResponseSchema","FetchRelatedTagResourcesError","fetchRelatedTagResources","ListRelatedTagResourcesResponseSchema","ListTeamsRequestSchema","ListTeamsError","listTeams","ListTeamsResponseSchema","teams","PrepareErc20TransferRequestSchema","PrepareErc20TransferError","prepareErc20Transfer","sendErc20TransferTransaction","TransferErc20Error","transferErc20"],"mappings":"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","file":"chunk-VQOVE5SC.js","sourcesContent":["import type { z } from 'zod';\nimport { UserInputError } from './errors';\n\n/**\n * Parses consumer input and throws `UserInputError` when validation fails.\n */\nexport function parseUserInput<TOutput>(\n input: unknown,\n schema: z.ZodType<TOutput>,\n): TOutput {\n const result = schema.safeParse(input);\n\n if (result.success) {\n return result.data;\n }\n\n throw UserInputError.fromZodError(result.error);\n}\n","import {\n type PaginationCursor,\n toPaginationCursor,\n} from '@polymarket/bindings';\nimport { type ResultAsync, unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport { UserInputError } from './errors';\n\nexport const PageSizeSchema = z.number().int().positive();\n\nexport type Page<T> = {\n items: T;\n hasMore: boolean;\n nextCursor?: PaginationCursor;\n totalCount?: number;\n};\n\nexport type Paginated<T> = AsyncIterable<Page<T>> & {\n firstPage(): Promise<Page<T>>;\n from(cursor?: PaginationCursor): Paginated<T>;\n};\n\n/** @internal */\ntype OffsetCursorState = {\n offset: number;\n pageSize: number;\n};\n\n/** @internal */\nconst OffsetCursorStateSchema = z.object({\n offset: z.number().int().min(0),\n pageSize: PageSizeSchema,\n});\n\n/** @internal */\nexport function paginate<T, TError>(\n fetchPage: (cursor?: PaginationCursor) => ResultAsync<Page<T>, TError>,\n initialCursor?: PaginationCursor,\n emptyItems: T = [] as T,\n): Paginated<T> {\n function createEmptyPaginator(): Paginated<T> {\n return {\n async firstPage() {\n return {\n items: emptyItems,\n hasMore: false,\n };\n },\n from() {\n return createEmptyPaginator();\n },\n async *[Symbol.asyncIterator]() {},\n };\n }\n\n function createPaginator(cursor = initialCursor): Paginated<T> {\n return {\n firstPage() {\n return unwrap(fetchPage(cursor));\n },\n from(nextCursor) {\n if (nextCursor === undefined) {\n return createEmptyPaginator();\n }\n\n return createPaginator(nextCursor);\n },\n async *[Symbol.asyncIterator]() {\n let currentCursor = cursor;\n\n while (true) {\n const page = await unwrap(fetchPage(currentCursor));\n\n yield page;\n\n if (!page.hasMore) {\n return;\n }\n\n currentCursor = page.nextCursor;\n }\n },\n };\n }\n\n return createPaginator();\n}\n\n/** @internal */\nexport function encodeOffsetCursor(state: OffsetCursorState): PaginationCursor {\n return toPaginationCursor(\n btoa(JSON.stringify(OffsetCursorStateSchema.parse(state))),\n );\n}\n\n/** @internal */\nexport function decodeOffsetCursor(\n cursor: PaginationCursor | undefined,\n pageSize: number,\n): OffsetCursorState {\n if (cursor === undefined) {\n return {\n offset: 0,\n pageSize,\n };\n }\n\n try {\n return OffsetCursorStateSchema.parse(JSON.parse(atob(cursor)));\n } catch (error) {\n throw new UserInputError('Invalid pagination cursor', { cause: error });\n }\n}\n","import { err, ok, type Result, ResultAsync } from '@polymarket/types';\nimport type { z } from 'zod';\nimport { UnexpectedResponseError } from './errors';\n\nexport function validateWith<TReturnType>(schema: z.ZodType<TReturnType>) {\n return function validateResponse(\n response: Response,\n ): ResultAsync<TReturnType, UnexpectedResponseError> {\n return ResultAsync.fromPromise(\n response.json(),\n () =>\n new UnexpectedResponseError(\n `Received non-JSON response from ${response.url}`,\n ),\n ).andThen((payload) => parseResponse(response.url, schema, payload));\n };\n}\n\nexport function readBlob(\n response: Response,\n): ResultAsync<Blob, UnexpectedResponseError> {\n return ResultAsync.fromPromise(\n response.blob(),\n () =>\n new UnexpectedResponseError(\n `Received unreadable binary response from ${response.url}`,\n ),\n );\n}\n\nfunction parseResponse<TReturnType>(\n endpoint: string,\n schema: z.ZodType<TReturnType>,\n response: unknown,\n): Result<TReturnType, UnexpectedResponseError> {\n const result = schema.safeParse(response);\n\n if (result.success) {\n return ok(result.data);\n }\n\n return err(UnexpectedResponseError.fromZodError(result.error, { endpoint }));\n}\n","import type { EvmAddress, HexString } from '@polymarket/types';\nimport ky from 'ky';\nimport {\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n} from './errors';\n\nexport type EthCallRequest = {\n to: EvmAddress;\n data: HexString;\n};\n\nexport type JsonRpcError = {\n code: number;\n message: string;\n data?: unknown;\n};\n\ntype JsonRpcSuccess<TResult> = {\n jsonrpc: '2.0';\n id: number;\n result: TResult;\n};\n\ntype JsonRpcFailure = {\n jsonrpc: '2.0';\n id: number | null;\n error: JsonRpcError;\n};\n\ntype JsonRpcResponse<TResult> = JsonRpcSuccess<TResult> | JsonRpcFailure;\n\nexport type JsonRpcClientConfig = {\n url: string;\n};\n\n/** @internal */\nexport class JsonRpcClient {\n readonly #url: string;\n\n constructor({ url }: JsonRpcClientConfig) {\n this.#url = url;\n }\n\n async ethCall(request: EthCallRequest): Promise<HexString> {\n const response = await this.#post<HexString>({\n jsonrpc: '2.0',\n id: 1,\n method: 'eth_call',\n params: [{ to: request.to, data: request.data }, 'latest'],\n });\n\n if ('error' in response) {\n throw new RequestRejectedError(\n `JSON-RPC eth_call failed: ${response.error.message}`,\n { cause: response.error, status: 200 },\n );\n }\n\n if (typeof response.result !== 'string') {\n throw new UnexpectedResponseError(\n 'Expected JSON-RPC eth_call result to be a hex string',\n );\n }\n\n if (!isRpcHexString(response.result)) {\n throw new UnexpectedResponseError(\n 'Expected JSON-RPC eth_call result to be a hex string',\n );\n }\n\n return response.result;\n }\n\n async #post<TResult>(json: unknown): Promise<JsonRpcResponse<TResult>> {\n let response: Response;\n\n try {\n response = await ky.post(this.#url, {\n json,\n throwHttpErrors: false,\n });\n } catch (error) {\n throw TransportError.fromError(error);\n }\n\n if (!response.ok) {\n throw new RequestRejectedError(\n `JSON-RPC request to ${this.#url} failed with status ${response.status}`,\n { status: response.status },\n );\n }\n\n let body: unknown;\n\n try {\n body = await response.json();\n } catch (error) {\n throw new UnexpectedResponseError(\n 'Expected JSON-RPC response body to be JSON',\n { cause: error },\n );\n }\n\n if (!isJsonRpcResponse<TResult>(body)) {\n throw new UnexpectedResponseError('Unexpected JSON-RPC response shape');\n }\n\n return body;\n }\n}\n\n/** @internal */\nexport function isJsonRpcContractRevert(error: unknown): boolean {\n if (\n !(error instanceof RequestRejectedError) ||\n !isJsonRpcError(error.cause)\n ) {\n return false;\n }\n\n const message = [\n error.cause.message,\n stringifyJsonRpcErrorData(error.cause.data),\n ]\n .join(' ')\n .toLowerCase();\n\n return (\n (error.cause.code === 3 ||\n error.cause.code === -32_000 ||\n error.cause.code === -32_003 ||\n error.cause.code === -32_015 ||\n error.cause.code === -32_603) &&\n (message.includes('execution reverted') ||\n message.includes('revert') ||\n message.includes('invalid opcode'))\n );\n}\n\nfunction isJsonRpcResponse<TResult>(\n value: unknown,\n): value is JsonRpcResponse<TResult> {\n if (!isRecord(value) || value.jsonrpc !== '2.0') {\n return false;\n }\n\n if ('error' in value) {\n return isJsonRpcError(value.error);\n }\n\n return 'result' in value;\n}\n\nfunction isJsonRpcError(value: unknown): value is JsonRpcError {\n return (\n isRecord(value) &&\n typeof value.code === 'number' &&\n typeof value.message === 'string'\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isRpcHexString(value: string): value is HexString {\n return /^0x[a-fA-F0-9]*$/.test(value);\n}\n\nfunction stringifyJsonRpcErrorData(data: unknown): string {\n if (data === undefined) {\n return '';\n }\n\n if (typeof data === 'string') {\n return data;\n }\n\n try {\n return JSON.stringify(data);\n } catch {\n return '';\n }\n}\n","import { SignatureType } from '@polymarket/bindings/clob';\nimport { WalletType } from '@polymarket/bindings/gamma';\nimport type { HexString } from '@polymarket/types';\nimport {\n type EvmAddress,\n expectEvmAddress,\n expectHexString,\n isSameEvmAddress,\n never,\n ZERO_ADDRESS,\n} from '@polymarket/types';\nimport { AbiParameters, Bytes, ContractAddress, Hash } from 'ox';\nimport type { EnvironmentConfig, WalletDerivationConfig } from './environments';\nimport type { JsonRpcClient } from './rpc';\nimport { isJsonRpcContractRevert } from './rpc';\n\nexport type AccountIdentity = {\n /** Authenticated EOA that signs API authentication, orders, and wallet operations. */\n signer: EvmAddress;\n /** Active Polymarket account/funder wallet used for balances, positions, and execution. */\n wallet: EvmAddress;\n /** Wallet classification used for order signatures and transaction routing. */\n walletType: WalletType;\n};\n\n/** @internal */\nexport function resolveAccountIdentity(\n environment: EnvironmentConfig,\n signer: EvmAddress,\n wallet: EvmAddress,\n): AccountIdentity {\n return {\n signer,\n wallet,\n walletType: classifyWalletType(environment, signer, wallet),\n };\n}\n\n/** @internal */\nexport function toSignatureType(walletType: WalletType): SignatureType {\n switch (walletType) {\n case WalletType.EOA:\n return SignatureType.EOA;\n case WalletType.POLY_PROXY:\n return SignatureType.POLY_PROXY;\n case WalletType.GNOSIS_SAFE:\n return SignatureType.POLY_GNOSIS_SAFE;\n case WalletType.DEPOSIT_WALLET:\n return SignatureType.POLY_1271;\n }\n}\n\nconst PROXY_BYTECODE_TEMPLATE =\n '3d3d606380380380913d393d73%s5af4602a57600080fd5b602d8060366000396000f3363d3d373d3d3d363d73%s5af43d82803e903d91602b57fd5bf352e831dd00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000';\n\nfunction proxyWalletBytecodeHash(config: WalletDerivationConfig): HexString {\n const bytecode = PROXY_BYTECODE_TEMPLATE.replace(\n '%s',\n config.proxyFactory.slice(2).toLowerCase(),\n ).replace('%s', config.proxyImplementation.slice(2).toLowerCase());\n\n return expectHexString(Hash.keccak256(`0x${bytecode}`));\n}\n\n/** @internal */\nexport function deriveProxyWalletAddress(\n signer: EvmAddress,\n config: WalletDerivationConfig,\n): EvmAddress {\n return expectEvmAddress(\n ContractAddress.fromCreate2({\n bytecodeHash: proxyWalletBytecodeHash(config),\n from: config.proxyFactory,\n salt: Hash.keccak256(AbiParameters.encodePacked(['address'], [signer])),\n }),\n );\n}\n\n/** @internal */\nexport function deriveSafeWalletAddress(\n signer: EvmAddress,\n config: WalletDerivationConfig,\n): EvmAddress {\n return expectEvmAddress(\n ContractAddress.fromCreate2({\n bytecodeHash: config.safeInitCodeHash,\n from: config.safeFactory,\n salt: Hash.keccak256(\n AbiParameters.encode([{ name: 'address', type: 'address' }], [signer]),\n ),\n }),\n );\n}\n\nconst ERC1967_CONST1 =\n '0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3';\nconst ERC1967_CONST2 =\n '0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076';\nconst ERC1967_PREFIX = 0x61003d3d8160233d3973n;\n\n/** @internal */\nexport function deriveUupsDepositWalletAddress(\n signer: EvmAddress,\n config: WalletDerivationConfig,\n): EvmAddress {\n const walletId = expectHexString(`0x${signer.slice(2).padStart(64, '0')}`);\n const args = AbiParameters.encode(\n [{ type: 'address' }, { type: 'bytes32' }],\n [config.depositWalletFactory, walletId],\n );\n\n return expectEvmAddress(\n ContractAddress.fromCreate2({\n bytecodeHash: depositWalletInitCodeHash(\n config.depositWalletImplementation,\n args,\n ),\n from: config.depositWalletFactory,\n salt: Hash.keccak256(args),\n }),\n );\n}\n\nconst ERC1967_BEACON_CONST1 =\n '0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3';\nconst ERC1967_BEACON_CONST2 =\n '0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c';\nconst ERC1967_BEACON_CONST3 =\n '0x60195155f3363d3d373d3d363d602036600436635c60da';\nconst ERC1967_BEACON_PREFIX = 0x6100523d8160233d3973n;\nconst FACTORY_BEACON_SELECTOR: HexString = '0x49493a4d';\n\n/** @internal */\nexport function deriveBeaconDepositWalletAddress(\n signer: EvmAddress,\n config: WalletDerivationConfig,\n): EvmAddress {\n const walletId = expectHexString(`0x${signer.slice(2).padStart(64, '0')}`);\n const args = AbiParameters.encode(\n [{ type: 'address' }, { type: 'bytes32' }],\n [config.depositWalletFactory, walletId],\n );\n\n return expectEvmAddress(\n ContractAddress.fromCreate2({\n bytecodeHash: depositWalletBeaconInitCodeHash(\n config.depositWalletBeacon,\n args,\n ),\n from: config.depositWalletFactory,\n salt: Hash.keccak256(args),\n }),\n );\n}\n\nfunction depositWalletInitCodeHash(\n implementation: EvmAddress,\n args: HexString,\n): HexString {\n const argsByteLength = BigInt((args.length - 2) / 2);\n const prefix = ERC1967_PREFIX + (argsByteLength << 56n);\n\n return expectHexString(\n Hash.keccak256(\n Bytes.concat(\n Bytes.fromNumber(prefix, { size: 10 }),\n Bytes.fromHex(implementation),\n Bytes.fromHex('0x6009'),\n Bytes.fromHex(ERC1967_CONST2),\n Bytes.fromHex(ERC1967_CONST1),\n Bytes.fromHex(args),\n ),\n { as: 'Hex' },\n ),\n );\n}\n\nfunction depositWalletBeaconInitCodeHash(\n beacon: EvmAddress,\n args: HexString,\n): HexString {\n const argsByteLength = BigInt((args.length - 2) / 2);\n const prefix = ERC1967_BEACON_PREFIX + (argsByteLength << 56n);\n\n return expectHexString(\n Hash.keccak256(\n Bytes.concat(\n Bytes.fromNumber(prefix, { size: 10 }),\n Bytes.fromHex(beacon),\n Bytes.fromHex(ERC1967_BEACON_CONST3),\n Bytes.fromHex(ERC1967_BEACON_CONST2),\n Bytes.fromHex(ERC1967_BEACON_CONST1),\n Bytes.fromHex(args),\n ),\n { as: 'Hex' },\n ),\n );\n}\n\n/** @internal */\nexport async function getDepositWalletFactoryBeacon(\n rpc: JsonRpcClient,\n factory: EvmAddress,\n): Promise<EvmAddress> {\n try {\n const data = await rpc.ethCall({\n to: factory,\n data: FACTORY_BEACON_SELECTOR,\n });\n\n return decodeAddressReturnData(data);\n } catch (error) {\n if (isJsonRpcContractRevert(error)) {\n return ZERO_ADDRESS;\n }\n\n throw error;\n }\n}\n\n/** @internal */\nexport async function isBeaconDepositWalletFactory(\n rpc: JsonRpcClient,\n factory: EvmAddress,\n): Promise<boolean> {\n const beacon = await getDepositWalletFactoryBeacon(rpc, factory);\n\n return !isSameEvmAddress(beacon, ZERO_ADDRESS);\n}\n\n/** @internal */\nexport async function deriveCurrentDepositWalletAddress(\n rpc: JsonRpcClient,\n signer: EvmAddress,\n config: WalletDerivationConfig,\n): Promise<EvmAddress> {\n if (await isBeaconDepositWalletFactory(rpc, config.depositWalletFactory)) {\n return deriveBeaconDepositWalletAddress(signer, config);\n }\n\n return deriveUupsDepositWalletAddress(signer, config);\n}\n\nfunction decodeAddressReturnData(data: HexString): EvmAddress {\n if (data.length < 66) {\n return ZERO_ADDRESS;\n }\n\n return expectEvmAddress(`0x${data.slice(-40)}`);\n}\n\nfunction classifyWalletType(\n environment: EnvironmentConfig,\n signer: EvmAddress,\n wallet: EvmAddress,\n): WalletType {\n if (isSameEvmAddress(wallet, signer)) {\n return WalletType.EOA;\n }\n\n const config = environment.walletDerivation;\n\n if (\n isSameEvmAddress(wallet, deriveBeaconDepositWalletAddress(signer, config))\n ) {\n return WalletType.DEPOSIT_WALLET;\n }\n\n if (\n isSameEvmAddress(wallet, deriveUupsDepositWalletAddress(signer, config))\n ) {\n return WalletType.DEPOSIT_WALLET;\n }\n\n if (isSameEvmAddress(wallet, deriveSafeWalletAddress(signer, config))) {\n return WalletType.GNOSIS_SAFE;\n }\n\n if (isSameEvmAddress(wallet, deriveProxyWalletAddress(signer, config))) {\n return WalletType.POLY_PROXY;\n }\n\n never(\n `Wallet ${wallet} does not match the signer ${signer} or any supported deterministic wallet address.`,\n );\n}\n","export type SearchParamPrimitive = boolean | number | string;\n\nexport type SearchParamValue =\n | SearchParamPrimitive\n | readonly SearchParamPrimitive[];\n\nexport type SearchParamsInput = Record<string, SearchParamValue | undefined>;\n\nexport type SearchParamMappings<TParams extends SearchParamsInput> = {\n [TKey in keyof TParams]: string;\n};\n\ntype SnakeCaseSearchParamMappings = {\n format: 'snake_case';\n exceptions: Record<string, string | undefined>;\n};\n\nexport function toSearchParams<TParams extends SearchParamsInput>(\n params: TParams,\n mappings: SearchParamMappings<TParams> | SnakeCaseSearchParamMappings,\n): URLSearchParams {\n if (isSnakeCaseSearchParamMappings(mappings)) {\n return toSnakeCaseSearchParams(params, mappings.exceptions);\n }\n\n const searchParams = new URLSearchParams();\n\n for (const [paramKey, searchParamKey] of Object.entries(mappings) as Array<\n readonly [keyof TParams, string]\n >) {\n const value = params[paramKey];\n\n if (value === undefined) {\n continue;\n }\n\n if (isSearchParamArray(value)) {\n for (const item of value) {\n searchParams.append(searchParamKey, toSearchParamValue(item));\n }\n\n continue;\n }\n\n searchParams.append(searchParamKey, toSearchParamValue(value));\n }\n\n return searchParams;\n}\n\nexport function snakeCase<TParams extends SearchParamsInput>(\n exceptions: Partial<SearchParamMappings<TParams>> = {},\n): SnakeCaseSearchParamMappings {\n return {\n format: 'snake_case',\n exceptions,\n };\n}\n\n/**\n * Data endpoints use camelCase query keys and comma-separated arrays.\n */\nexport function toDataSearchParams<TParams extends SearchParamsInput>(\n params: TParams,\n): URLSearchParams {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n searchParams.append(key, value.map(toSearchParamValue).join(','));\n continue;\n }\n\n searchParams.append(key, toSearchParamValue(value as SearchParamPrimitive));\n }\n\n return searchParams;\n}\n\nfunction isSnakeCaseSearchParamMappings(\n mappings:\n | SearchParamMappings<SearchParamsInput>\n | SnakeCaseSearchParamMappings,\n): mappings is SnakeCaseSearchParamMappings {\n return 'format' in mappings;\n}\n\nfunction toSnakeCaseSearchParams<TParams extends SearchParamsInput>(\n params: TParams,\n exceptions: Record<string, string | undefined>,\n): URLSearchParams {\n const searchParams = new URLSearchParams();\n\n for (const [paramKey, value] of Object.entries(params) as Array<\n readonly [string, SearchParamValue]\n >) {\n if (value === undefined) {\n continue;\n }\n\n const searchParamKey = exceptions[paramKey] ?? toSnakeCase(paramKey);\n\n if (isSearchParamArray(value)) {\n for (const item of value) {\n searchParams.append(searchParamKey, toSearchParamValue(item));\n }\n\n continue;\n }\n\n searchParams.append(searchParamKey, toSearchParamValue(value));\n }\n\n return searchParams;\n}\n\nfunction isSearchParamArray(\n value: SearchParamValue,\n): value is readonly SearchParamPrimitive[] {\n return Array.isArray(value);\n}\n\nfunction toSnakeCase(value: string): string {\n return value.replace(/[A-Z]/g, (character) => `_${character.toLowerCase()}`);\n}\n\nexport function toSearchParamValue(value: SearchParamPrimitive): string {\n return String(value);\n}\n","import {\n PaginationCursorSchema,\n toPaginationCursor,\n} from '@polymarket/bindings';\nimport {\n AssetTypeSchema,\n type BalanceAllowanceResponse,\n BalanceAllowanceResponseSchema,\n type ClobTrade,\n ClobTradesPageSchema,\n ClosedOnlyModeSchema,\n END_CURSOR,\n type NotificationsResponse,\n NotificationsResponseSchema,\n type OpenOrder,\n OpenOrderSchema,\n OpenOrdersPageSchema,\n OrderScoringResponseSchema,\n type OrdersScoringResponse,\n OrdersScoringResponseSchema,\n type RewardsPercentages,\n RewardsPercentagesSchema,\n type TotalUserEarning,\n TotalUserEarningsResponseSchema,\n type UserEarning,\n UserEarningsPageSchema,\n type UserRewardsEarning,\n UserRewardsEarningsPageSchema,\n} from '@polymarket/bindings/clob';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseSecureClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { PageSizeSchema, type Paginated, paginate } from '../pagination';\nimport { validateWith } from '../response';\nimport { toSignatureType } from '../wallet';\nimport { snakeCase, toSearchParams } from './params';\n\nexport type FetchClosedOnlyModeError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchClosedOnlyModeError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Fetches whether the account is restricted to closed-only trading.\n *\n * @throws {@link FetchClosedOnlyModeError}\n *\n * @example\n * ```ts\n * const closedOnly = await fetchClosedOnlyMode(client);\n * ```\n */\nexport async function fetchClosedOnlyMode(\n client: BaseSecureClient,\n): Promise<boolean> {\n const response = await unwrap(\n client.secureClob\n .get('/auth/ban-status/closed-only')\n .andThen(validateWith(ClosedOnlyModeSchema)),\n );\n\n return response.closedOnly;\n}\n\nconst ListOpenOrdersRequestSchema = z\n .object({\n tokenId: z.string().optional(),\n cursor: PaginationCursorSchema.optional(),\n id: z.string().optional(),\n market: z.string().optional(),\n })\n .default({});\n\nexport type ListOpenOrdersRequest = z.input<typeof ListOpenOrdersRequestSchema>;\nexport type ListOpenOrdersError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListOpenOrdersError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists open orders for the authenticated account across all pages.\n *\n * @throws {@link ListOpenOrdersError}\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listOpenOrders(client, {\n * market: '0x0000000000000000000000000000000000000000000000000000000000000001',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: OpenOrder[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listOpenOrders(client, {\n * market: '0x0000000000000000000000000000000000000000000000000000000000000001',\n * });\n *\n * for await (const page of result) {\n * // page.items: OpenOrder[]\n * }\n * ```\n */\nexport function listOpenOrders(\n client: BaseSecureClient,\n request?: ListOpenOrdersRequest,\n): Paginated<OpenOrder[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListOpenOrdersRequestSchema,\n );\n\n return paginate(\n (nextCursor) =>\n client.secureClob\n .get('/data/orders', {\n params: toSearchParams(\n { ...params, nextCursor },\n snakeCase({ tokenId: 'asset_id' }),\n ),\n })\n .andThen(validateWith(OpenOrdersPageSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nconst FetchOrderRequestSchema = z.object({\n orderId: z.string(),\n});\n\nexport type FetchOrderRequest = z.input<typeof FetchOrderRequestSchema>;\nexport type FetchOrderError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchOrderError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a single order for the authenticated account.\n *\n * @throws {@link FetchOrderError}\n *\n * @example\n * ```ts\n * const order = await fetchOrder(client, {\n * orderId: '123',\n * });\n * ```\n */\nexport async function fetchOrder(\n client: BaseSecureClient,\n request: FetchOrderRequest,\n): Promise<OpenOrder> {\n const params = parseUserInput(request, FetchOrderRequestSchema);\n\n return unwrap(\n client.secureClob\n .get(`/data/order/${params.orderId}`)\n .andThen(validateWith(OpenOrderSchema)),\n );\n}\n\nconst ListAccountTradesRequestFields = {\n after: z.string().optional(),\n tokenId: z.string().optional(),\n before: z.string().optional(),\n cursor: PaginationCursorSchema.optional(),\n id: z.string().optional(),\n makerAddress: z.string().optional(),\n market: z.string().optional(),\n};\n\nconst ListAccountTradesRequestSchema = z\n .object(ListAccountTradesRequestFields)\n .default({});\n\nexport type ListAccountTradesRequest = z.input<\n typeof ListAccountTradesRequestSchema\n>;\nexport type ListAccountTradesError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListAccountTradesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists trades for the authenticated account across all pages.\n *\n * @throws {@link ListAccountTradesError}\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listAccountTrades(client, {\n * market: '0x0000000000000000000000000000000000000000000000000000000000000001',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: ClobTrade[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listAccountTrades(client, {\n * market: '0x0000000000000000000000000000000000000000000000000000000000000001',\n * });\n *\n * for await (const page of result) {\n * // page.items: ClobTrade[]\n * }\n * ```\n */\nexport function listAccountTrades(\n client: BaseSecureClient,\n request?: ListAccountTradesRequest,\n): Paginated<ClobTrade[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListAccountTradesRequestSchema,\n );\n\n return paginate(\n (nextCursor) =>\n client.secureClob\n .get('/data/trades', {\n params: toSearchParams(\n { ...params, nextCursor },\n snakeCase({ tokenId: 'asset_id' }),\n ),\n })\n .andThen(validateWith(ClobTradesPageSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nexport type FetchNotificationsError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchNotificationsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\nconst DropNotificationsRequestSchema = z.object({\n ids: z.array(z.string()).min(1),\n});\n\nexport type DropNotificationsRequest = z.input<\n typeof DropNotificationsRequestSchema\n>;\n\n/**\n * Fetches notifications for the authenticated account.\n *\n * @throws {@link FetchNotificationsError}\n *\n * @example\n * ```ts\n * const notifications = await fetchNotifications(client);\n * ```\n */\nexport async function fetchNotifications(\n client: BaseSecureClient,\n): Promise<NotificationsResponse> {\n const signatureType = toSignatureType(client.account.walletType);\n\n return unwrap(\n client.secureClob\n .get('/notifications', {\n params: toSearchParams({ signatureType }, snakeCase()),\n })\n .andThen(validateWith(NotificationsResponseSchema)),\n );\n}\n\nexport type DropNotificationsError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const DropNotificationsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Drops notifications for the authenticated account.\n *\n * @throws {@link DropNotificationsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * await dropNotifications(client, {\n * ids: ['1', '2'],\n * });\n * ```\n */\nexport async function dropNotifications(\n client: BaseSecureClient,\n request: DropNotificationsRequest,\n): Promise<void> {\n const params = parseUserInput(request, DropNotificationsRequestSchema);\n const signatureType = toSignatureType(client.account.walletType);\n const searchParams = toSearchParams(\n {\n ids: params.ids.join(','),\n signatureType,\n },\n snakeCase(),\n );\n\n await unwrap(\n client.secureClob.del('/notifications', {\n params: searchParams,\n }),\n );\n}\n\nconst FetchBalanceAllowanceRequestSchema = z.object({\n assetType: AssetTypeSchema,\n tokenId: z.string().optional(),\n});\n\nexport type FetchBalanceAllowanceRequest = z.input<\n typeof FetchBalanceAllowanceRequestSchema\n>;\n\nexport type FetchBalanceAllowanceError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchBalanceAllowanceError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches balance and allowance for the authenticated account.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link FetchBalanceAllowanceError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const balanceAllowance = await fetchBalanceAllowance(client, {\n * assetType: AssetType.COLLATERAL,\n * });\n * ```\n */\nexport async function fetchBalanceAllowance(\n client: BaseSecureClient,\n request: FetchBalanceAllowanceRequest,\n): Promise<BalanceAllowanceResponse> {\n const params = parseUserInput(request, FetchBalanceAllowanceRequestSchema);\n const signatureType = toSignatureType(client.account.walletType);\n\n return unwrap(\n client.secureClob\n .get('/balance-allowance', {\n params: toSearchParams({ ...params, signatureType }, snakeCase()),\n })\n .andThen(validateWith(BalanceAllowanceResponseSchema)),\n );\n}\n\nconst UpdateBalanceAllowanceRequestSchema = z.object({\n assetType: AssetTypeSchema,\n tokenId: z.string().optional(),\n});\n\nexport type UpdateBalanceAllowanceRequest = z.input<\n typeof UpdateBalanceAllowanceRequestSchema\n>;\n\nexport type UpdateBalanceAllowanceError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const UpdateBalanceAllowanceError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Refreshes balance and allowance for the authenticated account.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link UpdateBalanceAllowanceError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const balanceAllowance = await updateBalanceAllowance(client, {\n * assetType: AssetType.COLLATERAL,\n * });\n * ```\n */\nexport async function updateBalanceAllowance(\n client: BaseSecureClient,\n request: UpdateBalanceAllowanceRequest,\n): Promise<BalanceAllowanceResponse> {\n const params = parseUserInput(request, UpdateBalanceAllowanceRequestSchema);\n const signatureType = toSignatureType(client.account.walletType);\n const searchParams = toSearchParams(\n { ...params, signatureType },\n snakeCase(),\n );\n\n await unwrap(\n client.secureClob.get('/balance-allowance/update', {\n params: searchParams,\n }),\n );\n\n return fetchBalanceAllowance(client, params);\n}\n\nconst FetchOrderScoringRequestSchema = z.object({\n orderId: z.string(),\n});\n\nexport type FetchOrderScoringRequest = z.input<\n typeof FetchOrderScoringRequestSchema\n>;\nexport type FetchOrderScoringError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchOrderScoringError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches whether a single order is currently scoring.\n *\n * @throws {@link FetchOrderScoringError}\n *\n * @example\n * ```ts\n * const scoring = await fetchOrderScoring(client, {\n * orderId: '123',\n * });\n * ```\n */\nexport async function fetchOrderScoring(\n client: BaseSecureClient,\n request: FetchOrderScoringRequest,\n): Promise<boolean> {\n const params = parseUserInput(request, FetchOrderScoringRequestSchema);\n const response = await unwrap(\n client.secureClob\n .get('/order-scoring', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(OrderScoringResponseSchema)),\n );\n\n return response.scoring;\n}\n\nconst FetchOrdersScoringRequestSchema = z.object({\n orderIds: z.array(z.string()),\n});\n\nexport type FetchOrdersScoringRequest = z.input<\n typeof FetchOrdersScoringRequestSchema\n>;\nexport type FetchOrdersScoringError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchOrdersScoringError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches scoring state for multiple orders.\n *\n * @throws {@link FetchOrdersScoringError}\n *\n * @example\n * ```ts\n * const scoring = await fetchOrdersScoring(client, {\n * orderIds: ['1', '2'],\n * });\n * ```\n */\nexport async function fetchOrdersScoring(\n client: BaseSecureClient,\n request: FetchOrdersScoringRequest,\n): Promise<OrdersScoringResponse> {\n const params = parseUserInput(request, FetchOrdersScoringRequestSchema);\n const body = params.orderIds;\n\n return unwrap(\n client.secureClob\n .post('/orders-scoring', {\n json: body,\n })\n .andThen(validateWith(OrdersScoringResponseSchema)),\n );\n}\n\nconst ListUserEarningsForDayRequestSchema = z.object({\n cursor: PaginationCursorSchema.optional(),\n date: z.string(),\n});\n\nexport type ListUserEarningsForDayRequest = z.input<\n typeof ListUserEarningsForDayRequestSchema\n>;\nexport type ListUserEarningsForDayError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListUserEarningsForDayError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists per-market earnings for the authenticated account on a given day.\n *\n * @throws {@link ListUserEarningsForDayError}\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listUserEarningsForDay(client, {\n * date: '2026-04-16',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: UserEarning[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listUserEarningsForDay(client, {\n * date: '2026-04-16',\n * });\n *\n * for await (const page of result) {\n * // page.items: UserEarning[]\n * }\n * ```\n */\nexport function listUserEarningsForDay(\n client: BaseSecureClient,\n request: ListUserEarningsForDayRequest,\n): Paginated<UserEarning[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListUserEarningsForDayRequestSchema,\n );\n const signatureType = toSignatureType(client.account.walletType);\n\n return paginate(\n (nextCursor) =>\n client.secureClob\n .get('/rewards/user', {\n params: toSearchParams(\n {\n ...params,\n nextCursor,\n signatureType,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(UserEarningsPageSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nexport type FetchTotalEarningsForUserForDayRequest = z.input<\n typeof ListUserEarningsForDayRequestSchema\n>;\nexport type FetchTotalEarningsForUserForDayError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchTotalEarningsForUserForDayError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches total earnings for the authenticated account on a given day.\n *\n * @throws {@link FetchTotalEarningsForUserForDayError}\n *\n * @example\n * ```ts\n * const earnings = await fetchTotalEarningsForUserForDay(client, {\n * date: '2026-04-16',\n * });\n * ```\n */\nexport async function fetchTotalEarningsForUserForDay(\n client: BaseSecureClient,\n request: FetchTotalEarningsForUserForDayRequest,\n): Promise<TotalUserEarning[]> {\n const params = parseUserInput(request, ListUserEarningsForDayRequestSchema);\n const signatureType = toSignatureType(client.account.walletType);\n\n return unwrap(\n client.secureClob\n .get('/rewards/user/total', {\n params: toSearchParams(\n {\n ...params,\n signatureType,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(TotalUserEarningsResponseSchema)),\n );\n}\n\nconst ListUserEarningsAndMarketsConfigRequestSchema = z.object({\n cursor: PaginationCursorSchema.optional(),\n date: z.string(),\n noCompetition: z.boolean().optional(),\n orderBy: z.string().optional(),\n pageSize: PageSizeSchema.max(500).default(100),\n position: z.string().optional(),\n});\n\nexport type ListUserEarningsAndMarketsConfigRequest = z.input<\n typeof ListUserEarningsAndMarketsConfigRequestSchema\n>;\nexport type ListUserEarningsAndMarketsConfigError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListUserEarningsAndMarketsConfigError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists market reward configuration and earnings for the authenticated account on a given day.\n *\n * @throws {@link ListUserEarningsAndMarketsConfigError}\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listUserEarningsAndMarketsConfig(client, {\n * date: '2026-04-16',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: UserRewardsEarning[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listUserEarningsAndMarketsConfig(client, {\n * date: '2026-04-16',\n * });\n *\n * for await (const page of result) {\n * // page.items: UserRewardsEarning[]\n * }\n * ```\n */\nexport function listUserEarningsAndMarketsConfig(\n client: BaseSecureClient,\n request: ListUserEarningsAndMarketsConfigRequest,\n): Paginated<UserRewardsEarning[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListUserEarningsAndMarketsConfigRequestSchema,\n );\n const signatureType = toSignatureType(client.account.walletType);\n\n return paginate(\n (nextCursor) =>\n client.secureClob\n .get('/rewards/user/markets', {\n params: toSearchParams(\n {\n ...params,\n nextCursor,\n signatureType,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(UserRewardsEarningsPageSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nexport type FetchRewardPercentagesError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchRewardPercentagesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Fetches reward percentages for the authenticated account.\n *\n * @throws {@link FetchRewardPercentagesError}\n *\n * @example\n * ```ts\n * const percentages = await fetchRewardPercentages(client);\n * ```\n */\nexport async function fetchRewardPercentages(\n client: BaseSecureClient,\n): Promise<RewardsPercentages> {\n const signatureType = toSignatureType(client.account.walletType);\n\n return unwrap(\n client.secureClob\n .get('/rewards/user/percentages', {\n params: toSearchParams({ signatureType }, snakeCase()),\n })\n .andThen(validateWith(RewardsPercentagesSchema)),\n );\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n type Activity,\n ActivityTypeSchema,\n ListActivityResponseSchema,\n ListTradesResponseSchema,\n SideSchema,\n type Trade,\n} from '@polymarket/bindings/data';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { toDataSearchParams } from './params';\n\nconst ActivitySortBySchema = z.enum(['TIMESTAMP', 'TOKENS', 'CASH']);\nconst SortDirectionSchema = z.enum(['ASC', 'DESC']);\nconst TradeFilterTypeSchema = z.enum(['CASH', 'TOKENS']);\n\nconst ListTradesRequestSchema = z\n .object({\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.default(20),\n takerOnly: z.boolean().optional(),\n filterType: TradeFilterTypeSchema.optional(),\n filterAmount: z.number().optional(),\n market: z.array(z.string()).optional(),\n eventId: z.array(z.number().int()).optional(),\n user: z.string().optional(),\n side: SideSchema.optional(),\n })\n .refine((value) => !(value.market && value.eventId), {\n message: 'Provide market or eventId, not both',\n path: ['eventId'],\n })\n .refine(\n (value) =>\n (value.filterType === undefined) === (value.filterAmount === undefined),\n {\n message: 'Provide filterType and filterAmount together',\n path: ['filterAmount'],\n },\n );\n\nconst ListActivityRequestSchema = z\n .object({\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.default(20),\n user: z.string(),\n market: z.array(z.string()).optional(),\n eventId: z.array(z.number().int()).optional(),\n type: z.array(ActivityTypeSchema).optional(),\n start: z.number().int().optional(),\n end: z.number().int().optional(),\n sortBy: ActivitySortBySchema.optional(),\n sortDirection: SortDirectionSchema.optional(),\n side: SideSchema.optional(),\n })\n .refine((value) => !(value.market && value.eventId), {\n message: 'Provide market or eventId, not both',\n path: ['eventId'],\n });\n\nexport type ListTradesRequest = z.input<typeof ListTradesRequestSchema>;\nexport type ListActivityRequest = z.input<typeof ListActivityRequestSchema>;\n\nexport type ListTradesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListTradesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists trades for a wallet, market, or event.\n *\n * @throws {@link ListTradesError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listTrades(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Trade[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listTrades(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Trade[]\n * }\n * ```\n */\nexport function listTrades(\n client: BaseClient,\n request: ListTradesRequest = {},\n): Paginated<Trade[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListTradesRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/trades', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListTradesResponseSchema))\n .map((trades) => {\n const hasMore = trades.length > decoded.pageSize;\n\n return {\n items: trades.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type ListActivityError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListActivityError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists wallet activity.\n *\n * @throws {@link ListActivityError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listActivity(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Activity[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listActivity(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Activity[]\n * }\n * ```\n */\nexport function listActivity(\n client: BaseClient,\n request: ListActivityRequest,\n): Paginated<Activity[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListActivityRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/activity', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListActivityResponseSchema))\n .map((activity) => {\n const hasMore = activity.length > decoded.pageSize;\n\n return {\n items: activity.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n","import type { ConditionId } from '@polymarket/bindings';\nimport { type EvmAddress, type HexString, invariant } from '@polymarket/types';\nimport { AbiFunction, AbiParameters } from 'ox';\nimport { makeErrorGuard, UserInputError } from './errors';\nimport type { TransactionCall } from './types';\n\nconst ZERO_BYTES32 =\n '0x0000000000000000000000000000000000000000000000000000000000000000';\nconst ERC20_APPROVE_FUNCTION = AbiFunction.from(\n 'function approve(address spender, uint256 amount)',\n);\nconst ERC20_TRANSFER_FUNCTION = AbiFunction.from(\n 'function transfer(address recipient, uint256 amount)',\n);\nconst ERC1155_SET_APPROVAL_FOR_ALL_FUNCTION = AbiFunction.from(\n 'function setApprovalForAll(address operator, bool approved)',\n);\nconst CTF_SPLIT_POSITION_FUNCTION = AbiFunction.from(\n 'function splitPosition(address collateralToken, bytes32 parentCollectionId, bytes32 conditionId, uint256[] partition, uint256 amount)',\n);\nconst CTF_MERGE_POSITIONS_FUNCTION = AbiFunction.from(\n 'function mergePositions(address collateralToken, bytes32 parentCollectionId, bytes32 conditionId, uint256[] partition, uint256 amount)',\n);\nconst CTF_REDEEM_POSITIONS_FUNCTION = AbiFunction.from(\n 'function redeemPositions(address collateralToken, bytes32 parentCollectionId, bytes32 conditionId, uint256[] indexSets)',\n);\nconst SAFE_MULTISEND_FUNCTION = AbiFunction.from('function multiSend(bytes)');\nconst PROXY_FACTORY_FUNCTION = AbiFunction.from(\n 'function proxy((uint8 typeCode, address to, uint256 value, bytes data)[] calls) returns (bytes[])',\n);\nconst BINARY_OUTCOME_PARTITION = [1n, 2n] as const;\nconst BINARY_OUTCOME_INDEX_SETS = [1n, 2n] as const;\n\n/** @internal */\nexport const MAX_UINT256 = (1n << 256n) - 1n;\n\nexport type Erc20ApprovalCallError = UserInputError;\nexport const Erc20ApprovalCallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for `approve(address,uint256)` on an ERC-20 token.\n *\n * @throws {@link Erc20ApprovalCallError}\n * Thrown when the approval amount is invalid.\n */\nexport function erc20ApprovalCall(\n tokenAddress: EvmAddress,\n spender: EvmAddress,\n amount: bigint,\n): TransactionCall {\n if (amount < 0n) {\n throw new UserInputError('Approval amount must be non-negative');\n }\n\n if (amount > MAX_UINT256) {\n throw new UserInputError('Approval amount exceeds uint256 range');\n }\n\n return {\n data: encodeErc20ApproveCall(spender, amount),\n to: tokenAddress,\n };\n}\n\n/**\n * Creates a transaction call for `setApprovalForAll(address,bool)` on an ERC-1155 token.\n */\nexport function erc1155ApprovalForAllCall(\n tokenAddress: EvmAddress,\n operator: EvmAddress,\n approved: boolean,\n): TransactionCall {\n return {\n data: encodeErc1155SetApprovalForAllCall(operator, approved),\n to: tokenAddress,\n };\n}\n\nexport type Erc20TransferCallError = UserInputError;\nexport const Erc20TransferCallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for `transfer(address,uint256)` on an ERC-20 token.\n *\n * @throws {@link Erc20TransferCallError}\n * Thrown when the transfer amount is invalid.\n */\nexport function erc20TransferCall(\n tokenAddress: EvmAddress,\n recipient: EvmAddress,\n amount: bigint,\n): TransactionCall {\n if (amount < 0n) {\n throw new UserInputError('Transfer amount must be non-negative');\n }\n\n if (amount > MAX_UINT256) {\n throw new UserInputError('Transfer amount exceeds uint256 range');\n }\n\n return {\n data: encodeErc20TransferCall(recipient, amount),\n to: tokenAddress,\n };\n}\n\nexport type CtfRedeemPositionsCallError = UserInputError;\nexport const CtfRedeemPositionsCallError = makeErrorGuard(UserInputError);\n\nexport type SplitPositionCallError = UserInputError;\nexport const SplitPositionCallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for `splitPosition(address,bytes32,bytes32,uint256[],uint256)`.\n * Works with both the standard and neg-risk collateral adapters.\n *\n * @remarks\n * This is a low-level transaction builder that most SDK consumers will not need.\n *\n * @throws {@link SplitPositionCallError}\n * Thrown when the amount is invalid.\n */\nexport function splitPositionCall(\n targetAddress: EvmAddress,\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): TransactionCall {\n return {\n data: encodeSplitPositionCall(collateralTokenAddress, conditionId, amount),\n to: targetAddress,\n };\n}\n\nexport type MergePositionsCallError = UserInputError;\nexport const MergePositionsCallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for `mergePositions(address,bytes32,bytes32,uint256[],uint256)`.\n * Works with both the standard and neg-risk collateral adapters.\n *\n * @remarks\n * This is a low-level transaction builder that most SDK consumers will not need.\n *\n * @throws {@link MergePositionsCallError}\n * Thrown when the amount is invalid.\n */\nexport function mergePositionsCall(\n targetAddress: EvmAddress,\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): TransactionCall {\n return {\n data: encodeMergePositionsCall(collateralTokenAddress, conditionId, amount),\n to: targetAddress,\n };\n}\n\n/**\n * Creates a transaction call for `redeemPositions(address,bytes32,bytes32,uint256[])`\n * on Conditional Tokens-compatible contracts, including the collateral adapters.\n *\n * @remarks\n * This is a low-level transaction builder that most SDK consumers will not need.\n *\n * @throws {@link CtfRedeemPositionsCallError}\n * Thrown when the condition is invalid.\n */\nexport function ctfRedeemPositionsCall(\n conditionalTokensAddress: EvmAddress,\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n): TransactionCall {\n return {\n data: encodeCtfRedeemPositionsCall(collateralTokenAddress, conditionId),\n to: conditionalTokensAddress,\n };\n}\n\nfunction encodeErc20ApproveCall(\n spender: EvmAddress,\n amount: bigint,\n): HexString {\n invariant(amount >= 0n, 'Approval amount must be non-negative');\n\n return AbiFunction.encodeData(ERC20_APPROVE_FUNCTION, [spender, amount]);\n}\n\nfunction encodeErc1155SetApprovalForAllCall(\n operator: EvmAddress,\n approved: boolean,\n): HexString {\n return AbiFunction.encodeData(ERC1155_SET_APPROVAL_FOR_ALL_FUNCTION, [\n operator,\n approved,\n ]);\n}\n\nfunction encodeErc20TransferCall(\n recipient: EvmAddress,\n amount: bigint,\n): HexString {\n return AbiFunction.encodeData(ERC20_TRANSFER_FUNCTION, [recipient, amount]);\n}\n\nfunction encodeSplitPositionCall(\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): HexString {\n return AbiFunction.encodeData(CTF_SPLIT_POSITION_FUNCTION, [\n collateralTokenAddress,\n ZERO_BYTES32,\n conditionId,\n BINARY_OUTCOME_PARTITION,\n expectUint256(amount, 'Split amount'),\n ]);\n}\n\nfunction encodeMergePositionsCall(\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): HexString {\n return AbiFunction.encodeData(CTF_MERGE_POSITIONS_FUNCTION, [\n collateralTokenAddress,\n ZERO_BYTES32,\n conditionId,\n BINARY_OUTCOME_PARTITION,\n expectUint256(amount, 'Merge amount'),\n ]);\n}\n\nfunction encodeCtfRedeemPositionsCall(\n collateralTokenAddress: EvmAddress,\n conditionId: ConditionId,\n): HexString {\n return AbiFunction.encodeData(CTF_REDEEM_POSITIONS_FUNCTION, [\n collateralTokenAddress,\n ZERO_BYTES32,\n conditionId,\n BINARY_OUTCOME_INDEX_SETS,\n ]);\n}\n\nfunction expectUint256(value: bigint, label: string): bigint {\n if (value < 0n) {\n throw new UserInputError(`${label} must be non-negative`);\n }\n\n if (value > MAX_UINT256) {\n throw new UserInputError(`${label} exceeds uint256 range`);\n }\n\n return value;\n}\n\n/** @internal */\nexport function encodeProxyCall(calls: readonly TransactionCall[]): HexString {\n return AbiFunction.encodeData(PROXY_FACTORY_FUNCTION, [\n calls.map((call) => ({\n typeCode: 1,\n to: call.to,\n value: call.value ?? 0n,\n data: call.data,\n })),\n ]);\n}\n\n/** @internal */\nexport function encodeSafeMultisendCall(\n calls: readonly TransactionCall[],\n): HexString {\n const encodedTransactions = calls.map((call) =>\n encodeSafeMultisendTransaction(call),\n );\n\n return AbiFunction.encodeData(SAFE_MULTISEND_FUNCTION, [\n encodedTransactions.length === 0\n ? '0x'\n : AbiParameters.encodePacked(\n Array.from({ length: encodedTransactions.length }, () => 'bytes'),\n encodedTransactions,\n ),\n ]);\n}\n\nfunction encodeSafeMultisendTransaction(call: TransactionCall): HexString {\n const value = call.value ?? 0n;\n\n return AbiParameters.encodePacked(\n ['uint8', 'address', 'uint256', 'uint256', 'bytes'],\n [0, call.to, value, BigInt((call.data.length - 2) / 2), call.data],\n );\n}\n","import type { TransactionId } from '@polymarket/bindings';\nimport {\n type EvmAddress,\n type EvmSignature,\n type HexString,\n invariant,\n type TxHash,\n} from '@polymarket/types';\nimport type { WaitForGaslessTransactionError } from './actions';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from './errors';\n\nexport type TypedDataField = {\n name: string;\n type: string;\n};\n\nexport type TypedData = Record<string, readonly TypedDataField[]>;\n\nexport type TypedDataDomain = {\n chainId?: number;\n name?: string;\n salt?: HexString;\n verifyingContract?: EvmAddress;\n version?: string;\n};\n\nexport type TypedDataPayload = {\n domain: TypedDataDomain;\n message: Record<string, unknown>;\n primaryType: string;\n types: TypedData;\n};\n\nexport type TransactionCall = {\n data: HexString;\n to: EvmAddress;\n value?: bigint;\n};\n\nexport type SignerTransactionRequest = {\n chainId: number;\n data?: HexString;\n to: EvmAddress;\n value?: bigint;\n};\n\n/** @internal */\nexport type ApiKeyAuthorizationRequest = {\n method: 'DELETE' | 'GET' | 'POST';\n path: string;\n body?: string;\n};\n\nexport interface ApiKeyAuthorization {\n /** @internal */\n get isBuilderKey(): boolean;\n\n /** @internal */\n get supportGasless(): boolean;\n\n /** @internal */\n authorize(request: ApiKeyAuthorizationRequest): Promise<HeadersInit>;\n}\n\nexport type TransactionOutcome = {\n /**\n * The hash of the settled transaction.\n */\n transactionHash: TxHash;\n /**\n * The unique identifier of the settled transaction when submitted through the Polymarket API,\n * or null if the transaction was submitted directly to the blockchain.\n */\n transactionId: TransactionId | null;\n};\n\nexport type WaitForTransactionError = WaitForGaslessTransactionError;\nexport const WaitForTransactionError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\nexport interface TransactionHandle {\n /**\n * The hash of the submitted transaction, or null if the transaction is pending submission.\n */\n readonly transactionHash: TxHash | null;\n /**\n * The unique identifier of the submitted transaction when submitted through the Polymarket API,\n * or null if the transaction was submitted directly to the blockchain.\n */\n readonly transactionId: TransactionId | null;\n /**\n * Waits for the submitted transaction to settle.\n *\n * @throws {@link WaitForTransactionError}\n * Thrown when polling times out, the transaction reaches a terminal failure state, or a later read returns an unexpected response.\n */\n wait(): Promise<TransactionOutcome>;\n}\n\nexport type Signer = {\n getAddress(): Promise<EvmAddress>;\n signTypedData(payload: TypedDataPayload): Promise<EvmSignature>;\n signMessage(message: HexString): Promise<EvmSignature>;\n sendTransaction(\n request: SignerTransactionRequest,\n ): Promise<TransactionHandle>;\n};\n\n/** @internal */\nexport function expectTransactionHandle(\n value: unknown,\n message = 'Expected a TransactionHandle',\n): TransactionHandle {\n invariant(\n typeof value === 'object' &&\n value !== null &&\n 'transactionHash' in value &&\n 'transactionId' in value &&\n 'wait' in value &&\n typeof value.wait === 'function',\n message,\n );\n return value as TransactionHandle;\n}\n","import type { EvmAddress, EvmSignature, HexString } from '@polymarket/types';\nimport { CancelledSigningError, makeErrorGuard, SigningError } from './errors';\nimport type {\n Signer,\n SignerTransactionRequest,\n TransactionCall,\n TransactionHandle,\n TypedDataPayload,\n} from './types';\n\nexport type RequestAddressRequest = {\n kind: 'requestAddress';\n};\n\nexport type SignAuthMessageRequest = {\n kind: 'signAuthMessage';\n payload: TypedDataPayload;\n};\n\nexport type SendErc20ApprovalTransactionRequest = {\n kind: 'sendErc20ApprovalTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SendErc1155ApprovalForAllTransactionRequest = {\n kind: 'sendErc1155ApprovalForAllTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SendErc20TransferTransactionRequest = {\n kind: 'sendErc20TransferTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SignGaslessTypedDataRequest = {\n kind: 'signGaslessTypedData';\n payload: TypedDataPayload;\n};\n\nexport type SignGaslessMessageRequest = {\n kind: 'signGaslessMessage';\n payload: HexString;\n};\n\nexport type SendSplitPositionTransactionRequest = {\n kind: 'sendSplitPositionTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SendMergePositionsTransactionRequest = {\n kind: 'sendMergePositionsTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SendRedeemPositionsTransactionRequest = {\n kind: 'sendRedeemPositionsTransaction';\n request: SignerTransactionRequest;\n};\n\nexport type SignOrderRequest = {\n kind: 'signOrder';\n payload: TypedDataPayload;\n};\n\nexport type AuthenticationWorkflowRequest =\n | RequestAddressRequest\n | SignAuthMessageRequest;\n\nexport type AuthenticationWorkflow<TReturn> = AsyncGenerator<\n AuthenticationWorkflowRequest,\n TReturn,\n EvmAddress | EvmSignature\n>;\n\nexport type AuthenticateWith = <TReturn>(\n workflow: AuthenticationWorkflow<TReturn>,\n) => Promise<TReturn>;\n\nexport type AuthenticateWithError = CancelledSigningError | SigningError;\nexport const AuthenticateWithError = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n);\nexport type CompleteWithError = CancelledSigningError | SigningError;\nexport const CompleteWithError = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n);\n\nexport type CompleteWorkflowRequest =\n | RequestAddressRequest\n | SendErc20ApprovalTransactionRequest\n | SendErc1155ApprovalForAllTransactionRequest\n | SendErc20TransferTransactionRequest\n | SignGaslessTypedDataRequest\n | SignGaslessMessageRequest\n | SendSplitPositionTransactionRequest\n | SendMergePositionsTransactionRequest\n | SendRedeemPositionsTransactionRequest\n | SignOrderRequest;\n\nexport type CompleteWorkflowNext =\n | EvmAddress\n | EvmSignature\n | TransactionHandle;\n\nexport type CompleteWith = <TRequest extends CompleteWorkflowRequest, TReturn>(\n workflow: AsyncGenerator<TRequest, TReturn, CompleteWorkflowNext>,\n) => Promise<TReturn>;\n\n/** @internal */\nexport function authenticateWith(signer: Signer): AuthenticateWith {\n return async function authenticate(workflow) {\n let result = await workflow.next();\n\n while (!result.done) {\n try {\n switch (result.value.kind) {\n case 'requestAddress':\n result = await workflow.next(await signer.getAddress());\n break;\n case 'signAuthMessage':\n result = await workflow.next(\n await signer.signTypedData(result.value.payload),\n );\n break;\n }\n } catch (error) {\n result = await workflow.throw(error);\n }\n }\n\n return result.value;\n };\n}\n\n/** @internal */\nexport function completeWith(signer: Signer): CompleteWith {\n return async function complete(workflow) {\n let result = await workflow.next();\n\n while (!result.done) {\n try {\n switch (result.value.kind) {\n case 'requestAddress':\n result = await workflow.next(await signer.getAddress());\n break;\n\n case 'signGaslessTypedData':\n case 'signOrder':\n result = await workflow.next(\n await signer.signTypedData(result.value.payload),\n );\n break;\n\n case 'signGaslessMessage':\n result = await workflow.next(\n await signer.signMessage(result.value.payload),\n );\n break;\n\n case 'sendErc20ApprovalTransaction':\n case 'sendErc1155ApprovalForAllTransaction':\n case 'sendErc20TransferTransaction':\n case 'sendMergePositionsTransaction':\n case 'sendRedeemPositionsTransaction':\n case 'sendSplitPositionTransaction':\n result = await workflow.next(\n await signer.sendTransaction(result.value.request),\n );\n break;\n }\n } catch (error) {\n result = await workflow.throw(error);\n }\n }\n\n return result.value;\n };\n}\n\nexport function requestAddress(): RequestAddressRequest {\n return {\n kind: 'requestAddress',\n };\n}\n\nexport function signerTransactionRequest(\n chainId: number,\n call: TransactionCall,\n): SignerTransactionRequest {\n return {\n chainId,\n ...call,\n };\n}\n","import { EvmAddressSchema, TransactionIdSchema } from '@polymarket/bindings';\nimport { WalletType } from '@polymarket/bindings/gamma';\nimport {\n type GaslessTransaction,\n GaslessTransactionSchema,\n RelayerDeployedResponseSchema,\n type RelayerDepositWalletExecuteRequest,\n type RelayerExecuteParams,\n RelayerExecuteParamsSchema,\n type RelayerExecuteRequest,\n RelayerExecuteRequestSchema,\n type RelayerExecuteResponse,\n RelayerExecuteResponseSchema,\n RelayerTransactionState,\n RelayerTransactionType,\n} from '@polymarket/bindings/relayer';\nimport {\n delay,\n type EvmAddress,\n type EvmSignature,\n expectEvmAddress,\n expectEvmSignature,\n expectHexString,\n expectNonEmptyArray,\n type HexString,\n invariant,\n isHexString,\n type NonEmptyArray,\n unwrap,\n ZERO_ADDRESS,\n} from '@polymarket/types';\nimport { Bytes, Hash, TypedData as OxTypedData } from 'ox';\nimport { z } from 'zod';\nimport { encodeProxyCall, encodeSafeMultisendCall } from '../abis';\nimport type { BaseClient, BaseSecureClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { validateWith } from '../response';\nimport type {\n TransactionCall,\n TransactionHandle,\n TransactionOutcome,\n TypedDataField,\n TypedDataPayload,\n} from '../types';\nimport { deriveCurrentDepositWalletAddress } from '../wallet';\nimport {\n type RequestAddressRequest,\n requestAddress,\n type SignGaslessMessageRequest,\n type SignGaslessTypedDataRequest,\n} from '../workflow';\nimport { toSearchParams } from './params';\n\nconst EIP712_DOMAIN: readonly TypedDataField[] = [\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n];\n\nconst SAFE_TRANSACTION: readonly TypedDataField[] = [\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n { name: 'operation', type: 'uint8' },\n { name: 'safeTxGas', type: 'uint256' },\n { name: 'baseGas', type: 'uint256' },\n { name: 'gasPrice', type: 'uint256' },\n { name: 'gasToken', type: 'address' },\n { name: 'refundReceiver', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n];\n\nconst DEPOSIT_WALLET_DOMAIN_NAME = 'DepositWallet';\nconst DEPOSIT_WALLET_DOMAIN_VERSION = '1';\nconst DEPOSIT_WALLET_DEFAULT_DEADLINE_SECONDS = 600;\n\nconst DEPOSIT_WALLET_CALL: readonly TypedDataField[] = [\n { name: 'target', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n];\n\nconst DEPOSIT_WALLET_BATCH: readonly TypedDataField[] = [\n { name: 'wallet', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'calls', type: 'Call[]' },\n];\n\nconst FetchExecuteParamsRequestSchema = z.object({\n address: z.string(),\n type: z.enum(RelayerTransactionType),\n});\n\nexport type FetchExecuteParamsRequest = z.input<\n typeof FetchExecuteParamsRequestSchema\n>;\n\nexport type FetchExecuteParamsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchExecuteParamsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the parameters needed to prepare a low-level transaction submission.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link FetchExecuteParamsError}\n * Thrown on failure.\n */\nexport async function fetchExecuteParams(\n client: BaseClient,\n request: FetchExecuteParamsRequest,\n): Promise<RelayerExecuteParams> {\n const params = parseUserInput(request, FetchExecuteParamsRequestSchema);\n\n return unwrap(\n client.relayer\n .get('/v1/account/transactions/params', {\n params: toSearchParams(params, { address: 'address', type: 'type' }),\n })\n .andThen(validateWith(RelayerExecuteParamsSchema)),\n );\n}\n\nconst FetchGaslessTransactionRequestSchema = z.object({\n transactionId: TransactionIdSchema,\n});\n\nexport type FetchGaslessTransactionRequest = z.input<\n typeof FetchGaslessTransactionRequestSchema\n>;\n\nconst IsGaslessReadyRequestSchema = z.object({\n wallet: EvmAddressSchema,\n type: z.enum(WalletType),\n});\n\nexport type IsGaslessReadyRequest = z.input<typeof IsGaslessReadyRequestSchema>;\n\nexport type IsGaslessReadyError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const IsGaslessReadyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Checks whether a wallet is ready for gasless transactions.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link IsGaslessReadyError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const ready = await isGaslessReady(client, {\n * wallet: '0x1234...',\n * });\n * ```\n */\nexport async function isGaslessReady(\n client: BaseClient,\n request?: IsGaslessReadyRequest,\n): Promise<boolean> {\n const params = await resolveGaslessReadinessTarget(client, request);\n\n if (params.type === WalletType.EOA) {\n return false;\n }\n\n return unwrap(\n client.relayer\n .get('/deployed', {\n params: toSearchParams(\n {\n address: params.wallet,\n type:\n params.type === WalletType.DEPOSIT_WALLET\n ? RelayerTransactionType.WALLET\n : undefined,\n },\n { address: 'address', type: 'type' },\n ),\n })\n .andThen(validateWith(RelayerDeployedResponseSchema))\n .map(({ deployed }) => deployed),\n );\n}\n\nasync function resolveGaslessReadinessTarget(\n client: BaseClient,\n request: IsGaslessReadyRequest | undefined,\n): Promise<z.output<typeof IsGaslessReadyRequestSchema>> {\n if (request !== undefined) {\n return parseUserInput(request, IsGaslessReadyRequestSchema);\n }\n\n if (!client.isSecureClient()) {\n throw new UserInputError(\n 'Gasless readiness inference requires a secure client. Pass a wallet and type when using a public client.',\n );\n }\n\n if (client.account.walletType !== WalletType.EOA) {\n return {\n wallet: client.account.wallet,\n type: client.account.walletType,\n };\n }\n\n return {\n wallet: await deriveCurrentDepositWalletAddress(\n client.rpc,\n client.account.signer,\n client.environment.walletDerivation,\n ),\n type: WalletType.DEPOSIT_WALLET,\n };\n}\n\nexport const GaslessTransactionMetadataSchema = z.string().max(500);\n\nconst GASLESS_SUBMIT_RETRY_ATTEMPTS = 10;\n\nexport type DeployDepositWalletError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const DeployDepositWalletError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Deploys a Deposit Wallet for the authenticated signer.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link DeployDepositWalletError}\n * Thrown on failure.\n */\nexport async function deployDepositWallet(\n client: BaseSecureClient,\n): Promise<TransactionHandle> {\n invariant(\n client.supportsGasless,\n 'Deposit Wallet deployment requires a Relayer API Key or Builder API Key in the client configuration.',\n );\n\n return executeGasless(client, {\n from: client.account.signer,\n metadata: 'Deploy Deposit Wallet',\n to: client.environment.walletDerivation.depositWalletFactory,\n type: RelayerTransactionType.WALLET_CREATE,\n });\n}\n\n/**\n * Fetches a submitted transaction.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link FetchGaslessTransactionError}\n * Thrown on failure.\n */\nexport async function fetchTransaction(\n client: BaseClient,\n request: FetchGaslessTransactionRequest,\n): Promise<GaslessTransaction> {\n const params = parseUserInput(request, FetchGaslessTransactionRequestSchema);\n\n return unwrap(\n client.relayer\n .get(`/v1/account/transactions/${params.transactionId}`)\n .andThen(validateWith(GaslessTransactionSchema)),\n );\n}\n\nconst TransactionCallSchema = z.object({\n data: z.custom<HexString>(isHexString),\n to: EvmAddressSchema,\n value: z.bigint().optional(),\n});\n\nconst PrepareGaslessTransactionRequestSchema = z.object({\n calls: z\n .array(TransactionCallSchema)\n .min(1)\n .transform((val) => expectNonEmptyArray(val)),\n metadata: GaslessTransactionMetadataSchema,\n});\n\nexport type PrepareGaslessTransactionRequest = z.input<\n typeof PrepareGaslessTransactionRequestSchema\n>;\n\ntype PrepareGaslessTransactionParams = z.output<\n typeof PrepareGaslessTransactionRequestSchema\n>;\n\nexport type GaslessWorkflowRequest =\n | RequestAddressRequest\n | SignGaslessMessageRequest\n | SignGaslessTypedDataRequest;\n\nexport type GaslessWorkflow = AsyncGenerator<\n GaslessWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type PrepareGaslessTransactionError =\n | ExecuteGaslessError\n | FetchExecuteParamsError\n | UserInputError;\nexport const PrepareGaslessTransactionError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Starts preparing a low-level transaction workflow from one or more calls.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link PrepareGaslessTransactionError}\n * Thrown on failure.\n */\nexport async function prepareGaslessTransaction(\n client: BaseSecureClient,\n request: PrepareGaslessTransactionRequest,\n): Promise<GaslessWorkflow> {\n const params = parseUserInput(\n request,\n PrepareGaslessTransactionRequestSchema,\n );\n\n invariant(\n client.supportsGasless,\n 'Gasless transactions require a Relayer API Key or Builder API Key in the client configuration.',\n );\n invariant(\n client.account.walletType === WalletType.GNOSIS_SAFE ||\n client.account.walletType === WalletType.POLY_PROXY ||\n client.account.walletType === WalletType.DEPOSIT_WALLET,\n 'Gasless transaction preparation supports Deposit Wallet, Safe-backed, and proxy-backed accounts',\n );\n\n return async function* (): GaslessWorkflow {\n const signer = expectEvmAddress(yield requestAddress());\n\n invariant(\n signer === client.account.signer,\n 'Wallet client address does not match the authenticated signer',\n );\n\n for (\n let attempt = 0;\n attempt <= GASLESS_SUBMIT_RETRY_ATTEMPTS;\n attempt += 1\n ) {\n try {\n switch (client.account.walletType) {\n case WalletType.POLY_PROXY:\n return yield* prepareProxyWalletGaslessTransaction(client, params);\n case WalletType.DEPOSIT_WALLET:\n return yield* prepareDepositWalletGaslessTransaction(\n client,\n params,\n );\n case WalletType.GNOSIS_SAFE:\n return yield* prepareSafeWalletGaslessTransaction(client, params);\n }\n\n invariant(false, 'Unsupported wallet type for gasless transaction');\n } catch (error) {\n if (\n !isRetryableGaslessSubmitError(error) ||\n attempt === GASLESS_SUBMIT_RETRY_ATTEMPTS\n ) {\n throw error;\n }\n\n await delay(client.environment.relayerPollFrequencyMs);\n }\n }\n\n invariant(false, 'Expected gasless transaction retry loop to return');\n }.call(null);\n}\n\nasync function* prepareProxyWalletGaslessTransaction(\n client: BaseSecureClient,\n params: PrepareGaslessTransactionParams,\n): GaslessWorkflow {\n const executeParams = await fetchExecuteParams(client, {\n address: client.account.signer,\n type: RelayerTransactionType.PROXY,\n });\n\n const to = client.environment.walletDerivation.proxyFactory;\n const data = encodeProxyCall(params.calls);\n const relayerFee = '0';\n // gasPrice is included in the signed hash but the relayer only validates\n // that it is non-empty — it does not use this value when submitting the\n // transaction on-chain (it applies its own gas pricing). Any non-empty\n // string satisfies the protocol.\n const gasPrice = '0';\n // gasLimit is likewise part of the signed hash but is not used by the\n // relayer when executing the transaction — the relayer applies its own\n // gas estimation at submission time. The validator only checks non-empty.\n const gasLimit = '10000000';\n const relayHub = client.environment.relayHub;\n const relay = ZERO_ADDRESS;\n\n const hash = buildProxyTransactionHash(\n client.account.signer,\n to,\n data,\n relayerFee,\n gasPrice,\n gasLimit,\n executeParams.nonce,\n relayHub,\n relay,\n );\n\n const signature = expectEvmSignature(yield signGaslessMessage(hash));\n\n return executeGasless(client, {\n data,\n from: client.account.signer,\n metadata: params.metadata,\n nonce: executeParams.nonce,\n proxyWallet: client.account.wallet,\n signature,\n signatureParams: {\n gasLimit,\n gasPrice,\n relay,\n relayHub,\n relayerFee,\n },\n to,\n type: RelayerTransactionType.PROXY,\n });\n}\n\nasync function* prepareDepositWalletGaslessTransaction(\n client: BaseSecureClient,\n params: PrepareGaslessTransactionParams,\n): GaslessWorkflow {\n const executeParams = await fetchExecuteParams(client, {\n address: client.account.signer,\n type: RelayerTransactionType.WALLET,\n });\n const calls = params.calls.map(toDepositWalletCall);\n const deadline = `${Math.floor(Date.now() / 1000) + DEPOSIT_WALLET_DEFAULT_DEADLINE_SECONDS}`;\n\n const signature = expectEvmSignature(\n yield signGaslessTypedData(\n createDepositWalletBatchTypedDataPayload({\n calls,\n chainId: client.environment.chainId,\n deadline,\n nonce: executeParams.nonce,\n wallet: client.account.wallet,\n }),\n ),\n );\n\n const payload: RelayerDepositWalletExecuteRequest = {\n depositWalletParams: {\n calls,\n deadline,\n depositWallet: client.account.wallet,\n },\n from: client.account.signer,\n metadata: params.metadata,\n nonce: executeParams.nonce,\n signature,\n to: client.environment.walletDerivation.depositWalletFactory,\n type: RelayerTransactionType.WALLET,\n };\n\n return executeGasless(client, payload);\n}\n\nasync function* prepareSafeWalletGaslessTransaction(\n client: BaseSecureClient,\n params: PrepareGaslessTransactionParams,\n): GaslessWorkflow {\n const executeParams = await fetchExecuteParams(client, {\n address: client.account.signer,\n type: RelayerTransactionType.SAFE,\n });\n const transaction = aggregateSafeTransactionCalls(\n params.calls,\n client.environment.safeMultisend,\n );\n\n const safePayload = createSafeTypedDataPayload({\n chainId: client.environment.chainId,\n data: transaction.data,\n nonce: executeParams.nonce,\n operation: transaction.operation,\n safeAddress: client.account.wallet,\n to: transaction.to,\n value: transaction.value,\n });\n\n const signature = expectEvmSignature(\n yield signGaslessMessage(\n expectHexString(\n OxTypedData.getSignPayload(\n safePayload as Parameters<typeof OxTypedData.getSignPayload>[0],\n ),\n ),\n ),\n );\n\n return executeGasless(client, {\n data: transaction.data,\n from: client.account.signer,\n metadata: params.metadata,\n nonce: executeParams.nonce,\n proxyWallet: client.account.wallet,\n signature: packSafeSignature(signature),\n signatureParams: createSafeSignatureParams(transaction.operation),\n to: transaction.to,\n type: RelayerTransactionType.SAFE,\n value: transaction.value > 0n ? `${transaction.value}` : undefined,\n });\n}\n\ntype ExecuteGaslessRequest = RelayerExecuteRequest;\n\ntype ExecuteGaslessError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\n\nasync function executeGasless(\n client: BaseClient,\n request: ExecuteGaslessRequest,\n): Promise<GaslessTransactionHandle> {\n const payload = parseUserInput(request, RelayerExecuteRequestSchema);\n\n const response = await unwrap(\n client.relayer\n .post('/submit', {\n json: payload,\n })\n .andThen(validateWith(RelayerExecuteResponseSchema)),\n );\n\n return new GaslessTransactionHandle(client, response);\n}\n\nfunction isRetryableGaslessSubmitError(error: unknown): boolean {\n if (error instanceof RateLimitError) {\n return true;\n }\n\n if (!(error instanceof RequestRejectedError) || error.status !== 400) {\n return false;\n }\n\n if (\n (/wallet busy/i.test(error.message) &&\n /active action/i.test(error.message)) ||\n /wallet has in-flight action/i.test(error.message)\n ) {\n return true;\n }\n\n const match =\n /batch nonce\\s+(\\d+)\\s+does not match on-chain nonce\\s+(\\d+)/i.exec(\n error.message,\n );\n if (match === null) {\n return false;\n }\n\n const submittedNonce = match[1];\n const onChainNonce = match[2];\n if (submittedNonce === undefined || onChainNonce === undefined) {\n return false;\n }\n\n return BigInt(submittedNonce) < BigInt(onChainNonce);\n}\n\ntype DepositWalletCall = {\n data: HexString;\n target: EvmAddress;\n value: string;\n};\n\ntype CreateDepositWalletBatchTypedDataPayloadRequest = {\n calls: readonly DepositWalletCall[];\n chainId: number;\n deadline: string;\n nonce: string;\n wallet: EvmAddress;\n};\n\nfunction toDepositWalletCall(call: TransactionCall): DepositWalletCall {\n return {\n data: call.data,\n target: call.to,\n value: `${call.value ?? 0n}`,\n };\n}\n\nfunction createDepositWalletBatchTypedDataPayload(\n request: CreateDepositWalletBatchTypedDataPayloadRequest,\n): TypedDataPayload {\n return {\n domain: {\n chainId: request.chainId,\n name: DEPOSIT_WALLET_DOMAIN_NAME,\n verifyingContract: request.wallet,\n version: DEPOSIT_WALLET_DOMAIN_VERSION,\n },\n message: {\n calls: request.calls.map((call) => ({\n data: call.data,\n target: call.target,\n value: BigInt(call.value),\n })),\n deadline: BigInt(request.deadline),\n nonce: BigInt(request.nonce),\n wallet: request.wallet,\n },\n primaryType: 'Batch',\n types: {\n Batch: DEPOSIT_WALLET_BATCH,\n Call: DEPOSIT_WALLET_CALL,\n },\n };\n}\n\ntype SafeTransaction = {\n data: HexString;\n operation: 0 | 1;\n to: EvmAddress;\n value: bigint;\n};\n\ntype CreateSafeTypedDataPayloadRequest = {\n chainId: number;\n data: HexString;\n nonce: string;\n operation: 0 | 1;\n safeAddress: EvmAddress;\n to: EvmAddress;\n value: bigint;\n};\n\nfunction aggregateSafeTransactionCalls(\n calls: NonEmptyArray<TransactionCall>,\n safeMultisend: EvmAddress,\n): SafeTransaction {\n if (calls.length === 1) {\n const [call] = calls;\n\n return {\n data: call.data,\n operation: 0,\n to: call.to,\n value: call.value ?? 0n,\n };\n }\n\n return {\n data: encodeSafeMultisendCall(calls),\n operation: 1,\n to: safeMultisend,\n value: 0n,\n };\n}\n\nfunction createSafeSignatureParams(operation: 0 | 1) {\n return {\n baseGas: '0',\n gasPrice: '0',\n gasToken: ZERO_ADDRESS,\n operation: `${operation}`,\n refundReceiver: ZERO_ADDRESS,\n safeTxnGas: '0',\n };\n}\n\nfunction createSafeTypedDataPayload(\n request: CreateSafeTypedDataPayloadRequest,\n): TypedDataPayload {\n return {\n domain: {\n chainId: request.chainId,\n verifyingContract: request.safeAddress,\n },\n message: {\n baseGas: 0n,\n data: request.data,\n gasPrice: 0n,\n gasToken: ZERO_ADDRESS,\n nonce: BigInt(request.nonce),\n operation: request.operation,\n refundReceiver: ZERO_ADDRESS,\n safeTxGas: 0n,\n to: request.to,\n value: request.value,\n },\n primaryType: 'SafeTx',\n types: {\n EIP712Domain: EIP712_DOMAIN,\n SafeTx: SAFE_TRANSACTION,\n },\n };\n}\n\nfunction signGaslessMessage(payload: HexString): SignGaslessMessageRequest {\n return {\n kind: 'signGaslessMessage',\n payload,\n };\n}\n\nfunction signGaslessTypedData(\n payload: TypedDataPayload,\n): SignGaslessTypedDataRequest {\n return {\n kind: 'signGaslessTypedData',\n payload,\n };\n}\n\nfunction buildProxyTransactionHash(\n from: EvmAddress,\n to: EvmAddress,\n data: HexString,\n relayerFee: string,\n gasPrice: string,\n gasLimit: string,\n nonce: string,\n relayHub: EvmAddress,\n relay: EvmAddress,\n): HexString {\n return expectHexString(\n Hash.keccak256(\n Bytes.concat(\n Bytes.fromString('rlx:'),\n Bytes.fromHex(from),\n Bytes.fromHex(to),\n Bytes.fromHex(data),\n Bytes.fromNumber(BigInt(relayerFee), { size: 32 }),\n Bytes.fromNumber(BigInt(gasPrice), { size: 32 }),\n Bytes.fromNumber(BigInt(gasLimit), { size: 32 }),\n Bytes.fromNumber(BigInt(nonce), { size: 32 }),\n Bytes.fromHex(relayHub),\n Bytes.fromHex(relay),\n ),\n { as: 'Hex' },\n ),\n );\n}\n\nfunction packSafeSignature(signature: EvmSignature): HexString {\n const prefixlessSignature = signature.slice(2);\n const v = Number.parseInt(prefixlessSignature.slice(128, 130), 16);\n\n const packedV =\n v === 0 || v === 1 ? v + 31 : v === 27 || v === 28 ? v + 4 : v;\n\n return expectHexString(\n `0x${prefixlessSignature.slice(0, 128)}${packedV.toString(16).padStart(2, '0')}`,\n );\n}\n\nexport type WaitForGaslessTransactionError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError\n | TimeoutError\n | TransactionFailedError;\nexport const WaitForGaslessTransactionError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n TimeoutError,\n TransactionFailedError,\n);\n\nclass GaslessTransactionHandle implements TransactionHandle {\n readonly #client: BaseClient;\n\n readonly transactionHash;\n readonly transactionId;\n\n constructor(client: BaseClient, response: RelayerExecuteResponse) {\n this.#client = client;\n this.transactionHash = response.transactionHash;\n this.transactionId = response.transactionId;\n }\n\n async wait(): Promise<TransactionOutcome> {\n let pollCount = 0;\n\n while (pollCount < this.#client.environment.relayerMaxPolls) {\n const transaction = await fetchTransaction(this.#client, {\n transactionId: this.transactionId,\n });\n\n if (\n transaction.state === RelayerTransactionState.STATE_MINED ||\n transaction.state === RelayerTransactionState.STATE_CONFIRMED\n ) {\n const transactionHash =\n transaction.transactionHash ?? this.transactionHash;\n\n if (transactionHash === null) {\n throw new UnexpectedResponseError(\n 'Expected submitted transaction to have a transaction hash once settled',\n );\n }\n\n return {\n transactionHash,\n transactionId: transaction.transactionId,\n };\n }\n\n if (\n transaction.state === RelayerTransactionState.STATE_FAILED ||\n transaction.state === RelayerTransactionState.STATE_INVALID\n ) {\n throw new TransactionFailedError(\n transaction.errorMsg ??\n `Transaction ${transaction.transactionId} reached terminal state ${transaction.state}`,\n );\n }\n\n pollCount += 1;\n await delay(this.#client.environment.relayerPollFrequencyMs);\n }\n\n throw new TimeoutError(\n `Timed out waiting for transaction ${this.transactionId} to settle`,\n );\n }\n}\n","import { type EvmAddress, EvmAddressSchema } from '@polymarket/bindings';\nimport { WalletType } from '@polymarket/bindings/gamma';\nimport type { EvmSignature } from '@polymarket/types';\nimport { z } from 'zod';\nimport {\n erc20ApprovalCall,\n erc1155ApprovalForAllCall,\n MAX_UINT256,\n} from '../abis';\nimport type { BaseSecureClient } from '../clients';\nimport {\n CancelledSigningError,\n makeErrorGuard,\n SigningError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n expectTransactionHandle,\n type SignerTransactionRequest,\n type TransactionHandle,\n} from '../types';\nimport {\n completeWith,\n type SendErc20ApprovalTransactionRequest,\n type SendErc1155ApprovalForAllTransactionRequest,\n signerTransactionRequest,\n} from '../workflow';\nimport {\n GaslessTransactionMetadataSchema,\n type GaslessWorkflowRequest,\n prepareGaslessTransaction,\n} from './gasless';\n\nexport type Erc20ApprovalWorkflowRequest =\n | GaslessWorkflowRequest\n | SendErc20ApprovalTransactionRequest;\n\nexport type Erc20ApprovalWorkflow = AsyncGenerator<\n Erc20ApprovalWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nconst PrepareErc20ApprovalRequestSchema = z.object({\n amount: z.union([z.bigint(), z.literal('max')]),\n metadata: GaslessTransactionMetadataSchema.optional(),\n spenderAddress: EvmAddressSchema,\n tokenAddress: EvmAddressSchema,\n});\n\nexport type PrepareErc20ApprovalRequest = z.input<\n typeof PrepareErc20ApprovalRequestSchema\n>;\n\nexport type PrepareErc20ApprovalError = UserInputError;\nexport const PrepareErc20ApprovalError = makeErrorGuard(UserInputError);\n\n/**\n * Starts an ERC-20 approval workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareErc20Approval(client, {\n * amount: 'max',\n * spenderAddress: '0x1234…',\n * tokenAddress: '0x5678…',\n * });\n * ```\n *\n * @throws {@link PrepareErc20ApprovalError}\n * Thrown on failure.\n */\nexport async function prepareErc20Approval(\n client: BaseSecureClient,\n request: PrepareErc20ApprovalRequest,\n): Promise<Erc20ApprovalWorkflow> {\n const params = parseUserInput(request, PrepareErc20ApprovalRequestSchema);\n const amount = params.amount === 'max' ? MAX_UINT256 : params.amount;\n\n return async function* (): Erc20ApprovalWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendErc20ApprovalTransaction(\n signerTransactionRequest(\n client.environment.chainId,\n erc20ApprovalCall(\n params.tokenAddress,\n params.spenderAddress,\n amount,\n ),\n ),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [\n erc20ApprovalCall(params.tokenAddress, params.spenderAddress, amount),\n ],\n metadata:\n params.metadata ??\n `Approve ${params.amount} of ${params.tokenAddress} to ${params.spenderAddress}`,\n });\n }.call(null);\n}\n\nexport type ApproveErc20Error =\n | PrepareErc20ApprovalError\n | CancelledSigningError\n | SigningError;\nexport const ApproveErc20Error = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n UserInputError,\n);\n\n/**\n * Approves ERC-20 token spending for the authenticated account.\n *\n * @throws {@link ApproveErc20Error}\n * Thrown on failure.\n */\nexport function approveErc20(\n client: BaseSecureClient,\n request: PrepareErc20ApprovalRequest,\n): Promise<TransactionHandle> {\n return prepareErc20Approval(client, request).then(\n completeWith(client.signer),\n );\n}\n\nexport type Erc1155ApprovalForAllWorkflowRequest =\n | GaslessWorkflowRequest\n | SendErc1155ApprovalForAllTransactionRequest;\n\nexport type Erc1155ApprovalForAllWorkflow = AsyncGenerator<\n Erc1155ApprovalForAllWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nconst PrepareErc1155ApprovalForAllRequestSchema = z.object({\n approved: z.boolean().default(true),\n metadata: GaslessTransactionMetadataSchema.optional(),\n operatorAddress: EvmAddressSchema,\n tokenAddress: EvmAddressSchema,\n});\n\nexport type PrepareErc1155ApprovalForAllRequest = z.input<\n typeof PrepareErc1155ApprovalForAllRequestSchema\n>;\n\nexport type PrepareErc1155ApprovalForAllError = UserInputError;\nexport const PrepareErc1155ApprovalForAllError = makeErrorGuard(UserInputError);\n\n/**\n * Starts an ERC-1155 approval-for-all workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareErc1155ApprovalForAll(client, {\n * operatorAddress: '0x1234…',\n * tokenAddress: '0x5678…',\n * });\n * ```\n *\n * @throws {@link PrepareErc1155ApprovalForAllError}\n * Thrown on failure.\n */\nexport async function prepareErc1155ApprovalForAll(\n client: BaseSecureClient,\n request: PrepareErc1155ApprovalForAllRequest,\n): Promise<Erc1155ApprovalForAllWorkflow> {\n const params = parseUserInput(\n request,\n PrepareErc1155ApprovalForAllRequestSchema,\n );\n\n return async function* (): Erc1155ApprovalForAllWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendErc1155ApprovalForAllTransaction(\n signerTransactionRequest(\n client.environment.chainId,\n erc1155ApprovalForAllCall(\n params.tokenAddress,\n params.operatorAddress,\n params.approved,\n ),\n ),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [\n erc1155ApprovalForAllCall(\n params.tokenAddress,\n params.operatorAddress,\n params.approved,\n ),\n ],\n metadata:\n params.metadata ??\n `${params.approved ? 'Approve' : 'Revoke'} ${params.operatorAddress} on ${params.tokenAddress}`,\n });\n }.call(null);\n}\n\nexport type ApproveErc1155ForAllError =\n | PrepareErc1155ApprovalForAllError\n | CancelledSigningError\n | SigningError;\nexport const ApproveErc1155ForAllError = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n UserInputError,\n);\n\n/**\n * Approves or revokes ERC-1155 operator access for the authenticated account.\n *\n * @throws {@link ApproveErc1155ForAllError}\n * Thrown on failure.\n */\nexport function approveErc1155ForAll(\n client: BaseSecureClient,\n request: PrepareErc1155ApprovalForAllRequest,\n): Promise<TransactionHandle> {\n return prepareErc1155ApprovalForAll(client, request).then(\n completeWith(client.signer),\n );\n}\n\nexport type TradingApprovalsWorkflowRequest =\n | GaslessWorkflowRequest\n | SendErc20ApprovalTransactionRequest\n | SendErc1155ApprovalForAllTransactionRequest;\n\nexport type TradingApprovalsWorkflow = AsyncGenerator<\n TradingApprovalsWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type PrepareTradingApprovalsError = UserInputError;\nexport const PrepareTradingApprovalsError = makeErrorGuard(UserInputError);\n\n/**\n * Starts a trading-setup approval workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * Prepares all approvals required for trading, including collateral and\n * position token approvals for both standard and neg-risk market flows.\n * The collateral adapter approvals cover split, merge, and redemption workflows.\n * Auto-redeem approval is included so accounts are ready for supported position\n * lifecycle workflows.\n *\n * @example\n * ```ts\n * const workflow = await prepareTradingApprovals(client);\n * ```\n *\n * @throws {@link PrepareTradingApprovalsError}\n * Thrown on failure.\n */\nexport async function prepareTradingApprovals(\n client: BaseSecureClient,\n): Promise<TradingApprovalsWorkflow> {\n const erc20ApprovalCalls = [\n erc20ApprovalCall(\n client.environment.collateralToken,\n client.environment.standardExchange,\n MAX_UINT256,\n ),\n erc20ApprovalCall(\n client.environment.collateralToken,\n client.environment.negRiskExchange,\n MAX_UINT256,\n ),\n erc20ApprovalCall(\n client.environment.collateralToken,\n client.environment.negRiskAdapter,\n MAX_UINT256,\n ),\n erc20ApprovalCall(\n client.environment.collateralToken,\n client.environment.collateralAdapter,\n MAX_UINT256,\n ),\n erc20ApprovalCall(\n client.environment.collateralToken,\n client.environment.negRiskCollateralAdapter,\n MAX_UINT256,\n ),\n ] as const;\n const erc1155ApprovalCalls = [\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.standardExchange,\n true,\n ),\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.negRiskExchange,\n true,\n ),\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.negRiskAdapter,\n true,\n ),\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.collateralAdapter,\n true,\n ),\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.negRiskCollateralAdapter,\n true,\n ),\n erc1155ApprovalForAllCall(\n client.environment.conditionalTokens,\n client.environment.autoRedeemOperator,\n true,\n ),\n ] as const;\n return async function* (): TradingApprovalsWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n for (const call of erc20ApprovalCalls) {\n const handle = expectTransactionHandle(\n yield sendErc20ApprovalTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n\n await handle.wait();\n }\n\n for (const [index, call] of erc1155ApprovalCalls.entries()) {\n const handle = expectTransactionHandle(\n yield sendErc1155ApprovalForAllTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n\n if (index === erc1155ApprovalCalls.length - 1) {\n return handle;\n }\n\n await handle.wait();\n }\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [...erc20ApprovalCalls, ...erc1155ApprovalCalls],\n metadata: 'Trading setup approvals',\n });\n }.call(null);\n}\n\nexport type SetupTradingApprovalsError =\n | PrepareTradingApprovalsError\n | CancelledSigningError\n | SigningError;\nexport const SetupTradingApprovalsError = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n UserInputError,\n);\n\n/**\n * Sets up the approvals required for trading.\n *\n * @throws {@link SetupTradingApprovalsError}\n * Thrown on failure.\n */\nexport function setupTradingApprovals(\n client: BaseSecureClient,\n): Promise<TransactionHandle> {\n return prepareTradingApprovals(client).then(completeWith(client.signer));\n}\n\nfunction sendErc20ApprovalTransaction(\n request: SignerTransactionRequest,\n): SendErc20ApprovalTransactionRequest {\n return {\n kind: 'sendErc20ApprovalTransaction',\n request,\n };\n}\n\nfunction sendErc1155ApprovalForAllTransaction(\n request: SignerTransactionRequest,\n): SendErc1155ApprovalForAllTransactionRequest {\n return {\n kind: 'sendErc1155ApprovalForAllTransaction',\n request,\n };\n}\n","import type { ApiKey } from '@polymarket/bindings';\nimport {\n type ApiKeyCreds,\n ApiKeyCredsSchema,\n ApiKeysResponseSchema,\n type BuilderApiKey,\n type BuilderApiKeyCreds,\n BuilderApiKeyCredsSchema,\n BuilderApiKeysResponseSchema,\n} from '@polymarket/bindings/clob';\nimport { type EvmAddress, type EvmSignature, unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient, BaseSecureClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n} from '../errors';\nimport { validateWith } from '../response';\n\nexport type ApiKeyAuthRequest = {\n address: EvmAddress;\n nonce: number;\n signature: EvmSignature;\n timestamp: number;\n};\n\nexport type CreateApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError;\nexport const CreateApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Creates a new API key from a signed L1 auth payload.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const creds = await createApiKey(client, request);\n * ```\n *\n * @throws {@link CreateApiKeyError}\n * Thrown on failure.\n */\nexport async function createApiKey(\n client: BaseClient,\n request: ApiKeyAuthRequest,\n): Promise<ApiKeyCreds> {\n return unwrap(\n client.clob\n .post('/auth/api-key', {\n headers: toL1Headers(request),\n })\n .andThen(validateWith(ApiKeyCredsSchema)),\n );\n}\n\nexport type DeriveApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError;\nexport const DeriveApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Derives an existing API key from a signed L1 auth payload.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const creds = await deriveApiKey(client, request);\n * ```\n *\n * @throws {@link DeriveApiKeyError}\n * Thrown on failure.\n */\nexport async function deriveApiKey(\n client: BaseClient,\n request: ApiKeyAuthRequest,\n): Promise<ApiKeyCreds> {\n return unwrap(\n client.clob\n .get('/auth/derive-api-key', {\n headers: toL1Headers(request),\n })\n .andThen(validateWith(ApiKeyCredsSchema)),\n );\n}\n\nexport type CreateOrDeriveApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError;\nexport const CreateOrDeriveApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Creates an API key and falls back to derivation when it already exists.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const creds = await createOrDeriveApiKey(client, request);\n * ```\n *\n * @throws {@link CreateOrDeriveApiKeyError}\n * Thrown on failure.\n */\nexport async function createOrDeriveApiKey(\n client: BaseClient,\n request: ApiKeyAuthRequest,\n): Promise<ApiKeyCreds> {\n try {\n return await createApiKey(client, request);\n } catch (error) {\n if (!(error instanceof RequestRejectedError) || error.status !== 400) {\n throw error;\n }\n }\n\n return deriveApiKey(client, request);\n}\n\nexport type FetchApiKeysError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchApiKeysError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Fetches all API keys associated with the authenticated client.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const apiKeys = await fetchApiKeys(client);\n * ```\n *\n * @throws {@link FetchApiKeysError}\n * Thrown on failure.\n */\nexport async function fetchApiKeys(\n client: BaseSecureClient,\n): Promise<ApiKey[]> {\n const response = await unwrap(\n client.secureClob\n .get('/auth/api-keys')\n .andThen(validateWith(ApiKeysResponseSchema)),\n );\n\n return response.apiKeys;\n}\n\nexport type DeleteApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const DeleteApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Deletes the authenticated API key.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * await deleteApiKey(client);\n * ```\n *\n * @throws {@link DeleteApiKeyError}\n * Thrown when request signing fails, or the request is rejected, rate limited,\n * interrupted by transport issues, or returns an unexpected response.\n */\nexport async function deleteApiKey(client: BaseSecureClient): Promise<void> {\n await unwrap(\n client.secureClob\n .del('/auth/api-key')\n .andThen(validateWith(z.literal('OK'))),\n );\n}\n\nexport type CreateBuilderApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const CreateBuilderApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Creates a new builder API key for the authenticated client.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const builderApiKey = await createBuilderApiKey(client);\n * ```\n *\n * @throws {@link CreateBuilderApiKeyError}\n * Thrown when request signing fails, or the request is rejected, rate limited,\n * interrupted by transport issues, or returns an unexpected response.\n */\nexport async function createBuilderApiKey(\n client: BaseSecureClient,\n): Promise<BuilderApiKeyCreds> {\n return unwrap(\n client.secureClob\n .post('/auth/builder-api-key')\n .andThen(validateWith(BuilderApiKeyCredsSchema)),\n );\n}\n\nexport type FetchBuilderApiKeysError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchBuilderApiKeysError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Fetches builder API keys associated with the authenticated client.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const builderApiKeys = await fetchBuilderApiKeys(client);\n * ```\n *\n * @throws {@link FetchBuilderApiKeysError}\n * Thrown when request signing fails, or the request is rejected, rate limited,\n * interrupted by transport issues, or returns an unexpected response.\n */\nexport async function fetchBuilderApiKeys(\n client: BaseSecureClient,\n): Promise<BuilderApiKey[]> {\n return unwrap(\n client.secureClob\n .get('/auth/builder-api-key')\n .andThen(validateWith(BuilderApiKeysResponseSchema)),\n );\n}\n\nexport type RevokeBuilderApiKeyError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const RevokeBuilderApiKeyError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Revokes a builder API key.\n *\n * @remarks\n * This is a low-level auth action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * await revokeBuilderApiKey(client);\n * ```\n *\n * @throws {@link RevokeBuilderApiKeyError}\n * Thrown when request signing fails, or the request is rejected, rate limited,\n * interrupted by transport issues, or returns an unexpected response.\n */\nexport async function revokeBuilderApiKey(client: BaseClient): Promise<void> {\n await unwrap(\n client.clob\n .del('/auth/builder-api-key')\n .andThen(validateWith(z.literal('OK'))),\n );\n}\n\nfunction toL1Headers(auth: ApiKeyAuthRequest): HeadersInit {\n return {\n POLY_ADDRESS: auth.address,\n POLY_NONCE: `${auth.nonce}`,\n POLY_SIGNATURE: auth.signature,\n POLY_TIMESTAMP: `${auth.timestamp}`,\n };\n}\n","import {\n BuilderCodeSchema,\n PaginationCursorSchema,\n toPaginationCursor,\n} from '@polymarket/bindings';\nimport {\n type BuilderTrade,\n END_CURSOR,\n PaginatedBuilderTradesSchema,\n} from '@polymarket/bindings/clob';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { type Paginated, paginate } from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst ListBuilderTradesRequestSchema = z.object({\n after: z.string().optional(),\n before: z.string().optional(),\n builderCode: BuilderCodeSchema,\n cursor: PaginationCursorSchema.optional(),\n id: z.string().optional(),\n market: z.string().optional(),\n tokenId: z.string().optional(),\n});\n\nexport type ListBuilderTradesRequest = z.input<\n typeof ListBuilderTradesRequestSchema\n>;\n\nexport type ListBuilderTradesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListBuilderTradesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists builder-attributed trades.\n *\n * @throws {@link ListBuilderTradesError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listBuilderTrades(client);\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: BuilderTrade[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listBuilderTrades(client);\n *\n * for await (const page of result) {\n * // page.items: BuilderTrade[]\n * }\n * ```\n */\nexport function listBuilderTrades(\n client: BaseClient,\n request: ListBuilderTradesRequest,\n): Paginated<BuilderTrade[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListBuilderTradesRequestSchema,\n );\n\n return paginate(\n (nextCursor) =>\n client.clob\n .get('/builder/trades', {\n params: toSearchParams(\n { ...params, nextCursor },\n snakeCase({\n builderCode: 'builder_code',\n tokenId: 'asset_id',\n }),\n ),\n })\n .andThen(validateWith(PaginatedBuilderTradesSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n","import {\n BuilderCodeSchema,\n type ConditionId,\n ConditionIdSchema,\n OrderSideSchema,\n PaginationCursorSchema,\n type TickSizeValue,\n TokenIdSchema,\n toPaginationCursor,\n} from '@polymarket/bindings';\nimport {\n type BuilderFeeRates,\n type CurrentReward,\n END_CURSOR,\n FetchBuilderFeeRatesResponseSchema,\n FetchMarketInfoResponseSchema,\n FetchNegRiskResponseSchema,\n FetchOrderBookResponseSchema,\n FetchTickSizeResponseSchema,\n type LastTradePrice,\n type LastTradePriceForToken,\n LastTradePriceSchema,\n LastTradePricesSchema,\n type MarketInfo,\n type MarketReward,\n MidpointSchema,\n MidpointsSchema,\n type OrderBook,\n OrderBooksSchema,\n PaginatedCurrentRewardsSchema,\n PaginatedMarketRewardsSchema,\n PriceHistoryIntervalSchema,\n type PriceHistoryPoint,\n PriceHistorySchema,\n PriceSchema,\n type Prices,\n PricesSchema,\n ResolveConditionByTokenResponseSchema,\n SpreadSchema,\n SpreadsSchema,\n} from '@polymarket/bindings/clob';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { type Paginated, paginate } from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst FetchMidpointRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchMidpointRequest = z.input<typeof FetchMidpointRequestSchema>;\n\nexport type FetchMidpointError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchMidpointError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the midpoint price for a token.\n *\n * @throws {@link FetchMidpointError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const midpoint = await fetchMidpoint(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // midpoint === '0.53'\n * ```\n *\n */\nexport async function fetchMidpoint(\n client: BaseClient,\n request: FetchMidpointRequest,\n): Promise<string> {\n const params = parseUserInput(request, FetchMidpointRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/midpoint', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(MidpointSchema)),\n );\n\n return response.mid;\n}\n\nconst FetchMidpointsRequestSchema = z\n .array(\n z.object({\n tokenId: z.string(),\n }),\n )\n .min(1);\n\nexport type FetchMidpointsRequest = z.input<typeof FetchMidpointsRequestSchema>;\n\nexport type FetchMidpointsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchMidpointsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches midpoint prices for multiple tokens.\n *\n * @throws {@link FetchMidpointsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const midpoints = await fetchMidpoints(client, [\n * {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * },\n * ]);\n *\n * // midpoints[tokenId] === '0.53'\n * ```\n *\n */\nexport async function fetchMidpoints(\n client: BaseClient,\n request: FetchMidpointsRequest,\n): Promise<Record<string, string>> {\n const params = parseUserInput(request, FetchMidpointsRequestSchema);\n\n return unwrap(\n client.clob\n .post('midpoints', {\n json: toTokenRequestPayload(params),\n })\n .andThen(validateWith(MidpointsSchema)),\n );\n}\n\nconst FetchTickSizeRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchTickSizeRequest = z.input<typeof FetchTickSizeRequestSchema>;\n\nexport type FetchTickSizeError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchTickSizeError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the minimum price tick size for a token's order book.\n *\n * @remarks\n * This is a low-level market action that most SDK consumers will not need.\n *\n * @throws {@link FetchTickSizeError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const tickSize = await fetchTickSize(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // tickSize === 0.01\n * ```\n */\nexport async function fetchTickSize(\n client: BaseClient,\n request: FetchTickSizeRequest,\n): Promise<TickSizeValue> {\n const params = parseUserInput(request, FetchTickSizeRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/tick-size', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(FetchTickSizeResponseSchema)),\n );\n\n return response.minimumTickSize;\n}\n\nconst FetchNegRiskRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchNegRiskRequest = z.input<typeof FetchNegRiskRequestSchema>;\n\nexport type FetchNegRiskError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchNegRiskError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches whether a token is in a negative-risk market.\n *\n * @remarks\n * This is a low-level market action that most SDK consumers will not need.\n *\n * @throws {@link FetchNegRiskError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const negRisk = await fetchNegRisk(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // negRisk === false\n * ```\n */\nexport async function fetchNegRisk(\n client: BaseClient,\n request: FetchNegRiskRequest,\n): Promise<boolean> {\n const params = parseUserInput(request, FetchNegRiskRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/neg-risk', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(FetchNegRiskResponseSchema)),\n );\n\n return response.negRisk;\n}\n\nconst ResolveConditionByTokenRequestSchema = z.object({\n tokenId: TokenIdSchema,\n});\n\nexport type ResolveConditionByTokenRequest = z.input<\n typeof ResolveConditionByTokenRequestSchema\n>;\n\nexport type ResolveConditionByTokenError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ResolveConditionByTokenError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Resolves the condition ID for a token.\n *\n * @remarks\n * This is a low-level market action that most SDK consumers will not need.\n *\n * @throws {@link ResolveConditionByTokenError}\n * Thrown on failure.\n */\nexport async function resolveConditionByToken(\n client: BaseClient,\n request: ResolveConditionByTokenRequest,\n): Promise<ConditionId> {\n const params = parseUserInput(request, ResolveConditionByTokenRequestSchema);\n\n return unwrap(\n client.clob\n .get(`/markets-by-token/${params.tokenId}`)\n .andThen(validateWith(ResolveConditionByTokenResponseSchema)),\n );\n}\n\nconst FetchMarketInfoRequestSchema = z.object({\n conditionId: ConditionIdSchema,\n});\n\nexport type FetchMarketInfoRequest = z.input<\n typeof FetchMarketInfoRequestSchema\n>;\n\nexport type FetchMarketInfoError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchMarketInfoError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches market-level metadata for a condition.\n *\n * @remarks\n * This is a low-level market action that most SDK consumers will not need.\n *\n * @throws {@link FetchMarketInfoError}\n * Thrown on failure.\n */\nexport async function fetchMarketInfo(\n client: BaseClient,\n request: FetchMarketInfoRequest,\n): Promise<MarketInfo> {\n const params = parseUserInput(request, FetchMarketInfoRequestSchema);\n\n return unwrap(\n client.clob\n .get(`/clob-markets/${params.conditionId}`)\n .andThen(validateWith(FetchMarketInfoResponseSchema)),\n );\n}\n\nconst FetchBuilderFeeRatesRequestSchema = z.object({\n builderCode: BuilderCodeSchema,\n});\n\nexport type FetchBuilderFeeRatesRequest = z.input<\n typeof FetchBuilderFeeRatesRequestSchema\n>;\n\nexport type FetchBuilderFeeRatesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchBuilderFeeRatesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches builder maker and taker fee rates.\n *\n * @remarks\n * This is a low-level market action that most SDK consumers will not need.\n *\n * @throws {@link FetchBuilderFeeRatesError}\n * Thrown on failure.\n */\nexport async function fetchBuilderFeeRates(\n client: BaseClient,\n request: FetchBuilderFeeRatesRequest,\n): Promise<BuilderFeeRates> {\n const params = parseUserInput(request, FetchBuilderFeeRatesRequestSchema);\n\n return unwrap(\n client.clob\n .get(`/fees/builder-fees/${params.builderCode}`)\n .andThen(validateWith(FetchBuilderFeeRatesResponseSchema)),\n );\n}\n\nconst FetchPriceRequestSchema = z.object({\n tokenId: z.string(),\n side: OrderSideSchema,\n});\n\nexport type FetchPriceRequest = z.input<typeof FetchPriceRequestSchema>;\n\nexport type FetchPriceError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchPriceError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the current quoted price for a token and side.\n *\n * @throws {@link FetchPriceError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const price = await fetchPrice(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * side: OrderSide.BUY,\n * });\n *\n * // price === '0.52'\n * ```\n *\n */\nexport async function fetchPrice(\n client: BaseClient,\n request: FetchPriceRequest,\n): Promise<string> {\n const params = parseUserInput(request, FetchPriceRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/price', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(PriceSchema)),\n );\n\n return response.price;\n}\n\nconst FetchPricesRequestSchema = z\n .array(\n z.object({\n tokenId: z.string(),\n side: OrderSideSchema,\n }),\n )\n .min(1);\n\nexport type FetchPricesRequest = z.input<typeof FetchPricesRequestSchema>;\n\nexport type FetchPricesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchPricesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches quoted prices for multiple tokens.\n *\n * @throws {@link FetchPricesError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const prices = await fetchPrices(client, [\n * {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * side: OrderSide.BUY,\n * },\n * ]);\n *\n * // prices[tokenId]?.BUY === '0.52'\n * ```\n *\n */\nexport async function fetchPrices(\n client: BaseClient,\n request: FetchPricesRequest,\n): Promise<Prices> {\n const params = parseUserInput(request, FetchPricesRequestSchema);\n\n return unwrap(\n client.clob\n .post('prices', {\n json: toTokenWithSideRequestPayload(params),\n })\n .andThen(validateWith(PricesSchema)),\n );\n}\n\nconst FetchOrderBookRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchOrderBookRequest = z.input<typeof FetchOrderBookRequestSchema>;\n\nexport type FetchOrderBookError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchOrderBookError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the current order book for a token.\n *\n * @throws {@link FetchOrderBookError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const orderBook = await fetchOrderBook(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // orderBook.bids / orderBook.asks\n * ```\n */\nexport async function fetchOrderBook(\n client: BaseClient,\n request: FetchOrderBookRequest,\n): Promise<OrderBook> {\n const params = parseUserInput(request, FetchOrderBookRequestSchema);\n\n return unwrap(\n client.clob\n .get('/book', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(FetchOrderBookResponseSchema)),\n );\n}\n\nconst FetchOrderBooksRequestSchema = z\n .array(\n z.object({\n tokenId: z.string(),\n }),\n )\n .min(1);\n\nexport type FetchOrderBooksRequest = z.input<\n typeof FetchOrderBooksRequestSchema\n>;\n\nexport type FetchOrderBooksError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchOrderBooksError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches order books for multiple tokens.\n *\n * @throws {@link FetchOrderBooksError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const books = await fetchOrderBooks(client, [\n * {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * },\n * ])\n *\n * // books: OrderBook[]\n * ```\n */\nexport async function fetchOrderBooks(\n client: BaseClient,\n request: FetchOrderBooksRequest,\n): Promise<OrderBook[]> {\n const params = parseUserInput(request, FetchOrderBooksRequestSchema);\n\n return unwrap(\n client.clob\n .post('books', {\n json: toTokenRequestPayload(params),\n })\n .andThen(validateWith(OrderBooksSchema)),\n );\n}\n\nconst FetchSpreadRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchSpreadRequest = z.input<typeof FetchSpreadRequestSchema>;\n\nexport type FetchSpreadError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchSpreadError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the spread for a token.\n *\n * @throws {@link FetchSpreadError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const spread = await fetchSpread(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // spread === '0.02'\n * ```\n *\n */\nexport async function fetchSpread(\n client: BaseClient,\n request: FetchSpreadRequest,\n): Promise<string> {\n const params = parseUserInput(request, FetchSpreadRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/spread', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(SpreadSchema)),\n );\n\n return response.spread;\n}\n\nconst FetchSpreadsRequestSchema = z\n .array(\n z.object({\n tokenId: z.string(),\n }),\n )\n .min(1);\n\nexport type FetchSpreadsRequest = z.input<typeof FetchSpreadsRequestSchema>;\n\nexport type FetchSpreadsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchSpreadsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches spreads for multiple tokens.\n *\n * @throws {@link FetchSpreadsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const spreads = await fetchSpreads(client, [\n * {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * },\n * ]);\n *\n * // spreads[tokenId] === '0.02'\n * ```\n *\n */\nexport async function fetchSpreads(\n client: BaseClient,\n request: FetchSpreadsRequest,\n): Promise<Record<string, string>> {\n const params = parseUserInput(request, FetchSpreadsRequestSchema);\n\n return unwrap(\n client.clob\n .post('spreads', {\n json: toTokenRequestPayload(params),\n })\n .andThen(validateWith(SpreadsSchema)),\n );\n}\n\nconst FetchLastTradePriceRequestSchema = z.object({\n tokenId: z.string(),\n});\n\nexport type FetchLastTradePriceRequest = z.input<\n typeof FetchLastTradePriceRequestSchema\n>;\n\nexport type FetchLastTradePriceError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchLastTradePriceError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the last traded price for a token.\n *\n * @throws {@link FetchLastTradePriceError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const trade = await fetchLastTradePrice(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * });\n *\n * // trade === { price: '0.53', side: OrderSide.BUY }\n * ```\n *\n */\nexport async function fetchLastTradePrice(\n client: BaseClient,\n request: FetchLastTradePriceRequest,\n): Promise<LastTradePrice> {\n const params = parseUserInput(request, FetchLastTradePriceRequestSchema);\n\n return unwrap(\n client.clob\n .get('/last-trade-price', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(LastTradePriceSchema)),\n );\n}\n\nconst FetchLastTradePricesRequestSchema = z\n .array(\n z.object({\n tokenId: z.string(),\n }),\n )\n .min(1);\n\nexport type FetchLastTradePricesRequest = z.input<\n typeof FetchLastTradePricesRequestSchema\n>;\n\nexport type FetchLastTradePricesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchLastTradePricesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches last traded prices for multiple tokens.\n *\n * @throws {@link FetchLastTradePricesError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const trades = await fetchLastTradePrices(client, [\n * {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * },\n * ]);\n *\n * // trades[0] === { tokenId, price: '0.53', side: OrderSide.BUY }\n * ```\n *\n */\nexport async function fetchLastTradePrices(\n client: BaseClient,\n request: FetchLastTradePricesRequest,\n): Promise<LastTradePriceForToken[]> {\n const params = parseUserInput(request, FetchLastTradePricesRequestSchema);\n\n return unwrap(\n client.clob\n .post('last-trades-prices', {\n json: toTokenRequestPayload(params),\n })\n .andThen(validateWith(LastTradePricesSchema)),\n );\n}\n\nconst ListPriceHistoryRequestSchema = z.object({\n tokenId: z.string(),\n startTs: z.number().int().optional(),\n endTs: z.number().int().optional(),\n fidelity: z.number().int().positive().optional(),\n interval: PriceHistoryIntervalSchema.optional(),\n});\n\nexport type FetchPriceHistoryRequest = z.input<\n typeof ListPriceHistoryRequestSchema\n>;\n\nexport type FetchPriceHistoryError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchPriceHistoryError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches historical price points for a token.\n *\n * @throws {@link FetchPriceHistoryError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const history = await fetchPriceHistory(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * interval: PriceHistoryInterval.ONE_DAY,\n * fidelity: 60,\n * });\n *\n * // history === PriceHistoryPoint[]\n * ```\n *\n */\nexport async function fetchPriceHistory(\n client: BaseClient,\n request: FetchPriceHistoryRequest,\n): Promise<PriceHistoryPoint[]> {\n const params = parseUserInput(request, ListPriceHistoryRequestSchema);\n const response = await unwrap(\n client.clob\n .get('/prices-history', {\n params: toSearchParams(params, {\n tokenId: 'market',\n startTs: 'startTs',\n endTs: 'endTs',\n fidelity: 'fidelity',\n interval: 'interval',\n }),\n })\n .andThen(validateWith(PriceHistorySchema)),\n );\n\n return response.history;\n}\n\nconst ListCurrentRewardsRequestSchema = z\n .object({\n cursor: PaginationCursorSchema.optional(),\n sponsored: z.boolean().optional(),\n })\n .default({});\n\nexport type ListCurrentRewardsRequest = z.input<\n typeof ListCurrentRewardsRequestSchema\n>;\n\nexport type ListCurrentRewardsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListCurrentRewardsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists current active market rewards.\n *\n * @throws {@link ListCurrentRewardsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listCurrentRewards(client);\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: CurrentReward[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listCurrentRewards(client);\n *\n * for await (const page of result) {\n * // page.items: CurrentReward[]\n * }\n * ```\n */\nexport function listCurrentRewards(\n client: BaseClient,\n request: ListCurrentRewardsRequest = {},\n): Paginated<CurrentReward[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListCurrentRewardsRequestSchema,\n );\n\n return paginate(\n (nextCursor) =>\n client.clob\n .get('/rewards/markets/current', {\n params: toSearchParams(\n {\n ...params,\n nextCursor,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(PaginatedCurrentRewardsSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nconst ListMarketRewardsRequestSchema = z.object({\n conditionId: ConditionIdSchema,\n cursor: PaginationCursorSchema.optional(),\n sponsored: z.boolean().optional(),\n});\n\nexport type ListMarketRewardsRequest = z.input<\n typeof ListMarketRewardsRequestSchema\n>;\n\nexport type ListMarketRewardsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListMarketRewardsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists reward configurations for a market.\n *\n * @throws {@link ListMarketRewardsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listMarketRewards(client, {\n * conditionId:\n * '0xbd31dc8a20211944f6b70f31557f1001557b59905b7738480ca09bd4532f84af',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: MarketReward[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listMarketRewards(client, {\n * conditionId:\n * '0xbd31dc8a20211944f6b70f31557f1001557b59905b7738480ca09bd4532f84af',\n * });\n *\n * for await (const page of result) {\n * // page.items: MarketReward[]\n * }\n * ```\n */\nexport function listMarketRewards(\n client: BaseClient,\n request: ListMarketRewardsRequest,\n): Paginated<MarketReward[]> {\n const { cursor, ...params } = parseUserInput(\n request,\n ListMarketRewardsRequestSchema,\n );\n\n return paginate(\n (nextCursor) =>\n client.clob\n .get(`rewards/markets/${params.conditionId}`, {\n params: toSearchParams(\n {\n nextCursor,\n sponsored: params.sponsored,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(PaginatedMarketRewardsSchema))\n .map((response) => ({\n items: response.data,\n hasMore: response.nextCursor !== END_CURSOR,\n nextCursor:\n response.nextCursor === END_CURSOR\n ? undefined\n : toPaginationCursor(response.nextCursor),\n totalCount: response.count,\n })),\n cursor,\n );\n}\n\nfunction toTokenRequestPayload(\n params: Array<{\n tokenId: string;\n }>,\n) {\n return params.map(({ tokenId }) => ({\n token_id: tokenId,\n }));\n}\n\nfunction toTokenWithSideRequestPayload(\n params: Array<{\n tokenId: string;\n side: z.infer<typeof OrderSideSchema>;\n }>,\n) {\n return params.map(({ tokenId, side }) => ({\n token_id: tokenId,\n side,\n }));\n}\n","import {\n CommentIdSchema,\n CommentParentEntityTypeSchema,\n EventIdSchema,\n PaginationCursorSchema,\n} from '@polymarket/bindings';\nimport {\n type Comment,\n ListCommentsResponseSchema,\n SeriesIdSchema,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst ListCommentsRequestSchema = z.object({\n ascending: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.default(20),\n getPositions: z.boolean().optional(),\n holdersOnly: z.boolean().optional(),\n order: z.string().optional(),\n parentEntityId: z.union([EventIdSchema, SeriesIdSchema]),\n parentEntityType: CommentParentEntityTypeSchema,\n});\n\nconst FetchCommentsByIdRequestSchema = z.object({\n getPositions: z.boolean().optional(),\n id: CommentIdSchema,\n});\n\nconst ListCommentsByUserAddressRequestSchema = z.object({\n address: z.string(),\n ascending: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n order: z.string().optional(),\n pageSize: PageSizeSchema.default(20),\n});\n\nexport type ListCommentsRequest = z.input<typeof ListCommentsRequestSchema>;\nexport type FetchCommentsByIdRequest = z.input<\n typeof FetchCommentsByIdRequestSchema\n>;\nexport type ListCommentsByUserAddressRequest = z.input<\n typeof ListCommentsByUserAddressRequestSchema\n>;\n\nexport type ListCommentsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListCommentsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists comments for an event or series.\n *\n * @throws {@link ListCommentsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listComments(client, {\n * parentEntityId: '123',\n * parentEntityType: CommentParentEntityType.Event,\n * pageSize: 20,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Comment[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listComments(client, {\n * parentEntityId: '123',\n * parentEntityType: CommentParentEntityType.Event,\n * pageSize: 20,\n * });\n *\n * for await (const page of result) {\n * // page.items: Comment[]\n * }\n * ```\n */\nexport function listComments(\n client: BaseClient,\n request: ListCommentsRequest,\n): Paginated<Comment[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListCommentsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get('/comments', {\n params: toSearchParams(\n {\n ascending: params.ascending,\n getPositions: params.getPositions,\n holdersOnly: params.holdersOnly,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n order: params.order,\n parentEntityId: params.parentEntityId,\n parentEntityType: params.parentEntityType,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListCommentsResponseSchema))\n .map((comments) => {\n const hasMore = comments.length > decoded.pageSize;\n\n return {\n items: comments.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type FetchCommentsByIdError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchCommentsByIdError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a comment thread by comment id.\n *\n * @throws {@link FetchCommentsByIdError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const thread = await fetchCommentsById(client, {\n * id: '456',\n * getPositions: true,\n * });\n *\n * // thread: Comment[]\n * ```\n */\nexport async function fetchCommentsById(\n client: BaseClient,\n request: FetchCommentsByIdRequest,\n): Promise<Comment[]> {\n const params = parseUserInput(request, FetchCommentsByIdRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`comments/${params.id}`, {\n params: toSearchParams(\n {\n getPositions: params.getPositions,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListCommentsResponseSchema)),\n );\n}\n\nexport type ListCommentsByUserAddressError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListCommentsByUserAddressError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists comments written by a wallet address.\n *\n * @throws {@link ListCommentsByUserAddressError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listCommentsByUserAddress(client, {\n * address: '0x1234...',\n * pageSize: 10,\n * order: 'DESC',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Comment[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listCommentsByUserAddress(client, {\n * address: '0x1234...',\n * pageSize: 10,\n * order: 'DESC',\n * });\n *\n * for await (const page of result) {\n * // page.items: Comment[]\n * }\n * ```\n */\nexport function listCommentsByUserAddress(\n client: BaseClient,\n request: ListCommentsByUserAddressRequest,\n): Paginated<Comment[]> {\n const { address, cursor, pageSize, ...params } = parseUserInput(\n request,\n ListCommentsByUserAddressRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get(`comments/user_address/${address}`, {\n params: toSearchParams(\n {\n ascending: params.ascending,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n order: params.order,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListCommentsResponseSchema))\n .map((comments) => {\n const hasMore = comments.length > decoded.pageSize;\n\n return {\n items: comments.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n","import { UserInputError } from './errors';\n\ntype PolymarketUrlResource = 'event' | 'market';\n\nexport function parsePolymarketSlugUrl(\n rawUrl: string,\n resource: PolymarketUrlResource,\n): string {\n let url: URL;\n\n try {\n url = new URL(rawUrl);\n } catch (cause) {\n throw new UserInputError('Expected a valid Polymarket URL.', { cause });\n }\n\n if (\n url.protocol !== 'https:' ||\n (url.hostname !== 'polymarket.com' && url.hostname !== 'www.polymarket.com')\n ) {\n throw new UserInputError('Expected a valid Polymarket URL.');\n }\n\n const [actualResource, slug, ...extraSegments] = url.pathname\n .split('/')\n .filter(Boolean);\n\n if (\n actualResource !== resource ||\n slug === undefined ||\n extraSegments.length > 0\n ) {\n throw new UserInputError(`Expected a Polymarket ${resource} URL.`);\n }\n\n return slug;\n}\n","import {\n IsoCalendarDateStringSchema,\n IsoDateTimeStringSchema,\n PaginationCursorSchema,\n} from '@polymarket/bindings';\nimport {\n FetchEventLiveVolumeResponseSchema,\n type LiveVolume,\n} from '@polymarket/bindings/data';\nimport {\n type Event,\n EventSchema,\n FetchEventTagsResponseSchema,\n ListEventsKeysetResponseSchema,\n type TagReference,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { PageSizeSchema, type Paginated, paginate } from '../pagination';\nimport { parsePolymarketSlugUrl } from '../polymarket-url';\nimport { validateWith } from '../response';\nimport { snakeCase, toDataSearchParams, toSearchParams } from './params';\n\nconst ListEventsRequestSchema = z.object({\n ascending: z.boolean().optional(),\n closed: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.optional(),\n cyom: z.boolean().optional(),\n endDateMax: IsoDateTimeStringSchema.optional(),\n endDateMin: IsoDateTimeStringSchema.optional(),\n ended: z.boolean().optional(),\n eventDate: IsoCalendarDateStringSchema.optional(),\n eventWeek: z.number().int().optional(),\n excludeTagIds: z.array(z.number().int()).optional(),\n featured: z.boolean().optional(),\n featuredOrder: z.boolean().optional(),\n gameIds: z.array(z.number().int()).optional(),\n ids: z.array(z.number().int()).optional(),\n includeBestLines: z.boolean().optional(),\n includeChat: z.boolean().optional(),\n includeChildren: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n liquidityMax: z.number().optional(),\n liquidityMin: z.number().optional(),\n live: z.boolean().optional(),\n locale: z.string().optional(),\n order: z.string().optional(),\n parentEventId: z.number().int().optional(),\n partnerSlug: z.string().optional(),\n recurrence: z.enum(['daily', 'weekly', 'monthly']).optional(),\n relatedTags: z.boolean().optional(),\n seriesIds: z.array(z.number().int()).optional(),\n slug: z.array(z.string()).optional(),\n startDateMax: IsoDateTimeStringSchema.optional(),\n startDateMin: IsoDateTimeStringSchema.optional(),\n startTimeMax: IsoDateTimeStringSchema.optional(),\n startTimeMin: IsoDateTimeStringSchema.optional(),\n tagIds: z.array(z.number().int()).optional(),\n tagMatch: z.enum(['any', 'all']).optional(),\n tagSlug: z.string().optional(),\n titleSearch: z.string().optional(),\n volumeMax: z.number().optional(),\n volumeMin: z.number().optional(),\n});\n\nexport type ListEventsRequest = z.input<typeof ListEventsRequestSchema>;\n\nconst FetchEventRequestSchema = z.union([\n z.object({\n id: z.string(),\n includeBestLines: z.boolean().optional(),\n includeChat: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n locale: z.string().optional(),\n }),\n z.object({\n slug: z.string(),\n includeBestLines: z.boolean().optional(),\n includeChat: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n locale: z.string().optional(),\n }),\n z.object({\n url: z.string(),\n includeBestLines: z.boolean().optional(),\n includeChat: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n locale: z.string().optional(),\n }),\n]);\n\nexport type FetchEventRequest = z.input<typeof FetchEventRequestSchema>;\n\nconst FetchEventTagsRequestSchema = z.object({\n id: z.string(),\n});\n\nexport type FetchEventTagsRequest = z.input<typeof FetchEventTagsRequestSchema>;\n\nconst FetchEventLiveVolumeRequestSchema = z.object({\n id: z.string(),\n});\n\nexport type FetchEventLiveVolumeRequest = z.input<\n typeof FetchEventLiveVolumeRequestSchema\n>;\n\ntype ListEventsParams = z.output<typeof ListEventsRequestSchema>;\n\nexport type ListEventsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListEventsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists events.\n *\n * @throws {@link ListEventsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listEvents(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Event[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listEvents(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Event[]\n * }\n * ```\n */\nexport function listEvents(\n client: BaseClient,\n request: ListEventsRequest = {},\n): Paginated<Event[]> {\n const params = parseUserInput(request, ListEventsRequestSchema);\n\n return paginate(\n (cursor) =>\n client.gamma\n .get('/events/keyset', {\n params: toEventsSearchParams({\n ...params,\n cursor: cursor ?? params.cursor,\n }),\n })\n .andThen(validateWith(ListEventsKeysetResponseSchema))\n .map((response) => ({\n items: response.items,\n hasMore: response.nextCursor !== undefined,\n nextCursor: response.nextCursor,\n })),\n params.cursor,\n );\n}\n\nexport type FetchEventError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchEventError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches an event.\n *\n * @throws {@link FetchEventError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const event = await fetchEvent(client, {\n * id: '12345',\n * });\n *\n * const eventBySlug = await fetchEvent(client, {\n * slug: 'presidential-election-2028',\n * });\n *\n * const eventByUrl = await fetchEvent(client, {\n * url: 'https://polymarket.com/event/presidential-election-2028',\n * });\n *\n * // event === Event\n * ```\n */\nexport async function fetchEvent(\n client: BaseClient,\n request: FetchEventRequest,\n): Promise<Event> {\n const params = parseUserInput(request, FetchEventRequestSchema);\n\n if ('id' in params) {\n return unwrap(\n client.gamma\n .get(`events/${params.id}`, {\n params: toFetchEventByIdSearchParams(params),\n })\n .andThen(validateWith(EventSchema)),\n );\n }\n\n const slug =\n 'url' in params ? parsePolymarketSlugUrl(params.url, 'event') : params.slug;\n\n return unwrap(\n client.gamma\n .get(`events/slug/${slug}`, {\n params: toFetchEventBySlugSearchParams(params),\n })\n .andThen(validateWith(EventSchema)),\n );\n}\n\nexport type FetchEventTagsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchEventTagsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches an event's tags.\n *\n * @throws {@link FetchEventTagsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const tags = await fetchEventTags(client, {\n * id: '12345',\n * });\n *\n * // tags: TagReference[]\n * ```\n */\nexport async function fetchEventTags(\n client: BaseClient,\n request: FetchEventTagsRequest,\n): Promise<TagReference[]> {\n const params = parseUserInput(request, FetchEventTagsRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`events/${params.id}/tags`)\n .andThen(validateWith(FetchEventTagsResponseSchema)),\n );\n}\n\nexport type FetchEventLiveVolumeError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchEventLiveVolumeError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches live volume for an event.\n *\n * @throws {@link FetchEventLiveVolumeError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const volume = await fetchEventLiveVolume(client, {\n * id: '160707',\n * });\n *\n * // volume: LiveVolume[]\n * ```\n */\nexport async function fetchEventLiveVolume(\n client: BaseClient,\n request: FetchEventLiveVolumeRequest,\n): Promise<LiveVolume[]> {\n const params = parseUserInput(request, FetchEventLiveVolumeRequestSchema);\n\n return unwrap(\n client.data\n .get('/live-volume', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(FetchEventLiveVolumeResponseSchema)),\n );\n}\n\nfunction toEventsSearchParams(params: ListEventsParams): URLSearchParams {\n return toSearchParams(\n params,\n snakeCase<ListEventsParams>({\n cursor: 'after_cursor',\n excludeTagIds: 'exclude_tag_id',\n gameIds: 'game_id',\n ids: 'id',\n pageSize: 'limit',\n seriesIds: 'series_id',\n tagIds: 'tag_id',\n }),\n );\n}\n\nfunction toFetchEventByIdSearchParams(\n params: Extract<z.output<typeof FetchEventRequestSchema>, { id: string }>,\n): URLSearchParams {\n return toSearchParams(\n {\n includeBestLines: params.includeBestLines,\n includeChat: params.includeChat,\n includeTemplate: params.includeTemplate,\n locale: params.locale,\n },\n snakeCase(),\n );\n}\n\nfunction toFetchEventBySlugSearchParams(\n params: Extract<\n z.output<typeof FetchEventRequestSchema>,\n { slug: string } | { url: string }\n >,\n): URLSearchParams {\n return toSearchParams(\n {\n includeBestLines: params.includeBestLines,\n includeChat: params.includeChat,\n includeTemplate: params.includeTemplate,\n locale: params.locale,\n },\n snakeCase(),\n );\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n type BuilderVolumeEntry,\n LeaderboardCategorySchema,\n type LeaderboardEntry,\n LeaderboardOrderBySchema,\n ListBuilderLeaderboardResponseSchema,\n ListBuilderVolumeResponseSchema,\n ListTraderLeaderboardResponseSchema,\n TimePeriodSchema,\n type TraderLeaderboardEntry,\n} from '@polymarket/bindings/data';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { toDataSearchParams } from './params';\n\nconst ListBuilderLeaderboardRequestSchema = z.object({\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.default(20),\n timePeriod: TimePeriodSchema.optional(),\n});\n\nconst ListBuilderVolumeRequestSchema = z.object({\n timePeriod: TimePeriodSchema.optional(),\n});\n\nconst ListTraderLeaderboardRequestSchema = z.object({\n category: LeaderboardCategorySchema.optional(),\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.default(20),\n timePeriod: TimePeriodSchema.optional(),\n orderBy: LeaderboardOrderBySchema.optional(),\n user: z.string().optional(),\n userName: z.string().optional(),\n});\n\nexport type ListBuilderLeaderboardRequest = z.input<\n typeof ListBuilderLeaderboardRequestSchema\n>;\nexport type ListBuilderVolumeRequest = z.input<\n typeof ListBuilderVolumeRequestSchema\n>;\nexport type ListTraderLeaderboardRequest = z.input<\n typeof ListTraderLeaderboardRequestSchema\n>;\n\nexport type ListBuilderLeaderboardError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListBuilderLeaderboardError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists builder leaderboard rankings.\n *\n * @throws {@link ListBuilderLeaderboardError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listBuilderLeaderboard(client, {\n * pageSize: 10,\n * timePeriod: 'DAY',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: LeaderboardEntry[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listBuilderLeaderboard(client, {\n * pageSize: 10,\n * timePeriod: 'DAY',\n * });\n *\n * for await (const page of result) {\n * // page.items: LeaderboardEntry[]\n * }\n * ```\n */\nexport function listBuilderLeaderboard(\n client: BaseClient,\n request: ListBuilderLeaderboardRequest = {},\n): Paginated<LeaderboardEntry[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListBuilderLeaderboardRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/v1/builders/leaderboard', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListBuilderLeaderboardResponseSchema))\n .map((builders) => {\n const hasMore = builders.length > decoded.pageSize;\n\n return {\n items: builders.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type ListBuilderVolumeError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListBuilderVolumeError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists daily builder volume entries.\n *\n * @throws {@link ListBuilderVolumeError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const volume = await fetchBuilderVolume(client, {\n * timePeriod: 'DAY',\n * });\n *\n * // volume: BuilderVolumeEntry[]\n * ```\n */\nexport async function fetchBuilderVolume(\n client: BaseClient,\n request: ListBuilderVolumeRequest = {},\n): Promise<BuilderVolumeEntry[]> {\n const params = parseUserInput(request, ListBuilderVolumeRequestSchema);\n\n return unwrap(\n client.data\n .get('/v1/builders/volume', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(ListBuilderVolumeResponseSchema)),\n );\n}\n\nexport type ListTraderLeaderboardError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListTraderLeaderboardError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists trader leaderboard rankings.\n *\n * @throws {@link ListTraderLeaderboardError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listTraderLeaderboard(client, {\n * orderBy: 'PNL',\n * pageSize: 10,\n * timePeriod: 'DAY',\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: TraderLeaderboardEntry[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listTraderLeaderboard(client, {\n * orderBy: 'PNL',\n * pageSize: 10,\n * timePeriod: 'DAY',\n * });\n *\n * for await (const page of result) {\n * // page.items: TraderLeaderboardEntry[]\n * }\n * ```\n */\nexport function listTraderLeaderboard(\n client: BaseClient,\n request: ListTraderLeaderboardRequest = {},\n): Paginated<TraderLeaderboardEntry[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListTraderLeaderboardRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/v1/leaderboard', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListTraderLeaderboardResponseSchema))\n .map((traders) => {\n const hasMore = traders.length > decoded.pageSize;\n\n return {\n items: traders.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n","import {\n ConditionIdSchema,\n IsoDateTimeStringSchema,\n PaginationCursorSchema,\n} from '@polymarket/bindings';\nimport {\n ListMarketHoldersResponseSchema,\n ListMarketPositionsResponseSchema,\n ListOpenInterestResponseSchema,\n type MetaHolder,\n type MetaMarketPosition,\n type OpenInterest,\n} from '@polymarket/bindings/data';\nimport {\n FetchMarketTagsResponseSchema,\n ListMarketsKeysetResponseSchema,\n type Market,\n MarketSchema,\n type TagReference,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { parsePolymarketSlugUrl } from '../polymarket-url';\nimport { validateWith } from '../response';\nimport { snakeCase, toDataSearchParams, toSearchParams } from './params';\n\n// The public markets endpoint forces active=true and archived=false server-side.\nconst ListMarketsRequestSchema = z.object({\n ascending: z.boolean().optional(),\n closed: z.boolean().optional(),\n clobTokenIds: z.array(z.string()).optional(),\n cursor: PaginationCursorSchema.optional(),\n pageSize: PageSizeSchema.optional(),\n conditionIds: z.array(ConditionIdSchema).optional(),\n cyom: z.boolean().optional(),\n decimalized: z.boolean().optional(),\n endDateMax: IsoDateTimeStringSchema.optional(),\n endDateMin: IsoDateTimeStringSchema.optional(),\n gameId: z.string().optional(),\n ids: z.array(z.number().int()).optional(),\n includeTag: z.boolean().optional(),\n liquidityNumMax: z.number().optional(),\n liquidityNumMin: z.number().optional(),\n locale: z.string().optional(),\n marketMakerAddresses: z.array(z.string()).optional(),\n order: z.string().optional(),\n questionIds: z.array(z.string()).optional(),\n relatedTags: z.boolean().optional(),\n rfqEnabled: z.boolean().optional(),\n rewardsMinSize: z.number().optional(),\n slug: z.array(z.string()).optional(),\n sportsMarketTypes: z.array(z.string()).optional(),\n startDateMax: IsoDateTimeStringSchema.optional(),\n startDateMin: IsoDateTimeStringSchema.optional(),\n tagId: z.number().int().optional(),\n tagMatch: z.enum(['any', 'all']).optional(),\n umaResolutionStatus: z.string().optional(),\n volumeNumMax: z.number().optional(),\n volumeNumMin: z.number().optional(),\n});\n\nexport type ListMarketsRequest = z.input<typeof ListMarketsRequestSchema>;\n\nconst FetchMarketByIdRequestSchema = z.object({\n id: z.string(),\n includeTag: z.boolean().optional(),\n locale: z.string().optional(),\n});\n\nconst FetchMarketBySlugRequestSchema = z.object({\n slug: z.string(),\n includeTag: z.boolean().optional(),\n locale: z.string().optional(),\n});\n\nconst FetchMarketByUrlRequestSchema = z.object({\n url: z.string(),\n includeTag: z.boolean().optional(),\n locale: z.string().optional(),\n});\n\nconst FetchMarketRequestSchema = z.union([\n FetchMarketByIdRequestSchema,\n FetchMarketBySlugRequestSchema,\n FetchMarketByUrlRequestSchema,\n]);\n\nexport type FetchMarketRequest = z.input<typeof FetchMarketRequestSchema>;\n\nconst FetchMarketTagsRequestSchema = z.object({\n id: z.string(),\n});\n\nexport type FetchMarketTagsRequest = z.input<\n typeof FetchMarketTagsRequestSchema\n>;\n\nconst ListMarketHoldersRequestSchema = z.object({\n limit: z.number().int().optional(),\n market: z.array(z.string()),\n minBalance: z.number().int().optional(),\n});\n\nconst ListOpenInterestRequestSchema = z.object({\n market: z.array(z.string()).optional(),\n});\n\nconst MarketPositionStatusSchema = z.enum(['OPEN', 'CLOSED', 'ALL']);\nconst MarketPositionSortBySchema = z.enum([\n 'TOKENS',\n 'CASH_PNL',\n 'REALIZED_PNL',\n 'TOTAL_PNL',\n]);\nconst MarketPositionSortDirectionSchema = z.enum(['ASC', 'DESC']);\n\nconst ListMarketPositionsRequestSchema = z.object({\n cursor: PaginationCursorSchema.optional(),\n market: z.string(),\n pageSize: PageSizeSchema.default(20),\n user: z.string().optional(),\n status: MarketPositionStatusSchema.optional(),\n sortBy: MarketPositionSortBySchema.optional(),\n sortDirection: MarketPositionSortDirectionSchema.optional(),\n});\n\nexport type ListMarketHoldersRequest = z.input<\n typeof ListMarketHoldersRequestSchema\n>;\nexport type ListOpenInterestRequest = z.input<\n typeof ListOpenInterestRequestSchema\n>;\nexport type ListMarketPositionsRequest = z.input<\n typeof ListMarketPositionsRequestSchema\n>;\n\ntype ListMarketsParams = z.output<typeof ListMarketsRequestSchema>;\n\nexport type ListMarketsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListMarketsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists markets.\n *\n * @throws {@link ListMarketsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listMarkets(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Market[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listMarkets(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Market[]\n * }\n * ```\n */\nexport function listMarkets(\n client: BaseClient,\n request: ListMarketsRequest = {},\n): Paginated<Market[]> {\n const params = parseUserInput(request, ListMarketsRequestSchema);\n\n return paginate(\n (cursor) =>\n client.gamma\n .get('/markets/keyset', {\n params: toMarketsSearchParams({\n ...params,\n cursor: cursor ?? params.cursor,\n }),\n })\n .andThen(validateWith(ListMarketsKeysetResponseSchema))\n .map((response) => ({\n items: response.items,\n hasMore: response.nextCursor !== undefined,\n nextCursor: response.nextCursor,\n })),\n params.cursor,\n );\n}\n\nexport type FetchMarketError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchMarketError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a market.\n *\n * @throws {@link FetchMarketError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const market = await fetchMarket(client, {\n * id: '12345',\n * });\n *\n * const marketBySlug = await fetchMarket(client, {\n * slug: 'some-market-slug',\n * });\n *\n * const marketByUrl = await fetchMarket(client, {\n * url: 'https://polymarket.com/market/some-market-slug',\n * });\n *\n * // market === Market\n * ```\n */\nexport async function fetchMarket(\n client: BaseClient,\n request: FetchMarketRequest,\n): Promise<Market> {\n const params = parseUserInput(request, FetchMarketRequestSchema);\n\n if ('id' in params) {\n return fetchMarketById(client, params);\n }\n\n if ('url' in params) {\n return fetchMarketBySlug(client, {\n includeTag: params.includeTag,\n locale: params.locale,\n slug: parsePolymarketSlugUrl(params.url, 'market'),\n });\n }\n\n return fetchMarketBySlug(client, params);\n}\n\nexport type FetchMarketTagsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchMarketTagsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a market's tags.\n *\n * @throws {@link FetchMarketTagsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const tags = await fetchMarketTags(client, {\n * id: '12345',\n * });\n *\n * // tags: TagReference[]\n * ```\n */\nexport async function fetchMarketTags(\n client: BaseClient,\n request: FetchMarketTagsRequest,\n): Promise<TagReference[]> {\n const params = parseUserInput(request, FetchMarketTagsRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`markets/${params.id}/tags`)\n .andThen(validateWith(FetchMarketTagsResponseSchema)),\n );\n}\n\nexport type ListMarketHoldersError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListMarketHoldersError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists the top holders for one or more markets.\n *\n * @throws {@link ListMarketHoldersError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const holders = await listMarketHolders(client, {\n * market: ['0xe546672750517f62c45a5a00067481981e62b9c20fa8220203232c9dc8fd2093'],\n * limit: 5,\n * });\n *\n * // holders: MetaHolder[]\n * ```\n */\nexport async function listMarketHolders(\n client: BaseClient,\n request: ListMarketHoldersRequest,\n): Promise<MetaHolder[]> {\n const params = parseUserInput(request, ListMarketHoldersRequestSchema);\n\n return unwrap(\n client.data\n .get('/holders', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(ListMarketHoldersResponseSchema)),\n );\n}\n\nexport type ListOpenInterestError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListOpenInterestError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists open interest for one or more markets.\n *\n * @throws {@link ListOpenInterestError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const openInterest = await listOpenInterest(client, {\n * market: ['0xe546672750517f62c45a5a00067481981e62b9c20fa8220203232c9dc8fd2093'],\n * });\n *\n * // openInterest: OpenInterest[]\n * ```\n */\nexport async function listOpenInterest(\n client: BaseClient,\n request: ListOpenInterestRequest = {},\n): Promise<OpenInterest[]> {\n const params = parseUserInput(request, ListOpenInterestRequestSchema);\n\n return unwrap(\n client.data\n .get('/oi', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(ListOpenInterestResponseSchema)),\n );\n}\n\nexport type ListMarketPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListMarketPositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists positions for a market.\n *\n * @throws {@link ListMarketPositionsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listMarketPositions(client, {\n * market: '0xe546672750517f62c45a5a00067481981e62b9c20fa8220203232c9dc8fd2093',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: MetaMarketPosition[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listMarketPositions(client, {\n * market: '0xe546672750517f62c45a5a00067481981e62b9c20fa8220203232c9dc8fd2093',\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: MetaMarketPosition[]\n * }\n * ```\n */\nexport function listMarketPositions(\n client: BaseClient,\n request: ListMarketPositionsRequest,\n): Paginated<MetaMarketPosition[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListMarketPositionsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/v1/market-positions', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListMarketPositionsResponseSchema))\n .map((positions) => {\n const hasMore = positions.length > decoded.pageSize;\n\n return {\n items: positions.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nfunction toMarketsSearchParams(params: ListMarketsParams): URLSearchParams {\n return toSearchParams(\n params,\n snakeCase<ListMarketsParams>({\n cursor: 'after_cursor',\n ids: 'id',\n marketMakerAddresses: 'market_maker_address',\n pageSize: 'limit',\n }),\n );\n}\n\nasync function fetchMarketBySlug(\n client: BaseClient,\n params: z.output<typeof FetchMarketBySlugRequestSchema>,\n): Promise<Market> {\n return unwrap(\n client.gamma\n .get(`markets/slug/${params.slug}`, {\n params: toSearchParams(\n {\n includeTag: params.includeTag,\n locale: params.locale,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(MarketSchema)),\n );\n}\n\nasync function fetchMarketById(\n client: BaseClient,\n params: z.output<typeof FetchMarketByIdRequestSchema>,\n): Promise<Market> {\n return unwrap(\n client.gamma\n .get(`markets/${params.id}`, {\n params: toSearchParams(\n {\n includeTag: params.includeTag,\n locale: params.locale,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(MarketSchema)),\n );\n}\n","import {\n type CancelOrdersResponse,\n CancelOrdersResponseSchema,\n} from '@polymarket/bindings/clob';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseSecureClient } from '../../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../../errors';\nimport { parseUserInput } from '../../input';\nimport { validateWith } from '../../response';\n\nconst CancelOrderRequestSchema = z.object({\n orderId: z.string(),\n});\n\nconst CancelOrdersRequestSchema = z.object({\n orderIds: z.array(z.string()).min(1).max(3000),\n});\n\nconst CancelMarketOrdersRequestSchema = z\n .object({\n tokenId: z.string().optional(),\n market: z.string().optional(),\n })\n .refine(\n (request) => request.market !== undefined || request.tokenId !== undefined,\n {\n message: 'At least one of market or tokenId is required.',\n path: ['market'],\n },\n );\n\nexport type CancelOrderRequest = z.input<typeof CancelOrderRequestSchema>;\n\nexport type CancelOrderError =\n | RequestRejectedError\n | RateLimitError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const CancelOrderError = makeErrorGuard(\n RequestRejectedError,\n RateLimitError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Cancels a single open order for the authenticated account.\n *\n * @throws {@link CancelOrderError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const response = await cancelOrder(client, {\n * orderId: '123',\n * });\n *\n * // response.canceled: string[]\n * ```\n */\nexport async function cancelOrder(\n client: BaseSecureClient,\n request: CancelOrderRequest,\n): Promise<CancelOrdersResponse> {\n const params = parseUserInput(request, CancelOrderRequestSchema);\n\n return cancel(client, '/order', {\n orderID: params.orderId,\n });\n}\n\nexport type CancelOrdersRequest = z.input<typeof CancelOrdersRequestSchema>;\nexport type CancelOrdersError =\n | RequestRejectedError\n | RateLimitError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const CancelOrdersError = makeErrorGuard(\n RequestRejectedError,\n RateLimitError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Cancels multiple open orders for the authenticated account.\n *\n * @throws {@link CancelOrdersError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const response = await cancelOrders(client, {\n * orderIds: ['1', '2'],\n * });\n *\n * // response.canceled: string[]\n * ```\n */\nexport async function cancelOrders(\n client: BaseSecureClient,\n request: CancelOrdersRequest,\n): Promise<CancelOrdersResponse> {\n const params = parseUserInput(request, CancelOrdersRequestSchema);\n\n return cancel(client, '/orders', params.orderIds);\n}\n\nexport type CancelAllError =\n | RequestRejectedError\n | RateLimitError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const CancelAllError = makeErrorGuard(\n RequestRejectedError,\n RateLimitError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Cancels all open orders for the authenticated account.\n *\n * @throws {@link CancelAllError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const response = await cancelAll(client);\n *\n * // response.canceled: string[]\n * ```\n */\nexport async function cancelAll(\n client: BaseSecureClient,\n): Promise<CancelOrdersResponse> {\n return cancel(client, '/cancel-all');\n}\n\nexport type CancelMarketOrdersRequest = z.input<\n typeof CancelMarketOrdersRequestSchema\n>;\nexport type CancelMarketOrdersError =\n | RequestRejectedError\n | RateLimitError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const CancelMarketOrdersError = makeErrorGuard(\n RequestRejectedError,\n RateLimitError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Cancels all open orders for the authenticated account that match the market\n * or token filter.\n *\n * @throws {@link CancelMarketOrdersError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const response = await cancelMarketOrders(client, {\n * market: '0x0000000000000000000000000000000000000000000000000000000000000001',\n * });\n *\n * // response.canceled: string[]\n * ```\n */\nexport async function cancelMarketOrders(\n client: BaseSecureClient,\n request: CancelMarketOrdersRequest,\n): Promise<CancelOrdersResponse> {\n const params = parseUserInput(request, CancelMarketOrdersRequestSchema);\n\n return cancel(client, '/cancel-market-orders', {\n asset_id: params.tokenId,\n market: params.market,\n });\n}\n\nasync function cancel(\n client: BaseSecureClient,\n path: string,\n payload?: unknown,\n): Promise<CancelOrdersResponse> {\n return unwrap(\n client.secureClob\n .del(path, {\n json: payload,\n })\n .andThen(validateWith(CancelOrdersResponseSchema)),\n );\n}\n","import {\n OrderSide,\n OrderType,\n PositiveDecimalNumberSchema,\n type TickSizeValue,\n} from '@polymarket/bindings';\nimport type { OrderBookLevel } from '@polymarket/bindings/clob';\nimport { invariant } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../../clients';\nimport {\n InsufficientLiquidityError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../../errors';\nimport { parseUserInput } from '../../input';\nimport { fetchOrderBook, fetchTickSize } from '../clob';\n\nconst BaseEstimateMarketPriceRequestSchema = z.object({\n tokenId: z.string(),\n orderType: z\n .union([z.literal(OrderType.FAK), z.literal(OrderType.FOK)])\n .default(OrderType.FOK),\n});\n\nexport type EstimateMarketBuyPriceRequest = {\n /** TokenID of the Conditional token asset to estimate. */\n tokenId: string;\n\n /** Buy side of the estimate. */\n side: OrderSide.BUY;\n\n /** Desired USD buy notional to match against current ask depth. */\n amount: number | string;\n\n /**\n * Market order execution type to model.\n *\n * @defaultValue OrderType.FOK\n */\n orderType?: OrderType.FAK | OrderType.FOK;\n};\n\nexport type EstimateMarketSellPriceRequest = {\n /** TokenID of the Conditional token asset to estimate. */\n tokenId: string;\n\n /** Sell side of the estimate. */\n side: OrderSide.SELL;\n\n /** Number of conditional-token shares to match against current bid depth. */\n shares: number | string;\n\n /**\n * Market order execution type to model.\n *\n * @defaultValue OrderType.FOK\n */\n orderType?: OrderType.FAK | OrderType.FOK;\n};\n\nexport type EstimateMarketPriceRequest =\n | EstimateMarketBuyPriceRequest\n | EstimateMarketSellPriceRequest;\n\nconst EstimateMarketPriceRequestSchema = z.discriminatedUnion('side', [\n BaseEstimateMarketPriceRequestSchema.extend({\n side: z.literal(OrderSide.BUY),\n amount: PositiveDecimalNumberSchema,\n }),\n BaseEstimateMarketPriceRequestSchema.extend({\n side: z.literal(OrderSide.SELL),\n shares: PositiveDecimalNumberSchema,\n }),\n]) satisfies z.ZodType<EstimateMarketPriceRequest>;\n\nexport type EstimateMarketPriceError =\n | InsufficientLiquidityError\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const EstimateMarketPriceError = makeErrorGuard(\n InsufficientLiquidityError,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Estimates the price level a market order would cross at current book depth.\n *\n * For BUY orders, `amount` is the amount of collateral to spend. For SELL\n * orders, `shares` is the number of shares to sell.\n *\n * When `orderType` is `FOK`, this estimate requires enough resting liquidity to\n * satisfy the full requested amount and throws if the book is too thin. When\n * `orderType` is `FAK`, the estimate may fall back to the best currently\n * available price level even if the full requested amount cannot fill, so it\n * should be treated as a partial-fill execution estimate rather than a full-fill\n * guarantee.\n *\n * @example\n * ```ts\n * const price = await estimateMarketPrice(client, {\n * tokenId:\n * '8501497159083948713316135768103773293754490207922884688769443031624417212426',\n * side: OrderSide.BUY,\n * amount: 10,\n * });\n *\n * // price === 0.53\n * ```\n *\n * @throws {@link EstimateMarketPriceError}\n * Thrown on failure.\n */\nexport async function estimateMarketPrice(\n client: BaseClient,\n request: EstimateMarketPriceRequest,\n): Promise<number> {\n const params = parseUserInput(request, EstimateMarketPriceRequestSchema);\n const tickSize = await fetchTickSize(client, {\n tokenId: params.tokenId,\n });\n const amount = params.side === OrderSide.BUY ? params.amount : params.shares;\n\n return resolveEstimatedMarketPrice(client, {\n amount,\n orderType: params.orderType,\n side: params.side,\n tickSize,\n tokenId: params.tokenId,\n });\n}\n\n/** @internal */\nexport async function resolveEstimatedMarketPrice(\n client: BaseClient,\n params: {\n amount: number;\n orderType: OrderType;\n side: OrderSide;\n tokenId: string;\n tickSize: TickSizeValue;\n },\n): Promise<number> {\n const orderBook = await fetchOrderBook(client, {\n tokenId: params.tokenId,\n });\n\n const price =\n params.side === OrderSide.BUY\n ? calculateBuyMarketPrice(orderBook.asks, params.amount, params.orderType)\n : calculateSellMarketPrice(\n orderBook.bids,\n params.amount,\n params.orderType,\n );\n\n invariant(\n isValidPrice(price, params.tickSize),\n `Resolved market price fell outside the valid range for tick size ${params.tickSize}.`,\n );\n\n return price;\n}\n\nfunction isValidPrice(price: number, tickSize: TickSizeValue): boolean {\n return price >= tickSize && price <= 1 - tickSize;\n}\n\nfunction calculateBuyMarketPrice(\n positions: OrderBookLevel[],\n amountToMatch: number,\n orderType: OrderType,\n): number {\n if (positions.length === 0) {\n throw new InsufficientLiquidityError('No resting liquidity.');\n }\n\n let sum = 0;\n\n for (let index = positions.length - 1; index >= 0; index -= 1) {\n const position = positions[index];\n\n if (position === undefined) {\n continue;\n }\n\n sum += Number.parseFloat(position.size) * Number.parseFloat(position.price);\n\n if (sum >= amountToMatch) {\n return Number.parseFloat(position.price);\n }\n }\n\n if (orderType === OrderType.FOK) {\n throw new InsufficientLiquidityError(\n 'Insufficient liquidity for full fill.',\n );\n }\n\n // biome-ignore lint/style/noNonNullAssertion: Checked for emptiness above.\n const bestPosition = positions[0]!;\n\n return Number.parseFloat(bestPosition.price);\n}\n\nfunction calculateSellMarketPrice(\n positions: OrderBookLevel[],\n amountToMatch: number,\n orderType: OrderType,\n): number {\n if (positions.length === 0) {\n throw new InsufficientLiquidityError('No resting liquidity.');\n }\n\n let sum = 0;\n\n for (let index = positions.length - 1; index >= 0; index -= 1) {\n const position = positions[index];\n\n if (position === undefined) {\n continue;\n }\n\n sum += Number.parseFloat(position.size);\n\n if (sum >= amountToMatch) {\n return Number.parseFloat(position.price);\n }\n }\n\n if (orderType === OrderType.FOK) {\n throw new InsufficientLiquidityError(\n 'Insufficient liquidity for full fill.',\n );\n }\n\n // biome-ignore lint/style/noNonNullAssertion: Checked for emptiness above.\n const bestPosition = positions[0]!;\n\n return Number.parseFloat(bestPosition.price);\n}\n","import { OrderType } from '@polymarket/bindings';\nimport {\n type OrderResponse,\n OrderResponseSchema,\n type OrderResponses,\n OrderResponsesSchema,\n} from '@polymarket/bindings/clob';\nimport { invariant, unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseSecureClient } from '../../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../../errors';\nimport { parseUserInput } from '../../input';\nimport { validateWith } from '../../response';\nimport type { SignedOrder } from './types';\n\nconst PostOrdersRequestSchema = z.array(z.custom<SignedOrder>()).min(1).max(15);\n\nexport type PostOrdersRequest = z.input<typeof PostOrdersRequestSchema>;\n\nexport type PostOrderError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError;\nexport const PostOrderError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n);\n\nexport type PostOrdersError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PostOrdersError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Posts a signed order for the authenticated account.\n *\n * @example\n * ```ts\n * const order = await client.createMarketOrder({\n * amount: 10,\n * side: OrderSide.BUY,\n * tokenId: '123',\n * });\n * const response = await postOrder(client)(order);\n * ```\n *\n * @throws {@link PostOrderError}\n * Thrown on failure.\n */\nexport function postOrder(\n client: BaseSecureClient,\n): (order: SignedOrder) => Promise<OrderResponse> {\n return async function postSignedOrder(order: SignedOrder) {\n const payload = createSendOrderPayload(client, order);\n\n return unwrap(\n client.secureClob\n .post('/order', {\n json: payload,\n })\n .andThen(validateWith(OrderResponseSchema)),\n );\n };\n}\n\n/**\n * Posts multiple signed orders for the authenticated account.\n *\n * @remarks\n * Accepts between 1 and 15 orders, matching the current service limit.\n *\n * @example\n * ```ts\n * const responses = await postOrders(client)([firstSignedOrder, secondSignedOrder]);\n * ```\n *\n * @throws {@link PostOrdersError}\n * Thrown on failure.\n */\nexport function postOrders(\n client: BaseSecureClient,\n): (orders: PostOrdersRequest) => Promise<OrderResponses>;\nexport function postOrders(\n client: BaseSecureClient,\n): (orders: PostOrdersRequest) => Promise<OrderResponses> {\n return async function postSignedOrders(orders: PostOrdersRequest) {\n const validatedOrders = parseUserInput(orders, PostOrdersRequestSchema);\n const payload = validatedOrders.map((order) =>\n createSendOrderPayload(client, order),\n );\n\n return unwrap(\n client.secureClob\n .post('/orders', {\n json: payload,\n })\n .andThen(validateWith(OrderResponsesSchema)),\n );\n };\n}\n\nfunction createSendOrderPayload(client: BaseSecureClient, order: SignedOrder) {\n invariant(\n order.postOnly !== true ||\n order.orderType === OrderType.GTC ||\n order.orderType === OrderType.GTD,\n 'Post-only orders are only supported for GTC and GTD order types.',\n );\n\n return {\n deferExec: false,\n order: {\n builder: order.builder,\n expiration: `${order.expiration}`,\n maker: order.maker,\n makerAmount: order.makerAmount,\n metadata: order.metadata,\n salt: Number.parseInt(order.salt, 10),\n side: order.side,\n signature: order.signature,\n signatureType: order.signatureType,\n signer: order.signer,\n takerAmount: order.takerAmount,\n timestamp: order.timestamp,\n tokenId: order.tokenId,\n },\n orderType: order.orderType,\n owner: client.credentials.key,\n ...(order.postOnly === true ? { postOnly: true } : {}),\n };\n}\n","import type { TickSizeValue } from '@polymarket/bindings';\nimport type { EvmAddress } from '@polymarket/types';\nimport { invariant } from '@polymarket/types';\nimport type { BaseSecureClient } from '../../clients';\n\nexport type RoundingConfig = {\n amount: number;\n price: number;\n size: number;\n};\n\nexport function resolveRoundingConfig(tickSize: TickSizeValue): RoundingConfig {\n switch (tickSize) {\n case 0.1:\n return { amount: 3, price: 1, size: 2 };\n case 0.01:\n return { amount: 4, price: 2, size: 2 };\n case 0.001:\n return { amount: 5, price: 3, size: 2 };\n case 0.0001:\n return { amount: 6, price: 4, size: 2 };\n }\n\n invariant(false, `Unsupported tick size: ${tickSize}`);\n}\n\nexport function resolveExchangeAddress(\n client: BaseSecureClient,\n negRisk: boolean,\n): EvmAddress {\n return negRisk\n ? client.environment.negRiskExchange\n : client.environment.standardExchange;\n}\n","const COLLATERAL_TOKEN_DECIMALS = 6;\n\nexport function parseAmount(value: number): bigint {\n return BigInt(Math.round(value * 10 ** COLLATERAL_TOKEN_DECIMALS));\n}\n\nexport function roundDown(value: number, decimals: number): number {\n if (decimalPlaces(value) <= decimals) {\n return value;\n }\n\n return Math.floor(value * 10 ** decimals) / 10 ** decimals;\n}\n\nexport function roundUp(value: number, decimals: number): number {\n if (decimalPlaces(value) <= decimals) {\n return value;\n }\n\n return Math.ceil(value * 10 ** decimals) / 10 ** decimals;\n}\n\nexport function roundNormal(value: number, decimals: number): number {\n if (decimalPlaces(value) <= decimals) {\n return value;\n }\n\n return Math.round(value * 10 ** decimals) / 10 ** decimals;\n}\n\nexport function decimalPlaces(value: number | string): number {\n if (typeof value === 'number' && Number.isInteger(value)) {\n return 0;\n }\n\n const [mantissa = '', exponent] = value.toString().toLowerCase().split('e');\n const [, fractionalPart = ''] = mantissa.split('.');\n const fractionalPlaces = fractionalPart.length;\n\n if (exponent === undefined) {\n return fractionalPlaces;\n }\n\n const exponentValue = Number.parseInt(exponent, 10);\n\n return Math.max(0, fractionalPlaces - exponentValue);\n}\n","import {\n BuilderCodeSchema,\n OrderSide,\n OrderSideSchema,\n OrderType,\n PositiveDecimalNumberSchema,\n type TickSizeValue,\n TokenIdSchema,\n} from '@polymarket/bindings';\nimport type { EvmAddress } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseSecureClient } from '../../clients';\nimport { UserInputError } from '../../errors';\nimport { fetchNegRisk, fetchTickSize } from '../clob';\nimport { resolveExchangeAddress, resolveRoundingConfig } from './context';\nimport {\n decimalPlaces,\n parseAmount,\n roundDown,\n roundNormal,\n roundUp,\n} from './math';\nimport type { OrderDraft, PrepareLimitOrderRequest } from './types';\n\nexport const PrepareLimitOrderParamsSchema = z\n .strictObject({\n tokenId: TokenIdSchema,\n price: PositiveDecimalNumberSchema,\n size: PositiveDecimalNumberSchema,\n side: OrderSideSchema,\n builderCode: BuilderCodeSchema.optional(),\n postOnly: z.boolean().default(false),\n expiration: z.number().int().nonnegative().optional(),\n })\n .superRefine((params, context) => {\n if (params.expiration !== undefined) {\n const minimumExpiration = Math.floor(Date.now() / 1000) + 60;\n\n if (params.expiration <= minimumExpiration) {\n context.addIssue({\n code: 'custom',\n message: 'Expiration must be at least 60 seconds in the future.',\n path: ['expiration'],\n });\n }\n }\n }) satisfies z.ZodType<PrepareLimitOrderRequest>;\n\nexport type PrepareLimitOrderDraftParams = z.output<\n typeof PrepareLimitOrderParamsSchema\n>;\n\ntype ResolveLimitOrderContextParams = {\n price: number;\n tokenId: string;\n};\n\nexport async function prepareLimitOrderDraft(\n client: BaseSecureClient,\n params: PrepareLimitOrderDraftParams,\n): Promise<OrderDraft> {\n const context = await resolveLimitOrderContext(client, {\n price: params.price,\n tokenId: params.tokenId,\n });\n const amounts = computeLimitOrderAmounts({\n price: context.price,\n side: params.side,\n size: params.size,\n tickSize: context.tickSize,\n });\n\n return {\n builderCode: params.builderCode,\n chainId: client.environment.chainId,\n exchangeAddress: context.exchangeAddress,\n expiration: params.expiration ?? 0,\n funderAddress: context.funderAddress,\n offeredAmount: amounts.offeredAmount,\n orderType: params.expiration === undefined ? OrderType.GTC : OrderType.GTD,\n side: params.side,\n signer: context.signerAddress,\n requestedAmount: amounts.requestedAmount,\n tokenId: params.tokenId,\n };\n}\n\ntype LimitOrderContext = {\n exchangeAddress: EvmAddress;\n funderAddress: EvmAddress;\n negRisk: boolean;\n price: number;\n signerAddress: EvmAddress;\n tickSize: TickSizeValue;\n};\n\nasync function resolveLimitOrderContext(\n client: BaseSecureClient,\n params: ResolveLimitOrderContextParams,\n): Promise<LimitOrderContext> {\n const account = client.account;\n const tickSize = await fetchTickSize(client, {\n tokenId: params.tokenId,\n });\n const negRisk = await fetchNegRisk(client, {\n tokenId: params.tokenId,\n });\n\n return {\n exchangeAddress: resolveExchangeAddress(client, negRisk),\n funderAddress: account.wallet,\n negRisk,\n price: resolvePrice(params.price, tickSize),\n signerAddress: account.signer,\n tickSize,\n };\n}\n\nfunction computeLimitOrderAmounts(params: {\n price: number;\n side: OrderSide;\n size: number;\n tickSize: TickSizeValue;\n}): {\n offeredAmount: bigint;\n requestedAmount: bigint;\n} {\n const roundConfig = resolveRoundingConfig(params.tickSize);\n const rawPrice = roundNormal(params.price, roundConfig.price);\n\n if (params.side === OrderSide.BUY) {\n const rawTakerAmount = roundDown(params.size, roundConfig.size);\n let rawMakerAmount = rawTakerAmount * rawPrice;\n\n if (decimalPlaces(rawMakerAmount) > roundConfig.amount) {\n rawMakerAmount = roundUp(rawMakerAmount, roundConfig.amount + 4);\n\n if (decimalPlaces(rawMakerAmount) > roundConfig.amount) {\n rawMakerAmount = roundDown(rawMakerAmount, roundConfig.amount);\n }\n }\n\n return {\n offeredAmount: parseAmount(rawMakerAmount),\n requestedAmount: parseAmount(rawTakerAmount),\n };\n }\n\n const rawMakerAmount = roundDown(params.size, roundConfig.size);\n let rawTakerAmount = rawMakerAmount * rawPrice;\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundUp(rawTakerAmount, roundConfig.amount + 4);\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundDown(rawTakerAmount, roundConfig.amount);\n }\n }\n\n return {\n offeredAmount: parseAmount(rawMakerAmount),\n requestedAmount: parseAmount(rawTakerAmount),\n };\n}\n\nfunction resolvePrice(price: number, tickSize: TickSizeValue): number {\n const roundConfig = resolveRoundingConfig(tickSize);\n\n if (price < tickSize || price > 1 - tickSize) {\n throw new UserInputError(\n `Price must be between ${tickSize} and ${1 - tickSize} for tick size ${tickSize}.`,\n );\n }\n\n if (decimalPlaces(price) > roundConfig.price) {\n throw new UserInputError(\n `Price must conform to tick size ${tickSize} with at most ${roundConfig.price} decimal places.`,\n );\n }\n\n return roundNormal(price, roundConfig.price);\n}\n","import {\n type BuilderCode,\n BuilderCodeSchema,\n OrderSide,\n OrderType,\n PositiveDecimalNumberSchema,\n type TickSizeValue,\n TokenIdSchema,\n} from '@polymarket/bindings';\nimport type { EvmAddress } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseSecureClient } from '../../clients';\nimport {\n fetchBuilderFeeRates,\n fetchMarketInfo,\n fetchNegRisk,\n fetchTickSize,\n resolveConditionByToken,\n} from '../clob';\nimport { resolveExchangeAddress, resolveRoundingConfig } from './context';\nimport { resolveEstimatedMarketPrice } from './estimate';\nimport { decimalPlaces, parseAmount, roundDown, roundUp } from './math';\nimport type { OrderDraft, PrepareMarketOrderRequest } from './types';\n\nconst BasePrepareMarketOrderParamsSchema = z.object({\n tokenId: TokenIdSchema,\n builderCode: BuilderCodeSchema.optional(),\n orderType: z\n .union([z.literal(OrderType.FAK), z.literal(OrderType.FOK)])\n .default(OrderType.FAK),\n});\n\nexport const PrepareMarketOrderParamsSchema = z.discriminatedUnion('side', [\n BasePrepareMarketOrderParamsSchema.extend({\n side: z.literal(OrderSide.BUY),\n amount: PositiveDecimalNumberSchema,\n maxSpend: PositiveDecimalNumberSchema.optional(),\n }),\n BasePrepareMarketOrderParamsSchema.extend({\n side: z.literal(OrderSide.SELL),\n shares: PositiveDecimalNumberSchema,\n }),\n]) satisfies z.ZodType<PrepareMarketOrderRequest>;\n\nexport type PrepareMarketOrderDraftParams = z.output<\n typeof PrepareMarketOrderParamsSchema\n>;\n\nexport async function prepareMarketOrderDraft(\n client: BaseSecureClient,\n params: PrepareMarketOrderDraftParams,\n): Promise<OrderDraft> {\n const context = await resolveMarketOrderContext(client, params);\n const amounts = computeMarketOrderAmounts({\n amount: context.resolvedAmount,\n price: context.price,\n side: params.side,\n tickSize: context.tickSize,\n });\n\n return {\n builderCode: params.builderCode,\n chainId: client.environment.chainId,\n exchangeAddress: context.exchangeAddress,\n expiration: 0,\n funderAddress: context.funderAddress,\n offeredAmount: amounts.offeredAmount,\n orderType: params.orderType,\n side: params.side,\n signer: context.signerAddress,\n requestedAmount: amounts.requestedAmount,\n tokenId: params.tokenId,\n };\n}\n\ntype ResolveMarketOrderAmountParams = {\n amount: number;\n builderCode?: BuilderCode;\n maxSpend?: number;\n price: number;\n side: OrderSide;\n tokenId: string;\n};\n\ntype MarketOrderContext = {\n exchangeAddress: EvmAddress;\n funderAddress: EvmAddress;\n negRisk: boolean;\n price: number;\n resolvedAmount: number;\n signerAddress: EvmAddress;\n tickSize: TickSizeValue;\n};\n\nasync function resolveMarketOrderContext(\n client: BaseSecureClient,\n params: PrepareMarketOrderDraftParams,\n): Promise<MarketOrderContext> {\n const account = client.account;\n const tickSize = await fetchTickSize(client, {\n tokenId: params.tokenId,\n });\n const amount = params.side === OrderSide.BUY ? params.amount : params.shares;\n const price = await resolveEstimatedMarketPrice(client, {\n amount,\n orderType: params.orderType,\n side: params.side,\n tickSize,\n tokenId: params.tokenId,\n });\n const negRisk = await fetchNegRisk(client, {\n tokenId: params.tokenId,\n });\n const resolvedAmount = await resolveMarketOrderAmount(client, {\n amount,\n builderCode: params.builderCode,\n maxSpend: params.side === OrderSide.BUY ? params.maxSpend : undefined,\n price,\n side: params.side,\n tokenId: params.tokenId,\n });\n\n return {\n exchangeAddress: resolveExchangeAddress(client, negRisk),\n funderAddress: account.wallet,\n negRisk,\n price,\n resolvedAmount,\n signerAddress: account.signer,\n tickSize,\n };\n}\n\nfunction computeMarketOrderAmounts(params: {\n amount: number;\n price: number;\n side: OrderSide;\n tickSize: TickSizeValue;\n}): {\n offeredAmount: bigint;\n requestedAmount: bigint;\n} {\n const roundConfig = resolveRoundingConfig(params.tickSize);\n const rawPrice = roundDown(params.price, roundConfig.price);\n const rawMakerAmount = roundDown(params.amount, roundConfig.size);\n\n if (params.side === OrderSide.BUY) {\n let rawTakerAmount = rawMakerAmount / rawPrice;\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundUp(rawTakerAmount, roundConfig.amount + 4);\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundDown(rawTakerAmount, roundConfig.amount);\n }\n }\n\n return {\n offeredAmount: parseAmount(rawMakerAmount),\n requestedAmount: parseAmount(rawTakerAmount),\n };\n }\n\n let rawTakerAmount = rawMakerAmount * rawPrice;\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundUp(rawTakerAmount, roundConfig.amount + 4);\n\n if (decimalPlaces(rawTakerAmount) > roundConfig.amount) {\n rawTakerAmount = roundDown(rawTakerAmount, roundConfig.amount);\n }\n }\n\n return {\n offeredAmount: parseAmount(rawMakerAmount),\n requestedAmount: parseAmount(rawTakerAmount),\n };\n}\n\nasync function resolveMarketOrderAmount(\n client: BaseSecureClient,\n params: ResolveMarketOrderAmountParams,\n): Promise<number> {\n if (params.side !== OrderSide.BUY || params.maxSpend === undefined) {\n return params.amount;\n }\n\n const [feeInfo, builderTakerFeeRate] = await Promise.all([\n fetchMarketFeeInfo(client, params.tokenId),\n fetchBuilderTakerFeeRate(client, params.builderCode),\n ]);\n\n return adjustBuyAmountForFees({\n amount: params.amount,\n builderTakerFeeRate,\n platformFeeExponent: feeInfo.exponent,\n platformFeeRate: feeInfo.rate,\n maxSpend: params.maxSpend,\n price: params.price,\n });\n}\n\ntype MarketFeeInfo = {\n rate: number;\n exponent: number;\n};\n\nasync function fetchMarketFeeInfo(\n client: BaseSecureClient,\n tokenId: string,\n): Promise<MarketFeeInfo> {\n const conditionId = await resolveConditionByToken(client, { tokenId });\n const marketInfo = await fetchMarketInfo(client, {\n conditionId,\n });\n\n return marketInfo.feeInfo;\n}\n\nasync function fetchBuilderTakerFeeRate(\n client: BaseSecureClient,\n builderCode: BuilderCode | undefined,\n): Promise<number> {\n if (builderCode === undefined) {\n return 0;\n }\n\n const builderFees = await fetchBuilderFeeRates(client, { builderCode });\n\n return builderFees.taker;\n}\n\nexport function adjustBuyAmountForFees(params: {\n amount: number;\n price: number;\n maxSpend: number;\n platformFeeRate: number;\n platformFeeExponent: number;\n builderTakerFeeRate: number;\n}): number {\n const platformFeeRate =\n params.platformFeeRate *\n (params.price * (1 - params.price)) ** params.platformFeeExponent;\n const platformFee = (params.amount / params.price) * platformFeeRate;\n const totalCost =\n params.amount + platformFee + params.amount * params.builderTakerFeeRate;\n\n if (params.maxSpend <= totalCost) {\n return (\n params.maxSpend /\n (1 + platformFeeRate / params.price + params.builderTakerFeeRate)\n );\n }\n\n return params.amount;\n}\n","import { SignatureType } from '@polymarket/bindings/clob';\nimport type { HexString } from '@polymarket/types';\nimport type { AccountIdentity } from '../../wallet';\nimport { toSignatureType } from '../../wallet';\nimport type { OrderDraft, SignedOrder, UnsignedOrder } from './types';\n\nconst BYTES32_ZERO =\n '0x0000000000000000000000000000000000000000000000000000000000000000' satisfies HexString;\n\nexport function createUnsignedOrder(\n order: OrderDraft,\n account: AccountIdentity,\n): UnsignedOrder {\n const signatureType = toSignatureType(account.walletType);\n\n return {\n builder: order.builderCode ?? BYTES32_ZERO,\n chainId: order.chainId,\n exchangeAddress: order.exchangeAddress,\n expiration: order.expiration,\n maker: order.funderAddress,\n makerAmount: order.offeredAmount.toString(),\n metadata: BYTES32_ZERO,\n orderType: order.orderType,\n salt: generateOrderSalt().toString(),\n side: order.side,\n signatureType,\n signer:\n signatureType === SignatureType.POLY_1271 ? account.wallet : order.signer,\n takerAmount: order.requestedAmount.toString(),\n timestamp: Date.now().toString(),\n tokenId: order.tokenId,\n };\n}\n\nexport function createSignedOrder(\n order: UnsignedOrder,\n signature: SignedOrder['signature'],\n): SignedOrder {\n const {\n chainId: _chainId,\n exchangeAddress: _exchangeAddress,\n ...signedFields\n } = order;\n\n return {\n ...signedFields,\n signature,\n };\n}\n\nfunction generateOrderSalt(): bigint {\n const bytes = new Uint8Array(8);\n\n globalThis.crypto.getRandomValues(bytes);\n\n const value = BigInt(\n `0x${Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('')}`,\n );\n\n // Cap the salt to 53 bits (Number.MAX_SAFE_INTEGER == 2^53 - 1).\n //\n // The CLOB wire contract expects `salt` as a JSON number, so the post\n // pipeline coerces this string through `Number.parseInt` before sending.\n // JavaScript `number` is an IEEE-754 double and can only represent integers\n // exactly up to 2^53 - 1; anything larger is silently rounded. The signature,\n // however, is produced over the original (un-rounded) salt via `BigInt`, so\n // any rounding on the wire side causes the server to reconstruct a different\n // EIP-712 hash and reject the order with \"invalid signature\".\n //\n // 53 bits is still ~9.0e15 of collision space (vastly more than the legacy\n // `Math.random() * Date.now()` salt), and keeps the wire round-trip lossless.\n return value & ((1n << 53n) - 1n);\n}\n","import { OrderSide } from '@polymarket/bindings';\nimport { SignatureType } from '@polymarket/bindings/clob';\nimport {\n type Erc1271Signature,\n type EvmAddress,\n type EvmSignature,\n expectErc1271Signature,\n expectHexString,\n type HexString,\n} from '@polymarket/types';\nimport { AbiParameters, Bytes, Hash } from 'ox';\nimport type { TypedDataField, TypedDataPayload } from '../../types';\nimport type { UnsignedOrder } from './types';\n\nconst EIP712_DOMAIN: readonly TypedDataField[] = [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n];\n\nconst ORDER_STRUCTURE: readonly TypedDataField[] = [\n { name: 'salt', type: 'uint256' },\n { name: 'maker', type: 'address' },\n { name: 'signer', type: 'address' },\n { name: 'tokenId', type: 'uint256' },\n { name: 'makerAmount', type: 'uint256' },\n { name: 'takerAmount', type: 'uint256' },\n { name: 'side', type: 'uint8' },\n { name: 'signatureType', type: 'uint8' },\n { name: 'timestamp', type: 'uint256' },\n { name: 'metadata', type: 'bytes32' },\n { name: 'builder', type: 'bytes32' },\n];\n\nconst TYPED_DATA_SIGN_STRUCTURE: readonly TypedDataField[] = [\n { name: 'contents', type: 'Order' },\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n { name: 'salt', type: 'bytes32' },\n];\n\nconst PROTOCOL_NAME = 'Polymarket CTF Exchange';\nconst PROTOCOL_VERSION = '2';\nconst DEPOSIT_WALLET_DOMAIN_NAME = 'DepositWallet';\nconst DEPOSIT_WALLET_DOMAIN_VERSION = '1';\nconst BYTES32_ZERO =\n '0x0000000000000000000000000000000000000000000000000000000000000000';\nconst ORDER_TYPE_STRING =\n 'Order(uint256 salt,address maker,address signer,uint256 tokenId,uint256 makerAmount,uint256 takerAmount,uint8 side,uint8 signatureType,uint256 timestamp,bytes32 metadata,bytes32 builder)';\nconst ORDER_TYPE_HASH = Hash.keccak256(Bytes.fromString(ORDER_TYPE_STRING), {\n as: 'Hex',\n});\nconst DOMAIN_TYPE_HASH = Hash.keccak256(\n Bytes.fromString(\n 'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)',\n ),\n { as: 'Hex' },\n);\nconst PROTOCOL_NAME_HASH = Hash.keccak256(Bytes.fromString(PROTOCOL_NAME), {\n as: 'Hex',\n});\nconst PROTOCOL_VERSION_HASH = Hash.keccak256(\n Bytes.fromString(PROTOCOL_VERSION),\n { as: 'Hex' },\n);\n\ntype OrderTypedDataMessage = {\n builder: HexString;\n maker: EvmAddress;\n makerAmount: bigint;\n metadata: HexString;\n salt: bigint;\n side: number;\n signatureType: UnsignedOrder['signatureType'];\n signer: EvmAddress;\n takerAmount: bigint;\n timestamp: bigint;\n tokenId: bigint;\n};\n\nfunction createLegacyOrderTypedDataPayload(\n order: UnsignedOrder,\n): TypedDataPayload {\n return {\n domain: {\n chainId: order.chainId,\n name: PROTOCOL_NAME,\n verifyingContract: order.exchangeAddress,\n version: PROTOCOL_VERSION,\n },\n message: createOrderTypedDataMessage(order),\n primaryType: 'Order',\n types: {\n EIP712Domain: EIP712_DOMAIN,\n Order: ORDER_STRUCTURE,\n },\n };\n}\n\nexport function createOrderTypedDataPayload(\n order: UnsignedOrder,\n): TypedDataPayload {\n const orderPayload = createLegacyOrderTypedDataPayload(order);\n\n if (order.signatureType !== SignatureType.POLY_1271) {\n return orderPayload;\n }\n\n return {\n domain: {\n chainId: order.chainId,\n name: PROTOCOL_NAME,\n verifyingContract: order.exchangeAddress,\n version: PROTOCOL_VERSION,\n },\n message: {\n chainId: order.chainId,\n contents: orderPayload.message,\n name: DEPOSIT_WALLET_DOMAIN_NAME,\n salt: BYTES32_ZERO,\n verifyingContract: order.signer,\n version: DEPOSIT_WALLET_DOMAIN_VERSION,\n },\n primaryType: 'TypedDataSign',\n types: {\n Order: ORDER_STRUCTURE,\n TypedDataSign: TYPED_DATA_SIGN_STRUCTURE,\n },\n };\n}\n\nexport function createOrderSignature(\n order: UnsignedOrder,\n signature: EvmSignature,\n): EvmSignature | Erc1271Signature {\n if (order.signatureType !== SignatureType.POLY_1271) {\n return signature;\n }\n\n const contentsType = Bytes.toHex(Bytes.fromString(ORDER_TYPE_STRING));\n const contentsTypeLength = ORDER_TYPE_STRING.length\n .toString(16)\n .padStart(4, '0');\n\n return expectErc1271Signature(\n `0x${signature.slice(2)}${createAppDomainSeparator(order).slice(2)}${createOrderContentsHash(order).slice(2)}${contentsType.slice(2)}${contentsTypeLength}`,\n );\n}\n\nfunction createAppDomainSeparator(order: UnsignedOrder): HexString {\n return expectHexString(\n Hash.keccak256(\n AbiParameters.encode(\n [\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n ],\n [\n DOMAIN_TYPE_HASH,\n PROTOCOL_NAME_HASH,\n PROTOCOL_VERSION_HASH,\n BigInt(order.chainId),\n order.exchangeAddress,\n ],\n ),\n { as: 'Hex' },\n ),\n );\n}\n\nfunction createOrderContentsHash(order: UnsignedOrder): HexString {\n const message = createOrderTypedDataMessage(order);\n\n return expectHexString(\n Hash.keccak256(\n AbiParameters.encode(\n [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint8' },\n { type: 'uint8' },\n { type: 'uint256' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n ],\n [\n ORDER_TYPE_HASH,\n message.salt,\n message.maker,\n message.signer,\n message.tokenId,\n message.makerAmount,\n message.takerAmount,\n message.side,\n message.signatureType,\n message.timestamp,\n message.metadata,\n message.builder,\n ],\n ),\n { as: 'Hex' },\n ),\n );\n}\n\nfunction createOrderTypedDataMessage(\n order: UnsignedOrder,\n): OrderTypedDataMessage {\n return {\n builder: order.builder,\n maker: order.maker,\n makerAmount: BigInt(order.makerAmount),\n metadata: order.metadata,\n salt: BigInt(order.salt),\n side: encodeOrderSide(order.side),\n signatureType: order.signatureType,\n signer: order.signer,\n takerAmount: BigInt(order.takerAmount),\n timestamp: BigInt(order.timestamp),\n tokenId: BigInt(order.tokenId),\n };\n}\n\nfunction encodeOrderSide(side: OrderSide): number {\n return side === OrderSide.BUY ? 0 : 1;\n}\n","import type {\n BuilderCode,\n OrderSide,\n OrderType,\n TokenId,\n} from '@polymarket/bindings';\nimport type { OrderResponse, SignatureType } from '@polymarket/bindings/clob';\nimport type {\n Erc1271Signature,\n EvmAddress,\n EvmSignature,\n HexString,\n} from '@polymarket/types';\nimport type { TypedDataPayload } from '../../types';\nimport type { SignOrderRequest } from '../../workflow';\n\ntype BasePrepareMarketOrderRequest = {\n /** TokenID of the Conditional token asset being traded */\n tokenId: string;\n\n /** Optional builder attribution code. */\n builderCode?: HexString;\n\n /**\n * Specifies the type of order execution.\n * - FOK (Fill or Kill): must be filled entirely or not at all\n * - FAK (Fill and Kill): partially fills, cancels any unfilled remainder\n *\n * @defaultValue OrderType.FAK\n */\n orderType?: OrderType.FAK | OrderType.FOK;\n};\n\nexport type PrepareMarketBuyOrderRequest = BasePrepareMarketOrderRequest & {\n /** Buy side of the order. */\n side: OrderSide.BUY;\n\n /**\n * Desired USD notional to buy, before market and builder taker fees.\n *\n * By default, the SDK prepares the order for this full buy amount and applicable\n * fees are paid on top. Set `maxSpend` when the total USD spent, including\n * fees, must not exceed a cap.\n */\n amount: number | string;\n\n /**\n * Optional all-in USD spend cap for BUY market orders, including market and\n * builder taker fees.\n *\n * When provided, the SDK keeps `amount` unchanged if `maxSpend` covers the\n * requested buy amount plus fees. If fees would make total spend exceed this\n * cap, the SDK reduces the signed buy amount so total spend fits within\n * `maxSpend`.\n *\n * Set `maxSpend` equal to `amount` when the requested amount should include\n * fees. Leave it unset to pay fees on top of `amount`.\n */\n maxSpend?: number | string;\n};\n\nexport type PrepareMarketSellOrderRequest = BasePrepareMarketOrderRequest & {\n /** Sell side of the order. */\n side: OrderSide.SELL;\n\n /**\n * Number of conditional-token shares to sell.\n */\n shares: number | string;\n};\n\nexport type PrepareMarketOrderRequest =\n | PrepareMarketBuyOrderRequest\n | PrepareMarketSellOrderRequest;\n\nexport type PrepareLimitOrderRequest = {\n /** TokenID of the Conditional token asset being traded */\n tokenId: string;\n\n /** Price used to create the order */\n price: number | string;\n\n /** Size in terms of the conditional token */\n size: number | string;\n\n /** Side of the order */\n side: OrderSide;\n\n /** Optional builder attribution code. */\n builderCode?: HexString;\n\n /**\n * Posts the prepared order as post-only when submitted.\n *\n * @defaultValue false\n */\n postOnly?: boolean;\n\n /**\n * Unix timestamp in seconds after which the order expires.\n *\n * When provided, the SDK prepares a Good-Til-Date (GTD) limit order that\n * expires at the given timestamp.\n *\n * When omitted, the SDK prepares a Good-Til-Cancelled (GTC) limit order.\n */\n expiration?: number;\n};\n\nexport type OrderDraft = {\n builderCode?: BuilderCode;\n chainId: number;\n exchangeAddress: EvmAddress;\n expiration: number;\n funderAddress: EvmAddress;\n offeredAmount: bigint;\n orderType: OrderType;\n side: OrderSide;\n signer: EvmAddress;\n requestedAmount: bigint;\n tokenId: TokenId;\n};\n\n/**\n * @internal\n */\nexport type UnsignedOrder = {\n chainId: number;\n builder: HexString;\n exchangeAddress: EvmAddress;\n expiration: number;\n maker: EvmAddress;\n makerAmount: string;\n metadata: HexString;\n orderType: OrderType;\n salt: string;\n side: OrderSide;\n signatureType: SignatureType;\n signer: EvmAddress;\n takerAmount: string;\n timestamp: string;\n tokenId: TokenId;\n};\n\nexport type SignedOrder = {\n builder: HexString;\n expiration: number;\n maker: EvmAddress;\n makerAmount: string;\n metadata: HexString;\n orderType: OrderType;\n salt: string;\n side: OrderSide;\n signatureType: SignatureType;\n signer: EvmAddress;\n takerAmount: string;\n timestamp: string;\n tokenId: TokenId;\n signature: EvmSignature | Erc1271Signature;\n postOnly?: boolean;\n};\n\nexport type OrderWorkflowRequest = SignOrderRequest;\n\nexport type OrderWorkflow = AsyncGenerator<\n OrderWorkflowRequest,\n SignedOrder,\n EvmAddress | EvmSignature\n>;\n\nexport type OrderPostingWorkflow = AsyncGenerator<\n OrderWorkflowRequest,\n OrderResponse,\n EvmAddress | EvmSignature\n>;\n\n/** @internal */\nexport function signOrder(payload: TypedDataPayload): SignOrderRequest {\n return {\n kind: 'signOrder',\n payload,\n };\n}\n","import { expectEvmSignature } from '@polymarket/types';\nimport type { BaseSecureClient } from '../../clients';\nimport {\n InsufficientLiquidityError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../../errors';\nimport { parseUserInput } from '../../input';\nimport { PrepareLimitOrderParamsSchema, prepareLimitOrderDraft } from './limit';\nimport {\n PrepareMarketOrderParamsSchema,\n prepareMarketOrderDraft,\n} from './market';\nimport { createSignedOrder, createUnsignedOrder } from './orders';\nimport { postOrder } from './post';\nimport {\n createOrderSignature,\n createOrderTypedDataPayload,\n} from './typed-data';\nimport {\n type OrderPostingWorkflow,\n type OrderWorkflow,\n type PrepareLimitOrderRequest,\n type PrepareMarketOrderRequest,\n signOrder,\n} from './types';\n\nexport type PrepareMarketOrderError =\n | InsufficientLiquidityError\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareMarketOrderError = makeErrorGuard(\n InsufficientLiquidityError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Starts the market-order workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link PrepareMarketOrderError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const workflow = await prepareMarketOrder(client, {\n * amount: 10,\n * side: OrderSide.BUY,\n * tokenId: '123',\n * });\n * ```\n */\nexport async function prepareMarketOrder(\n client: BaseSecureClient,\n request: PrepareMarketOrderRequest,\n): Promise<OrderWorkflow> {\n const params = parseUserInput(request, PrepareMarketOrderParamsSchema);\n\n return async function* (): OrderWorkflow {\n const draft = await prepareMarketOrderDraft(client, params);\n\n const unsignedOrder = createUnsignedOrder(draft, client.account);\n\n const signature = expectEvmSignature(\n yield signOrder(createOrderTypedDataPayload(unsignedOrder)),\n );\n\n return createSignedOrder(\n unsignedOrder,\n createOrderSignature(unsignedOrder, signature),\n );\n }.call(null);\n}\n\nexport type PrepareLimitOrderError =\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareLimitOrderError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Starts the limit-order workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link PrepareLimitOrderError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const workflow = await prepareLimitOrder(client, {\n * postOnly: true,\n * price: 0.52,\n * side: OrderSide.BUY,\n * size: 10,\n * tokenId: '123',\n * });\n * ```\n */\nexport async function prepareLimitOrder(\n client: BaseSecureClient,\n request: PrepareLimitOrderRequest,\n): Promise<OrderWorkflow> {\n const params = parseUserInput(request, PrepareLimitOrderParamsSchema);\n\n return async function* (): OrderWorkflow {\n const draft = await prepareLimitOrderDraft(client, params);\n\n const unsignedOrder = createUnsignedOrder(draft, client.account);\n\n const signature = expectEvmSignature(\n yield signOrder(createOrderTypedDataPayload(unsignedOrder)),\n );\n\n const order = createSignedOrder(\n unsignedOrder,\n createOrderSignature(unsignedOrder, signature),\n );\n\n return params.postOnly === true ? { ...order, postOnly: true } : order;\n }.call(null);\n}\n\nexport type PrepareMarketOrderPostingError = PrepareMarketOrderError;\nexport const PrepareMarketOrderPostingError = PrepareMarketOrderError;\n\n/**\n * Starts and posts a market-order workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link PrepareMarketOrderPostingError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const workflow = await prepareMarketOrderPosting(client, {\n * amount: 10,\n * side: OrderSide.BUY,\n * tokenId: '123',\n * });\n * ```\n */\nexport async function prepareMarketOrderPosting(\n client: BaseSecureClient,\n request: PrepareMarketOrderRequest,\n): Promise<OrderPostingWorkflow> {\n return createOrderPostingWorkflow(\n client,\n prepareMarketOrder(client, request),\n );\n}\n\nexport type PrepareLimitOrderPostingError = PrepareLimitOrderError;\nexport const PrepareLimitOrderPostingError = PrepareLimitOrderError;\n\n/**\n * Starts and posts a limit-order workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @throws {@link PrepareLimitOrderPostingError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const workflow = await prepareLimitOrderPosting(client, {\n * postOnly: true,\n * price: 0.52,\n * side: OrderSide.BUY,\n * size: 10,\n * tokenId: '123',\n * });\n * ```\n */\nexport async function prepareLimitOrderPosting(\n client: BaseSecureClient,\n request: PrepareLimitOrderRequest,\n): Promise<OrderPostingWorkflow> {\n return createOrderPostingWorkflow(client, prepareLimitOrder(client, request));\n}\n\nasync function createOrderPostingWorkflow(\n client: BaseSecureClient,\n workflowPromise: Promise<OrderWorkflow>,\n): Promise<OrderPostingWorkflow> {\n const workflow = await workflowPromise;\n\n return async function* (): OrderPostingWorkflow {\n const order = yield* workflow;\n\n return postOrder(client)(order);\n }.call(null);\n}\n","import { OrderSide, type TokenId } from '@polymarket/bindings';\nimport { AssetType } from '@polymarket/bindings/clob';\nimport { type EvmAddress, isSameEvmAddress } from '@polymarket/types';\nimport type { BaseSecureClient } from '../../clients';\nimport { fetchBalanceAllowance } from '../account';\n\nexport type ResolveCurrentAllowanceParams = {\n spenderAddress: EvmAddress;\n side: OrderSide;\n tokenId: TokenId;\n};\n\n/* @internal */\nexport async function resolveCurrentAllowance(\n client: BaseSecureClient,\n params: ResolveCurrentAllowanceParams,\n): Promise<bigint> {\n const assetType =\n params.side === OrderSide.BUY\n ? AssetType.COLLATERAL\n : AssetType.CONDITIONAL;\n const { allowances } = await fetchBalanceAllowance(\n client,\n params.side === OrderSide.BUY\n ? {\n assetType,\n }\n : {\n assetType,\n tokenId: params.tokenId,\n },\n );\n\n return resolveAllowanceAmount(allowances, params.spenderAddress);\n}\n\nfunction resolveAllowanceAmount(\n allowances: Record<EvmAddress, bigint>,\n spender: EvmAddress,\n): bigint {\n const match = (Object.entries(allowances) as [EvmAddress, bigint][]).find(\n ([key]) => isSameEvmAddress(key, spender),\n );\n\n return match?.[1] ?? 0n;\n}\n","import { OrderSide } from '@polymarket/bindings';\nimport type { OrderResponse } from '@polymarket/bindings/clob';\nimport { AssetType } from '@polymarket/bindings/clob';\nimport type { BaseSecureClient } from '../../clients';\nimport {\n CancelledSigningError,\n InsufficientLiquidityError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../../errors';\nimport { completeWith } from '../../workflow';\nimport { updateBalanceAllowance } from '../account';\nimport { approveErc20, approveErc1155ForAll } from '../approvals';\nimport { fetchNegRisk } from '../clob';\nimport { resolveCurrentAllowance } from './allowance';\nimport { resolveExchangeAddress } from './context';\nimport { type PostOrderError, postOrder } from './post';\nimport {\n type PrepareLimitOrderError,\n type PrepareMarketOrderError,\n prepareLimitOrder,\n prepareMarketOrder,\n} from './prepare';\nimport type {\n PrepareLimitOrderRequest,\n PrepareMarketOrderRequest,\n SignedOrder,\n} from './types';\n\nexport type CreateMarketOrderError =\n | PrepareMarketOrderError\n | CancelledSigningError;\nexport const CreateMarketOrderError = makeErrorGuard(\n CancelledSigningError,\n InsufficientLiquidityError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Creates a signed market order for the authenticated account.\n *\n * @throws {@link CreateMarketOrderError}\n * Thrown on failure.\n */\nexport function createMarketOrder(\n client: BaseSecureClient,\n request: PrepareMarketOrderRequest,\n): Promise<SignedOrder> {\n return prepareMarketOrder(client, request).then(completeWith(client.signer));\n}\n\nexport type PlaceMarketOrderError =\n | CreateMarketOrderError\n | PostOrderError\n | TimeoutError\n | TransactionFailedError;\nexport const PlaceMarketOrderError = makeErrorGuard(\n CancelledSigningError,\n InsufficientLiquidityError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Creates and posts a market order for the authenticated account.\n *\n * @throws {@link PlaceMarketOrderError}\n * Thrown on failure.\n */\nexport function placeMarketOrder(\n client: BaseSecureClient,\n request: PrepareMarketOrderRequest,\n): Promise<OrderResponse> {\n return createMarketOrder(client, request).then((order) =>\n postOrderWithAllowanceRecovery(client, order),\n );\n}\n\nexport type CreateLimitOrderError =\n | PrepareLimitOrderError\n | CancelledSigningError;\nexport const CreateLimitOrderError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Creates a signed limit order for the authenticated account.\n *\n * @throws {@link CreateLimitOrderError}\n * Thrown on failure.\n */\nexport function createLimitOrder(\n client: BaseSecureClient,\n request: PrepareLimitOrderRequest,\n): Promise<SignedOrder> {\n return prepareLimitOrder(client, request).then(completeWith(client.signer));\n}\n\nexport type PlaceLimitOrderError =\n | CreateLimitOrderError\n | PostOrderError\n | TimeoutError\n | TransactionFailedError;\nexport const PlaceLimitOrderError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Creates and posts a limit order for the authenticated account.\n *\n * @throws {@link PlaceLimitOrderError}\n * Thrown on failure.\n */\nexport function placeLimitOrder(\n client: BaseSecureClient,\n request: PrepareLimitOrderRequest,\n): Promise<OrderResponse> {\n return createLimitOrder(client, request).then((order) =>\n postOrderWithAllowanceRecovery(client, order),\n );\n}\n\nasync function postOrderWithAllowanceRecovery(\n client: BaseSecureClient,\n order: SignedOrder,\n): Promise<OrderResponse> {\n const postSignedOrder = postOrder(client);\n\n try {\n return await postSignedOrder(order);\n } catch (error) {\n if (!isBalanceOrAllowanceRequestRejection(error)) {\n throw error;\n }\n\n const retryResponse = await approveOrderAndRetry(\n client,\n order,\n postSignedOrder,\n );\n\n if (retryResponse === undefined) {\n throw error;\n }\n\n return retryResponse;\n }\n}\n\nasync function approveOrderAndRetry(\n client: BaseSecureClient,\n order: SignedOrder,\n postSignedOrder: (order: SignedOrder) => Promise<OrderResponse>,\n): Promise<OrderResponse | undefined> {\n const approved = await ensureOrderApproval(client, order);\n\n return approved ? postSignedOrder(order) : undefined;\n}\n\nfunction isBalanceOrAllowanceRequestRejection(\n error: unknown,\n): error is RequestRejectedError {\n return (\n error instanceof RequestRejectedError &&\n error.status === 400 &&\n error.message.includes('allowance is not enough')\n );\n}\n\nasync function ensureOrderApproval(\n client: BaseSecureClient,\n order: SignedOrder,\n): Promise<boolean> {\n const negRisk = await fetchNegRisk(client, { tokenId: order.tokenId });\n const exchangeAddress = resolveExchangeAddress(client, negRisk);\n const requiredAllowance = BigInt(order.makerAmount);\n const currentAllowance = await resolveCurrentAllowance(client, {\n spenderAddress: exchangeAddress,\n side: order.side,\n tokenId: order.tokenId,\n });\n\n if (currentAllowance >= requiredAllowance) {\n return false;\n }\n\n const handle =\n order.side === OrderSide.BUY\n ? await approveErc20(client, {\n amount: 'max',\n spenderAddress: exchangeAddress,\n tokenAddress: client.environment.collateralToken,\n })\n : await approveErc1155ForAll(client, {\n operatorAddress: exchangeAddress,\n tokenAddress: client.environment.conditionalTokens,\n });\n\n await handle.wait();\n\n await updateBalanceAllowance(client, {\n assetType:\n order.side === OrderSide.BUY\n ? AssetType.COLLATERAL\n : AssetType.CONDITIONAL,\n tokenId: order.side === OrderSide.SELL ? order.tokenId : undefined,\n });\n\n return true;\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n type ClosedPosition,\n FetchPortfolioValueResponseSchema,\n ListClosedPositionsResponseSchema,\n ListPositionsResponseSchema,\n type Position,\n type Traded,\n TradedSchema,\n type Value,\n} from '@polymarket/bindings/data';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { readBlob, validateWith } from '../response';\nimport { toDataSearchParams } from './params';\n\nconst PositionSortBySchema = z.enum([\n 'CURRENT',\n 'INITIAL',\n 'TOKENS',\n 'CASHPNL',\n 'PERCENTPNL',\n 'TITLE',\n 'RESOLVING',\n 'PRICE',\n 'AVGPRICE',\n]);\n\nconst PositionSortDirectionSchema = z.enum(['ASC', 'DESC']);\n\nconst ClosedPositionSortBySchema = z.enum([\n 'REALIZEDPNL',\n 'TITLE',\n 'PRICE',\n 'AVGPRICE',\n 'TIMESTAMP',\n]);\n\nconst ListPositionsRequestSchema = z\n .object({\n cursor: PaginationCursorSchema.optional(),\n user: z.string(),\n market: z.array(z.string()).optional(),\n eventId: z.array(z.number().int()).optional(),\n sizeThreshold: z.number().optional(),\n redeemable: z.boolean().optional(),\n mergeable: z.boolean().optional(),\n pageSize: PageSizeSchema.default(20),\n sortBy: PositionSortBySchema.optional(),\n sortDirection: PositionSortDirectionSchema.optional(),\n title: z.string().max(100).optional(),\n })\n .refine((value) => !(value.market && value.eventId), {\n message: 'Provide market or eventId, not both',\n path: ['eventId'],\n });\n\nconst ListClosedPositionsRequestSchema = z\n .object({\n cursor: PaginationCursorSchema.optional(),\n user: z.string(),\n market: z.array(z.string()).optional(),\n title: z.string().max(100).optional(),\n eventId: z.array(z.number().int()).optional(),\n pageSize: PageSizeSchema.default(20),\n sortBy: ClosedPositionSortBySchema.optional(),\n sortDirection: PositionSortDirectionSchema.optional(),\n })\n .refine((value) => !(value.market && value.eventId), {\n message: 'Provide market or eventId, not both',\n path: ['eventId'],\n });\n\nconst FetchPortfolioValueRequestSchema = z.object({\n user: z.string(),\n market: z.array(z.string()).optional(),\n});\n\nconst FetchTradedMarketCountRequestSchema = z.object({\n user: z.string(),\n});\n\nconst DownloadAccountingSnapshotRequestSchema = z.object({\n user: z.string(),\n});\n\nexport type ListPositionsRequest = z.input<typeof ListPositionsRequestSchema>;\nexport type ListClosedPositionsRequest = z.input<\n typeof ListClosedPositionsRequestSchema\n>;\nexport type FetchPortfolioValueRequest = z.input<\n typeof FetchPortfolioValueRequestSchema\n>;\nexport type FetchTradedMarketCountRequest = z.input<\n typeof FetchTradedMarketCountRequestSchema\n>;\nexport type DownloadAccountingSnapshotRequest = z.input<\n typeof DownloadAccountingSnapshotRequestSchema\n>;\n\nexport type ListPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListPositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists current positions for a wallet.\n *\n * @throws {@link ListPositionsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listPositions(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Position[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listPositions(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Position[]\n * }\n * ```\n */\nexport function listPositions(\n client: BaseClient,\n request: ListPositionsRequest,\n): Paginated<Position[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListPositionsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/positions', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListPositionsResponseSchema))\n .map((positions) => {\n const hasMore = positions.length > decoded.pageSize;\n\n return {\n items: positions.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type ListClosedPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListClosedPositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists closed positions for a wallet.\n *\n * @throws {@link ListClosedPositionsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listClosedPositions(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: ClosedPosition[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listClosedPositions(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: ClosedPosition[]\n * }\n * ```\n */\nexport function listClosedPositions(\n client: BaseClient,\n request: ListClosedPositionsRequest,\n): Paginated<ClosedPosition[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListClosedPositionsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/closed-positions', {\n params: toDataSearchParams({\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n }),\n })\n .andThen(validateWith(ListClosedPositionsResponseSchema))\n .map((positions) => {\n const hasMore = positions.length > decoded.pageSize;\n\n return {\n items: positions.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type FetchPortfolioValueError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchPortfolioValueError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the total value for a wallet's positions.\n *\n * @throws {@link FetchPortfolioValueError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const value = await fetchPortfolioValue(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * });\n *\n * // value: Value[]\n * ```\n */\nexport async function fetchPortfolioValue(\n client: BaseClient,\n request: FetchPortfolioValueRequest,\n): Promise<Value[]> {\n const params = parseUserInput(request, FetchPortfolioValueRequestSchema);\n\n return unwrap(\n client.data\n .get('/value', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(FetchPortfolioValueResponseSchema)),\n );\n}\n\nexport type FetchTradedMarketCountError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchTradedMarketCountError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches the total number of markets a wallet has traded.\n *\n * @throws {@link FetchTradedMarketCountError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const traded = await fetchTradedMarketCount(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * });\n *\n * // traded === Traded\n * ```\n */\nexport async function fetchTradedMarketCount(\n client: BaseClient,\n request: FetchTradedMarketCountRequest,\n): Promise<Traded> {\n const params = parseUserInput(request, FetchTradedMarketCountRequestSchema);\n\n return unwrap(\n client.data\n .get('/traded', {\n params: toDataSearchParams(params),\n })\n .andThen(validateWith(TradedSchema)),\n );\n}\n\nexport type DownloadAccountingSnapshotError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const DownloadAccountingSnapshotError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Downloads an accounting snapshot archive for a wallet.\n *\n * @throws {@link DownloadAccountingSnapshotError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const snapshot = await downloadAccountingSnapshot(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * });\n *\n * // snapshot === Blob\n * ```\n */\nexport async function downloadAccountingSnapshot(\n client: BaseClient,\n request: DownloadAccountingSnapshotRequest,\n): Promise<Blob> {\n const params = parseUserInput(\n request,\n DownloadAccountingSnapshotRequestSchema,\n );\n\n return unwrap(\n client.data\n .get('/v1/accounting/snapshot', {\n params: toDataSearchParams(params),\n })\n .andThen(readBlob),\n );\n}\n","import type { ConditionId, DecimalString } from '@polymarket/bindings';\nimport { ConditionIdSchema } from '@polymarket/bindings';\nimport type { Position } from '@polymarket/bindings/data';\nimport { WalletType } from '@polymarket/bindings/gamma';\nimport {\n type EvmAddress,\n type EvmSignature,\n invariant,\n isNullish,\n isPresent,\n} from '@polymarket/types';\nimport { z } from 'zod';\nimport {\n ctfRedeemPositionsCall,\n mergePositionsCall,\n splitPositionCall,\n} from '../abis';\nimport type { BaseSecureClient } from '../clients';\nimport {\n CancelledSigningError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n expectTransactionHandle,\n type SignerTransactionRequest,\n type TransactionHandle,\n} from '../types';\nimport {\n completeWith,\n type SendMergePositionsTransactionRequest,\n type SendRedeemPositionsTransactionRequest,\n type SendSplitPositionTransactionRequest,\n signerTransactionRequest,\n} from '../workflow';\nimport {\n GaslessTransactionMetadataSchema,\n type GaslessWorkflowRequest,\n prepareGaslessTransaction,\n} from './gasless';\nimport { listMarkets } from './markets';\nimport { listPositions } from './portfolio';\n\ntype BinaryPositions =\n | readonly [yes: Position, no: Position | undefined]\n | readonly [yes: undefined, no: Position];\n\ntype PositiveAmount = bigint;\n\nconst PrepareSplitPositionRequestSchema = z.object({\n amount: z.bigint().min(0n),\n conditionId: ConditionIdSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n});\n\nconst PrepareMergePositionsRequestSchema = z.object({\n amount: z.union([z.bigint().positive(), z.literal('max')]),\n conditionId: ConditionIdSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n});\n\nconst PrepareRedeemPositionsRequestSchema = z.union([\n z.object({\n conditionId: ConditionIdSchema,\n marketId: z.never().optional(),\n metadata: GaslessTransactionMetadataSchema.optional(),\n }),\n z.object({\n conditionId: z.never().optional(),\n marketId: z.string().min(1),\n metadata: GaslessTransactionMetadataSchema.optional(),\n }),\n]);\n\nexport type SplitPositionWorkflowRequest =\n | GaslessWorkflowRequest\n | SendSplitPositionTransactionRequest;\n\nexport type MergePositionsWorkflowRequest =\n | GaslessWorkflowRequest\n | SendMergePositionsTransactionRequest;\n\nexport type RedeemPositionsWorkflowRequest =\n | GaslessWorkflowRequest\n | SendRedeemPositionsTransactionRequest;\n\nexport type SplitPositionWorkflow = AsyncGenerator<\n SplitPositionWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type MergePositionsWorkflow = AsyncGenerator<\n MergePositionsWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type RedeemPositionsWorkflow = AsyncGenerator<\n RedeemPositionsWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type PrepareSplitPositionRequest = z.input<\n typeof PrepareSplitPositionRequestSchema\n>;\n\nexport type PrepareMergePositionsRequest = z.input<\n typeof PrepareMergePositionsRequestSchema\n>;\n\nexport type PrepareRedeemPositionsRequest = z.input<\n typeof PrepareRedeemPositionsRequestSchema\n>;\n\nexport type PrepareSplitPositionError = UserInputError;\nexport const PrepareSplitPositionError = makeErrorGuard(UserInputError);\nexport type PrepareMergePositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareMergePositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\nexport type PrepareRedeemPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareRedeemPositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Starts a split workflow for a market condition.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareSplitPosition(client, {\n * amount: 1n,\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @throws {@link PrepareSplitPositionError}\n * Thrown on failure.\n */\nexport async function prepareSplitPosition(\n client: BaseSecureClient,\n request: PrepareSplitPositionRequest,\n): Promise<SplitPositionWorkflow> {\n const params = parseUserInput(request, PrepareSplitPositionRequestSchema);\n const negativeRisk = await resolveMarketNegativeRiskFlag(\n client,\n params.conditionId,\n );\n const call = splitPositionCall(\n resolveLifecycleTargetAddress(client, negativeRisk),\n client.environment.collateralToken,\n params.conditionId,\n params.amount,\n );\n\n return async function* (): SplitPositionWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendSplitPositionTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [call],\n metadata:\n params.metadata ??\n `Split ${params.amount} positions for condition ${params.conditionId}`,\n });\n }.call(null);\n}\n\nexport type SplitPositionError =\n | PrepareSplitPositionError\n | CancelledSigningError\n | SigningError;\nexport const SplitPositionError = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n UserInputError,\n);\n\n/**\n * Splits collateral into market positions.\n *\n * @throws {@link SplitPositionError}\n * Thrown on failure.\n */\nexport function splitPosition(\n client: BaseSecureClient,\n request: PrepareSplitPositionRequest,\n): Promise<TransactionHandle> {\n return prepareSplitPosition(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Starts a workflow to merge complementary positions in a market back into collateral.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareMergePositions(client, {\n * amount: 'max',\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @throws {@link PrepareMergePositionsError}\n * Thrown on failure.\n */\nexport async function prepareMergePositions(\n client: BaseSecureClient,\n request: PrepareMergePositionsRequest,\n): Promise<MergePositionsWorkflow> {\n const params = parseUserInput(request, PrepareMergePositionsRequestSchema);\n const positions = await listPositions(client, {\n user: client.account.wallet,\n market: [params.conditionId],\n sizeThreshold: 0,\n })\n .firstPage()\n .then((page) => page.items);\n const binaryPositions = expectBinaryPositions(positions);\n const negativeRisk = expectNegativeRiskFlag(binaryPositions);\n const amount = resolveMergeAmount(binaryPositions, params.amount);\n const call = mergePositionsCall(\n resolveLifecycleTargetAddress(client, negativeRisk),\n client.environment.collateralToken,\n params.conditionId,\n amount,\n );\n\n return async function* (): MergePositionsWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendMergePositionsTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [call],\n metadata:\n params.metadata ??\n `Merge ${amount} positions for condition ${params.conditionId}`,\n });\n }.call(null);\n}\n\nexport type MergePositionsError =\n | PrepareMergePositionsError\n | CancelledSigningError\n | SigningError;\nexport const MergePositionsError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Merges complementary market positions back into collateral.\n *\n * @throws {@link MergePositionsError}\n * Thrown on failure.\n */\nexport function mergePositions(\n client: BaseSecureClient,\n request: PrepareMergePositionsRequest,\n): Promise<TransactionHandle> {\n return prepareMergePositions(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Starts a redemption workflow for resolved positions.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareRedeemPositions(client, {\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @example\n * ```ts\n * const workflow = await prepareRedeemPositions(client, {\n * marketId: '12345',\n * });\n * ```\n *\n * @throws {@link PrepareRedeemPositionsError}\n * Thrown on failure.\n */\nexport async function prepareRedeemPositions(\n client: BaseSecureClient,\n request: PrepareRedeemPositionsRequest,\n): Promise<RedeemPositionsWorkflow> {\n const params = parseUserInput(request, PrepareRedeemPositionsRequestSchema);\n const positions = await listPositions(client, {\n user: client.account.wallet,\n market: [params.conditionId ?? params.marketId],\n sizeThreshold: 0,\n })\n .firstPage()\n .then((page) => page.items);\n const binaryPositions = expectBinaryPositions(positions);\n const conditionId = resolveBinaryPositionsConditionId(binaryPositions);\n const negativeRisk = expectNegativeRiskFlag(binaryPositions);\n const call = ctfRedeemPositionsCall(\n resolveLifecycleTargetAddress(client, negativeRisk),\n client.environment.collateralToken,\n conditionId,\n );\n\n return async function* (): RedeemPositionsWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendRedeemPositionsTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [call],\n metadata:\n params.metadata ?? `Redeem positions for condition ${conditionId}`,\n });\n }.call(null);\n}\n\nexport type RedeemPositionsError =\n | PrepareRedeemPositionsError\n | CancelledSigningError\n | SigningError;\nexport const RedeemPositionsError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Redeems resolved market positions.\n *\n * @throws {@link RedeemPositionsError}\n * Thrown on failure.\n */\nexport function redeemPositions(\n client: BaseSecureClient,\n request: PrepareRedeemPositionsRequest,\n): Promise<TransactionHandle> {\n return prepareRedeemPositions(client, request).then(\n completeWith(client.signer),\n );\n}\n\nfunction sendSplitPositionTransaction(\n request: SignerTransactionRequest,\n): SendSplitPositionTransactionRequest {\n return {\n kind: 'sendSplitPositionTransaction',\n request,\n };\n}\n\nfunction sendMergePositionsTransaction(\n request: SignerTransactionRequest,\n): SendMergePositionsTransactionRequest {\n return {\n kind: 'sendMergePositionsTransaction',\n request,\n };\n}\n\nfunction sendRedeemPositionsTransaction(\n request: SignerTransactionRequest,\n): SendRedeemPositionsTransactionRequest {\n return {\n kind: 'sendRedeemPositionsTransaction',\n request,\n };\n}\n\nfunction resolveLifecycleTargetAddress(\n client: BaseSecureClient,\n negRisk: boolean,\n) {\n return negRisk\n ? client.environment.negRiskCollateralAdapter\n : client.environment.collateralAdapter;\n}\n\nasync function resolveMarketNegativeRiskFlag(\n client: BaseSecureClient,\n conditionId: ConditionId,\n): Promise<boolean> {\n const page = await listMarkets(client, {\n conditionIds: [conditionId],\n pageSize: 2,\n }).firstPage();\n const markets = page.items;\n\n invariant(\n markets.length === 1,\n `Expected exactly one market for condition ${conditionId}`,\n );\n\n const market = markets[0];\n\n invariant(\n market !== undefined,\n `No market found for condition ${conditionId}`,\n );\n invariant(\n isPresent(market.state.negRisk),\n `Missing negRisk flag for condition ${conditionId}`,\n );\n\n return market.state.negRisk;\n}\n\nfunction expectNegativeRiskFlag([\n yesPosition,\n noPosition,\n]: BinaryPositions): boolean {\n const first = yesPosition ?? noPosition;\n const conditionId = first.conditionId;\n\n invariant(\n isPresent(first.negativeRisk),\n `Missing negativeRisk flag for condition ${conditionId}`,\n );\n\n if (yesPosition !== undefined && noPosition !== undefined) {\n invariant(\n isPresent(yesPosition.negativeRisk),\n `Missing negativeRisk flag for condition ${conditionId}`,\n );\n invariant(\n isPresent(noPosition.negativeRisk),\n `Missing negativeRisk flag for condition ${conditionId}`,\n );\n invariant(\n yesPosition.negativeRisk === noPosition.negativeRisk,\n `Mixed negativeRisk flags for condition ${conditionId}`,\n );\n }\n\n return first.negativeRisk;\n}\n\nfunction expectBinaryPositions(\n positions: readonly Position[],\n): BinaryPositions {\n const firstPosition = positions[0];\n\n if (firstPosition === undefined) {\n throw new UserInputError('You have no positions');\n }\n\n const conditionId = firstPosition.conditionId;\n\n invariant(\n positions.length <= 2,\n `Expected at most two positions for condition ${conditionId}`,\n );\n\n let yesPosition: Position | undefined;\n let noPosition: Position | undefined;\n\n for (const position of positions) {\n invariant(\n position.outcomeIndex === 0 || position.outcomeIndex === 1,\n `Unexpected outcomeIndex ${position.outcomeIndex} for condition ${conditionId}`,\n );\n\n if (position.outcomeIndex === 0) {\n invariant(\n yesPosition === undefined,\n `Duplicate YES position for condition ${conditionId}`,\n );\n yesPosition = position;\n continue;\n }\n\n invariant(\n noPosition === undefined,\n `Duplicate NO position for condition ${conditionId}`,\n );\n noPosition = position;\n }\n\n if (yesPosition !== undefined) {\n return [yesPosition, noPosition];\n }\n\n invariant(\n noPosition !== undefined,\n `Expected positions for condition ${conditionId}`,\n );\n\n return [undefined, noPosition];\n}\n\nfunction resolveBinaryPositionsConditionId(\n positions: BinaryPositions,\n): ConditionId {\n return (positions[0] ?? positions[1]).conditionId;\n}\n\nfunction resolveMergeAmount(\n positions: BinaryPositions,\n requestedAmount: bigint | 'max',\n): PositiveAmount {\n const maxAmount = calculateMaxMergeAmount(positions);\n const conditionId = resolveBinaryPositionsConditionId(positions);\n\n if (maxAmount === 0n) {\n throw new UserInputError(\n `You have no complementary positions to merge for condition ${conditionId}`,\n );\n }\n\n if (requestedAmount === 'max') {\n return maxAmount;\n }\n\n if (requestedAmount > maxAmount) {\n throw new UserInputError(\n `Requested merge amount ${requestedAmount} exceeds the maximum mergeable amount ${maxAmount} for condition ${conditionId}`,\n );\n }\n\n return requestedAmount;\n}\n\nfunction calculateMaxMergeAmount([\n yesPosition,\n noPosition,\n]: BinaryPositions): bigint {\n const yesAmount = toPositionAmount(yesPosition, 0);\n const noAmount = toPositionAmount(noPosition, 1);\n\n return yesAmount < noAmount ? yesAmount : noAmount;\n}\n\nfunction toPositionAmount(\n position: Position | undefined,\n expectedOutcomeIndex: 0 | 1,\n): bigint {\n if (position === undefined) {\n return 0n;\n }\n\n invariant(\n position.outcomeIndex === expectedOutcomeIndex,\n `Expected outcomeIndex ${expectedOutcomeIndex}`,\n );\n\n if (isNullish(position.size)) {\n return 0n;\n }\n\n return toTokenBaseUnits(position.size);\n}\n\nfunction toTokenBaseUnits(size: DecimalString): bigint {\n const numericSize = Number(size);\n\n if (!Number.isFinite(numericSize) || numericSize < 0) {\n throw new UserInputError(\n 'Position size must be a non-negative finite number',\n );\n }\n\n return BigInt(Math.floor(numericSize * 1e6));\n}\n","import {\n type PublicProfile,\n PublicProfileSchema,\n} from '@polymarket/bindings/gamma';\nimport { err, ok, unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst FetchPublicProfileRequestSchema = z.object({\n address: z.string(),\n});\n\nexport type FetchPublicProfileRequest = z.input<\n typeof FetchPublicProfileRequestSchema\n>;\n\nexport type FetchPublicProfileError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchPublicProfileError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a public profile by wallet address.\n *\n * @throws {@link FetchPublicProfileError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const profile = await fetchPublicProfile(client, {\n * address: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * });\n *\n * // profile === PublicProfile | null\n * ```\n */\nexport async function fetchPublicProfile(\n client: BaseClient,\n request: FetchPublicProfileRequest,\n): Promise<PublicProfile | null> {\n const params = parseUserInput(request, FetchPublicProfileRequestSchema);\n\n return unwrap(\n client.gamma\n .get('/public-profile', {\n params: toSearchParams(params, snakeCase()),\n })\n .andThen(validateWith(PublicProfileSchema))\n .orElse((error) => {\n if (error instanceof RequestRejectedError && error.status === 404) {\n return ok(null);\n }\n\n return err(error);\n }),\n );\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n type Event,\n type Profile,\n type PublicSearchResponse,\n PublicSearchResponseSchema,\n type SearchTag,\n} from '@polymarket/bindings/gamma';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst SearchRequestSchema = z.object({\n q: z.string().min(1),\n ascending: z.boolean().optional(),\n cache: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n eventsStatus: z.string().min(1).optional(),\n eventsTag: z.array(z.string()).optional(),\n excludeTagIds: z.array(z.number().int()).optional(),\n keepClosedMarkets: z.number().int().optional(),\n optimized: z.boolean().optional(),\n pageSize: PageSizeSchema.default(10),\n presets: z.array(z.string()).optional(),\n recurrence: z.enum(['daily', 'weekly', 'monthly']).optional(),\n searchProfiles: z.boolean().optional(),\n searchTags: z.boolean().optional(),\n sort: z.string().min(1).optional(),\n});\n\nexport type SearchRequest = z.input<typeof SearchRequestSchema>;\n\ntype SearchParams = z.output<typeof SearchRequestSchema>;\n\ntype PublicSearchParams = Omit<SearchParams, 'cursor' | 'pageSize'> & {\n limitPerType: number;\n page: number;\n};\n\nexport type SearchResults = {\n events: Event[];\n profiles: Profile[];\n tags: SearchTag[];\n};\n\nexport type SearchError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const SearchError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Runs a public full-text search.\n *\n * @throws {@link SearchError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = search(client, {\n * q: 'trump',\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items.events: Event[]\n * // page.items.tags: SearchTag[]\n * // page.items.profiles: Profile[]\n * }\n * ```\n */\nexport function search(\n client: BaseClient,\n request: SearchRequest,\n): Paginated<SearchResults> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n SearchRequestSchema,\n );\n\n return paginate(\n (cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get('/public-search', {\n params: toSearchParams(\n {\n ...params,\n limitPerType: decoded.pageSize,\n page: decoded.offset,\n },\n snakeCase<PublicSearchParams>({\n excludeTagIds: 'exclude_tag_id',\n }),\n ),\n })\n .andThen(validateWith(PublicSearchResponseSchema))\n .map((response) => ({\n items: toSearchResults(response),\n hasMore: response.pagination?.hasMore ?? false,\n totalCount: response.pagination?.totalResults ?? undefined,\n nextCursor: response.pagination?.hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + 1,\n pageSize: decoded.pageSize,\n })\n : undefined,\n }));\n },\n cursor ?? encodeOffsetCursor({ offset: 1, pageSize }),\n { events: [], profiles: [], tags: [] },\n );\n}\n\nfunction toSearchResults(response: PublicSearchResponse): SearchResults {\n return {\n events: response.events ?? [],\n profiles: response.profiles ?? [],\n tags: response.tags ?? [],\n };\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n ListSeriesResponseSchema,\n type Series,\n SeriesSchema,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst ListSeriesRequestSchema = z.object({\n ascending: z.boolean().optional(),\n categoriesIds: z.array(z.number().int()).optional(),\n categoriesLabels: z.array(z.string()).optional(),\n closed: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n excludeEvents: z.boolean().optional(),\n includeChat: z.boolean().optional(),\n locale: z.string().optional(),\n order: z.string().optional(),\n pageSize: PageSizeSchema.default(20),\n recurrence: z.enum(['daily', 'weekly', 'monthly']).optional(),\n slug: z.array(z.string()).optional(),\n});\n\nconst FetchSeriesRequestSchema = z.object({\n id: z.string(),\n includeChat: z.boolean().optional(),\n locale: z.string().optional(),\n});\n\nexport type ListSeriesRequest = z.input<typeof ListSeriesRequestSchema>;\nexport type FetchSeriesRequest = z.input<typeof FetchSeriesRequestSchema>;\ntype ListSeriesParams = z.output<typeof ListSeriesRequestSchema>;\n\nexport type ListSeriesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListSeriesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists series.\n *\n * @throws {@link ListSeriesError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listSeries(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Series[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listSeries(client, {\n * closed: false,\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Series[]\n * }\n * ```\n */\nexport function listSeries(\n client: BaseClient,\n request: ListSeriesRequest = {},\n): Paginated<Series[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListSeriesRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get('/series', {\n params: toSearchParams(\n {\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n },\n snakeCase<ListSeriesParams>({\n categoriesIds: 'categories_ids',\n categoriesLabels: 'categories_labels',\n }),\n ),\n })\n .andThen(validateWith(ListSeriesResponseSchema))\n .map((series) => {\n const hasMore = series.length > decoded.pageSize;\n\n return {\n items: series.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type FetchSeriesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchSeriesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a series.\n *\n * @throws {@link FetchSeriesError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const series = await fetchSeries(client, {\n * id: 'fed-daily-series',\n * includeChat: true,\n * });\n *\n * // series === Series\n * ```\n */\nexport async function fetchSeries(\n client: BaseClient,\n request: FetchSeriesRequest,\n): Promise<Series> {\n const params = parseUserInput(request, FetchSeriesRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`series/${params.id}`, {\n params: toSearchParams(\n {\n includeChat: params.includeChat,\n locale: params.locale,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(SeriesSchema)),\n );\n}\n","import {\n ListSportsMetadataResponseSchema,\n type SportsMarketTypesResponse,\n SportsMarketTypesResponseSchema,\n type SportsMetadata,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n} from '../errors';\nimport { validateWith } from '../response';\n\nexport type ListSportsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError;\nexport const ListSportsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Lists available sports metadata.\n *\n * @throws {@link ListSportsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const sports = await listSports(client);\n *\n * // sports: SportsMetadata[]\n * ```\n */\nexport async function listSports(\n client: BaseClient,\n): Promise<SportsMetadata[]> {\n return unwrap(\n client.gamma\n .get('/sports')\n .andThen(validateWith(ListSportsMetadataResponseSchema)),\n );\n}\n\nexport type FetchSportsMarketTypesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError;\nexport const FetchSportsMarketTypesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n);\n\n/**\n * Fetches the available market types grouped by sport.\n *\n * @throws {@link FetchSportsMarketTypesError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const marketTypes = await fetchSportsMarketTypes(client);\n *\n * // marketTypes === SportsMarketTypesResponse\n * ```\n */\nexport async function fetchSportsMarketTypes(\n client: BaseClient,\n): Promise<SportsMarketTypesResponse> {\n return unwrap(\n client.gamma\n .get('/sports/market-types')\n .andThen(validateWith(SportsMarketTypesResponseSchema)),\n );\n}\n","import type {\n CommentsEvent,\n CryptoPricesBinanceEvent,\n CryptoPricesChainlinkEvent,\n CryptoPricesEvent,\n CryptoPricesTopic,\n CustomMarketEvent,\n EquityPricesEvent,\n EquityPricesTopic,\n MarketEvent,\n SportsEvent,\n StandardMarketEvent,\n UserEvent,\n} from '@polymarket/bindings/subscriptions';\nimport { invariant, type Prettify } from '@polymarket/types';\nimport merge from 'it-merge';\nimport type {\n BaseClient,\n BasePublicClient,\n BaseSecureClient,\n} from '../clients';\nimport type { TransportError } from '../errors';\n\n// Event types — re-exported from bindings for consumer convenience.\nexport type {\n CommentsEvent,\n CryptoPricesBinanceEvent,\n CryptoPricesChainlinkEvent,\n CryptoPricesEvent,\n CustomMarketEvent,\n EquityPricesEvent,\n MarketEvent,\n SportsEvent,\n StandardMarketEvent,\n UserEvent,\n};\n\n// Event `type` discriminants derived from bindings events.\nexport type MarketEventType = MarketEvent['type'];\nexport type UserEventType = UserEvent['type'];\nexport type SportsEventType = SportsEvent['type'];\nexport type CommentsEventType = CommentsEvent['type'];\nexport type CryptoPricesEventType = CryptoPricesEvent['type'];\nexport type EquityPricesEventType = EquityPricesEvent['type'];\n\n// Subscription specs.\nexport type MarketSubscription = {\n topic: 'market';\n tokenIds: readonly string[];\n customFeatureEnabled?: boolean;\n};\n\nexport type UserSubscription = {\n topic: 'user';\n markets?: readonly string[];\n};\n\nexport type SportsSubscription = {\n topic: 'sports';\n};\n\nexport type CommentsSubscription = {\n topic: 'comments';\n types?: readonly CommentsEventType[];\n parentEntityId?: number;\n parentEntityType?: 'Event' | 'Market';\n};\n\nexport type CryptoPricesSubscription = {\n topic: CryptoPricesTopic;\n symbols?: readonly string[];\n};\n\nexport type EquityPricesSubscription = {\n topic: EquityPricesTopic;\n symbol: string;\n types?: readonly EquityPricesEventType[];\n};\n\nexport type PublicSubscriptionSpec =\n | MarketSubscription\n | SportsSubscription\n | CommentsSubscription\n | CryptoPricesSubscription\n | EquityPricesSubscription;\n\nexport type SecureSubscriptionSpec = PublicSubscriptionSpec | UserSubscription;\n\n// Event unions, aligned with subscription specs.\nexport type PublicRealtimeEvent =\n | MarketEvent\n | SportsEvent\n | CommentsEvent\n | CryptoPricesEvent\n | EquityPricesEvent;\n\nexport type SecureRealtimeEvent = PublicRealtimeEvent | UserEvent;\n\n// Topics derived from event unions so bindings remain the single source of\n// truth for topic literals.\nexport type PublicRealtimeTopic = Prettify<PublicRealtimeEvent['topic']>;\nexport type SecureRealtimeTopic = Prettify<SecureRealtimeEvent['topic']>;\n\n// Spec-to-event mapping keyed by the shared `topic` discriminant. Each simple\n// topic resolves to a named event type so hover shows the alias rather than an\n// expanded structural shape. Market subscriptions are handled separately\n// because `customFeatureEnabled` contributes to the event union.\n//\n// Relies on `subscribe` declaring `TSubscriptions` with the `const` modifier\n// so that literal topics survive inference from object literals.\ntype EventByTopic = {\n user: UserEvent;\n sports: SportsEvent;\n comments: CommentsEvent;\n 'prices.crypto.binance': CryptoPricesBinanceEvent;\n 'prices.crypto.chainlink': CryptoPricesChainlinkEvent;\n 'prices.equity.pyth': EquityPricesEvent;\n};\n\ntype EventForMarketSubscription<TSpec extends MarketSubscription> =\n 'customFeatureEnabled' extends keyof TSpec\n ? true extends TSpec['customFeatureEnabled']\n ? MarketEvent\n : StandardMarketEvent\n : StandardMarketEvent;\n\nexport type EventForSubscriptionSpec<TSpec extends SecureSubscriptionSpec> =\n TSpec extends MarketSubscription\n ? EventForMarketSubscription<TSpec>\n : TSpec extends { topic: infer TTopic extends keyof EventByTopic }\n ? EventByTopic[TTopic]\n : never;\n\nexport type EventForSubscriptionSpecs<\n TSubscriptions extends readonly SecureSubscriptionSpec[],\n> = EventForSubscriptionSpec<TSubscriptions[number]>;\n\nexport type SubscriptionHandle<TEvent> = {\n /**\n * Closes the subscription. Idempotent: subsequent calls resolve without\n * effect. Best-effort — errors from the first call propagate, later calls\n * are no-ops.\n */\n close(): Promise<void>;\n} & AsyncIterable<TEvent>;\n\nexport type SubscribeError = TransportError;\n\n/**\n * Starts one or more realtime subscriptions on this client.\n *\n * @throws {@link SubscribeError}\n * Thrown when the realtime subscription cannot be established or fails.\n *\n * @example\n * ```ts\n * const handle = await client.subscribe([\n * { topic: 'market', tokenIds: ['123'] },\n * ]);\n *\n * for await (const event of handle) {\n * // event: StandardMarketEvent\n * }\n * ```\n */\nexport async function subscribe<\n const TSubscriptions extends readonly PublicSubscriptionSpec[],\n>(\n client: BasePublicClient,\n subscriptions: TSubscriptions,\n): Promise<SubscriptionHandle<EventForSubscriptionSpecs<TSubscriptions>>>;\nexport async function subscribe<\n const TSubscriptions extends readonly SecureSubscriptionSpec[],\n>(\n client: BaseSecureClient,\n subscriptions: TSubscriptions,\n): Promise<SubscriptionHandle<EventForSubscriptionSpecs<TSubscriptions>>>;\nexport async function subscribe(\n client: BaseClient,\n subscriptions: readonly SecureSubscriptionSpec[],\n): Promise<SubscriptionHandle<unknown>> {\n const handles = await Promise.all(\n subscriptions.map((spec) => subscribeOne(client, spec)),\n );\n return mergedSubscription(handles);\n}\n\nfunction subscribeOne(\n client: BaseClient,\n spec: SecureSubscriptionSpec,\n): Promise<SubscriptionHandle<unknown>> {\n switch (spec.topic) {\n case 'market':\n return client.webSockets.clobMarket.subscribe(spec);\n case 'sports':\n return client.webSockets.sports.subscribe(spec);\n case 'comments':\n case 'prices.crypto.binance':\n case 'prices.crypto.chainlink':\n case 'prices.equity.pyth':\n return client.webSockets.rtds.subscribe(spec);\n case 'user':\n invariant(\n client.isSecureClient(),\n \"A 'user' subscription requires a secure client instance.\",\n );\n return client.webSockets.clobUser.subscribe(spec);\n }\n}\n\nfunction mergedSubscription<TEvent>(\n children: readonly SubscriptionHandle<TEvent>[],\n): SubscriptionHandle<TEvent> {\n // Cache the in-flight or settled close so subsequent `close()` calls are\n // idempotent: concurrent callers share the same underlying teardown, and\n // callers after settlement observe the original result (including any\n // rejection) instead of re-invoking child teardowns.\n let closing: Promise<void> | undefined;\n\n async function close(): Promise<void> {\n if (closing === undefined) {\n closing = Promise.all(children.map((child) => child.close())).then(\n () => undefined,\n );\n }\n await closing;\n }\n\n const iterable = merge(...children);\n\n return {\n close,\n [Symbol.asyncIterator]() {\n return iterable[Symbol.asyncIterator]();\n },\n };\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport {\n ListRelatedTagResourcesResponseSchema,\n ListRelatedTagsResponseSchema,\n ListTagsResponseSchema,\n type RelatedTag,\n type Tag,\n TagSchema,\n} from '@polymarket/bindings/gamma';\nimport { unwrap } from '@polymarket/types';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst ListTagsRequestSchema = z.object({\n ascending: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n includeChat: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n isCarousel: z.boolean().optional(),\n locale: z.string().optional(),\n order: z.string().optional(),\n pageSize: PageSizeSchema.default(20),\n});\n\nconst FetchTagRequestSchema = z.union([\n z.object({\n id: z.string(),\n includeChat: z.boolean().optional(),\n includeTemplate: z.boolean().optional(),\n locale: z.string().optional(),\n }),\n z.object({\n slug: z.string(),\n locale: z.string().optional(),\n }),\n]);\n\nconst RelatedTagsByIdRequestSchema = z.object({\n id: z.string(),\n omitEmpty: z.boolean().optional(),\n status: z.enum(['active', 'closed', 'all']).optional(),\n});\n\nconst RelatedTagsBySlugRequestSchema = z.object({\n slug: z.string(),\n});\n\nconst RelatedTagResourcesByIdRequestSchema = z.object({\n id: z.string(),\n locale: z.string().optional(),\n omitEmpty: z.boolean().optional(),\n status: z.enum(['active', 'closed', 'all']).optional(),\n});\n\nconst RelatedTagResourcesBySlugRequestSchema = z.object({\n locale: z.string().optional(),\n slug: z.string(),\n omitEmpty: z.boolean().optional(),\n status: z.enum(['active', 'closed', 'all']).optional(),\n});\n\nexport type ListTagsRequest = z.input<typeof ListTagsRequestSchema>;\nexport type FetchTagRequest = z.input<typeof FetchTagRequestSchema>;\nexport type FetchRelatedTagsRequest =\n | z.input<typeof RelatedTagsByIdRequestSchema>\n | z.input<typeof RelatedTagsBySlugRequestSchema>;\nexport type FetchRelatedTagResourcesRequest =\n | z.input<typeof RelatedTagResourcesByIdRequestSchema>\n | z.input<typeof RelatedTagResourcesBySlugRequestSchema>;\n\nexport type ListTagsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListTagsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists tags.\n *\n * @throws {@link ListTagsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listTags(client, {\n * includeTemplate: true,\n * pageSize: 12,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Tag[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listTags(client, {\n * includeTemplate: true,\n * pageSize: 12,\n * });\n *\n * for await (const page of result) {\n * // page.items: Tag[]\n * }\n * ```\n */\nexport function listTags(\n client: BaseClient,\n request: ListTagsRequest = {},\n): Paginated<Tag[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListTagsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get('/tags', {\n params: toSearchParams(\n {\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListTagsResponseSchema))\n .map((tags) => {\n const hasMore = tags.length > decoded.pageSize;\n\n return {\n items: tags.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n\nexport type FetchTagError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchTagError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches a tag by id or slug.\n *\n * @throws {@link FetchTagError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const tag = await fetchTag(client, {\n * slug: 'politics',\n * locale: 'en',\n * });\n *\n * // tag === Tag\n * ```\n */\nexport async function fetchTag(\n client: BaseClient,\n request: FetchTagRequest,\n): Promise<Tag> {\n const params = parseUserInput(request, FetchTagRequestSchema);\n\n if ('id' in params) {\n return unwrap(\n client.gamma\n .get(`tags/${params.id}`, {\n params: toSearchParams(\n {\n includeChat: params.includeChat,\n includeTemplate: params.includeTemplate,\n locale: params.locale,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(TagSchema)),\n );\n }\n\n return unwrap(\n client.gamma\n .get(`tags/slug/${params.slug}`, {\n params: toSearchParams(\n {\n locale: params.locale,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(TagSchema)),\n );\n}\n\nexport type FetchRelatedTagsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchRelatedTagsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches related tag relationships by id or slug.\n *\n * @throws {@link FetchRelatedTagsError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const relatedTags = await fetchRelatedTags(client, {\n * id: '42',\n * status: 'active',\n * omitEmpty: true,\n * });\n *\n * // relatedTags: RelatedTag[]\n * ```\n */\nexport async function fetchRelatedTags(\n client: BaseClient,\n request: FetchRelatedTagsRequest,\n): Promise<RelatedTag[]> {\n if ('id' in request) {\n const params = parseUserInput(request, RelatedTagsByIdRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`tags/${params.id}/related-tags`, {\n params: toSearchParams(\n {\n omitEmpty: params.omitEmpty,\n status: params.status,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListRelatedTagsResponseSchema)),\n );\n }\n\n const params = parseUserInput(request, RelatedTagsBySlugRequestSchema);\n\n return unwrap(\n client.gamma\n .get(`tags/slug/${params.slug}/related-tags`)\n .andThen(validateWith(ListRelatedTagsResponseSchema)),\n );\n}\n\nexport type FetchRelatedTagResourcesError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const FetchRelatedTagResourcesError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Fetches resources linked from related tag relationships by id or slug.\n *\n * @throws {@link FetchRelatedTagResourcesError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const relatedResources = await fetchRelatedTagResources(client, {\n * slug: 'election',\n * status: 'active',\n * omitEmpty: true,\n * });\n *\n * // relatedResources: Tag[]\n * ```\n */\nexport async function fetchRelatedTagResources(\n client: BaseClient,\n request: FetchRelatedTagResourcesRequest,\n): Promise<Tag[]> {\n if ('id' in request) {\n const params = parseUserInput(\n request,\n RelatedTagResourcesByIdRequestSchema,\n );\n\n return unwrap(\n client.gamma\n .get(`tags/${params.id}/related-tags/tags`, {\n params: toSearchParams(\n {\n locale: params.locale,\n omitEmpty: params.omitEmpty,\n status: params.status,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListRelatedTagResourcesResponseSchema)),\n );\n }\n\n const params = parseUserInput(\n request,\n RelatedTagResourcesBySlugRequestSchema,\n );\n\n return unwrap(\n client.gamma\n .get(`tags/slug/${params.slug}/related-tags/tags`, {\n params: toSearchParams(\n {\n locale: params.locale,\n omitEmpty: params.omitEmpty,\n status: params.status,\n },\n snakeCase(),\n ),\n })\n .andThen(validateWith(ListRelatedTagResourcesResponseSchema)),\n );\n}\n","import { PaginationCursorSchema } from '@polymarket/bindings';\nimport { ListTeamsResponseSchema, type Team } from '@polymarket/bindings/gamma';\nimport { z } from 'zod';\nimport type { BaseClient } from '../clients';\nimport {\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n decodeOffsetCursor,\n encodeOffsetCursor,\n PageSizeSchema,\n type Paginated,\n paginate,\n} from '../pagination';\nimport { validateWith } from '../response';\nimport { snakeCase, toSearchParams } from './params';\n\nconst ListTeamsRequestSchema = z.object({\n abbreviation: z.array(z.string()).optional(),\n ascending: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n league: z.array(z.string()).optional(),\n name: z.array(z.string()).optional(),\n order: z.string().optional(),\n pageSize: PageSizeSchema.default(20),\n providerId: z.array(z.number().int()).optional(),\n});\n\nexport type ListTeamsRequest = z.input<typeof ListTeamsRequestSchema>;\n\nexport type ListTeamsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListTeamsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists teams.\n *\n * @throws {@link ListTeamsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listTeams(client, {\n * league: ['NBA'],\n * pageSize: 10,\n * });\n *\n * const firstPage = await result.firstPage();\n *\n * // Optionally, fetch additional pages:\n * for await (const page of result.from(firstPage.nextCursor)) {\n * // page.items: Team[]\n * }\n * ```\n *\n * @example\n * Loop through all pages with `for await`:\n * ```ts\n * const result = listTeams(client, {\n * league: ['NBA'],\n * pageSize: 10,\n * });\n *\n * for await (const page of result) {\n * // page.items: Team[]\n * }\n * ```\n */\nexport function listTeams(\n client: BaseClient,\n request: ListTeamsRequest = {},\n): Paginated<Team[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListTeamsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.gamma\n .get('/teams', {\n params: toSearchParams(\n {\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n },\n snakeCase({ providerId: 'provider_id' }),\n ),\n })\n .andThen(validateWith(ListTeamsResponseSchema))\n .map((teams) => {\n const hasMore = teams.length > decoded.pageSize;\n\n return {\n items: teams.slice(0, decoded.pageSize),\n hasMore,\n nextCursor: hasMore\n ? encodeOffsetCursor({\n offset: decoded.offset + decoded.pageSize,\n pageSize: decoded.pageSize,\n })\n : undefined,\n };\n });\n }, cursor);\n}\n","import { type EvmAddress, EvmAddressSchema } from '@polymarket/bindings';\nimport { WalletType } from '@polymarket/bindings/gamma';\nimport type { EvmSignature } from '@polymarket/types';\nimport { z } from 'zod';\nimport { erc20TransferCall } from '../abis';\nimport type { BaseSecureClient } from '../clients';\nimport {\n CancelledSigningError,\n makeErrorGuard,\n SigningError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n expectTransactionHandle,\n type SignerTransactionRequest,\n type TransactionHandle,\n} from '../types';\nimport {\n completeWith,\n type SendErc20TransferTransactionRequest,\n signerTransactionRequest,\n} from '../workflow';\nimport {\n GaslessTransactionMetadataSchema,\n type GaslessWorkflowRequest,\n prepareGaslessTransaction,\n} from './gasless';\n\nexport type Erc20TransferWorkflowRequest =\n | GaslessWorkflowRequest\n | SendErc20TransferTransactionRequest;\n\nexport type Erc20TransferWorkflow = AsyncGenerator<\n Erc20TransferWorkflowRequest,\n TransactionHandle,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nconst PrepareErc20TransferRequestSchema = z.object({\n amount: z.bigint(),\n metadata: GaslessTransactionMetadataSchema.optional(),\n recipientAddress: EvmAddressSchema,\n tokenAddress: EvmAddressSchema,\n});\n\nexport type PrepareErc20TransferRequest = z.input<\n typeof PrepareErc20TransferRequestSchema\n>;\n\nexport type PrepareErc20TransferError = UserInputError;\nexport const PrepareErc20TransferError = makeErrorGuard(UserInputError);\n\n/**\n * Starts an ERC-20 transfer workflow.\n *\n * @remarks\n * This is a low-level action that most SDK consumers will not need.\n *\n * @example\n * ```ts\n * const workflow = await prepareErc20Transfer(client, {\n * amount: 1n,\n * recipientAddress: client.account.signer,\n * tokenAddress: client.environment.collateralToken,\n * });\n * ```\n *\n * @throws {@link PrepareErc20TransferError}\n * Thrown on failure.\n */\nexport async function prepareErc20Transfer(\n client: BaseSecureClient,\n request: PrepareErc20TransferRequest,\n): Promise<Erc20TransferWorkflow> {\n const params = parseUserInput(request, PrepareErc20TransferRequestSchema);\n\n return async function* (): Erc20TransferWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n return expectTransactionHandle(\n yield sendErc20TransferTransaction(\n signerTransactionRequest(\n client.environment.chainId,\n erc20TransferCall(\n params.tokenAddress,\n params.recipientAddress,\n params.amount,\n ),\n ),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [\n erc20TransferCall(\n params.tokenAddress,\n params.recipientAddress,\n params.amount,\n ),\n ],\n metadata:\n params.metadata ??\n `Transfer ${params.amount} of ${params.tokenAddress} to ${params.recipientAddress}`,\n });\n }.call(null);\n}\n\nexport type TransferErc20Error =\n | PrepareErc20TransferError\n | CancelledSigningError\n | SigningError;\nexport const TransferErc20Error = makeErrorGuard(\n CancelledSigningError,\n SigningError,\n UserInputError,\n);\n\n/**\n * Transfers ERC-20 tokens from the authenticated account.\n *\n * @throws {@link TransferErc20Error}\n * Thrown on failure.\n */\nexport function transferErc20(\n client: BaseSecureClient,\n request: PrepareErc20TransferRequest,\n): Promise<TransactionHandle> {\n return prepareErc20Transfer(client, request).then(\n completeWith(client.signer),\n );\n}\n\nfunction sendErc20TransferTransaction(\n request: SignerTransactionRequest,\n): SendErc20TransferTransactionRequest {\n return {\n kind: 'sendErc20TransferTransaction',\n request,\n };\n}\n"]}