@polymarket/client 0.0.0-canary-20260421120448
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.
- package/LICENSE +21 -0
- package/README.md +43 -0
- package/dist/actions/index.d.ts +266 -0
- package/dist/actions/index.js +2 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/chunk-DBVGNMB5.js +2 -0
- package/dist/chunk-DBVGNMB5.js.map +1 -0
- package/dist/chunk-KLADIGW6.js +2 -0
- package/dist/chunk-KLADIGW6.js.map +1 -0
- package/dist/chunk-VQMBZJB5.js +2 -0
- package/dist/chunk-VQMBZJB5.js.map +1 -0
- package/dist/chunk-X2E5YUTB.js +6 -0
- package/dist/chunk-X2E5YUTB.js.map +1 -0
- package/dist/decorators/index.d.ts +9 -0
- package/dist/decorators/index.js +2 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/ethers-v5.d.ts +37 -0
- package/dist/ethers-v5.js +2 -0
- package/dist/ethers-v5.js.map +1 -0
- package/dist/index.d.ts +151 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +12 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/dist/privy.d.ts +85 -0
- package/dist/privy.js +2 -0
- package/dist/privy.js.map +1 -0
- package/dist/types-BcwWqAsH.d.ts +4754 -0
- package/dist/types-Bg5Leu3D.d.ts +54 -0
- package/dist/viem.d.ts +30 -0
- package/dist/viem.js +2 -0
- package/dist/viem.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/privy.ts"],"names":["invariant","process","allChains","viemChains","authenticateWith","config","workflow","result","resolveAddress","signTypedData","error","completeWith","hash","sendTransaction","DirectTransactionHandle","signMessage","wallet","expectEvmAddress","SigningError","request","response","expectTxHash","throwSigningWorkflowError","payload","serializeBigInts","expectEvmSignature","TypedData","value","item","key","isUserRejectedError","CancelledSigningError","seen","candidate","#chainId","#transactionHash","transactionHash","chainId","receipt","waitForTransactionReceipt","createPublicClient","resolveChain","http","TransactionFailedError","WaitForTransactionReceiptTimeoutError","TimeoutError","TransportError","chain","never"],"mappings":"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","file":"privy.js","sourcesContent":["import process from 'node:process';\nimport {\n type EvmAddress,\n expectEvmAddress,\n expectEvmSignature,\n expectTxHash,\n invariant,\n never,\n type TxHash,\n} from '@polymarket/types';\n// biome-ignore lint/style/noRestrictedImports: @privy-io/node is the intentional external adapter target for this entrypoint.\nimport type { AuthorizationContext, PrivyClient } from '@privy-io/node';\nimport { TypedData } from 'ox';\nimport {\n type Chain,\n createPublicClient,\n http,\n WaitForTransactionReceiptTimeoutError,\n} from 'viem';\nimport { waitForTransactionReceipt } from 'viem/actions';\nimport * as viemChains from 'viem/chains';\nimport {\n CancelledSigningError,\n SigningError,\n TimeoutError,\n TransactionFailedError,\n TransportError,\n} from './errors';\nimport type {\n TransactionHandle,\n TransactionOutcome,\n TypedDataPayload,\n} from './types';\nimport type {\n AuthenticateWith,\n CompleteWith,\n SignerTransactionRequest,\n} from './workflow';\n\ninvariant(\n process.release.name === 'node',\n 'The @polymarket/client/privy entrypoint requires a Node.js runtime.',\n);\ninvariant(\n typeof window === 'undefined' && typeof document === 'undefined',\n 'The @polymarket/client/privy entrypoint cannot be imported in a browser-like runtime.',\n);\n\nexport type PrivyWalletConfig = {\n privy: PrivyClient;\n walletId: string;\n authorizationContext?: AuthorizationContext;\n};\n\nconst allChains = Object.values(viemChains) as Chain[];\n\n/**\n * Drives an authentication workflow with a Privy Node SDK wallet.\n *\n * @throws {@link AuthenticateWithError}\n * Thrown when the required wallet signature cannot be produced.\n */\nexport function authenticateWith(config: PrivyWalletConfig): 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 resolveAddress(config));\n break;\n case 'signAuthMessage':\n result = await workflow.next(\n await signTypedData(config, 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/**\n * Drives a workflow with a Privy Node SDK wallet.\n *\n * Supports the current non-auth workflow set, including order signing,\n * approvals, transfers, redemptions, and gasless wallet preparation.\n *\n * @throws {@link CompleteWithError}\n * Thrown when the required wallet signature or submission cannot be produced.\n */\nexport function completeWith(config: PrivyWalletConfig): 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 'sendErc20ApprovalTransaction':\n case 'sendErc1155ApprovalForAllTransaction':\n case 'sendErc20TransferTransaction':\n case 'sendMergePositionsTransaction':\n case 'sendRedeemPositionsTransaction':\n case 'sendSplitPositionTransaction': {\n const hash = await sendTransaction(config, result.value.request);\n result = await workflow.next(\n new DirectTransactionHandle(hash, result.value.request.chainId),\n );\n break;\n }\n\n case 'requestAddress':\n result = await workflow.next(await resolveAddress(config));\n break;\n\n case 'signGaslessTypedData':\n case 'signOrder':\n result = await workflow.next(\n await signTypedData(config, result.value.payload),\n );\n break;\n\n case 'signGaslessMessage':\n result = await workflow.next(\n await signMessage(config, 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\nasync function resolveAddress(config: PrivyWalletConfig): Promise<EvmAddress> {\n try {\n const wallet = await config.privy.wallets().get(config.walletId);\n return expectEvmAddress(wallet.address);\n } catch (error) {\n throw SigningError.fromError(error, 'Could not resolve signer address');\n }\n}\n\nasync function sendTransaction(\n config: PrivyWalletConfig,\n request: SignerTransactionRequest,\n): Promise<TxHash> {\n try {\n const response = await config.privy\n .wallets()\n .ethereum()\n .sendTransaction(config.walletId, {\n authorization_context: config.authorizationContext,\n caip2: `eip155:${request.chainId}`,\n params: {\n transaction: {\n chain_id: request.chainId,\n data: request.data,\n to: request.to,\n value: request.value?.toString(),\n },\n },\n });\n\n return expectTxHash(response.hash);\n } catch (error) {\n throwSigningWorkflowError(error);\n }\n}\n\nasync function signTypedData(\n config: PrivyWalletConfig,\n payload: TypedDataPayload,\n) {\n try {\n const response = await config.privy\n .wallets()\n .ethereum()\n .signTypedData(config.walletId, {\n authorization_context: config.authorizationContext,\n params: {\n typed_data: {\n domain: serializeBigInts(payload.domain),\n message: serializeBigInts(payload.message),\n primary_type: payload.primaryType,\n types: payload.types as Record<\n string,\n Array<{ name: string; type: string }>\n >,\n },\n },\n });\n\n return expectEvmSignature(response.signature);\n } catch (error) {\n throwSigningWorkflowError(error);\n }\n}\n\nasync function signMessage(\n config: PrivyWalletConfig,\n payload: TypedDataPayload,\n) {\n try {\n const response = await config.privy\n .wallets()\n .ethereum()\n .signMessage(config.walletId, {\n authorization_context: config.authorizationContext,\n message: TypedData.getSignPayload(payload as never),\n });\n\n return expectEvmSignature(response.signature);\n } catch (error) {\n throwSigningWorkflowError(error);\n }\n}\n\nfunction serializeBigInts<T>(value: T): T {\n if (typeof value === 'bigint') {\n return `${value}` as T;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => serializeBigInts(item)) as T;\n }\n\n if (typeof value === 'object' && value !== null) {\n return Object.fromEntries(\n Object.entries(value).flatMap(([key, item]) =>\n item === undefined ? [] : [[key, serializeBigInts(item)]],\n ),\n ) as T;\n }\n\n return value;\n}\n\nfunction throwSigningWorkflowError(error: unknown): never {\n if (isUserRejectedError(error)) {\n throw new CancelledSigningError('User rejected the signing request', {\n cause: error,\n });\n }\n\n throw SigningError.fromError(error);\n}\n\nfunction isUserRejectedError(\n error: unknown,\n seen = new Set<unknown>(),\n): boolean {\n if (seen.has(error) || error === null || typeof error !== 'object') {\n return false;\n }\n\n seen.add(error);\n\n const candidate = error as {\n cause?: unknown;\n code?: unknown;\n error?: unknown;\n name?: unknown;\n };\n\n return (\n candidate.code === 4001 ||\n candidate.code === 'ACTION_REJECTED' ||\n candidate.name === 'APIUserAbortError' ||\n isUserRejectedError(candidate.error, seen) ||\n isUserRejectedError(candidate.cause, seen)\n );\n}\n\nclass DirectTransactionHandle implements TransactionHandle {\n readonly transactionId = null;\n\n readonly #chainId: number;\n #transactionHash: TxHash;\n\n constructor(transactionHash: TxHash, chainId: number) {\n this.#chainId = chainId;\n this.#transactionHash = transactionHash;\n }\n\n get transactionHash() {\n return this.#transactionHash;\n }\n\n async wait(): Promise<TransactionOutcome> {\n try {\n const receipt = await waitForTransactionReceipt(\n createPublicClient({\n chain: resolveChain(this.#chainId),\n transport: http(),\n }),\n {\n hash: this.#transactionHash,\n },\n );\n\n const transactionHash = expectTxHash(receipt.transactionHash);\n this.#transactionHash = transactionHash;\n\n if (receipt.status === 'reverted') {\n throw new TransactionFailedError(\n `Transaction ${transactionHash} reverted`,\n );\n }\n\n return {\n transactionHash,\n transactionId: null,\n };\n } catch (error) {\n if (error instanceof WaitForTransactionReceiptTimeoutError) {\n throw new TimeoutError(\n `Timed out waiting for transaction ${this.#transactionHash} to settle`,\n { cause: error },\n );\n }\n\n throw TransportError.fromError(error);\n }\n }\n}\n\nfunction resolveChain(chainId: number) {\n const chain = allChains.find((candidate) => candidate.id === chainId);\n\n if (chain !== undefined) {\n return chain;\n }\n\n never(`Unsupported chain ID for direct Privy transaction wait: ${chainId}`);\n}\n"]}
|