@polymarket/client 0.1.0-beta.2 → 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.
@@ -0,0 +1 @@
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/exchange.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/protocol.ts","../src/actions/positions.ts","../src/actions/profiles.ts","../src/actions/rfq.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","requests","responses","#postBatch","index","responsesById","_","id","expectRpcHexResult","json","ky","TransportError","body","isJsonRpcResponse","value","isJsonRpcContractRevert","isJsonRpcError","message","stringifyJsonRpcErrorData","isRecord","data","resolveAccountIdentity","environment","signer","wallet","classifyWalletType","toSignatureType","walletType","WalletType","SignatureType","resolveOrderIdentity","account","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","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","BYTES31_HEX_LENGTH","PROTOCOL_V2_CONDITION_ID_BYTES31_PATTERN","PROTOCOL_V2_CONDITION_ID_BYTES32_PATTERN","ZERO_BYTES32","ERC20_APPROVE_FUNCTION","AbiFunction","ERC20_ALLOWANCE_FUNCTION","ERC20_TRANSFER_FUNCTION","ERC1155_SET_APPROVAL_FOR_ALL_FUNCTION","ERC1155_IS_APPROVED_FOR_ALL_FUNCTION","ERC1155_BALANCE_OF_FUNCTION","ERC1155_BALANCE_OF_BATCH_FUNCTION","CTF_SPLIT_POSITION_FUNCTION","CTF_MERGE_POSITIONS_FUNCTION","CTF_REDEEM_POSITIONS_FUNCTION","ROUTER_SPLIT_FUNCTION","ROUTER_MERGE_FUNCTION","ROUTER_REDEEM_FUNCTION","COMBINATORIAL_MODULE_PREPARE_CONDITION_FUNCTION","SAFE_MULTISEND_FUNCTION","PROXY_FACTORY_FUNCTION","BINARY_OUTCOME_PARTITION","BINARY_OUTCOME_INDEX_SETS","MAX_UINT256","Erc20ApprovalCallError","erc20ApprovalCall","tokenAddress","spender","amount","encodeErc20ApproveCall","erc20AllowanceCall","owner","decodeErc20AllowanceResult","erc1155ApprovalForAllCall","operator","approved","encodeErc1155SetApprovalForAllCall","erc1155IsApprovedForAllCall","decodeErc1155IsApprovedForAllResult","erc1155BalanceOfCall","expectUint256","decodeErc1155BalanceOfResult","erc1155BalanceOfBatchCall","ids","decodeErc1155BalanceOfBatchResult","Erc20TransferCallError","erc20TransferCall","recipient","encodeErc20TransferCall","CtfRedeemPositionsCallError","SplitPositionCallError","splitPositionCall","targetAddress","collateralTokenAddress","conditionId","encodeSplitPositionCall","MergePositionsCallError","mergePositionsCall","encodeMergePositionsCall","ctfRedeemPositionsCall","conditionalTokensAddress","encodeCtfRedeemPositionsCall","SplitV2CallError","splitV2Call","routerAddress","normalizeProtocolV2ConditionId","MergeV2CallError","mergeV2Call","RedeemV2CallError","redeemV2Call","outcomeIndex","expectProtocolV2OutcomeIndex","CombinatorialPrepareConditionCallError","combinatorialPrepareConditionCall","combinatorialModuleAddress","legs","leg","invariant","label","normalized","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","IsWalletDeployedRequestSchema","EvmAddressSchema","IsWalletDeployedError","isWalletDeployed","resolveWalletDeploymentTarget","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","missingApprovals","resolveMissingTradingApprovals","erc20ApprovalCalls","approval","erc1155ApprovalCalls","SetupTradingApprovalsError","setupTradingApprovals","createDeprecatedTransactionHandle","requiredApprovals","getRequiredTradingApprovals","checkCalls","results","erc20Results","erc1155Results","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","marketSlug","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","PositionIdSchema","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","resolvePrice","roundConfig","rawPrice","rawTakerAmount","rawMakerAmount","BasePrepareMarketOrderParamsSchema","PrepareMarketOrderParamsSchema","prepareMarketOrderDraft","resolveMarketOrderContext","computeMarketOrderAmounts","resolvedAmount","resolveMarketOrderAmount","feeInfo","builderTakerFeeRate","fetchMarketFeeInfo","fetchBuilderTakerFeeRate","adjustBuyAmountForFees","builderCode","platformFeeRate","platformFee","totalCost","BYTES32_ZERO","createUnsignedOrder","identity","generateOrderSalt","createSignedOrder","_chainId","_exchangeAddress","signedFields","bytes","byte","PROTOCOL_NAME","ORDER_TYPE_STRING","ORDER_TYPE_HASH","DOMAIN_TYPE_HASH","PROTOCOL_NAME_HASH","ORDER_STRUCTURE","TYPED_DATA_SIGN_STRUCTURE","createExchangeOrderTypedDataPayload","orderPayload","createLegacyExchangeOrderTypedDataPayload","createExchangeOrderTypedDataDomain","createExchangeOrderSignature","contentsType","contentsTypeLength","expectErc1271Signature","createExchangeOrderDomainSeparator","createExchangeOrderContentsHash","createExchangeOrderMessage","encodeExchangeOrderSide","domain","protocolVersionHash","protocolVersion","createOrderTypedDataPayload","createOrderExchangeDomain","createOrderSignature","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","ListComboPositionsRequestSchema","ComboPositionStatusSchema","FetchPortfolioValueRequestSchema","FetchTradedMarketCountRequestSchema","DownloadAccountingSnapshotRequestSchema","ListPositionsError","listPositions","ListPositionsResponseSchema","ListClosedPositionsError","ListComboPositionsError","listClosedPositions","ListClosedPositionsResponseSchema","listComboPositions","ListComboPositionsResponseSchema","FetchPortfolioValueError","fetchPortfolioValue","FetchPortfolioValueResponseSchema","FetchTradedMarketCountError","fetchTradedMarketCount","TradedSchema","DownloadAccountingSnapshotError","downloadAccountingSnapshot","UINT256_BYTE_LENGTH","COMBINATORIAL_MODULE_ID","MAX_COMBO_LEGS","UINT256_MAX","deriveComboPositionContext","encodedLegs","toPositionId","canonicalizeComboLegs","parsePositionId","hex","moduleId","left","right","previous","current","decodeComboOutcomePositionId","positionId","parsed","PrepareSplitMarketPositionRequestSchema","PrepareSplitComboPositionInputSchema","CanonicalComboLegsSchema","PrepareSplitComboPositionRequestSchema","PrepareSplitPositionRequestSchema","PrepareSplitPositionError","PrepareSplitMarketPositionError","PrepareSplitComboPositionError","PrepareMergePositionsError","PrepareMergeMarketPositionError","PrepareMergeComboPositionError","PrepareRedeemPositionsError","PrepareRedeemMarketPositionsError","PrepareRedeemComboPositionError","prepareSplitMarketPosition","resolveMarketClobContext","sendSplitPositionTransaction","prepareSplitComboPosition","prepareConditionCall","combo","splitCall","prepareSplitPosition","SplitPositionError","SplitMarketPositionError","SplitComboPositionError","splitMarketPosition","splitComboPosition","splitPosition","PrepareMergeMarketPositionRequestSchema","PrepareMergeComboPositionInputSchema","PrepareMergeComboPositionRequestSchema","PrepareMergePositionsRequestSchema","prepareMergeMarketPosition","balances","resolveMergeAmount","sendMergePositionsTransaction","prepareMergeComboPosition","mergeCall","prepareMergePositions","MergePositionsError","MergeMarketPositionError","MergeComboPositionError","mergeMarketPosition","mergeComboPosition","mergePositions","PrepareRedeemMarketPositionsByConditionIdRequestSchema","PrepareRedeemMarketPositionsByMarketIdRequestSchema","MarketIdSchema","PrepareRedeemMarketPositionsRequestSchema","PrepareRedeemComboPositionRequestSchema","PrepareRedeemPositionsRequestSchema","prepareRedeemMarketPositions","sendRedeemPositionsTransaction","prepareRedeemComboPosition","balance","prepareRedeemPositions","RedeemPositionsError","redeemPositions","markets","parseMarketId","market","marketContext","normalizeMarketClobContext","isPresent","yesTokenId","noTokenId","requestedAmount","maxAmount","calculateMaxMergeAmount","yesAmount","noAmount","FetchPublicProfileRequestSchema","FetchPublicProfileError","fetchPublicProfile","PublicProfileSchema","RfqQuoteRejectedError","PolymarketError","options","RfqQuoteError","RfqCancelQuoteRejectedError","RfqCancelQuoteError","RfqConfirmationRejectedError","RfqConfirmationError","OpenRfqSessionError","openRfqSession","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-RX3J5EHP.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 ethCallBatch(\n requests: readonly EthCallRequest[],\n ): Promise<HexString[]> {\n if (requests.length === 0) {\n return [];\n }\n\n const responses = await this.#postBatch<HexString>(\n requests.map((request, index) => ({\n jsonrpc: '2.0',\n id: index + 1,\n method: 'eth_call',\n params: [{ to: request.to, data: request.data }, 'latest'],\n })),\n );\n\n const responsesById = new Map<number, JsonRpcResponse<HexString>>();\n\n for (const response of responses) {\n if ('error' in response && response.id === null) {\n throw new RequestRejectedError(\n `JSON-RPC eth_call failed: ${response.error.message}`,\n { cause: response.error, status: 200 },\n );\n }\n\n if (response.id !== null) {\n responsesById.set(response.id, response);\n }\n }\n\n return requests.map((_, index) => {\n const id = index + 1;\n const response = responsesById.get(id);\n\n if (response === undefined) {\n throw new UnexpectedResponseError(\n 'Expected JSON-RPC batch response for every request',\n );\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 return expectRpcHexResult(response.result);\n });\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 async #postBatch<TResult>(\n json: unknown,\n ): 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 (\n !Array.isArray(body) ||\n !body.every((value) => isJsonRpcResponse<TResult>(value))\n ) {\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 expectRpcHexResult(value: unknown): HexString {\n if (typeof value !== 'string' || !isRpcHexString(value)) {\n throw new UnexpectedResponseError(\n 'Expected JSON-RPC eth_call result to be a hex string',\n );\n }\n\n return 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\n/** @internal */\nexport type OrderIdentity = {\n maker: EvmAddress;\n signatureType: SignatureType;\n signer: EvmAddress;\n};\n\n/** @internal */\nexport function resolveOrderIdentity(account: AccountIdentity): OrderIdentity {\n const signatureType = toSignatureType(account.walletType);\n\n return {\n maker: account.wallet,\n signatureType,\n signer:\n signatureType === SignatureType.POLY_1271\n ? account.wallet\n : account.signer,\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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, PositionId, TokenId } from '@polymarket/bindings';\nimport { type EvmAddress, type HexString, invariant } from '@polymarket/types';\nimport { AbiFunction, AbiParameters } from 'ox';\nimport { makeErrorGuard, UserInputError } from './errors';\nimport type { CanonicalComboLegs } from './protocol';\nimport type { TransactionCall } from './types';\n\nconst BYTES31_HEX_LENGTH = 64;\nconst PROTOCOL_V2_CONDITION_ID_BYTES31_PATTERN = /^0x[0-9a-fA-F]{62}$/;\nconst PROTOCOL_V2_CONDITION_ID_BYTES32_PATTERN = /^0x[0-9a-fA-F]{64}$/;\nconst ZERO_BYTES32 =\n '0x0000000000000000000000000000000000000000000000000000000000000000';\nconst ERC20_APPROVE_FUNCTION = AbiFunction.from(\n 'function approve(address spender, uint256 amount)',\n);\nconst ERC20_ALLOWANCE_FUNCTION = AbiFunction.from(\n 'function allowance(address owner, address spender) view returns (uint256)',\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 ERC1155_IS_APPROVED_FOR_ALL_FUNCTION = AbiFunction.from(\n 'function isApprovedForAll(address account, address operator) view returns (bool)',\n);\nconst ERC1155_BALANCE_OF_FUNCTION = AbiFunction.from(\n 'function balanceOf(address account, uint256 id) view returns (uint256)',\n);\nconst ERC1155_BALANCE_OF_BATCH_FUNCTION = AbiFunction.from(\n 'function balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])',\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 ROUTER_SPLIT_FUNCTION = AbiFunction.from(\n 'function split(bytes31 conditionId, uint256 amount)',\n);\nconst ROUTER_MERGE_FUNCTION = AbiFunction.from(\n 'function merge(bytes31 conditionId, uint256 amount)',\n);\nconst ROUTER_REDEEM_FUNCTION = AbiFunction.from(\n 'function redeem(bytes31 conditionId, uint256 outcomeIndex, uint256 amount)',\n);\nconst COMBINATORIAL_MODULE_PREPARE_CONDITION_FUNCTION = AbiFunction.from(\n 'function prepareCondition(uint256[] legs) returns (bytes31)',\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/** @internal */\nexport function erc20AllowanceCall(\n tokenAddress: EvmAddress,\n owner: EvmAddress,\n spender: EvmAddress,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ERC20_ALLOWANCE_FUNCTION, [owner, spender]),\n to: tokenAddress,\n };\n}\n\n/** @internal */\nexport function decodeErc20AllowanceResult(data: HexString): bigint {\n return AbiFunction.decodeResult(ERC20_ALLOWANCE_FUNCTION, data);\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\n/** @internal */\nexport function erc1155IsApprovedForAllCall(\n tokenAddress: EvmAddress,\n owner: EvmAddress,\n operator: EvmAddress,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ERC1155_IS_APPROVED_FOR_ALL_FUNCTION, [\n owner,\n operator,\n ]),\n to: tokenAddress,\n };\n}\n\n/** @internal */\nexport function decodeErc1155IsApprovedForAllResult(data: HexString): boolean {\n return AbiFunction.decodeResult(ERC1155_IS_APPROVED_FOR_ALL_FUNCTION, data);\n}\n\n/** @internal */\nexport function erc1155BalanceOfCall(\n tokenAddress: EvmAddress,\n owner: EvmAddress,\n id: PositionId,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ERC1155_BALANCE_OF_FUNCTION, [\n owner,\n expectUint256(BigInt(id), 'Position ID'),\n ]),\n to: tokenAddress,\n };\n}\n\n/** @internal */\nexport function decodeErc1155BalanceOfResult(data: HexString): bigint {\n return AbiFunction.decodeResult(ERC1155_BALANCE_OF_FUNCTION, data);\n}\n\n/** @internal */\nexport function erc1155BalanceOfBatchCall(\n tokenAddress: EvmAddress,\n owner: EvmAddress,\n ids: readonly (PositionId | TokenId)[],\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ERC1155_BALANCE_OF_BATCH_FUNCTION, [\n ids.map(() => owner),\n ids.map((id) => expectUint256(BigInt(id), 'id')),\n ]),\n to: tokenAddress,\n };\n}\n\n/** @internal */\nexport function decodeErc1155BalanceOfBatchResult(\n data: HexString,\n): readonly bigint[] {\n return AbiFunction.decodeResult(ERC1155_BALANCE_OF_BATCH_FUNCTION, data);\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\nexport type SplitV2CallError = UserInputError;\nexport const SplitV2CallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for protocol v2 Router `split(bytes31,uint256)`.\n *\n * @throws {@link SplitV2CallError}\n * Thrown when the condition ID or amount is invalid.\n */\nexport function splitV2Call(\n routerAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ROUTER_SPLIT_FUNCTION, [\n normalizeProtocolV2ConditionId(conditionId),\n expectUint256(amount, 'Split amount'),\n ]),\n to: routerAddress,\n };\n}\n\nexport type MergeV2CallError = UserInputError;\nexport const MergeV2CallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for protocol v2 Router `merge(bytes31,uint256)`.\n *\n * @throws {@link MergeV2CallError}\n * Thrown when the condition ID or amount is invalid.\n */\nexport function mergeV2Call(\n routerAddress: EvmAddress,\n conditionId: ConditionId,\n amount: bigint,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ROUTER_MERGE_FUNCTION, [\n normalizeProtocolV2ConditionId(conditionId),\n expectUint256(amount, 'Merge amount'),\n ]),\n to: routerAddress,\n };\n}\n\nexport type RedeemV2CallError = UserInputError;\nexport const RedeemV2CallError = makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for protocol v2 Router `redeem(bytes31,uint256,uint256)`.\n *\n * @throws {@link RedeemV2CallError}\n * Thrown when the condition ID, outcome index, or amount is invalid.\n */\nexport function redeemV2Call(\n routerAddress: EvmAddress,\n conditionId: ConditionId,\n outcomeIndex: 0 | 1,\n amount: bigint,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(ROUTER_REDEEM_FUNCTION, [\n normalizeProtocolV2ConditionId(conditionId),\n BigInt(expectProtocolV2OutcomeIndex(outcomeIndex)),\n expectUint256(amount, 'Redeem amount'),\n ]),\n to: routerAddress,\n };\n}\n\nexport type CombinatorialPrepareConditionCallError = UserInputError;\nexport const CombinatorialPrepareConditionCallError =\n makeErrorGuard(UserInputError);\n\n/**\n * Creates a transaction call for CombinatorialModule `prepareCondition(uint256[])`.\n *\n * @throws {@link CombinatorialPrepareConditionCallError}\n * Thrown when any leg position ID is invalid.\n */\nexport function combinatorialPrepareConditionCall(\n combinatorialModuleAddress: EvmAddress,\n legs: CanonicalComboLegs,\n): TransactionCall {\n return {\n data: AbiFunction.encodeData(\n COMBINATORIAL_MODULE_PREPARE_CONDITION_FUNCTION,\n [legs.map((leg) => expectUint256(leg, 'Leg position ID'))],\n ),\n to: combinatorialModuleAddress,\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\nfunction normalizeProtocolV2ConditionId(conditionId: string): HexString {\n if (PROTOCOL_V2_CONDITION_ID_BYTES31_PATTERN.test(conditionId)) {\n return conditionId.toLowerCase() as HexString;\n }\n\n if (PROTOCOL_V2_CONDITION_ID_BYTES32_PATTERN.test(conditionId)) {\n const normalized = conditionId.toLowerCase();\n if (normalized.endsWith('00')) {\n return normalized.slice(0, BYTES31_HEX_LENGTH) as HexString;\n }\n }\n\n throw new UserInputError(\n 'Protocol v2 condition ID must be bytes31, or bytes32 with a zero outcome byte',\n );\n}\n\nfunction expectProtocolV2OutcomeIndex(outcomeIndex: 0 | 1): 0 | 1 {\n if (outcomeIndex !== 0 && outcomeIndex !== 1) {\n throw new UserInputError('Protocol v2 outcome index must be 0 or 1');\n }\n\n return outcomeIndex;\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 function. Most SDK consumers should prefer the client instance API.\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 IsWalletDeployedRequestSchema = z.object({\n wallet: EvmAddressSchema,\n type: z.enum(WalletType),\n});\n\nexport type IsWalletDeployedRequest = z.input<\n typeof IsWalletDeployedRequestSchema\n>;\n\nexport type IsWalletDeployedError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const IsWalletDeployedError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Checks whether a wallet is deployed for relayer-backed transactions.\n *\n * It only checks deployment status; it does not check trading approvals or complete\n * order-readiness.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link IsWalletDeployedError}\n * Thrown on failure.\n *\n * @example\n * ```ts\n * const deployed = await isWalletDeployed(client, {\n * wallet: '0x1234...',\n * });\n * ```\n */\nexport async function isWalletDeployed(\n client: BaseClient,\n request?: IsWalletDeployedRequest,\n): Promise<boolean> {\n const params = await resolveWalletDeploymentTarget(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 resolveWalletDeploymentTarget(\n client: BaseClient,\n request: IsWalletDeployedRequest | undefined,\n): Promise<z.output<typeof IsWalletDeployedRequestSchema>> {\n if (request !== undefined) {\n return parseUserInput(request, IsWalletDeployedRequestSchema);\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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, HexString } from '@polymarket/types';\nimport { z } from 'zod';\nimport {\n decodeErc20AllowanceResult,\n decodeErc1155IsApprovedForAllResult,\n erc20AllowanceCall,\n erc20ApprovalCall,\n erc1155ApprovalForAllCall,\n erc1155IsApprovedForAllCall,\n MAX_UINT256,\n} from '../abis';\nimport type { BaseSecureClient } from '../clients';\nimport {\n CancelledSigningError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\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 SendErc20ApprovalTransactionRequest,\n type SendErc1155ApprovalForAllTransactionRequest,\n signerTransactionRequest,\n} from '../workflow';\nimport {\n GaslessTransactionMetadataSchema,\n type GaslessWorkflowRequest,\n prepareGaslessTransaction,\n type WaitForGaslessTransactionError,\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 function. Most SDK consumers should prefer the client instance API.\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 | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError\n | CancelledSigningError\n | SigningError;\nexport const ApproveErc20Error = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Approves ERC-20 token spending for the authenticated account.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError\n | CancelledSigningError\n | SigningError;\nexport const ApproveErc1155ForAllError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Approves or revokes ERC-1155 operator access for the authenticated account.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 void,\n EvmAddress | EvmSignature | TransactionHandle\n>;\n\nexport type PrepareTradingApprovalsError =\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareTradingApprovalsError = makeErrorGuard(\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\ntype Erc20TradingApproval = {\n amount: bigint;\n spenderAddress: EvmAddress;\n tokenAddress: EvmAddress;\n};\n\ntype Erc1155TradingApproval = {\n operatorAddress: EvmAddress;\n tokenAddress: EvmAddress;\n};\n\ntype TradingApprovalRequirements = {\n erc20: Erc20TradingApproval[];\n erc1155: Erc1155TradingApproval[];\n};\n\n/**\n * Starts a trading-setup approval workflow.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 missingApprovals = await resolveMissingTradingApprovals(client);\n const erc20ApprovalCalls = missingApprovals.erc20.map((approval) =>\n erc20ApprovalCall(\n approval.tokenAddress,\n approval.spenderAddress,\n approval.amount,\n ),\n );\n const erc1155ApprovalCalls = missingApprovals.erc1155.map((approval) =>\n erc1155ApprovalForAllCall(\n approval.tokenAddress,\n approval.operatorAddress,\n true,\n ),\n );\n\n return async function* (): TradingApprovalsWorkflow {\n if (erc20ApprovalCalls.length === 0 && erc1155ApprovalCalls.length === 0) {\n return;\n }\n\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 call of erc1155ApprovalCalls) {\n const handle = expectTransactionHandle(\n yield sendErc1155ApprovalForAllTransaction(\n signerTransactionRequest(client.environment.chainId, call),\n ),\n );\n\n await handle.wait();\n }\n\n return;\n }\n\n const handle = yield* await prepareGaslessTransaction(client, {\n calls: [...erc20ApprovalCalls, ...erc1155ApprovalCalls],\n metadata: 'Trading setup approvals',\n });\n\n await handle.wait();\n }.call(null);\n}\n\nexport type SetupTradingApprovalsError =\n | PrepareTradingApprovalsError\n | CancelledSigningError\n | SigningError\n | WaitForGaslessTransactionError;\nexport const SetupTradingApprovalsError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\nexport type DeprecatedTransactionHandle = Omit<TransactionHandle, 'wait'> & {\n /**\n * @deprecated `setupTradingApprovals` now waits internally. You do not need\n * to call this method, and it will be removed in a later version.\n */\n wait(): Promise<void>;\n};\n\n/**\n * Sets up the approvals required for trading.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link SetupTradingApprovalsError}\n * Thrown on failure.\n */\nexport function setupTradingApprovals(\n client: BaseSecureClient,\n): Promise<DeprecatedTransactionHandle> {\n return prepareTradingApprovals(client)\n .then(completeWith(client.signer))\n .then(createDeprecatedTransactionHandle);\n}\n\nfunction createDeprecatedTransactionHandle(): DeprecatedTransactionHandle {\n return {\n transactionHash: null,\n transactionId: null,\n wait: async () => {},\n };\n}\n\nasync function resolveMissingTradingApprovals(\n client: BaseSecureClient,\n): Promise<TradingApprovalRequirements> {\n const requiredApprovals = getRequiredTradingApprovals(client);\n const checkCalls = [\n ...requiredApprovals.erc20.map((approval) =>\n erc20AllowanceCall(\n approval.tokenAddress,\n client.account.wallet,\n approval.spenderAddress,\n ),\n ),\n ...requiredApprovals.erc1155.map((approval) =>\n erc1155IsApprovedForAllCall(\n approval.tokenAddress,\n client.account.wallet,\n approval.operatorAddress,\n ),\n ),\n ];\n const results = await client.rpc.ethCallBatch(checkCalls);\n const erc20Results = results.slice(0, requiredApprovals.erc20.length);\n const erc1155Results = results.slice(requiredApprovals.erc20.length);\n\n return {\n erc20: requiredApprovals.erc20.filter((approval, index) => {\n const allowance = decodeErc20AllowanceResult(\n erc20Results[index] as HexString,\n );\n\n return allowance < approval.amount;\n }),\n erc1155: requiredApprovals.erc1155.filter((_, index) => {\n const approved = decodeErc1155IsApprovedForAllResult(\n erc1155Results[index] as HexString,\n );\n\n return !approved;\n }),\n };\n}\n\nfunction getRequiredTradingApprovals(\n client: BaseSecureClient,\n): TradingApprovalRequirements {\n return {\n erc20: [\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.standardExchange,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.negRiskExchange,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.negRiskAdapter,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.collateralAdapter,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.negRiskCollateralAdapter,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.protocolV2Router,\n tokenAddress: client.environment.collateralToken,\n },\n {\n amount: MAX_UINT256,\n spenderAddress: client.environment.exchangeV3,\n tokenAddress: client.environment.collateralToken,\n },\n ],\n erc1155: [\n {\n operatorAddress: client.environment.standardExchange,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.negRiskExchange,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.negRiskAdapter,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.collateralAdapter,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.negRiskCollateralAdapter,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.autoRedeemOperator,\n tokenAddress: client.environment.conditionalTokens,\n },\n {\n operatorAddress: client.environment.protocolV2Router,\n tokenAddress: client.environment.positionManager,\n },\n {\n operatorAddress: client.environment.exchangeV3,\n tokenAddress: client.environment.positionManager,\n },\n {\n operatorAddress: client.environment.autoRedeemOperator,\n tokenAddress: client.environment.positionManager,\n },\n ],\n };\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 .mapErr((error) => {\n if (error instanceof RequestRejectedError && error.status === 404) {\n return new UserInputError(\n `Unknown builder code: ${params.builderCode}`,\n { cause: error },\n );\n }\n\n return error;\n }),\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 const marketSlug = extraSegments[0];\n\n if (\n resource === 'market' &&\n actualResource === 'event' &&\n slug !== undefined &&\n extraSegments.length <= 1\n ) {\n return marketSlug ?? slug;\n }\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().default(false),\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 * Defaults to open events. Pass `closed: true` to list settled events.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 PositionIdSchema,\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 positionIds: z.array(PositionIdSchema).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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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/event/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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\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 type { HexString } from '@polymarket/types';\nimport type { AccountIdentity } from '../../wallet';\nimport { resolveOrderIdentity } 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 identity = resolveOrderIdentity(account);\n\n return {\n builder: order.builderCode ?? BYTES32_ZERO,\n chainId: order.chainId,\n exchangeAddress: order.exchangeAddress,\n expiration: order.expiration,\n maker: identity.maker,\n makerAmount: order.offeredAmount.toString(),\n metadata: BYTES32_ZERO,\n orderType: order.orderType,\n salt: generateOrderSalt().toString(),\n side: order.side,\n signatureType: identity.signatureType,\n signer: identity.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, type PositionId, type TokenId } 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';\n\nconst PROTOCOL_NAME = 'Polymarket CTF Exchange';\nconst DEPOSIT_WALLET_DOMAIN_NAME = 'DepositWallet';\nconst DEPOSIT_WALLET_DOMAIN_VERSION = '1';\nconst BYTES32_ZERO =\n '0x0000000000000000000000000000000000000000000000000000000000000000' satisfies HexString;\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 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];\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];\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\n/** @internal */\nexport enum ExchangeOrderProtocolVersion {\n V2 = '2',\n V3 = '3',\n}\n\n/** @internal */\nexport type ExchangeOrderDomain = {\n chainId: number;\n exchange: EvmAddress;\n protocolVersion: ExchangeOrderProtocolVersion;\n};\n\n/** @internal */\nexport type ExchangeOrderInput = {\n builder?: HexString;\n maker: EvmAddress;\n makerAmount: string;\n metadata?: HexString;\n salt: string;\n side: OrderSide | 0 | 1;\n signatureType: SignatureType;\n signer: EvmAddress;\n takerAmount: string;\n timestamp: string;\n tokenId: PositionId | TokenId;\n};\n\n/** @internal */\nexport type ExchangeOrderMessage = {\n builder: HexString;\n maker: EvmAddress;\n makerAmount: bigint;\n metadata: HexString;\n salt: bigint;\n side: 0 | 1;\n signatureType: SignatureType;\n signer: EvmAddress;\n takerAmount: bigint;\n timestamp: bigint;\n tokenId: bigint;\n};\n\n/** @internal */\nexport type CreateExchangeOrderTypedDataPayloadParams = {\n domain: ExchangeOrderDomain;\n order: ExchangeOrderInput;\n};\n\n/** @internal */\nexport type CreateExchangeOrderSignatureParams = {\n domain: ExchangeOrderDomain;\n order: ExchangeOrderInput;\n signature: EvmSignature;\n};\n\n/** @internal */\nexport function createExchangeOrderTypedDataPayload(\n params: CreateExchangeOrderTypedDataPayloadParams,\n): TypedDataPayload {\n const orderPayload = createLegacyExchangeOrderTypedDataPayload(\n params.domain,\n params.order,\n );\n\n if (params.order.signatureType !== SignatureType.POLY_1271) {\n return orderPayload;\n }\n\n return {\n domain: createExchangeOrderTypedDataDomain(params.domain),\n message: {\n chainId: params.domain.chainId,\n contents: orderPayload.message,\n name: DEPOSIT_WALLET_DOMAIN_NAME,\n salt: BYTES32_ZERO,\n verifyingContract: params.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\n/** @internal */\nexport function createExchangeOrderSignature(\n params: CreateExchangeOrderSignatureParams,\n): EvmSignature | Erc1271Signature {\n if (params.order.signatureType !== SignatureType.POLY_1271) {\n return params.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${params.signature.slice(2)}${createExchangeOrderDomainSeparator(params.domain).slice(2)}${createExchangeOrderContentsHash(params.order).slice(2)}${contentsType.slice(2)}${contentsTypeLength}`,\n );\n}\n\n/** @internal */\nexport function createExchangeOrderMessage(\n order: ExchangeOrderInput,\n): ExchangeOrderMessage {\n return {\n builder: order.builder ?? BYTES32_ZERO,\n maker: order.maker,\n makerAmount: BigInt(order.makerAmount),\n metadata: order.metadata ?? BYTES32_ZERO,\n salt: BigInt(order.salt),\n side: encodeExchangeOrderSide(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 createLegacyExchangeOrderTypedDataPayload(\n domain: ExchangeOrderDomain,\n order: ExchangeOrderInput,\n): TypedDataPayload {\n return {\n domain: createExchangeOrderTypedDataDomain(domain),\n message: createExchangeOrderMessage(order),\n primaryType: 'Order',\n types: {\n EIP712Domain: EIP712_DOMAIN,\n Order: ORDER_STRUCTURE,\n },\n };\n}\n\nfunction createExchangeOrderTypedDataDomain(domain: ExchangeOrderDomain) {\n return {\n chainId: domain.chainId,\n name: PROTOCOL_NAME,\n verifyingContract: domain.exchange,\n version: domain.protocolVersion,\n };\n}\n\nfunction createExchangeOrderDomainSeparator(\n domain: ExchangeOrderDomain,\n): 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 protocolVersionHash(domain.protocolVersion),\n BigInt(domain.chainId),\n domain.exchange,\n ],\n ),\n { as: 'Hex' },\n ),\n );\n}\n\nfunction createExchangeOrderContentsHash(order: ExchangeOrderInput): HexString {\n const message = createExchangeOrderMessage(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 protocolVersionHash(\n protocolVersion: ExchangeOrderProtocolVersion,\n): HexString {\n return expectHexString(\n Hash.keccak256(Bytes.fromString(protocolVersion), { as: 'Hex' }),\n );\n}\n\nfunction encodeExchangeOrderSide(side: OrderSide | 0 | 1): 0 | 1 {\n if (side === 0 || side === 1) return side;\n\n return side === OrderSide.BUY ? 0 : 1;\n}\n","import type { Erc1271Signature, EvmSignature } from '@polymarket/types';\nimport {\n createExchangeOrderSignature,\n createExchangeOrderTypedDataPayload,\n ExchangeOrderProtocolVersion,\n} from '../../exchange';\nimport type { TypedDataPayload } from '../../types';\nimport type { UnsignedOrder } from './types';\n\nexport function createOrderTypedDataPayload(\n order: UnsignedOrder,\n): TypedDataPayload {\n return createExchangeOrderTypedDataPayload({\n domain: createOrderExchangeDomain(order),\n order,\n });\n}\n\nexport function createOrderSignature(\n order: UnsignedOrder,\n signature: EvmSignature,\n): EvmSignature | Erc1271Signature {\n return createExchangeOrderSignature({\n domain: createOrderExchangeDomain(order),\n order,\n signature,\n });\n}\n\nfunction createOrderExchangeDomain(order: UnsignedOrder) {\n return {\n chainId: order.chainId,\n exchange: order.exchangeAddress,\n protocolVersion: ExchangeOrderProtocolVersion.V2,\n };\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 outcome tokens to sell.\n *\n * This is the human-readable token amount: `1` means one full share, not one\n * 6-decimal base unit.\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 /**\n * Order size in outcome tokens.\n *\n * This is the human-readable token amount: `1` means one full share, not one\n * 6-decimal base unit.\n */\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 * The timestamp must be at least 60 seconds in the future. Add your own\n * buffer for network latency and clock skew when deriving it from the\n * current time.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * GTD expirations must be at least 60 seconds in the future. Add your own\n * buffer for network latency and clock skew when deriving an expiration from\n * the current time.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * GTD expirations must be at least 60 seconds in the future. Add your own\n * buffer for network latency and clock skew when deriving an expiration from\n * the current time.\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 type ComboPosition,\n ComboPositionStatusSchema,\n FetchPortfolioValueResponseSchema,\n ListClosedPositionsResponseSchema,\n ListComboPositionsResponseSchema,\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 { snakeCase, toDataSearchParams, toSearchParams } from './params';\n\nexport { ComboPositionStatus } from '@polymarket/bindings/data';\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 ListComboPositionsRequestSchema = z.object({\n cursor: PaginationCursorSchema.optional(),\n user: z.string(),\n pageSize: PageSizeSchema.default(20),\n status: ComboPositionStatusSchema.optional(),\n conditionId: z.string().optional(),\n positionId: z.string().optional(),\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 ListComboPositionsRequest = z.input<\n typeof ListComboPositionsRequestSchema\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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\nexport type ListComboPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const ListComboPositionsError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Lists closed positions for a wallet.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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\n/**\n * Lists combo positions for a wallet.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link ListComboPositionsError}\n * Thrown on failure.\n *\n * @example\n * Fetch the first page of results:\n * ```ts\n * const result = listComboPositions(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: ComboPosition[]\n * }\n * ```\n *\n * @example\n * Filter to open combo positions:\n * ```ts\n * const result = listComboPositions(client, {\n * user: '0x7c3db723f1d4d8cb9c550095203b686cb11e5c6b',\n * status: ComboPositionStatus.Open,\n * });\n * ```\n */\nexport function listComboPositions(\n client: BaseClient,\n request: ListComboPositionsRequest,\n): Paginated<ComboPosition[]> {\n const { cursor, pageSize, ...params } = parseUserInput(\n request,\n ListComboPositionsRequestSchema,\n );\n\n return paginate((cursor) => {\n const decoded = decodeOffsetCursor(cursor, pageSize);\n\n return client.data\n .get('/v1/positions/combos', {\n params: toSearchParams(\n {\n ...params,\n limit: decoded.pageSize + 1,\n offset: decoded.offset,\n },\n snakeCase({\n conditionId: 'combo_condition_id',\n positionId: 'combo_position_id',\n }),\n ),\n })\n .andThen(validateWith(ListComboPositionsResponseSchema))\n .map((response) => {\n const hasMore = response.combos.length > decoded.pageSize;\n\n return {\n items: response.combos.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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 {\n type ConditionId,\n type PositionId,\n toPositionId,\n} from '@polymarket/bindings';\nimport type { Tagged } from '@polymarket/types';\nimport { AbiParameters, Hash } from 'ox';\nimport { UserInputError } from './errors';\n\nconst UINT256_BYTE_LENGTH = 32;\nconst COMBINATORIAL_MODULE_ID = 3n;\nconst MAX_COMBO_LEGS = 50;\nconst UINT256_MAX = (1n << 256n) - 1n;\n\nexport type CanonicalComboLegs = Tagged<\n readonly bigint[],\n 'CanonicalComboLegs'\n>;\n\nexport type ComboPositionContext = {\n conditionId: ConditionId;\n positionIds: [yes: PositionId, no: PositionId];\n};\n\n/**\n * Derives a combo condition ID and its complementary YES/NO position IDs from canonical combo legs.\n */\nexport function deriveComboPositionContext(\n legs: CanonicalComboLegs,\n): ComboPositionContext {\n const encodedLegs = AbiParameters.encode(\n [{ name: 'legs', type: 'uint256[]' }],\n [legs],\n );\n const baseHash = Hash.keccak256(\n AbiParameters.encode(\n [\n { name: 'moduleId', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n ],\n [COMBINATORIAL_MODULE_ID, encodedLegs],\n ),\n );\n const conditionId =\n `0x03${baseHash.slice(34)}0000000000000000000000000000` as ConditionId;\n\n return {\n conditionId,\n positionIds: [\n toPositionId(BigInt(`${conditionId}00`).toString()),\n toPositionId(BigInt(`${conditionId}01`).toString()),\n ],\n };\n}\n\n/**\n * Validates and canonicalizes combo leg position IDs.\n *\n * @throws {@link UserInputError}\n * Thrown when the legs do not form a valid combo condition.\n */\nexport function canonicalizeComboLegs(\n legs: readonly PositionId[],\n): CanonicalComboLegs {\n if (legs.length === 0 || legs.length > MAX_COMBO_LEGS) {\n throw new UserInputError(\n `Combo legs must include 1 to ${MAX_COMBO_LEGS} position IDs`,\n );\n }\n\n const positions = legs.map((leg) => {\n const value = parsePositionId(leg);\n const hex = value.toString(16).padStart(UINT256_BYTE_LENGTH * 2, '0');\n const moduleId = Number.parseInt(hex.slice(0, 2), 16);\n const outcomeIndex = Number.parseInt(hex.slice(-2), 16);\n\n if ((moduleId !== 1 && moduleId !== 2) || outcomeIndex > 1) {\n throw new UserInputError(\n 'Combo legs must be binary or neg-risk YES/NO position IDs',\n );\n }\n\n return {\n value,\n conditionId: hex.slice(0, -2),\n };\n });\n\n positions.sort((left, right) =>\n left.value < right.value ? -1 : left.value > right.value ? 1 : 0,\n );\n\n for (let index = 1; index < positions.length; index += 1) {\n const previous = positions[index - 1];\n const current = positions[index];\n\n if (previous === undefined || current === undefined) {\n throw new UserInputError('Invalid combo leg set');\n }\n\n if (previous.value === current.value) {\n throw new UserInputError(\n 'Combo legs must not contain duplicate position IDs',\n );\n }\n\n if (previous.conditionId === current.conditionId) {\n throw new UserInputError(\n 'Combo legs must not contain both outcomes for the same condition',\n );\n }\n }\n\n return positions.map(\n (position) => position.value,\n ) as unknown as CanonicalComboLegs;\n}\n\nexport type DecodedComboOutcomePositionId = {\n conditionId: ConditionId;\n outcomeIndex: 0 | 1;\n};\n\n/**\n * Decodes a combo YES/NO position ID into its condition ID and outcome index.\n *\n * @throws {@link UserInputError}\n * Thrown when the position ID is not a valid combo YES/NO position ID.\n */\nexport function decodeComboOutcomePositionId(\n positionId: PositionId,\n): DecodedComboOutcomePositionId {\n const value = parsePositionId(positionId);\n const hex = value.toString(16).padStart(UINT256_BYTE_LENGTH * 2, '0');\n const moduleId = BigInt(`0x${hex.slice(0, 2)}`);\n const outcomeIndex = Number.parseInt(hex.slice(-2), 16);\n\n if (moduleId !== COMBINATORIAL_MODULE_ID) {\n throw new UserInputError(\n 'Combo position ID must use the combinatorial module',\n );\n }\n\n if (outcomeIndex !== 0 && outcomeIndex !== 1) {\n throw new UserInputError('Combo position ID must be a YES/NO position ID');\n }\n\n return {\n conditionId: `0x${hex.slice(0, -2)}` as ConditionId,\n outcomeIndex,\n };\n}\n\nfunction parsePositionId(positionId: PositionId): bigint {\n const value = positionId.trim();\n let parsed: bigint;\n\n if (value.length === 0) {\n throw new UserInputError('Position ID must be a uint256 value');\n }\n\n try {\n parsed = BigInt(value);\n } catch {\n throw new UserInputError('Position ID must be a uint256 value');\n }\n\n if (parsed < 0n || parsed > UINT256_MAX) {\n throw new UserInputError('Position ID must be a uint256 value');\n }\n\n return parsed;\n}\n","import type {\n ConditionId,\n MarketId,\n PositionId,\n TokenId,\n} from '@polymarket/bindings';\nimport {\n ConditionIdSchema,\n MarketIdSchema,\n PositionIdSchema,\n} from '@polymarket/bindings';\nimport { type Market, WalletType } from '@polymarket/bindings/gamma';\nimport {\n type EvmAddress,\n type EvmSignature,\n invariant,\n isPresent,\n} from '@polymarket/types';\nimport { z } from 'zod';\nimport {\n combinatorialPrepareConditionCall,\n ctfRedeemPositionsCall,\n decodeErc1155BalanceOfBatchResult,\n decodeErc1155BalanceOfResult,\n erc1155BalanceOfBatchCall,\n erc1155BalanceOfCall,\n mergePositionsCall,\n mergeV2Call,\n redeemV2Call,\n splitPositionCall,\n splitV2Call,\n} from '../abis';\nimport type { BaseSecureClient } from '../clients';\nimport {\n CancelledSigningError,\n makeErrorGuard,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n} from '../errors';\nimport { parseUserInput } from '../input';\nimport {\n type CanonicalComboLegs,\n canonicalizeComboLegs,\n decodeComboOutcomePositionId,\n deriveComboPositionContext,\n} from '../protocol';\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';\n\n/**\n * Parameters for preparing a market position split.\n */\nexport type PrepareSplitMarketPositionRequest = {\n /** Amount of collateral to convert into market positions. */\n amount: bigint;\n /** Existing market condition ID that identifies the positions to mint. */\n conditionId: string | ConditionId;\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing a combo position split.\n */\nexport type PrepareSplitComboPositionRequest = {\n /** Amount of collateral to convert into combo positions. */\n amount: bigint;\n /** Protocol v2 leg position IDs that define the combo condition. */\n legs: string[] | PositionId[];\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing either supported position split workflow.\n *\n * @remarks\n * Provide either a market `conditionId` or combo `legs`.\n */\nexport type PrepareSplitPositionRequest =\n | PrepareSplitMarketPositionRequest\n | PrepareSplitComboPositionRequest;\n\nconst PrepareSplitMarketPositionRequestSchema = z.object({\n amount: z.bigint().min(0n),\n conditionId: ConditionIdSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareSplitMarketPositionRequest>;\n\nconst PrepareSplitComboPositionInputSchema = z.object({\n amount: z.bigint().positive(),\n legs: z.array(PositionIdSchema).min(1).max(50),\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareSplitComboPositionRequest>;\n\ntype ParsedSplitComboPositionRequest = {\n amount: bigint;\n legs: CanonicalComboLegs;\n metadata?: string;\n};\n\nconst CanonicalComboLegsSchema = z\n .array(PositionIdSchema)\n .min(1)\n .max(50)\n .transform(canonicalizeComboLegs);\n\nconst PrepareSplitComboPositionRequestSchema = z.object({\n amount: z.bigint().positive(),\n legs: CanonicalComboLegsSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<\n ParsedSplitComboPositionRequest,\n PrepareSplitComboPositionRequest\n>;\n\nconst PrepareSplitPositionRequestSchema = z.union([\n PrepareSplitMarketPositionRequestSchema.extend({\n legs: z.never().optional(),\n }),\n PrepareSplitComboPositionInputSchema.extend({\n conditionId: z.never().optional(),\n }),\n]) satisfies z.ZodType<PrepareSplitPositionRequest>;\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 PrepareSplitPositionError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const PrepareSplitPositionError = makeErrorGuard(\n RateLimitError,\n RequestRejectedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\nexport type PrepareSplitMarketPositionError = PrepareSplitPositionError;\nexport const PrepareSplitMarketPositionError = PrepareSplitPositionError;\nexport type PrepareSplitComboPositionError = PrepareSplitPositionError;\nexport const PrepareSplitComboPositionError = PrepareSplitPositionError;\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 PrepareMergeMarketPositionError = PrepareMergePositionsError;\nexport const PrepareMergeMarketPositionError = PrepareMergePositionsError;\nexport type PrepareMergeComboPositionError = PrepareMergePositionsError;\nexport const PrepareMergeComboPositionError = PrepareMergePositionsError;\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);\nexport type PrepareRedeemMarketPositionsError = PrepareRedeemPositionsError;\nexport const PrepareRedeemMarketPositionsError = PrepareRedeemPositionsError;\nexport type PrepareRedeemComboPositionError = PrepareRedeemPositionsError;\nexport const PrepareRedeemComboPositionError = PrepareRedeemPositionsError;\n\n/**\n * Starts a split workflow for a market condition.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareSplitMarketPosition(client, {\n * amount: 1n,\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @throws {@link PrepareSplitMarketPositionError}\n * Thrown on failure.\n */\nexport async function prepareSplitMarketPosition(\n client: BaseSecureClient,\n request: PrepareSplitMarketPositionRequest,\n): Promise<SplitPositionWorkflow> {\n const params = parseUserInput(\n request,\n PrepareSplitMarketPositionRequestSchema,\n );\n const context = await resolveMarketClobContext(client, {\n conditionId: params.conditionId,\n });\n const call = splitPositionCall(\n context.adapterAddress,\n client.environment.collateralToken,\n context.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 market ${context.marketId} (condition ${context.conditionId})`,\n });\n }.call(null);\n}\n\n/**\n * Starts a split workflow for a combo position from leg position IDs.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareSplitComboPosition(client, {\n * amount: 1n,\n * legs: ['123', '456'],\n * });\n * ```\n *\n * @throws {@link PrepareSplitComboPositionError}\n * Thrown on failure.\n */\nexport async function prepareSplitComboPosition(\n client: BaseSecureClient,\n request: PrepareSplitComboPositionRequest,\n): Promise<SplitPositionWorkflow> {\n const params = parseUserInput(\n request,\n PrepareSplitComboPositionRequestSchema,\n );\n const prepareConditionCall = combinatorialPrepareConditionCall(\n client.environment.combinatorialModule,\n params.legs,\n );\n const combo = deriveComboPositionContext(params.legs);\n const splitCall = splitV2Call(\n client.environment.protocolV2Router,\n combo.conditionId,\n params.amount,\n );\n\n return async function* (): SplitPositionWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n const prepareHandle = expectTransactionHandle(\n yield sendSplitPositionTransaction(\n signerTransactionRequest(\n client.environment.chainId,\n prepareConditionCall,\n ),\n ),\n );\n await prepareHandle.wait();\n\n return expectTransactionHandle(\n yield sendSplitPositionTransaction(\n signerTransactionRequest(client.environment.chainId, splitCall),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [prepareConditionCall, splitCall],\n metadata:\n params.metadata ??\n `Split ${params.amount} combo positions for condition ${combo.conditionId}`,\n });\n }.call(null);\n}\n\n/**\n * Starts a split workflow for market or combo positions.\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\n if (params.legs !== undefined) {\n return prepareSplitComboPosition(client, params);\n }\n\n return prepareSplitMarketPosition(client, params);\n}\n\nexport type SplitPositionError =\n | CancelledSigningError\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TimeoutError\n | TransactionFailedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const SplitPositionError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\nexport type SplitMarketPositionError = SplitPositionError;\nexport const SplitMarketPositionError = SplitPositionError;\nexport type SplitComboPositionError = SplitPositionError;\nexport const SplitComboPositionError = SplitPositionError;\n\n/**\n * Splits collateral into market positions.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link SplitMarketPositionError}\n * Thrown on failure.\n */\nexport function splitMarketPosition(\n client: BaseSecureClient,\n request: PrepareSplitMarketPositionRequest,\n): Promise<TransactionHandle> {\n return prepareSplitMarketPosition(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Splits collateral into combo positions from leg position IDs.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link SplitComboPositionError}\n * Thrown on failure.\n */\nexport function splitComboPosition(\n client: BaseSecureClient,\n request: PrepareSplitComboPositionRequest,\n): Promise<TransactionHandle> {\n return prepareSplitComboPosition(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Splits collateral into market or combo 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 * Parameters for preparing a market position merge.\n */\nexport type PrepareMergeMarketPositionRequest = {\n /** Amount per complementary market position to merge. */\n amount: bigint | 'max';\n /** Existing market condition ID that identifies the positions to merge. */\n conditionId: string | ConditionId;\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing a combo position merge.\n */\nexport type PrepareMergeComboPositionRequest = {\n /** Amount per complementary combo position to merge. */\n amount: bigint | 'max';\n /** Protocol v2 leg position IDs that define the combo condition. */\n legs: string[] | PositionId[];\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing either supported position merge workflow.\n *\n * @remarks\n * Provide either a market `conditionId` or combo `legs`.\n */\nexport type PrepareMergePositionsRequest =\n | PrepareMergeMarketPositionRequest\n | PrepareMergeComboPositionRequest;\n\ntype ParsedMergeComboPositionRequest = {\n amount: bigint | 'max';\n legs: CanonicalComboLegs;\n metadata?: string;\n};\n\nconst PrepareMergeMarketPositionRequestSchema = z.object({\n amount: z.union([z.bigint().positive(), z.literal('max')]),\n conditionId: ConditionIdSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareMergeMarketPositionRequest>;\n\nconst PrepareMergeComboPositionInputSchema = z.object({\n amount: z.union([z.bigint().positive(), z.literal('max')]),\n legs: z.array(PositionIdSchema).min(1).max(50),\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareMergeComboPositionRequest>;\n\nconst PrepareMergeComboPositionRequestSchema = z.object({\n amount: z.union([z.bigint().positive(), z.literal('max')]),\n legs: CanonicalComboLegsSchema,\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<\n ParsedMergeComboPositionRequest,\n PrepareMergeComboPositionRequest\n>;\n\nconst PrepareMergePositionsRequestSchema = z.union([\n PrepareMergeMarketPositionRequestSchema.extend({\n legs: z.never().optional(),\n }),\n PrepareMergeComboPositionInputSchema.extend({\n conditionId: z.never().optional(),\n }),\n]) satisfies z.ZodType<PrepareMergePositionsRequest>;\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 function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareMergeMarketPosition(client, {\n * amount: 'max',\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @throws {@link PrepareMergeMarketPositionError}\n * Thrown on failure.\n */\nexport async function prepareMergeMarketPosition(\n client: BaseSecureClient,\n request: PrepareMergeMarketPositionRequest,\n): Promise<MergePositionsWorkflow> {\n const params = parseUserInput(\n request,\n PrepareMergeMarketPositionRequestSchema,\n );\n const context = await resolveMarketClobContext(client, {\n conditionId: params.conditionId,\n });\n const balances = decodeErc1155BalanceOfBatchResult(\n await client.rpc.ethCall(\n erc1155BalanceOfBatchCall(\n context.positionErc1155Address,\n client.account.wallet,\n context.tokenIds,\n ),\n ),\n );\n const amount = resolveMergeAmount(\n context.conditionId,\n balances,\n params.amount,\n );\n const call = mergePositionsCall(\n context.adapterAddress,\n client.environment.collateralToken,\n context.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 market ${context.marketId} (condition ${context.conditionId})`,\n });\n }.call(null);\n}\n\n/**\n * Starts a workflow to merge complementary combo positions back into collateral.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareMergeComboPosition(client, {\n * amount: 'max',\n * legs: ['123', '456'],\n * });\n * ```\n *\n * @throws {@link PrepareMergeComboPositionError}\n * Thrown on failure.\n */\nexport async function prepareMergeComboPosition(\n client: BaseSecureClient,\n request: PrepareMergeComboPositionRequest,\n): Promise<MergePositionsWorkflow> {\n const params = parseUserInput(\n request,\n PrepareMergeComboPositionRequestSchema,\n );\n const prepareConditionCall = combinatorialPrepareConditionCall(\n client.environment.combinatorialModule,\n params.legs,\n );\n const combo = deriveComboPositionContext(params.legs);\n const balances = decodeErc1155BalanceOfBatchResult(\n await client.rpc.ethCall(\n erc1155BalanceOfBatchCall(\n client.environment.positionManager,\n client.account.wallet,\n combo.positionIds,\n ),\n ),\n );\n const amount = resolveMergeAmount(combo.conditionId, balances, params.amount);\n const mergeCall = mergeV2Call(\n client.environment.protocolV2Router,\n combo.conditionId,\n amount,\n );\n\n return async function* (): MergePositionsWorkflow {\n if (client.account.walletType === WalletType.EOA) {\n const prepareHandle = expectTransactionHandle(\n yield sendMergePositionsTransaction(\n signerTransactionRequest(\n client.environment.chainId,\n prepareConditionCall,\n ),\n ),\n );\n await prepareHandle.wait();\n\n return expectTransactionHandle(\n yield sendMergePositionsTransaction(\n signerTransactionRequest(client.environment.chainId, mergeCall),\n ),\n );\n }\n\n return yield* await prepareGaslessTransaction(client, {\n calls: [prepareConditionCall, mergeCall],\n metadata:\n params.metadata ??\n `Merge ${amount} combo positions for condition ${combo.conditionId}`,\n });\n }.call(null);\n}\n\n/**\n * Starts a merge workflow for market or combo positions.\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\n if (params.legs !== undefined) {\n return prepareMergeComboPosition(client, params);\n }\n\n return prepareMergeMarketPosition(client, params);\n}\n\nexport type MergePositionsError =\n | CancelledSigningError\n | RateLimitError\n | RequestRejectedError\n | SigningError\n | TimeoutError\n | TransactionFailedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError;\nexport const MergePositionsError = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\nexport type MergeMarketPositionError = MergePositionsError;\nexport const MergeMarketPositionError = MergePositionsError;\nexport type MergeComboPositionError = MergePositionsError;\nexport const MergeComboPositionError = MergePositionsError;\n\n/**\n * Merges complementary market positions back into collateral.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link MergeMarketPositionError}\n * Thrown on failure.\n */\nexport function mergeMarketPosition(\n client: BaseSecureClient,\n request: PrepareMergeMarketPositionRequest,\n): Promise<TransactionHandle> {\n return prepareMergeMarketPosition(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Merges complementary combo positions back into collateral.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @throws {@link MergeComboPositionError}\n * Thrown on failure.\n */\nexport function mergeComboPosition(\n client: BaseSecureClient,\n request: PrepareMergeComboPositionRequest,\n): Promise<TransactionHandle> {\n return prepareMergeComboPosition(client, request).then(\n completeWith(client.signer),\n );\n}\n\n/**\n * Merges complementary market or combo 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 * Parameters for preparing a market position redemption by condition ID.\n */\nexport type PrepareRedeemMarketPositionsByConditionIdRequest = {\n /** Existing market condition ID that identifies the positions to redeem. */\n conditionId: string | ConditionId;\n marketId?: never;\n amount?: never;\n positionId?: never;\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing a market position redemption by market ID.\n */\nexport type PrepareRedeemMarketPositionsByMarketIdRequest = {\n conditionId?: never;\n /** Existing market ID that identifies the positions to redeem. */\n marketId: string;\n amount?: never;\n positionId?: never;\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing a combo position redemption.\n */\nexport type PrepareRedeemComboPositionRequest = {\n /** Protocol v2 combo YES/NO position ID to redeem. */\n positionId: string | PositionId;\n conditionId?: never;\n marketId?: never;\n /** Optional transaction metadata for workflows that support metadata. */\n metadata?: string;\n};\n\n/**\n * Parameters for preparing either supported position redemption workflow.\n *\n * @remarks\n * Provide either a market `conditionId` or `marketId`, or a combo `positionId`.\n */\nexport type PrepareRedeemPositionsRequest =\n | PrepareRedeemMarketPositionsByConditionIdRequest\n | PrepareRedeemMarketPositionsByMarketIdRequest\n | PrepareRedeemComboPositionRequest;\n\nexport type PrepareRedeemMarketPositionsRequest =\n | PrepareRedeemMarketPositionsByConditionIdRequest\n | PrepareRedeemMarketPositionsByMarketIdRequest;\n\nconst PrepareRedeemMarketPositionsByConditionIdRequestSchema = z.object({\n conditionId: ConditionIdSchema,\n marketId: z.never().optional(),\n amount: z.never().optional(),\n positionId: z.never().optional(),\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareRedeemMarketPositionsByConditionIdRequest>;\n\nconst PrepareRedeemMarketPositionsByMarketIdRequestSchema = z.object({\n conditionId: z.never().optional(),\n marketId: MarketIdSchema,\n amount: z.never().optional(),\n positionId: z.never().optional(),\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareRedeemMarketPositionsByMarketIdRequest>;\n\nconst PrepareRedeemMarketPositionsRequestSchema = z.union([\n PrepareRedeemMarketPositionsByConditionIdRequestSchema,\n PrepareRedeemMarketPositionsByMarketIdRequestSchema,\n]) satisfies z.ZodType<PrepareRedeemMarketPositionsRequest>;\n\nconst PrepareRedeemComboPositionRequestSchema = z.object({\n positionId: PositionIdSchema,\n conditionId: z.never().optional(),\n marketId: z.never().optional(),\n metadata: GaslessTransactionMetadataSchema.optional(),\n}) satisfies z.ZodType<PrepareRedeemComboPositionRequest>;\n\nconst PrepareRedeemPositionsRequestSchema = z.union([\n PrepareRedeemMarketPositionsByConditionIdRequestSchema,\n PrepareRedeemMarketPositionsByMarketIdRequestSchema,\n PrepareRedeemComboPositionRequestSchema,\n]) satisfies z.ZodType<PrepareRedeemPositionsRequest>;\n\n/**\n * Starts a redemption workflow for resolved market positions.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareRedeemMarketPositions(client, {\n * conditionId:\n * '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n * });\n * ```\n *\n * @example\n * ```ts\n * const workflow = await prepareRedeemMarketPositions(client, {\n * marketId: '12345',\n * });\n * ```\n *\n * @throws {@link PrepareRedeemMarketPositionsError}\n * Thrown on failure.\n */\nexport async function prepareRedeemMarketPositions(\n client: BaseSecureClient,\n request: PrepareRedeemMarketPositionsRequest,\n): Promise<RedeemPositionsWorkflow> {\n const params = parseUserInput(\n request,\n PrepareRedeemMarketPositionsRequestSchema,\n );\n const context = await resolveMarketClobContext(\n client,\n params.conditionId !== undefined\n ? { conditionId: params.conditionId }\n : { marketId: params.marketId },\n );\n const call = ctfRedeemPositionsCall(\n context.adapterAddress,\n client.environment.collateralToken,\n context.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 ??\n `Redeem positions for market ${context.marketId} (condition ${context.conditionId})`,\n });\n }.call(null);\n}\n\n/**\n * Starts a redemption workflow for a resolved combo position.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\n *\n * @example\n * ```ts\n * const workflow = await prepareRedeemComboPosition(client, {\n * positionId: '123',\n * });\n * ```\n *\n * @throws {@link PrepareRedeemComboPositionError}\n * Thrown on failure.\n */\nexport async function prepareRedeemComboPosition(\n client: BaseSecureClient,\n request: PrepareRedeemComboPositionRequest,\n): Promise<RedeemPositionsWorkflow> {\n const params = parseUserInput(\n request,\n PrepareRedeemComboPositionRequestSchema,\n );\n const decoded = decodeComboOutcomePositionId(params.positionId);\n const balance = decodeErc1155BalanceOfResult(\n await client.rpc.ethCall(\n erc1155BalanceOfCall(\n client.environment.positionManager,\n client.account.wallet,\n params.positionId,\n ),\n ),\n );\n\n if (balance === 0n) {\n throw new UserInputError('Combo position has no balance to redeem');\n }\n\n const call = redeemV2Call(\n client.environment.protocolV2Router,\n decoded.conditionId,\n decoded.outcomeIndex,\n balance,\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: params.metadata ?? `Redeem combo position ${params.positionId}`,\n });\n }.call(null);\n}\n\n/**\n * Starts a redemption workflow for resolved market or combo positions.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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\n if (params.positionId !== undefined) {\n return prepareRedeemComboPosition(client, params);\n }\n\n return prepareRedeemMarketPositions(client, params);\n}\n\nexport type RedeemPositionsError =\n | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError\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 or combo positions.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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\ntype MarketClobContext = {\n marketId: MarketId;\n conditionId: ConditionId;\n negRisk: boolean;\n adapterAddress: EvmAddress;\n positionErc1155Address: EvmAddress;\n tokenIds: [yes: TokenId, no: TokenId];\n};\n\ntype ResolveMarketClobContextRequest =\n | { conditionId: ConditionId; marketId?: never }\n | { marketId: MarketId; conditionId?: never };\n\nasync function resolveMarketClobContext(\n client: BaseSecureClient,\n request: ResolveMarketClobContextRequest,\n): Promise<MarketClobContext> {\n const context =\n request.conditionId !== undefined\n ? `condition ${request.conditionId}`\n : `market ${request.marketId}`;\n const page = await listMarkets(\n client,\n request.conditionId !== undefined\n ? { conditionIds: [request.conditionId], pageSize: 1 }\n : { ids: [parseMarketId(request.marketId)], pageSize: 1 },\n ).firstPage();\n const markets = page.items;\n\n invariant(markets.length === 1, `Expected exactly one ${context}`);\n\n const market = markets[0];\n\n invariant(market !== undefined, `No market found for ${context}`);\n\n const marketContext = normalizeMarketClobContext(market, context);\n\n return {\n ...marketContext,\n adapterAddress: marketContext.negRisk\n ? client.environment.negRiskCollateralAdapter\n : client.environment.collateralAdapter,\n positionErc1155Address: marketContext.negRisk\n ? client.environment.negRiskAdapter\n : client.environment.conditionalTokens,\n };\n}\n\nfunction parseMarketId(id: MarketId): number {\n const parsed = Number(id);\n\n if (!Number.isInteger(parsed)) {\n throw new UserInputError(`Market ID must be an integer, received ${id}`);\n }\n\n return parsed;\n}\n\nfunction normalizeMarketClobContext(\n market: Market,\n context: string,\n): Omit<MarketClobContext, 'adapterAddress' | 'positionErc1155Address'> {\n if (!isPresent(market.conditionId)) {\n throw new UnexpectedResponseError(`Missing condition ID for ${context}`);\n }\n\n if (!isPresent(market.state.negRisk)) {\n throw new UnexpectedResponseError(\n `Missing negative-risk flag for ${context}`,\n );\n }\n\n const yesTokenId = market.outcomes.yes.tokenId;\n const noTokenId = market.outcomes.no.tokenId;\n\n if (!isPresent(yesTokenId) || !isPresent(noTokenId)) {\n throw new UnexpectedResponseError(\n `Missing market token IDs for ${context}`,\n );\n }\n\n return {\n marketId: market.id,\n conditionId: market.conditionId,\n negRisk: market.state.negRisk,\n tokenIds: [yesTokenId, noTokenId],\n };\n}\n\nfunction resolveMergeAmount(\n conditionId: ConditionId,\n balances: readonly bigint[],\n requestedAmount: bigint | 'max',\n): bigint {\n const maxAmount = calculateMaxMergeAmount(balances);\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(balances: readonly bigint[]): bigint {\n if (balances.length !== 2) {\n throw new UnexpectedResponseError('Expected two position balances');\n }\n\n const [yesAmount, noAmount] = balances;\n\n invariant(yesAmount !== undefined, 'Expected YES position balance');\n invariant(noAmount !== undefined, 'Expected NO position balance');\n\n return yesAmount < noAmount ? yesAmount : noAmount;\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 type {\n RfqConfirmationAck as BindingRfqConfirmationAck,\n RfqQuoteAck as BindingRfqQuoteAck,\n RfqQuoteCancelAck as BindingRfqQuoteCancelAck,\n RfqConfirmationRequest,\n RfqErrorCode,\n RfqExecutionUpdate,\n RfqId,\n RfqQuoteId,\n RfqQuoteRequest,\n RfqRequestedSize,\n RfqRequestorPublicId,\n RfqSide,\n} from '@polymarket/bindings/rfq';\nimport { PolymarketError } from '@polymarket/types';\nimport type { BaseSecureClient } from '../clients';\nimport {\n makeErrorGuard,\n SigningError,\n TimeoutError,\n TransportError,\n UserInputError,\n} from '../errors';\n\nexport {\n RfqConfirmationDecision,\n RfqDirection,\n RfqErrorCode,\n RfqExecutionStatus,\n RfqRequestedSizeUnit,\n RfqSide,\n} from '@polymarket/bindings/rfq';\nexport type {\n RfqConfirmationRequest,\n RfqExecutionUpdate,\n RfqId,\n RfqQuoteId,\n RfqQuoteRequest,\n RfqRequestedSize,\n RfqRequestorPublicId,\n};\n\n/**\n * Plain-data reference identifying a submitted RFQ quote.\n *\n * @remarks\n * This identifies the quote; it does not imply execution or guarantee that a\n * later cancellation request can withdraw it.\n */\nexport type RfqQuoteReference = Omit<BindingRfqQuoteAck, 'type'>;\n\n/** Acknowledgement that a quote cancellation request was processed. */\nexport type RfqCancelQuoteAck = Omit<BindingRfqQuoteCancelAck, 'type'>;\nexport type RfqConfirmationAck = Omit<\n BindingRfqConfirmationAck,\n 'decision' | 'type'\n>;\n\nexport type RfqQuoteSource = 'collateral' | 'inventory';\n\nexport type RfqQuoteResponse = {\n /** Quote price in pUSD per outcome token, for example `0.45` or `\"0.45\"`. */\n price: number | string;\n\n /**\n * How the maker wants to fund the quote.\n *\n * @remarks\n * For a BUY request (BUY YES):\n * - `inventory` sells YES tokens from the maker's inventory at `price`.\n * - `collateral` buys NO tokens with collateral at `1 - price`.\n *\n * For a SELL request (SELL YES):\n * - `inventory` sells NO tokens from the maker's inventory at `1 - price`.\n * - `collateral` buys YES tokens with collateral at `price`.\n *\n * When omitted, the SDK uses `collateral`.\n *\n * @defaultValue `'collateral'`\n */\n source?: RfqQuoteSource;\n\n /**\n * Optional quote size in outcome tokens.\n *\n * This is the human-readable token amount: `1` means one full share, not one\n * 6-decimal base unit. When omitted, the quote uses the full RFQ request size.\n */\n size?: number | string;\n};\n\nexport type RfqQuoteRejectedErrorOptions = {\n /** RFQ error code for the rejected quote. */\n code?: RfqErrorCode;\n /** RFQ identifier for the rejected quote. */\n rfqId: RfqId;\n};\n\n/**\n * Error thrown when the RFQ server rejects a quote response.\n */\nexport class RfqQuoteRejectedError extends PolymarketError {\n override name = 'RfqQuoteRejectedError' as const;\n\n readonly code: RfqErrorCode | undefined;\n readonly rfqId: RfqId;\n\n constructor(\n message: string,\n options: ErrorOptions & RfqQuoteRejectedErrorOptions,\n ) {\n super(message, options);\n this.code = options.code;\n this.rfqId = options.rfqId;\n }\n}\n\nexport type RfqQuoteError =\n | RfqQuoteRejectedError\n | SigningError\n | TimeoutError\n | TransportError\n | UserInputError;\nexport const RfqQuoteError = makeErrorGuard(\n RfqQuoteRejectedError,\n SigningError,\n TimeoutError,\n TransportError,\n UserInputError,\n);\n\nexport type RfqCancelQuoteRejectedErrorOptions = {\n /** RFQ error code for the rejected cancellation request. */\n code?: RfqErrorCode;\n /** RFQ identifier for the cancellation request. */\n rfqId: RfqId;\n /** Quote identifier for the cancellation request. */\n quoteId: RfqQuoteId;\n};\n\n/**\n * Error thrown when the RFQ server rejects a quote cancellation request.\n */\nexport class RfqCancelQuoteRejectedError extends PolymarketError {\n override name = 'RfqCancelQuoteRejectedError' as const;\n\n readonly code: RfqErrorCode | undefined;\n readonly rfqId: RfqId;\n readonly quoteId: RfqQuoteId;\n\n constructor(\n message: string,\n options: ErrorOptions & RfqCancelQuoteRejectedErrorOptions,\n ) {\n super(message, options);\n this.code = options.code;\n this.rfqId = options.rfqId;\n this.quoteId = options.quoteId;\n }\n}\n\nexport type RfqCancelQuoteError =\n | RfqCancelQuoteRejectedError\n | TimeoutError\n | TransportError;\nexport const RfqCancelQuoteError = makeErrorGuard(\n RfqCancelQuoteRejectedError,\n TimeoutError,\n TransportError,\n);\n\nexport type RfqConfirmationRejectedErrorOptions = {\n /** RFQ error code for the rejected confirmation decision. */\n code?: RfqErrorCode;\n /** RFQ identifier for the rejected confirmation decision. */\n rfqId: RfqId;\n /** Quote identifier for the rejected confirmation decision. */\n quoteId: RfqQuoteId;\n};\n\n/**\n * Error thrown when the RFQ server rejects a confirmation decision.\n */\nexport class RfqConfirmationRejectedError extends PolymarketError {\n override name = 'RfqConfirmationRejectedError' as const;\n\n readonly code: RfqErrorCode | undefined;\n readonly rfqId: RfqId;\n readonly quoteId: RfqQuoteId;\n\n constructor(\n message: string,\n options: ErrorOptions & RfqConfirmationRejectedErrorOptions,\n ) {\n super(message, options);\n this.code = options.code;\n this.rfqId = options.rfqId;\n this.quoteId = options.quoteId;\n }\n}\n\nexport type RfqConfirmationError =\n | RfqConfirmationRejectedError\n | TimeoutError\n | TransportError;\nexport const RfqConfirmationError = makeErrorGuard(\n RfqConfirmationRejectedError,\n TimeoutError,\n TransportError,\n);\n\n/**\n * Server request asking the market maker to provide a quote for an RFQ.\n */\nexport interface RfqQuoteRequestEvent extends RfqQuoteRequest {\n /** Requested RFQ size and unit. Share values are human-readable outcome-token amounts. */\n requestedSize: RfqRequestedSize;\n\n /**\n * Requested RFQ position side.\n *\n * @remarks\n * The current RFQ system only supports YES-side requests, so this is always\n * {@link RfqSide.Yes}. Use {@link RfqQuoteRequestEvent.direction} to determine\n * whether the requester wants to buy or sell that YES-side position.\n */\n side: RfqSide.Yes;\n\n /**\n * Sends a quote response for this RFQ request.\n *\n * @remarks\n * If this resolves, the server accepted the quote and assigned `quoteId`.\n *\n * @throws {@link RfqQuoteError}\n * Thrown when validation fails, signing fails, the websocket fails, the quote\n * acknowledgement times out, or the server rejects the quote.\n */\n quote(response: RfqQuoteResponse): Promise<RfqQuoteReference>;\n}\n\n/**\n * Server request asking the market maker to confirm or decline a selected quote.\n */\nexport interface RfqConfirmationRequestEvent extends RfqConfirmationRequest {\n /**\n * Requested RFQ position side.\n *\n * @remarks\n * The current RFQ system only supports YES-side requests, so this is always\n * {@link RfqSide.Yes}. Use {@link RfqConfirmationRequestEvent.direction} to\n * determine whether the requester wants to buy or sell that YES-side position.\n */\n side: RfqSide.Yes;\n\n /**\n * Confirms that the maker wants to proceed with the selected quote.\n *\n * @remarks\n * If this resolves, the server accepted the confirmation decision.\n *\n * @throws {@link RfqConfirmationError}\n * Thrown when the websocket fails, the acknowledgement times out, or the\n * server rejects the confirmation decision.\n */\n confirm(): Promise<RfqConfirmationAck>;\n\n /**\n * Declines the selected quote during the confirmation window.\n *\n * @remarks\n * If this resolves, the server accepted the decline decision.\n *\n * @throws {@link RfqConfirmationError}\n * Thrown when the websocket fails, the acknowledgement times out, or the\n * server rejects the decline decision.\n */\n decline(): Promise<RfqConfirmationAck>;\n}\n\n/**\n * Execution status update for an RFQ after acceptance and handoff.\n */\nexport interface RfqExecutionUpdateEvent extends RfqExecutionUpdate {}\n\n/**\n * Event emitted by an RFQ session.\n */\nexport type RfqEvent =\n | RfqQuoteRequestEvent\n | RfqConfirmationRequestEvent\n | RfqExecutionUpdateEvent;\n\nexport interface RfqSession extends AsyncIterable<RfqEvent> {\n /**\n * Requests cancellation of a submitted RFQ quote.\n *\n * @remarks\n * The returned ack means the backend processed the cancellation request; it\n * does not guarantee the quote was withdrawn from an already-selected RFQ.\n *\n * @throws {@link RfqCancelQuoteError}\n * Thrown when the websocket fails, the acknowledgement times out, or the\n * server rejects the cancellation request.\n */\n cancelQuote(reference: RfqQuoteReference): Promise<RfqCancelQuoteAck>;\n\n /**\n * Closes the RFQ quoter stream.\n */\n close(): Promise<void>;\n}\n\nexport type OpenRfqSessionError = TransportError;\nexport const OpenRfqSessionError = makeErrorGuard(TransportError);\n\n/**\n * Opens an RFQ event session.\n *\n * @remarks\n * The returned async iterator is a stream, not a worker queue. Await inside the\n * loop to process RFQ events sequentially, or dispatch handlers without awaiting\n * them to fan out handling when quote windows are tight.\n *\n * @throws {@link OpenRfqSessionError}\n * Thrown on failure.\n */\nexport async function openRfqSession(\n client: BaseSecureClient,\n): Promise<RfqSession> {\n return client.webSockets.rfqQuoter.connect();\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 closed: z.boolean().optional(),\n cursor: PaginationCursorSchema.optional(),\n excludeEvents: 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 locale: z.string().optional(),\n});\n\nexport type ListSeriesRequest = z.input<typeof ListSeriesRequestSchema>;\nexport type FetchSeriesRequest = z.input<typeof FetchSeriesRequestSchema>;\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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(),\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * locale: 'en',\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 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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 /** Token IDs whose market events should be delivered. */\n tokenIds: readonly string[];\n\n /**\n * When `true`, the server additionally emits `MarketBestBidAskEvent`,\n * `NewMarketEvent`, and `MarketResolvedEvent`.\n */\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 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 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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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 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 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 function. Most SDK consumers should prefer the client instance API.\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 | RateLimitError\n | RequestRejectedError\n | TransportError\n | UnexpectedResponseError\n | UserInputError\n | CancelledSigningError\n | SigningError;\nexport const TransferErc20Error = makeErrorGuard(\n CancelledSigningError,\n RateLimitError,\n RequestRejectedError,\n SigningError,\n TransportError,\n UnexpectedResponseError,\n UserInputError,\n);\n\n/**\n * Transfers ERC-20 tokens from the authenticated account.\n *\n * @remarks\n * This is a low-level function. Most SDK consumers should prefer the client instance API.\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"]}