@kuest/sdk 0.0.0-stage → 0.13.1
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 +6 -2
- package/dist/actions/index.d.ts +180 -0
- package/dist/actions/index.js +2 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/chunk-3QTVWIZS.js +3 -0
- package/dist/chunk-3QTVWIZS.js.map +1 -0
- package/dist/chunk-EH4TD6KD.js +2 -0
- package/dist/chunk-EH4TD6KD.js.map +1 -0
- package/dist/chunk-LDEY5CK7.js +6 -0
- package/dist/chunk-LDEY5CK7.js.map +1 -0
- package/dist/ethers-v5.d.ts +24 -0
- package/dist/ethers-v5.js +2 -0
- package/dist/ethers-v5.js.map +1 -0
- package/dist/index.d.ts +269 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +24 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/dist/privy.d.ts +13 -0
- package/dist/privy.js +2 -0
- package/dist/privy.js.map +1 -0
- package/dist/sports-Bt7NXBWp.d.ts +232 -0
- package/dist/types-CI9Rwzhy.d.ts +12021 -0
- package/dist/types-DDzoOHmH.d.ts +66 -0
- package/dist/viem.d.ts +35 -0
- package/dist/viem.js +2 -0
- package/dist/viem.js.map +1 -0
- package/package.json +103 -3
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { A as ApiKeyAuthorization } from './types-DDzoOHmH.js';
|
|
2
|
+
import '@kuest/bindings';
|
|
3
|
+
import '@kuest/types';
|
|
4
|
+
|
|
5
|
+
/** Public settings from a downloader-generated `.sdk/site-config.json`. */
|
|
6
|
+
type SiteConfig = {
|
|
7
|
+
site_url: string;
|
|
8
|
+
builder_mode: boolean;
|
|
9
|
+
geoblock: boolean;
|
|
10
|
+
builder_code: string;
|
|
11
|
+
order_metadata: string;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** Read the existing optional `.sdk/site-config.json` bundle overlay. */
|
|
15
|
+
declare function loadSiteConfig(configPath?: string): SiteConfig;
|
|
16
|
+
|
|
17
|
+
type BuilderApiKeyCreds = {
|
|
18
|
+
key: string;
|
|
19
|
+
secret: string;
|
|
20
|
+
passphrase: string;
|
|
21
|
+
};
|
|
22
|
+
declare function builderApiKey(options: BuilderApiKeyCreds): ApiKeyAuthorization;
|
|
23
|
+
|
|
24
|
+
export { type BuilderApiKeyCreds, builderApiKey, loadSiteConfig };
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {e}from'./chunk-EH4TD6KD.js';import E from'process';import {invariant}from'@kuest/types';import {readFileSync}from'fs';import {dirname,resolve}from'path';import {fileURLToPath}from'url';async function f(o,r,e,t,i){let n=`${r}${e}${t}`;i!==void 0&&(n+=i);let g=await globalThis.crypto.subtle.importKey("raw",b(o),{name:"HMAC",hash:"SHA-256"},false,["sign"]),y=await globalThis.crypto.subtle.sign("HMAC",g,new TextEncoder().encode(n));return _(h(y))}function b(o){let r=o.replace(/-/g,"+").replace(/_/g,"/").replace(/[^A-Za-z0-9+/=]/g,""),e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i+=1)t[i]=e.charCodeAt(i);return t.buffer}function h(o){let r=new Uint8Array(o),e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function _(o){return o.replace(/\+/g,"-").replace(/\//g,"_")}var l=`0x${"0".repeat(64)}`,c=/^0x[0-9a-fA-F]{64}$/,d={site_url:"",builder_mode:false,geoblock:false,builder_code:"",order_metadata:l};function p(o){if(typeof o!="object"||o===null||Array.isArray(o))throw new TypeError(".sdk/site-config.json must be an object");let r=o,e={...d};for(let t of ["site_url","builder_code","order_metadata"])if(r[t]!==void 0){if(typeof r[t]!="string")throw new TypeError(`.sdk/site-config.json field ${t} must be a string`);e[t]=r[t];}for(let t of ["builder_mode","geoblock"])if(r[t]!==void 0){if(typeof r[t]!="boolean")throw new TypeError(`.sdk/site-config.json field ${t} must be a boolean`);e[t]=r[t];}if(e.builder_code&&!c.test(e.builder_code))throw new TypeError("builder_code must be bytes32");if(!c.test(e.order_metadata))throw new TypeError("order_metadata must be bytes32");if(e.builder_mode&&(!e.builder_code||e.builder_code===l))throw new TypeError("builder_mode requires a non-zero builder_code");return e}function C(o){let r=dirname(fileURLToPath(import.meta.url)),e=o?[resolve(o)]:[resolve(E.cwd(),".sdk/site-config.json"),resolve(r,"../.sdk/site-config.json"),resolve(r,"../../../.sdk/site-config.json")];for(let t of e){let i;try{i=readFileSync(t,"utf8");}catch(n){if(n&&typeof n=="object"&&"code"in n&&n.code==="ENOENT")continue;throw n}return p(JSON.parse(i))}return {...d}}invariant(E.release.name==="node","The @kuest/sdk/node entrypoint requires a Node.js runtime.");invariant(typeof window>"u"&&typeof document>"u","The @kuest/sdk/node entrypoint cannot be imported in a browser-like runtime.");function N(o){return new a(o)}var a=class{#e;constructor(r){this.#e=r;}get isBuilderKey(){return true}get supportGasless(){return true}async authorize(r){return this.#r(r)}async#r(r){try{let e=Math.floor(Date.now()/1e3);return {KUEST_BUILDER_API_KEY:this.#e.key,KUEST_BUILDER_PASSPHRASE:this.#e.passphrase,KUEST_BUILDER_SIGNATURE:await f(this.#e.secret,e,r.method,r.path,r.body),KUEST_BUILDER_TIMESTAMP:`${e}`}}catch(e$1){throw e.fromError(e$1,"Could not sign the builder-authenticated request")}}};
|
|
2
|
+
export{N as builderApiKey,C as loadSiteConfig};//# sourceMappingURL=node.js.map
|
|
3
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hmac.ts","../src/site-config.ts","../src/node-site-config.ts","../src/node.ts"],"names":["buildHmacSignature","secret","timestamp","method","requestPath","body","message","cryptoKey","base64ToArrayBuffer","signature","toUrlSafeBase64","arrayBufferToBase64","base64","sanitizedBase64","binaryString","bytes","index","buffer","binary","byte","value","ZERO_BYTES32","BYTES32","DEFAULT_SITE_CONFIG","parseSiteConfig","record","result","field","loadSiteConfig","configPath","moduleDir","dirname","fileURLToPath","paths","resolve","process","path","source","readFileSync","error","invariant","builderApiKey","options","LocalBuilderApiKey","#credentials","credentials","request","#authorize","SigningError"],"mappings":"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","file":"node.js","sourcesContent":["/**\n * Builds the canonical HMAC signature for authenticated requests.\n *\n * The signed payload is the raw string concatenation of `timestamp`, `method`,\n * `requestPath`, and, when present, the serialized request `body`, matching the\n * remote signing contract.\n *\n * The `secret` is expected to be base64-encoded and is decoded before signing.\n * The returned signature is base64url-encoded with padding preserved.\n *\n * @example\n * Server-side signing example for builder-authenticated requests:\n *\n * ```ts\n * async function handleSignRequest(request: Request): Promise<Response> {\n * const { body, method, path } = await request.json();\n *\n * const timestamp = Math.floor(Date.now() / 1000);\n * const signature = await buildHmacSignature(\n * process.env.SDK_BUILDER_SECRET!,\n * timestamp,\n * method,\n * path,\n * body,\n * );\n *\n * return Response.json({\n * KUEST_BUILDER_API_KEY: process.env.KUEST_BUILDER_API_KEY!,\n * KUEST_BUILDER_PASSPHRASE: process.env.KUEST_BUILDER_PASSPHRASE!,\n * KUEST_BUILDER_SIGNATURE: signature,\n * KUEST_BUILDER_TIMESTAMP: `${timestamp}`,\n * });\n * }\n * ```\n */\nexport async function buildHmacSignature(\n secret: string,\n timestamp: number,\n method: string,\n requestPath: string,\n body?: string,\n): Promise<string> {\n let message = `${timestamp}${method}${requestPath}`;\n\n if (body !== undefined) {\n message += body;\n }\n\n const cryptoKey = await globalThis.crypto.subtle.importKey(\n 'raw',\n base64ToArrayBuffer(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n const signature = await globalThis.crypto.subtle.sign(\n 'HMAC',\n cryptoKey,\n new TextEncoder().encode(message),\n );\n\n return toUrlSafeBase64(arrayBufferToBase64(signature));\n}\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n const sanitizedBase64 = base64\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .replace(/[^A-Za-z0-9+/=]/g, '');\n const binaryString = atob(sanitizedBase64);\n const bytes = new Uint8Array(binaryString.length);\n\n for (let index = 0; index < binaryString.length; index += 1) {\n bytes[index] = binaryString.charCodeAt(index);\n }\n\n return bytes.buffer;\n}\n\nfunction arrayBufferToBase64(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n let binary = '';\n\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n\n return btoa(binary);\n}\n\nfunction toUrlSafeBase64(value: string): string {\n return value.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","import type { BuilderCode } from '@kuest/bindings';\nimport type { HexString } from '@kuest/types';\n\n/** Public settings from a downloader-generated `.sdk/site-config.json`. */\nexport type SiteConfig = {\n site_url: string;\n builder_mode: boolean;\n geoblock: boolean;\n builder_code: string;\n order_metadata: string;\n};\n\nexport const ZERO_BYTES32 = `0x${'0'.repeat(64)}`;\nconst BYTES32 = /^0x[0-9a-fA-F]{64}$/;\n\nexport const DEFAULT_SITE_CONFIG: SiteConfig = {\n site_url: '',\n builder_mode: false,\n geoblock: false,\n builder_code: '',\n order_metadata: ZERO_BYTES32,\n};\n\n/** Validate the existing CLOB bundle schema without changing its field names. */\nexport function parseSiteConfig(value: unknown): SiteConfig {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError('.sdk/site-config.json must be an object');\n }\n const record = value as Record<string, unknown>;\n const result = { ...DEFAULT_SITE_CONFIG };\n for (const field of ['site_url', 'builder_code', 'order_metadata'] as const) {\n if (record[field] === undefined) continue;\n if (typeof record[field] !== 'string') {\n throw new TypeError(\n `.sdk/site-config.json field ${field} must be a string`,\n );\n }\n result[field] = record[field];\n }\n for (const field of ['builder_mode', 'geoblock'] as const) {\n if (record[field] === undefined) continue;\n if (typeof record[field] !== 'boolean') {\n throw new TypeError(\n `.sdk/site-config.json field ${field} must be a boolean`,\n );\n }\n result[field] = record[field];\n }\n if (result.builder_code && !BYTES32.test(result.builder_code)) {\n throw new TypeError('builder_code must be bytes32');\n }\n if (!BYTES32.test(result.order_metadata)) {\n throw new TypeError('order_metadata must be bytes32');\n }\n if (\n result.builder_mode &&\n (!result.builder_code || result.builder_code === ZERO_BYTES32)\n ) {\n throw new TypeError('builder_mode requires a non-zero builder_code');\n }\n return result;\n}\n\n/** The personalized bundle's attribution overrides a caller-supplied order code. */\nexport function resolveSiteOrderContext(\n config: SiteConfig | undefined,\n builderCode: BuilderCode | undefined,\n): { builderCode: BuilderCode | undefined; metadata: HexString | undefined } {\n return {\n builderCode: (config?.builder_code || builderCode) as\n | BuilderCode\n | undefined,\n metadata: config?.order_metadata as HexString | undefined,\n };\n}\n","import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport {\n DEFAULT_SITE_CONFIG,\n parseSiteConfig,\n type SiteConfig,\n} from './site-config';\n\n/** Read the existing optional `.sdk/site-config.json` bundle overlay. */\nexport function loadSiteConfig(configPath?: string): SiteConfig {\n const moduleDir = dirname(fileURLToPath(import.meta.url));\n const paths = configPath\n ? [resolve(configPath)]\n : [\n resolve(process.cwd(), '.sdk/site-config.json'),\n resolve(moduleDir, '../.sdk/site-config.json'),\n resolve(moduleDir, '../../../.sdk/site-config.json'),\n ];\n\n for (const path of paths) {\n let source: string;\n try {\n source = readFileSync(path, 'utf8');\n } catch (error) {\n if (\n error &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'ENOENT'\n ) {\n continue;\n }\n throw error;\n }\n return parseSiteConfig(JSON.parse(source));\n }\n return { ...DEFAULT_SITE_CONFIG };\n}\n","import process from 'node:process';\nimport { invariant } from '@kuest/types';\n\nimport { SigningError } from './errors';\nimport { buildHmacSignature } from './hmac';\nimport type { ApiKeyAuthorization, ApiKeyAuthorizationRequest } from './types';\n\ninvariant(\n process.release.name === 'node',\n 'The @kuest/sdk/node entrypoint requires a Node.js runtime.',\n);\ninvariant(\n typeof window === 'undefined' && typeof document === 'undefined',\n 'The @kuest/sdk/node entrypoint cannot be imported in a browser-like runtime.',\n);\n\nexport { loadSiteConfig } from './node-site-config';\n\nexport type BuilderApiKeyCreds = {\n key: string;\n secret: string;\n passphrase: string;\n};\n\nexport function builderApiKey(\n options: BuilderApiKeyCreds,\n): ApiKeyAuthorization {\n return new LocalBuilderApiKey(options);\n}\n\nclass LocalBuilderApiKey implements ApiKeyAuthorization {\n readonly #credentials: BuilderApiKeyCreds;\n\n constructor(credentials: BuilderApiKeyCreds) {\n this.#credentials = credentials;\n }\n\n get isBuilderKey(): boolean {\n return true;\n }\n\n get supportGasless(): boolean {\n return true;\n }\n\n async authorize(request: ApiKeyAuthorizationRequest): Promise<HeadersInit> {\n return this.#authorize(request);\n }\n\n async #authorize(request: ApiKeyAuthorizationRequest): Promise<HeadersInit> {\n try {\n const timestamp = Math.floor(Date.now() / 1000);\n\n return {\n KUEST_BUILDER_API_KEY: this.#credentials.key,\n KUEST_BUILDER_PASSPHRASE: this.#credentials.passphrase,\n KUEST_BUILDER_SIGNATURE: await buildHmacSignature(\n this.#credentials.secret,\n timestamp,\n request.method,\n request.path,\n request.body,\n ),\n KUEST_BUILDER_TIMESTAMP: `${timestamp}`,\n };\n } catch (error) {\n throw SigningError.fromError(\n error,\n 'Could not sign the builder-authenticated request',\n );\n }\n }\n}\n"]}
|
package/dist/privy.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PrivyClient, AuthorizationContext } from '@privy-io/node';
|
|
2
|
+
import { S as Signer } from './types-DDzoOHmH.js';
|
|
3
|
+
import '@kuest/bindings';
|
|
4
|
+
import '@kuest/types';
|
|
5
|
+
|
|
6
|
+
type PrivyWalletConfig = {
|
|
7
|
+
privy: PrivyClient;
|
|
8
|
+
walletId: string;
|
|
9
|
+
authorizationContext?: AuthorizationContext;
|
|
10
|
+
};
|
|
11
|
+
declare function signerFrom(config: PrivyWalletConfig): Signer;
|
|
12
|
+
|
|
13
|
+
export { type PrivyWalletConfig, signerFrom };
|
package/dist/privy.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {e as e$1,d,c,b as b$1,a}from'./chunk-EH4TD6KD.js';import y from'process';import {invariant,expectEvmAddress,expectTxHash,expectEvmSignature,never}from'@kuest/types';import {Hex}from'ox';import {createPublicClient,http,WaitForTransactionReceiptTimeoutError}from'viem';import {waitForTransactionReceipt}from'viem/actions';import*as E from'viem/chains';invariant(y.release.name==="node","The @kuest/sdk/privy entrypoint requires a Node.js runtime.");invariant(typeof window>"u"&&typeof document>"u","The @kuest/sdk/privy entrypoint cannot be imported in a browser-like runtime.");var P=Object.values(E);function D(r){return {getAddress(){return b(r)},signTypedData(t){return k(r,t)},signMessage(t){return A(r,t)},async sendTransaction(t){return new o(await I(r,t),t.chainId)}}}async function b(r){try{let t=await r.privy.wallets().get(r.walletId);return expectEvmAddress(t.address)}catch(t){throw e$1.fromError(t,"Could not resolve signer address")}}async function I(r,t){try{let n=await r.privy.wallets().ethereum().sendTransaction(r.walletId,{authorization_context:r.authorizationContext,caip2:`eip155:${t.chainId}`,params:{transaction:{chain_id:t.chainId,data:t.data,to:t.to,value:t.value?.toString()}}});return expectTxHash(n.hash)}catch(n){s(n);}}async function k(r,t){try{let n=await r.privy.wallets().ethereum().signTypedData(r.walletId,{authorization_context:r.authorizationContext,params:{typed_data:{domain:e(t.domain),message:e(t.message),primary_type:t.primaryType,types:t.types}}});return expectEvmSignature(n.signature)}catch(n){s(n);}}async function A(r,t){try{let n=await r.privy.wallets().ethereum().signMessage(r.walletId,{authorization_context:r.authorizationContext,message:Hex.toBytes(t)});return expectEvmSignature(n.signature)}catch(n){s(n);}}function e(r){return typeof r=="bigint"?`${r}`:Array.isArray(r)?r.map(t=>e(t)):typeof r=="object"&&r!==null?Object.fromEntries(Object.entries(r).flatMap(([t,n])=>n===void 0?[]:[[t,e(n)]])):r}function s(r){throw i(r)?new d("User rejected the signing request",{cause:r}):e$1.fromError(r)}function i(r,t=new Set){if(t.has(r)||r===null||typeof r!="object")return false;t.add(r);let n=r;return n.code===4001||n.code==="ACTION_REJECTED"||n.name==="APIUserAbortError"||i(n.error,t)||i(n.cause,t)}var o=class{transactionId=null;#r;#t;constructor(t,n){this.#r=n,this.#t=t;}get transactionHash(){return this.#t}async wait(){try{let t=await waitForTransactionReceipt(createPublicClient({chain:H(this.#r),transport:http()}),{hash:this.#t}),n=expectTxHash(t.transactionHash);if(this.#t=n,t.status==="reverted")throw new c(`Transaction ${n} reverted`);return {transactionHash:n,transactionId:null}}catch(t){throw t instanceof WaitForTransactionReceiptTimeoutError?new b$1(`Timed out waiting for transaction ${this.#t} to settle`,{cause:t}):a.fromError(t)}}};function H(r){let t=P.find(n=>n.id===r);if(t!==void 0)return t;never(`Unsupported chain ID for direct Privy transaction wait: ${r}`);}export{D as signerFrom};//# sourceMappingURL=privy.js.map
|
|
2
|
+
//# sourceMappingURL=privy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/privy.ts"],"names":["invariant","process","allChains","viemChains","signerFrom","config","resolveAddress","payload","signTypedData","message","signMessage","request","DirectTransactionHandle","sendTransaction","wallet","expectEvmAddress","error","SigningError","response","expectTxHash","throwSigningWorkflowError","serializeBigInts","expectEvmSignature","Hex","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 type HexString,\n invariant,\n never,\n type TxHash,\n} from '@kuest/types';\nimport type { AuthorizationContext, PrivyClient } from '@privy-io/node';\nimport { Hex } 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 Signer,\n SignerTransactionRequest,\n TransactionHandle,\n TransactionOutcome,\n TypedDataPayload,\n} from './types';\n\ninvariant(\n process.release.name === 'node',\n 'The @kuest/sdk/privy entrypoint requires a Node.js runtime.',\n);\ninvariant(\n typeof window === 'undefined' && typeof document === 'undefined',\n 'The @kuest/sdk/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\nexport function signerFrom(config: PrivyWalletConfig): Signer {\n return {\n getAddress() {\n return resolveAddress(config);\n },\n signTypedData(payload) {\n return signTypedData(config, payload);\n },\n signMessage(message) {\n return signMessage(config, message);\n },\n async sendTransaction(request) {\n return new DirectTransactionHandle(\n await sendTransaction(config, request),\n request.chainId,\n );\n },\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(config: PrivyWalletConfig, message: HexString) {\n try {\n const response = await config.privy\n .wallets()\n .ethereum()\n .signMessage(config.walletId, {\n authorization_context: config.authorizationContext,\n message: Hex.toBytes(message as `0x${string}`),\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"]}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { OrderResponse } from '@kuest/bindings/clob';
|
|
2
|
+
import { di as RateLimitError, dt as RequestRejectedError, eE as SigningError, eT as TransportError, eW as UnexpectedResponseError, U as UserInputError, bz as InsufficientLiquidityError, t as BaseSecureClient, hz as PrepareLimitOrderRequest, hc as OrderWorkflow, hb as OrderPostingWorkflow, hB as PrepareMarketOrderRequest, I as CancelledSigningError, c_ as PostOrderError, eJ as TimeoutError, eN as TransactionFailedError, eB as SignedOrder, dn as RequestAbortedError, B as BaseClient, ds as RequestOptions } from './types-CI9Rwzhy.js';
|
|
3
|
+
import { SportsMarketTypesResponse, SportsMetadata } from '@kuest/bindings/gamma';
|
|
4
|
+
|
|
5
|
+
type PrepareMarketOrderError = InsufficientLiquidityError | RateLimitError | RequestRejectedError | SigningError | TransportError | UnexpectedResponseError | UserInputError;
|
|
6
|
+
declare const PrepareMarketOrderError: {
|
|
7
|
+
isError(error: unknown): error is SigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError | InsufficientLiquidityError;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Starts the market-order workflow.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
14
|
+
*
|
|
15
|
+
* @throws {@link PrepareMarketOrderError}
|
|
16
|
+
* Thrown on failure.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const workflow = await prepareMarketOrder(client, {
|
|
21
|
+
* assetId: '0x0122…0000',
|
|
22
|
+
* amount: 10,
|
|
23
|
+
* maxPrice: '0.55',
|
|
24
|
+
* side: OrderSide.BUY,
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
declare function prepareMarketOrder(client: BaseSecureClient, request: PrepareMarketOrderRequest): Promise<OrderWorkflow>;
|
|
29
|
+
type PrepareLimitOrderError = RateLimitError | RequestRejectedError | SigningError | TransportError | UnexpectedResponseError | UserInputError;
|
|
30
|
+
declare const PrepareLimitOrderError: {
|
|
31
|
+
isError(error: unknown): error is SigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Starts the limit-order workflow.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
38
|
+
*
|
|
39
|
+
* @throws {@link PrepareLimitOrderError}
|
|
40
|
+
* Thrown on failure.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const workflow = await prepareLimitOrder(client, {
|
|
45
|
+
* assetId: '0x0122…0000',
|
|
46
|
+
* postOnly: true,
|
|
47
|
+
* price: 0.52,
|
|
48
|
+
* side: OrderSide.BUY,
|
|
49
|
+
* size: 10,
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function prepareLimitOrder(client: BaseSecureClient, request: PrepareLimitOrderRequest): Promise<OrderWorkflow>;
|
|
54
|
+
type PrepareMarketOrderPostingError = PrepareMarketOrderError;
|
|
55
|
+
declare const PrepareMarketOrderPostingError: {
|
|
56
|
+
isError(error: unknown): error is SigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError | InsufficientLiquidityError;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Starts and posts a market-order workflow.
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
63
|
+
*
|
|
64
|
+
* @throws {@link PrepareMarketOrderPostingError}
|
|
65
|
+
* Thrown on failure.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const workflow = await prepareMarketOrderPosting(client, {
|
|
70
|
+
* assetId: '0x0122…0000',
|
|
71
|
+
* minPrice: '0.54',
|
|
72
|
+
* shares: 10,
|
|
73
|
+
* side: OrderSide.SELL,
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
declare function prepareMarketOrderPosting(client: BaseSecureClient, request: PrepareMarketOrderRequest): Promise<OrderPostingWorkflow>;
|
|
78
|
+
type PrepareLimitOrderPostingError = PrepareLimitOrderError;
|
|
79
|
+
declare const PrepareLimitOrderPostingError: {
|
|
80
|
+
isError(error: unknown): error is SigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Starts and posts a limit-order workflow.
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
87
|
+
*
|
|
88
|
+
* @throws {@link PrepareLimitOrderPostingError}
|
|
89
|
+
* Thrown on failure.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* const workflow = await prepareLimitOrderPosting(client, {
|
|
94
|
+
* assetId: '0x0122…0000',
|
|
95
|
+
* postOnly: true,
|
|
96
|
+
* price: 0.52,
|
|
97
|
+
* side: OrderSide.BUY,
|
|
98
|
+
* size: 10,
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
declare function prepareLimitOrderPosting(client: BaseSecureClient, request: PrepareLimitOrderRequest): Promise<OrderPostingWorkflow>;
|
|
103
|
+
|
|
104
|
+
type CreateMarketOrderError = PrepareMarketOrderError | CancelledSigningError;
|
|
105
|
+
declare const CreateMarketOrderError: {
|
|
106
|
+
isError(error: unknown): error is SigningError | CancelledSigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError | InsufficientLiquidityError;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Creates a signed market order for the authenticated account.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
113
|
+
*
|
|
114
|
+
* @throws {@link CreateMarketOrderError}
|
|
115
|
+
* Thrown on failure.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* const order = await createMarketOrder(client, {
|
|
120
|
+
* assetId: '0x0122…0000',
|
|
121
|
+
* amount: '100',
|
|
122
|
+
* maxPrice: '0.55',
|
|
123
|
+
* side: OrderSide.BUY,
|
|
124
|
+
* });
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
declare function createMarketOrder(client: BaseSecureClient, request: PrepareMarketOrderRequest): Promise<SignedOrder>;
|
|
128
|
+
type PlaceMarketOrderError = CreateMarketOrderError | PostOrderError | TimeoutError | TransactionFailedError;
|
|
129
|
+
declare const PlaceMarketOrderError: {
|
|
130
|
+
isError(error: unknown): error is SigningError | CancelledSigningError | TransportError | TransactionFailedError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError | TimeoutError | InsufficientLiquidityError;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Creates and posts a market order for the authenticated account.
|
|
134
|
+
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
137
|
+
*
|
|
138
|
+
* @throws {@link PlaceMarketOrderError}
|
|
139
|
+
* Thrown on failure.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* const response = await placeMarketOrder(client, {
|
|
144
|
+
* assetId: '0x0122…0000',
|
|
145
|
+
* minPrice: '0.54',
|
|
146
|
+
* shares: '180',
|
|
147
|
+
* side: OrderSide.SELL,
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
declare function placeMarketOrder(client: BaseSecureClient, request: PrepareMarketOrderRequest): Promise<OrderResponse>;
|
|
152
|
+
type CreateLimitOrderError = PrepareLimitOrderError | CancelledSigningError;
|
|
153
|
+
declare const CreateLimitOrderError: {
|
|
154
|
+
isError(error: unknown): error is SigningError | CancelledSigningError | TransportError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Creates a signed limit order for the authenticated account.
|
|
158
|
+
*
|
|
159
|
+
* @remarks
|
|
160
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
161
|
+
*
|
|
162
|
+
* GTD expirations must be at least 3 minutes in the future. Add your own
|
|
163
|
+
* buffer for network latency and clock skew when deriving an expiration from
|
|
164
|
+
* the current time.
|
|
165
|
+
*
|
|
166
|
+
* @throws {@link CreateLimitOrderError}
|
|
167
|
+
* Thrown on failure.
|
|
168
|
+
*/
|
|
169
|
+
declare function createLimitOrder(client: BaseSecureClient, request: PrepareLimitOrderRequest): Promise<SignedOrder>;
|
|
170
|
+
type PlaceLimitOrderError = CreateLimitOrderError | PostOrderError | TimeoutError | TransactionFailedError;
|
|
171
|
+
declare const PlaceLimitOrderError: {
|
|
172
|
+
isError(error: unknown): error is SigningError | CancelledSigningError | TransportError | TransactionFailedError | UserInputError | UnexpectedResponseError | RequestRejectedError | RateLimitError | TimeoutError;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Creates and posts a limit order for the authenticated account.
|
|
176
|
+
*
|
|
177
|
+
* @remarks
|
|
178
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
179
|
+
*
|
|
180
|
+
* GTD expirations must be at least 3 minutes in the future. Add your own
|
|
181
|
+
* buffer for network latency and clock skew when deriving an expiration from
|
|
182
|
+
* the current time.
|
|
183
|
+
*
|
|
184
|
+
* @throws {@link PlaceLimitOrderError}
|
|
185
|
+
* Thrown on failure.
|
|
186
|
+
*/
|
|
187
|
+
declare function placeLimitOrder(client: BaseSecureClient, request: PrepareLimitOrderRequest): Promise<OrderResponse>;
|
|
188
|
+
|
|
189
|
+
type ListSportsError = RequestAbortedError | RateLimitError | RequestRejectedError | TransportError | UnexpectedResponseError | UserInputError;
|
|
190
|
+
declare const ListSportsError: {
|
|
191
|
+
isError(error: unknown): error is TransportError | UserInputError | UnexpectedResponseError | RequestAbortedError | RequestRejectedError | RateLimitError;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Lists available sports metadata.
|
|
195
|
+
*
|
|
196
|
+
* @remarks
|
|
197
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
198
|
+
*
|
|
199
|
+
* @throws {@link ListSportsError}
|
|
200
|
+
* Thrown on failure.
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```ts
|
|
204
|
+
* const sports = await listSports(client);
|
|
205
|
+
*
|
|
206
|
+
* // sports: SportsMetadata[]
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
declare function listSports(client: BaseClient, options?: RequestOptions): Promise<SportsMetadata[]>;
|
|
210
|
+
type FetchSportsMarketTypesError = RequestAbortedError | RateLimitError | RequestRejectedError | TransportError | UnexpectedResponseError | UserInputError;
|
|
211
|
+
declare const FetchSportsMarketTypesError: {
|
|
212
|
+
isError(error: unknown): error is TransportError | UserInputError | UnexpectedResponseError | RequestAbortedError | RequestRejectedError | RateLimitError;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Fetches the available market types grouped by sport.
|
|
216
|
+
*
|
|
217
|
+
* @remarks
|
|
218
|
+
* This is a low-level function. Most SDK consumers should prefer the client instance API.
|
|
219
|
+
*
|
|
220
|
+
* @throws {@link FetchSportsMarketTypesError}
|
|
221
|
+
* Thrown on failure.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* const marketTypes = await fetchSportsMarketTypes(client);
|
|
226
|
+
*
|
|
227
|
+
* // marketTypes === SportsMarketTypesResponse
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
declare function fetchSportsMarketTypes(client: BaseClient, options?: RequestOptions): Promise<SportsMarketTypesResponse>;
|
|
231
|
+
|
|
232
|
+
export { CreateLimitOrderError as C, FetchSportsMarketTypesError as F, ListSportsError as L, PlaceLimitOrderError as P, CreateMarketOrderError as a, PlaceMarketOrderError as b, PrepareLimitOrderError as c, PrepareLimitOrderPostingError as d, PrepareMarketOrderError as e, PrepareMarketOrderPostingError as f, createLimitOrder as g, createMarketOrder as h, fetchSportsMarketTypes as i, placeMarketOrder as j, prepareLimitOrder as k, listSports as l, prepareLimitOrderPosting as m, prepareMarketOrder as n, prepareMarketOrderPosting as o, placeLimitOrder as p };
|