@lightconexyz/lightcone-sdk 0.8.3-rc.45 → 0.8.3-rc.46
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/dist/client.d.ts +5 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -1
- package/dist/client.js.map +1 -1
- package/dist/domain/position/client.d.ts +5 -1
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +5 -1
- package/dist/domain/position/client.js.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -111,7 +111,11 @@ export declare class LightconeClient implements ClientContext {
|
|
|
111
111
|
signAndSubmitTxConfirmed(tx: Transaction): Promise<string>;
|
|
112
112
|
/** Sign, submit, confirm, and return the transaction's processing slot. */
|
|
113
113
|
signAndSubmitTxConfirmedWithSlot(tx: Transaction): Promise<ConfirmedTransaction>;
|
|
114
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Sign, submit, and confirm a fee-prepared transaction without replacing its
|
|
116
|
+
* message. Privy and wallet-adapter message mutation are rejected. A confirmation
|
|
117
|
+
* timeout leaves the outcome unknown; inspect authoritative state before retrying.
|
|
118
|
+
*/
|
|
115
119
|
signAndSubmitPreparedTxConfirmedWithSlot(tx: Transaction): Promise<ConfirmedTransaction>;
|
|
116
120
|
static builder(): LightconeClientBuilder;
|
|
117
121
|
markets(): Markets;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -165,7 +165,11 @@ class LightconeClient {
|
|
|
165
165
|
async signAndSubmitTxConfirmedWithSlot(tx) {
|
|
166
166
|
return (0, context_1.signAndSubmitTxConfirmedWithSlot)(this, tx);
|
|
167
167
|
}
|
|
168
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* Sign, submit, and confirm a fee-prepared transaction without replacing its
|
|
170
|
+
* message. Privy and wallet-adapter message mutation are rejected. A confirmation
|
|
171
|
+
* timeout leaves the outcome unknown; inspect authoritative state before retrying.
|
|
172
|
+
*/
|
|
169
173
|
async signAndSubmitPreparedTxConfirmedWithSlot(tx) {
|
|
170
174
|
return (0, context_1.signAndSubmitPreparedTxConfirmedWithSlot)(this, tx);
|
|
171
175
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, Keypair, PublicKey, Transaction } from \"@solana/web3.js\";\nimport { Auth, type AuthCredentials } from \"./auth\";\nimport type { ClientContext } from \"./context\";\nimport {\n signAndSubmitTx as signAndSubmitTxFn,\n signAndSubmitTxConfirmed as signAndSubmitTxConfirmedFn,\n signAndSubmitTxConfirmedWithSlot as signAndSubmitTxConfirmedWithSlotFn,\n signAndSubmitPreparedTxConfirmedWithSlot as signAndSubmitPreparedTxConfirmedWithSlotFn,\n} from \"./context\";\nimport type { ConfirmedTransaction } from \"./context\";\nimport type { FaucetRequest, FaucetResponse } from \"./domain/faucet\";\nimport { Markets } from \"./domain/market\";\nimport { Metrics } from \"./domain/metrics\";\nimport { Notifications } from \"./domain/notification\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp, RetryPolicy, type CredentialRestorer } from \"./http\";\nimport { LightconeEnv, apiUrl, wsUrl, rpcUrl, programId as envProgramId } from \"./env\";\nimport { Privy } from \"./privy\";\nimport { Rpc } from \"./rpc\";\nimport { RpcFailoverState } from \"./rpcFailover\";\nimport { DepositSource, type OrderbookRules, type PubkeyStr } from \"./shared\";\nimport { type ExternalSigner, type SigningStrategy } from \"./shared/signing\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(initial?: AuthCredentials) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n // No caches to clear — decimals are derived locally from orderbook metadata.\n }\n}\n\nexport class LightconeClient implements ClientContext {\n readonly http: LightconeHttp;\n readonly programId: PublicKey;\n readonly primaryConnection?: Connection;\n readonly backupConnection?: Connection;\n readonly rpcFailoverState: RpcFailoverState;\n private depositSourceValue: DepositSource;\n private signingStrategyValue?: SigningStrategy;\n private transactionSponsorshipEnabledValue: boolean;\n private orderNonceValue: number | undefined;\n private readonly wsConfigValue: WsConfig;\n private readonly authStateStore: AuthState;\n readonly orderbookRulesCache: Map<string, Promise<OrderbookRules>>;\n\n /** @deprecated Use primaryConnection — kept for ClientContext compat. */\n get connection(): Connection | undefined {\n return this.primaryConnection;\n }\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n programId?: PublicKey;\n primaryConnection?: Connection;\n backupConnection?: Connection;\n rpcFailoverState?: RpcFailoverState;\n depositSource?: DepositSource;\n signingStrategy?: SigningStrategy;\n transactionSponsorshipEnabled?: boolean;\n orderNonce?: number;\n authCredentials?: AuthCredentials;\n authState?: AuthState;\n orderbookRulesCache?: Map<string, Promise<OrderbookRules>>;\n }) {\n this.http = params.http;\n this.programId = params.programId ?? envProgramId(LightconeEnv.Prod);\n this.primaryConnection = params.primaryConnection;\n this.backupConnection = params.backupConnection;\n this.rpcFailoverState =\n params.rpcFailoverState ?? new RpcFailoverState();\n this.depositSourceValue = params.depositSource ?? DepositSource.Global;\n this.signingStrategyValue = params.signingStrategy;\n this.transactionSponsorshipEnabledValue =\n params.transactionSponsorshipEnabled ?? false;\n this.orderNonceValue = params.orderNonce;\n this.wsConfigValue = params.wsConfig;\n this.authStateStore =\n params.authState ??\n new AuthState(params.authCredentials);\n this.orderbookRulesCache = params.orderbookRulesCache ?? new Map();\n }\n\n // ── Deposit source ──────────────────────────────────────────────────\n\n get depositSource(): DepositSource {\n return this.depositSourceValue;\n }\n\n setDepositSource(source: DepositSource): void {\n this.depositSourceValue = source;\n }\n\n // ── Signing strategy ────────────────────────────────────────────────\n\n get signingStrategy(): SigningStrategy | undefined {\n return this.signingStrategyValue;\n }\n\n /**\n * Cached authenticated identity shared by domain sub-clients.\n *\n * This is distinct from the HTTP cookie token and may be expired; fund-moving\n * operations must re-check its lifetime and wallet before signing.\n */\n get authCredentials(): AuthCredentials | undefined {\n return this.authStateStore.getCredentials();\n }\n\n setSigningStrategy(strategy: SigningStrategy): void {\n this.signingStrategyValue = strategy;\n }\n\n clearSigningStrategy(): void {\n this.signingStrategyValue = undefined;\n }\n\n /** Return the client-wide trusted assertion that an external sponsor pays fees. */\n get transactionSponsorshipEnabled(): boolean {\n return this.transactionSponsorshipEnabledValue;\n }\n\n /** Replace the Transaction Sponsorship Capability for subsequent submissions. */\n setTransactionSponsorshipEnabled(enabled: boolean): void {\n this.transactionSponsorshipEnabledValue = enabled;\n }\n\n // ── Nonce cache ──────────────────────────────────────────────────────\n\n orderNonce(): number | undefined {\n return this.orderNonceValue;\n }\n\n setOrderNonce(nonce: number): void {\n this.orderNonceValue = nonce;\n }\n\n clearOrderNonce(): void {\n this.orderNonceValue = undefined;\n }\n\n // ── Auth token (cookie) ─────────────────────────────────────────────\n\n /**\n * Get the current `lightcone-token` cookie value, if any. Populated by the SDK\n * after a successful login, then attached on every authed request. Useful\n * for forwarding the token through the `*WithCookies` methods, or\n * persisting the session across processes.\n */\n async authToken(): Promise<string | undefined> {\n return this.http.authTokenRef()();\n }\n\n /**\n * Clear the cached `lightcone-token`. Subsequent authed calls will go out\n * without a `Cookie` header (and 401) unless they use a\n * `*WithCookies` variant.\n */\n async clearAuthToken(): Promise<void> {\n await this.http.clearAuthToken();\n }\n\n /**\n * Register the credential restorer consulted when a request fails with\n * HTTP 401: it attempts to restore credentials (e.g. refresh the app's\n * auth session so the auth cookie is valid again); on success the\n * transport replays the request once IF it declared itself retry-safe\n * (RetryPolicy.None mutations are never auto-replayed). See {@link CredentialRestorer}.\n * Without a restorer, 401s propagate to callers unchanged.\n *\n * Common use: set once at app startup, alongside the signing strategy.\n */\n setCredentialRestorer(restorer: CredentialRestorer): void {\n this.http.setCredentialRestorer(restorer);\n }\n\n /** Remove the credential restorer (e.g. in tests); 401s propagate again. */\n clearCredentialRestorer(): void {\n this.http.clearCredentialRestorer();\n }\n\n // ── Transaction signing + submission ────────────────────────────────\n\n async signAndSubmitTx(tx: Transaction): Promise<string> {\n return signAndSubmitTxFn(this, tx);\n }\n\n /**\n * Sign and submit a transaction, then wait until it reaches `confirmed`\n * commitment on-chain. Prefer this over {@link signAndSubmitTx} when a\n * follow-up transaction depends on this one's state.\n */\n async signAndSubmitTxConfirmed(tx: Transaction): Promise<string> {\n return signAndSubmitTxConfirmedFn(this, tx);\n }\n\n /** Sign, submit, confirm, and return the transaction's processing slot. */\n async signAndSubmitTxConfirmedWithSlot(\n tx: Transaction\n ): Promise<ConfirmedTransaction> {\n return signAndSubmitTxConfirmedWithSlotFn(this, tx);\n }\n\n /** Confirm a fee-prepared transaction without replacing its message. */\n async signAndSubmitPreparedTxConfirmedWithSlot(\n tx: Transaction\n ): Promise<ConfirmedTransaction> {\n return signAndSubmitPreparedTxConfirmedWithSlotFn(this, tx);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n // ── Sub-client accessors ─────────────────────────────────────────────\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks(this);\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n /**\n * Metrics sub-client — platform / market / orderbook / category / deposit-token\n * volume metrics, market leaderboard, and time-series history.\n */\n metrics(): Metrics {\n return new Metrics(this);\n }\n\n /**\n * Request testnet SOL and whitelisted deposit tokens for a wallet.\n *\n * Only active on environments whose backend has the faucet enabled (typically\n * local and staging).\n *\n * `POST /api/claim`\n */\n async claim(walletAddress: PubkeyStr): Promise<FaucetResponse> {\n const url = `${this.http.baseUrl()}/api/claim`;\n return this.http.post<FaucetResponse, FaucetRequest>(\n url,\n { wallet_address: walletAddress },\n RetryPolicy.None\n );\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n rpc(): Rpc {\n return new Rpc(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n /**\n * Return a client whose Transaction Sponsorship Capability starts at this value.\n * Later runtime changes remain local to each clone, matching other mutable settings.\n */\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n programId: this.programId,\n primaryConnection: this.primaryConnection\n ? new Connection(this.primaryConnection.rpcEndpoint, { commitment: \"confirmed\" })\n : undefined,\n backupConnection: this.backupConnection\n ? new Connection(this.backupConnection.rpcEndpoint, { commitment: \"confirmed\" })\n : undefined,\n rpcFailoverState: this.rpcFailoverState,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n transactionSponsorshipEnabled: this.transactionSponsorshipEnabledValue,\n orderNonce: this.orderNonceValue,\n authState: this.authStateStore,\n orderbookRulesCache: this.orderbookRulesCache,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = apiUrl(LightconeEnv.Prod);\n private wsUrlValue: string = wsUrl(LightconeEnv.Prod);\n private authCredentials?: AuthCredentials;\n private programIdValue: PublicKey = envProgramId(LightconeEnv.Prod);\n private depositSourceValue: DepositSource = DepositSource.Global;\n private signingStrategyValue?: SigningStrategy;\n private transactionSponsorshipEnabledValue = false;\n private primaryRpcUrlValue?: string = rpcUrl(LightconeEnv.Prod);\n private backupRpcUrlValue?: string;\n\n /**\n * Set the deployment environment. Configures the API URL, WebSocket URL,\n * RPC URL, and program ID for the given environment.\n *\n * Individual URL overrides (e.g. `.baseUrl()`) take precedence when\n * called **after** `.env()`.\n */\n env(environment: LightconeEnv): LightconeClientBuilder {\n this.baseUrlValue = apiUrl(environment);\n this.wsUrlValue = wsUrl(environment);\n this.programIdValue = envProgramId(environment);\n this.primaryRpcUrlValue = rpcUrl(environment);\n return this;\n }\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n programId(id: PublicKey): LightconeClientBuilder {\n this.programIdValue = id;\n return this;\n }\n\n depositSource(source: DepositSource): LightconeClientBuilder {\n this.depositSourceValue = source;\n return this;\n }\n\n nativeSigner(keypair: Keypair): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"native\", keypair };\n return this;\n }\n\n externalSigner(signer: ExternalSigner): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"walletAdapter\", signer };\n return this;\n }\n\n privyWalletId(\n walletId: string,\n walletAddress?: string\n ): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"privy\", walletId, walletAddress };\n return this;\n }\n\n /** Set the initial trusted Transaction Sponsorship Capability; defaults to false. */\n transactionSponsorship(enabled: boolean): LightconeClientBuilder {\n this.transactionSponsorshipEnabledValue = enabled;\n return this;\n }\n\n rpcUrl(url: string): LightconeClientBuilder {\n this.primaryRpcUrlValue = url;\n return this;\n }\n\n /** Set a backup Solana RPC URL for automatic failover. */\n backupRpcUrl(url: string): LightconeClientBuilder {\n this.backupRpcUrlValue = url;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 10_000,\n },\n programId: this.programIdValue,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n transactionSponsorshipEnabled: this.transactionSponsorshipEnabledValue,\n primaryConnection: this.primaryRpcUrlValue\n ? new Connection(this.primaryRpcUrlValue, { commitment: \"confirmed\" })\n : undefined,\n backupConnection: this.backupRpcUrlValue\n ? new Connection(this.backupRpcUrlValue, { commitment: \"confirmed\" })\n : undefined,\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, Keypair, PublicKey, Transaction } from \"@solana/web3.js\";\nimport { Auth, type AuthCredentials } from \"./auth\";\nimport type { ClientContext } from \"./context\";\nimport {\n signAndSubmitTx as signAndSubmitTxFn,\n signAndSubmitTxConfirmed as signAndSubmitTxConfirmedFn,\n signAndSubmitTxConfirmedWithSlot as signAndSubmitTxConfirmedWithSlotFn,\n signAndSubmitPreparedTxConfirmedWithSlot as signAndSubmitPreparedTxConfirmedWithSlotFn,\n} from \"./context\";\nimport type { ConfirmedTransaction } from \"./context\";\nimport type { FaucetRequest, FaucetResponse } from \"./domain/faucet\";\nimport { Markets } from \"./domain/market\";\nimport { Metrics } from \"./domain/metrics\";\nimport { Notifications } from \"./domain/notification\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp, RetryPolicy, type CredentialRestorer } from \"./http\";\nimport { LightconeEnv, apiUrl, wsUrl, rpcUrl, programId as envProgramId } from \"./env\";\nimport { Privy } from \"./privy\";\nimport { Rpc } from \"./rpc\";\nimport { RpcFailoverState } from \"./rpcFailover\";\nimport { DepositSource, type OrderbookRules, type PubkeyStr } from \"./shared\";\nimport { type ExternalSigner, type SigningStrategy } from \"./shared/signing\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(initial?: AuthCredentials) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n // No caches to clear — decimals are derived locally from orderbook metadata.\n }\n}\n\nexport class LightconeClient implements ClientContext {\n readonly http: LightconeHttp;\n readonly programId: PublicKey;\n readonly primaryConnection?: Connection;\n readonly backupConnection?: Connection;\n readonly rpcFailoverState: RpcFailoverState;\n private depositSourceValue: DepositSource;\n private signingStrategyValue?: SigningStrategy;\n private transactionSponsorshipEnabledValue: boolean;\n private orderNonceValue: number | undefined;\n private readonly wsConfigValue: WsConfig;\n private readonly authStateStore: AuthState;\n readonly orderbookRulesCache: Map<string, Promise<OrderbookRules>>;\n\n /** @deprecated Use primaryConnection — kept for ClientContext compat. */\n get connection(): Connection | undefined {\n return this.primaryConnection;\n }\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n programId?: PublicKey;\n primaryConnection?: Connection;\n backupConnection?: Connection;\n rpcFailoverState?: RpcFailoverState;\n depositSource?: DepositSource;\n signingStrategy?: SigningStrategy;\n transactionSponsorshipEnabled?: boolean;\n orderNonce?: number;\n authCredentials?: AuthCredentials;\n authState?: AuthState;\n orderbookRulesCache?: Map<string, Promise<OrderbookRules>>;\n }) {\n this.http = params.http;\n this.programId = params.programId ?? envProgramId(LightconeEnv.Prod);\n this.primaryConnection = params.primaryConnection;\n this.backupConnection = params.backupConnection;\n this.rpcFailoverState =\n params.rpcFailoverState ?? new RpcFailoverState();\n this.depositSourceValue = params.depositSource ?? DepositSource.Global;\n this.signingStrategyValue = params.signingStrategy;\n this.transactionSponsorshipEnabledValue =\n params.transactionSponsorshipEnabled ?? false;\n this.orderNonceValue = params.orderNonce;\n this.wsConfigValue = params.wsConfig;\n this.authStateStore =\n params.authState ??\n new AuthState(params.authCredentials);\n this.orderbookRulesCache = params.orderbookRulesCache ?? new Map();\n }\n\n // ── Deposit source ──────────────────────────────────────────────────\n\n get depositSource(): DepositSource {\n return this.depositSourceValue;\n }\n\n setDepositSource(source: DepositSource): void {\n this.depositSourceValue = source;\n }\n\n // ── Signing strategy ────────────────────────────────────────────────\n\n get signingStrategy(): SigningStrategy | undefined {\n return this.signingStrategyValue;\n }\n\n /**\n * Cached authenticated identity shared by domain sub-clients.\n *\n * This is distinct from the HTTP cookie token and may be expired; fund-moving\n * operations must re-check its lifetime and wallet before signing.\n */\n get authCredentials(): AuthCredentials | undefined {\n return this.authStateStore.getCredentials();\n }\n\n setSigningStrategy(strategy: SigningStrategy): void {\n this.signingStrategyValue = strategy;\n }\n\n clearSigningStrategy(): void {\n this.signingStrategyValue = undefined;\n }\n\n /** Return the client-wide trusted assertion that an external sponsor pays fees. */\n get transactionSponsorshipEnabled(): boolean {\n return this.transactionSponsorshipEnabledValue;\n }\n\n /** Replace the Transaction Sponsorship Capability for subsequent submissions. */\n setTransactionSponsorshipEnabled(enabled: boolean): void {\n this.transactionSponsorshipEnabledValue = enabled;\n }\n\n // ── Nonce cache ──────────────────────────────────────────────────────\n\n orderNonce(): number | undefined {\n return this.orderNonceValue;\n }\n\n setOrderNonce(nonce: number): void {\n this.orderNonceValue = nonce;\n }\n\n clearOrderNonce(): void {\n this.orderNonceValue = undefined;\n }\n\n // ── Auth token (cookie) ─────────────────────────────────────────────\n\n /**\n * Get the current `lightcone-token` cookie value, if any. Populated by the SDK\n * after a successful login, then attached on every authed request. Useful\n * for forwarding the token through the `*WithCookies` methods, or\n * persisting the session across processes.\n */\n async authToken(): Promise<string | undefined> {\n return this.http.authTokenRef()();\n }\n\n /**\n * Clear the cached `lightcone-token`. Subsequent authed calls will go out\n * without a `Cookie` header (and 401) unless they use a\n * `*WithCookies` variant.\n */\n async clearAuthToken(): Promise<void> {\n await this.http.clearAuthToken();\n }\n\n /**\n * Register the credential restorer consulted when a request fails with\n * HTTP 401: it attempts to restore credentials (e.g. refresh the app's\n * auth session so the auth cookie is valid again); on success the\n * transport replays the request once IF it declared itself retry-safe\n * (RetryPolicy.None mutations are never auto-replayed). See {@link CredentialRestorer}.\n * Without a restorer, 401s propagate to callers unchanged.\n *\n * Common use: set once at app startup, alongside the signing strategy.\n */\n setCredentialRestorer(restorer: CredentialRestorer): void {\n this.http.setCredentialRestorer(restorer);\n }\n\n /** Remove the credential restorer (e.g. in tests); 401s propagate again. */\n clearCredentialRestorer(): void {\n this.http.clearCredentialRestorer();\n }\n\n // ── Transaction signing + submission ────────────────────────────────\n\n async signAndSubmitTx(tx: Transaction): Promise<string> {\n return signAndSubmitTxFn(this, tx);\n }\n\n /**\n * Sign and submit a transaction, then wait until it reaches `confirmed`\n * commitment on-chain. Prefer this over {@link signAndSubmitTx} when a\n * follow-up transaction depends on this one's state.\n */\n async signAndSubmitTxConfirmed(tx: Transaction): Promise<string> {\n return signAndSubmitTxConfirmedFn(this, tx);\n }\n\n /** Sign, submit, confirm, and return the transaction's processing slot. */\n async signAndSubmitTxConfirmedWithSlot(\n tx: Transaction\n ): Promise<ConfirmedTransaction> {\n return signAndSubmitTxConfirmedWithSlotFn(this, tx);\n }\n\n /**\n * Sign, submit, and confirm a fee-prepared transaction without replacing its\n * message. Privy and wallet-adapter message mutation are rejected. A confirmation\n * timeout leaves the outcome unknown; inspect authoritative state before retrying.\n */\n async signAndSubmitPreparedTxConfirmedWithSlot(\n tx: Transaction\n ): Promise<ConfirmedTransaction> {\n return signAndSubmitPreparedTxConfirmedWithSlotFn(this, tx);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n // ── Sub-client accessors ─────────────────────────────────────────────\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks(this);\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n /**\n * Metrics sub-client — platform / market / orderbook / category / deposit-token\n * volume metrics, market leaderboard, and time-series history.\n */\n metrics(): Metrics {\n return new Metrics(this);\n }\n\n /**\n * Request testnet SOL and whitelisted deposit tokens for a wallet.\n *\n * Only active on environments whose backend has the faucet enabled (typically\n * local and staging).\n *\n * `POST /api/claim`\n */\n async claim(walletAddress: PubkeyStr): Promise<FaucetResponse> {\n const url = `${this.http.baseUrl()}/api/claim`;\n return this.http.post<FaucetResponse, FaucetRequest>(\n url,\n { wallet_address: walletAddress },\n RetryPolicy.None\n );\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n rpc(): Rpc {\n return new Rpc(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n /**\n * Return a client whose Transaction Sponsorship Capability starts at this value.\n * Later runtime changes remain local to each clone, matching other mutable settings.\n */\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n programId: this.programId,\n primaryConnection: this.primaryConnection\n ? new Connection(this.primaryConnection.rpcEndpoint, { commitment: \"confirmed\" })\n : undefined,\n backupConnection: this.backupConnection\n ? new Connection(this.backupConnection.rpcEndpoint, { commitment: \"confirmed\" })\n : undefined,\n rpcFailoverState: this.rpcFailoverState,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n transactionSponsorshipEnabled: this.transactionSponsorshipEnabledValue,\n orderNonce: this.orderNonceValue,\n authState: this.authStateStore,\n orderbookRulesCache: this.orderbookRulesCache,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = apiUrl(LightconeEnv.Prod);\n private wsUrlValue: string = wsUrl(LightconeEnv.Prod);\n private authCredentials?: AuthCredentials;\n private programIdValue: PublicKey = envProgramId(LightconeEnv.Prod);\n private depositSourceValue: DepositSource = DepositSource.Global;\n private signingStrategyValue?: SigningStrategy;\n private transactionSponsorshipEnabledValue = false;\n private primaryRpcUrlValue?: string = rpcUrl(LightconeEnv.Prod);\n private backupRpcUrlValue?: string;\n\n /**\n * Set the deployment environment. Configures the API URL, WebSocket URL,\n * RPC URL, and program ID for the given environment.\n *\n * Individual URL overrides (e.g. `.baseUrl()`) take precedence when\n * called **after** `.env()`.\n */\n env(environment: LightconeEnv): LightconeClientBuilder {\n this.baseUrlValue = apiUrl(environment);\n this.wsUrlValue = wsUrl(environment);\n this.programIdValue = envProgramId(environment);\n this.primaryRpcUrlValue = rpcUrl(environment);\n return this;\n }\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n programId(id: PublicKey): LightconeClientBuilder {\n this.programIdValue = id;\n return this;\n }\n\n depositSource(source: DepositSource): LightconeClientBuilder {\n this.depositSourceValue = source;\n return this;\n }\n\n nativeSigner(keypair: Keypair): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"native\", keypair };\n return this;\n }\n\n externalSigner(signer: ExternalSigner): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"walletAdapter\", signer };\n return this;\n }\n\n privyWalletId(\n walletId: string,\n walletAddress?: string\n ): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"privy\", walletId, walletAddress };\n return this;\n }\n\n /** Set the initial trusted Transaction Sponsorship Capability; defaults to false. */\n transactionSponsorship(enabled: boolean): LightconeClientBuilder {\n this.transactionSponsorshipEnabledValue = enabled;\n return this;\n }\n\n rpcUrl(url: string): LightconeClientBuilder {\n this.primaryRpcUrlValue = url;\n return this;\n }\n\n /** Set a backup Solana RPC URL for automatic failover. */\n backupRpcUrl(url: string): LightconeClientBuilder {\n this.backupRpcUrlValue = url;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 10_000,\n },\n programId: this.programIdValue,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n transactionSponsorshipEnabled: this.transactionSponsorshipEnabledValue,\n primaryConnection: this.primaryRpcUrlValue\n ? new Connection(this.primaryRpcUrlValue, { commitment: \"confirmed\" })\n : undefined,\n backupConnection: this.backupRpcUrlValue\n ? new Connection(this.backupRpcUrlValue, { commitment: \"confirmed\" })\n : undefined,\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
|
|
@@ -173,7 +173,11 @@ export declare class Positions {
|
|
|
173
173
|
* carries its prepared message.
|
|
174
174
|
*/
|
|
175
175
|
planNativeSolWithdrawal(recipient: PublicKey, amountLamports: bigint, state: WalletDepositBalancesState, sponsored: boolean): Promise<SolActionPlan>;
|
|
176
|
-
/**
|
|
176
|
+
/**
|
|
177
|
+
* Resolve an unexpired wallet from matching initialized balance state.
|
|
178
|
+
* This requires the configured signing strategy to control the authenticated
|
|
179
|
+
* wallet. It does not prove balance freshness.
|
|
180
|
+
*/
|
|
177
181
|
private planningWallet;
|
|
178
182
|
/**
|
|
179
183
|
* Return the authenticated Trading Wallet after native-keypair validation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -533,7 +533,11 @@ class Positions {
|
|
|
533
533
|
},
|
|
534
534
|
};
|
|
535
535
|
}
|
|
536
|
-
/**
|
|
536
|
+
/**
|
|
537
|
+
* Resolve an unexpired wallet from matching initialized balance state.
|
|
538
|
+
* This requires the configured signing strategy to control the authenticated
|
|
539
|
+
* wallet. It does not prove balance freshness.
|
|
540
|
+
*/
|
|
537
541
|
planningWallet(state) {
|
|
538
542
|
// Cached identity is a signing trust boundary: validate expiry, complete
|
|
539
543
|
// state initialization, and wallet equality before constructing a transaction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":";;;;;;AA4JA,gDAmCC;AA/LD,6CAKyB;AACzB,iDAU2B;AAC3B,iDAA8C;AAC9C,gDAAwB;AACxB,qCAA6C;AAE7C,2CAGuB;AACvB,uCAAuC;AACvC,qCAAyC;AACzC,6DAaoC;AACpC,mCAAgC;AAChC,2CAAmD;AACnD,qDAA2F;AAC3F,+CAA6E;AAC7E,kDAG8B;AAiB9B,mCAOiB;AAEjB,yCAWoB;AAEpB,yEAAyE;AACzE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,gFAAgF;AAChF,MAAM,OAAO,GAAG,mBAAsB,CAAC;AAuCvC,uFAAuF;AACvF,SAAS,qBAAqB,CAAC,cAAsB,EAAE,MAAc;IACnE,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,gBAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,uCAAuC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QACzB,MAAM,gBAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,mCAAmC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,cAAc,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,gBAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,sBAAsB,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAkB;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,gBAAQ,CAAC,UAAU,CAAC,gDAAgD,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,eAAuB,EACvB,MAAiB,EACjB,SAAoB,EACpB,cAAsB,EACtB,OAAe;IAEf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QAC/D,MAAM,gBAAQ,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,cAAc,GAAG,EAAE,IAAI,cAAc,GAAG,OAAO,EAAE,CAAC;QACpD,MAAM,gBAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,cAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,gBAAQ,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,EAAE,CAAC;IACb,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,EAAE,CAAC;IACb,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,CAAC,CAAC;IACZ,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACnC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,wEAAwE;IAExE,GAAG,CAAC,KAAgB,EAAE,MAAiB;QACrC,OAAO,IAAA,oBAAc,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,GAAG,CAAC,UAAkB;QAC1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC;QAClG,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,YAAoB;QACzD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,kBAAkB,CAAC,UAAU,CAAC,YAAY,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC;QAC9I,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAA0B,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,oBAAoB,CAAC,YAAoB;QAC7C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CACpC,GAAG,EACH,kBAAW,CAAC,UAAU,EACtB,YAAY,CACb,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAAoB;QAC3C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC;QAC5G,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAA0B,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,6BAA6B,CACjC,YAAoB,EACpB,YAAoB;QAEpB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC;QAC5G,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CACpC,GAAG,EACH,kBAAW,CAAC,UAAU,EACtB,YAAY,CACb,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,cAAuB;QAEvB,MAAM,KAAK,GACT,cAAc,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,qBAAqB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oCAAoC,KAAK,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACzB,GAAG,EACH,kBAAW,CAAC,UAAU,CACvB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,+BAA+B,CACnC,cAAkC,EAClC,YAAoB;QAEpB,MAAM,KAAK,GACT,cAAc,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,qBAAqB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oCAAoC,KAAK,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CACpC,GAAG,EACH,kBAAW,CAAC,UAAU,EACtB,YAAY,CACb,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,KAAiC;QAEjC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,qBAAqB,GAAG,EAAE,EAAE,CAAC;YACrD,MAAM,gBAAQ,CAAC,UAAU,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,IACE,OAAO;YACP,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAC,qBAAqB,EAC/D,CAAC;YACD,MAAM,gBAAQ,CAAC,UAAU,CACvB,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,IACE,OAAO;YACP,OAAO,CAAC,eAAe;gBACrB,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,EAC7D,CAAC;YACD,MAAM,gBAAQ,CAAC,UAAU,CACvB,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,IACE,OAAO;YACP,CAAC,OAAO,CAAC,mBAAmB,GAAG,cAAc,GAAG,OAAO;gBACrD,OAAO,CAAC,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,EACrD,CAAC;YACD,MAAM,gBAAQ,CAAC,UAAU,CACvB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,2BAA2B,GAAG,OAAO,KAAK,IAAI,CAAC;QACrD,MAAM,mBAAmB,GAAG,2BAA2B;YACrD,CAAC,CAAC,MAAM,GAAG,CAAC,8BAA8B,CAAC,mBAAmB,CAAC;YAC/D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAC9C,MAAM,EACN,cAAc,EACd,2BAA2B,CAC5B,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAmB;YAC5B,WAAW;YACX,mBAAmB;YACnB,2BAA2B;YAC3B,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,sBAAsB,GAC1B,cAAc,GAAG,YAAY,CAAC,eAAe,CAAC;QAChD,IAAI,sBAAsB,GAAG,OAAO,EAAE,CAAC;YACrC,MAAM,gBAAQ,CAAC,UAAU,CACvB,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,cAAc,GAAG,sBAAsB,EAAE,CAAC;YACtD,MAAM,gBAAQ,CAAC,UAAU,CACvB,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,WAAW;YACX,KAAK;YACL,YAAY;YACZ,aAAa,EAAE;gBACb,cAAc,EACZ,CAAC,cAAc,GAAG,WAAW,GAAG,mBAAmB;gBACrD,qBAAqB,EAAE,cAAc;aACtC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,iBAAiB,CACrB,KAAiC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,qBAAqB,KAAK,EAAE,EAAE,CAAC;YAC3C,MAAM,gBAAQ,CAAC,UAAU,CACvB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,gBAAQ,CAAC,UAAU,CACvB,mDAAmD,CACpD,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACpE,MAAM,gBAAQ,CAAC,UAAU,CACvB,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAmB;YAC5B,WAAW;YACX,mBAAmB,EAAE,EAAE;YACvB,2BAA2B,EAAE,KAAK;YAClC,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,YAAY,GAAG,IAAA,uCAA+B,EAClD,SAAS,EACT,KAAK,CACN,CAAC;QACF,MAAM,uBAAuB,GAC3B,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC;QACnE,IAAI,uBAAuB,GAAG,OAAO,EAAE,CAAC;YACtC,MAAM,gBAAQ,CAAC,UAAU,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,WAAW;YACX,KAAK;YACL,YAAY;YACZ,aAAa,EAAE;gBACb,cAAc,EAAE,OAAO,CAAC,eAAe,GAAG,WAAW;gBACrD,qBAAqB,EAAE,CAAC,SAAS,CAAC,qBAAqB;aACxD;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,cAAsB,EACtB,KAAiC,EACjC,SAAkB;QAElB,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,SAAS,CAAC,qBAAqB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7D,MAAM,gBAAQ,CAAC,UAAU,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GACb,cAAc,GAAG,SAAS,CAAC,qBAAqB;YAC9C,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,qBAAqB;YAClD,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,mBAAmB,GAAG,eAAe;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,GAAG,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,WAAW,CAAC,GAAG,CACb,IAAA,6DAAiD,EAC/C,MAAM,EACN,SAAS,EACT,MAAM,EACN,uBAAW,EACX,4BAAgB,CACjB,CACF,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,WAAW,CAAC,GAAG,CACb,uBAAa,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EACxF,IAAA,uCAA2B,EAAC,SAAS,EAAE,4BAAgB,CAAC,CACzD,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,GAAG,CACb,IAAA,6BAAc,EACZ;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI,mBAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,WAAW,EAAE,uBAAW;YACxB,MAAM,EAAE,cAAc;SACvB,EACD,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CACF,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAmB;YAC5B,WAAW;YACX,mBAAmB;YACnB,2BAA2B,EAAE,CAAC,eAAe;YAC7C,SAAS;SACV,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,gBAAQ,CAAC,UAAU,CACvB,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,GAAG,YAAY,CAAC,eAAe,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YACxE,MAAM,gBAAQ,CAAC,UAAU,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,mBAAmB,CAAC;QACvE,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW;YACX,KAAK;YACL,YAAY;YACZ,aAAa,EAAE;gBACb,cAAc,EAAE,CAAC,SAAS,GAAG,WAAW;gBACxC,qBAAqB,EAAE,SAAS,GAAG,cAAc;aAClD;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,cAAsB,EACtB,KAAiC,EACjC,SAAkB;QAElB,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAC5D,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,WAAW,CAAC,GAAG,CACb,IAAA,2BAAY,EACV;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI,mBAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,WAAW,EAAE,uBAAW;YACxB,MAAM,EAAE,cAAc;SACvB,EACD,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CACF,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAC3B,OAAO,EACP,cAAc,EACd,WAAW,EACX,GAAG,EACH,SAAS,EACT,mBAAmB,EACnB,CAAC,eAAe,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,MAAiB,EACjB,cAAsB,EACtB,YAAoB,EACpB,WAAmB,EACnB,KAAiC,EACjC,SAAkB;QAElB,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,qBAAqB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;QAC9B,IAAA,4BAAoB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAC5D,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,WAAW,CAAC,GAAG,CACb,IAAA,oCAAqB,EACnB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM;YACN,WAAW,EAAE,uBAAW;YACxB,MAAM,EAAE,cAAc;SACvB,EACD,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CACF,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,cAAc,EACd,WAAW,EACX,GAAG,EACH,SAAS,EACT,mBAAmB,EACnB,CAAC,eAAe,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uBAAuB,CAC3B,SAAoB,EACpB,cAAsB,EACtB,KAAiC,EACjC,SAAkB;QAElB,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,qBAAqB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CACtD,uBAAa,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAC9F,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,WAAW,GAAmB;YAClC,WAAW,EAAE,SAAS;YACtB,mBAAmB,EAAE,EAAE;YACvB,2BAA2B,EAAE,KAAK;YAClC,SAAS;SACV,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,cAAc,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YAC1D,MAAM,gBAAQ,CAAC,UAAU,CACvB,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,IACE,SAAS,CAAC,cAAc;YACxB,cAAc,GAAG,kBAAkB,CAAC,eAAe,EACnD,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,WAAW;gBAClB,YAAY,EAAE,kBAAkB;gBAChC,aAAa,EAAE;oBACb,cAAc,EAAE,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC9D,qBAAqB,EAAE,EAAE;iBAC1B;aACF,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,gBAAQ,CAAC,UAAU,CACvB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;QACpF,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC3E,IAAI,IAAwB,CAAC;QAC7B,IAAI,SAAgC,CAAC;QACrC,6FAA6F;QAC7F,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,kBAAkB,CACtC,SAAS,EACT,MAAM,EACN,SAAS,EACT,cAAc,EACd,OAAO,CACR,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,cAAc,CAC9C,MAAM,EACN,aAAa,EACb,4BAAgB,CACjB,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC1C,IAAI,GAAG,aAAa,CAAC;gBACrB,SAAS,GAAG,SAAS,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,gBAAQ,CAAC,UAAU,CAAC,4CAA4C,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,8BAA8B,CACnD,MAAM,EACN,SAAS,EACT,cAAc,EACd,EAAE,EACF,aAAa,EACb,IAAI,EACJ,SAAS,CACV,CAAC;QACF,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,YAAY,GAAmB;YACnC,WAAW,EAAE,UAAU;YACvB,mBAAmB,EAAE,aAAa;YAClC,2BAA2B,EAAE,KAAK;YAClC,SAAS;SACV,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC5E,MAAM,eAAe,GAAG,cAAc,GAAG,mBAAmB,CAAC,eAAe,CAAC;QAC7E,IAAI,eAAe,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,gBAAQ,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC;QACnE,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAC/C,MAAM,EACN,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,IAAI,EACJ,SAAS,CACV,CAAC;QACF,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,KAAK,GAAmB;YAC5B,WAAW,EAAE,QAAQ;YACrB,mBAAmB,EAAE,aAAa;YAClC,2BAA2B,EAAE,KAAK;YAClC,SAAS;SACV,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC,eAAe,CAAC;QACpE,IAAI,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,gBAAQ,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,iBAAiB,GAAG,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC;QACnE,IAAI,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACxD,MAAM,gBAAQ,CAAC,UAAU,CACvB,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,eAAe,EAAE,CAAC;YAC1C,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAC/C,MAAM,EACN,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,SAAS,CACV,CAAC;YACF,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC;YACxC,WAAW,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACxD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;YACxE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,gBAAQ,CAAC,UAAU,CACvB,4DAA4D,CAC7D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,WAAW;YACX,KAAK;YACL,YAAY;YACZ,aAAa,EAAE;gBACb,cAAc,EACZ,iBAAiB,GAAG,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAClE,qBAAqB,EAAE,CAAC,iBAAiB;aAC1C;SACF,CAAC;IACJ,CAAC;IAED,kFAAkF;IAC1E,cAAc,CAAC,KAAiC;QACtD,yEAAyE;QACzE,+EAA+E;QAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,gBAAQ,CAAC,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,IAAA,sBAAe,EAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,gBAAQ,CAAC,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACtE,CAAC;QACD,IACE,KAAK,CAAC,aAAa,KAAK,SAAS;YACjC,KAAK,CAAC,WAAW,KAAK,SAAS;YAC/B,KAAK,CAAC,gBAAgB,KAAK,SAAS,EACpC,CAAC;YACD,MAAM,gBAAQ,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,KAAK,WAAW,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,gBAAQ,CAAC,UAAU,CACvB,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,MAAiB,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAQ,CAAC,UAAU,CACvB,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7F,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAA,gCAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,IAAA,sCAA4B,EAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,gBAAQ,CAAC,UAAU,CAAC,8CAA8C,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,aAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,mBAAS,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAQ,CAAC,UAAU,CACvB,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,gBAAQ,CAAC,UAAU,CACvB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,wBAAwB,CAC9B,KAAiC;QAEjC,IAAA,sCAA4B,EAAC,IAAA,gCAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACK,uBAAuB,CAC7B,MAAiB,EACjB,cAAsB,EACtB,2BAAoC;QAEpC,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,IAAI,2BAA2B,EAAE,CAAC;YAChC,WAAW,CAAC,GAAG,CACb,IAAA,mDAAuC,EACrC,MAAM,EACN,SAAS,EACT,MAAM,EACN,uBAAW,EACX,4BAAgB,CACjB,CACF,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,GAAG,CACpB,uBAAa,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,cAAc;SACzB,CAAC,EACF,IAAA,uCAA2B,EAAC,SAAS,EAAE,4BAAgB,CAAC,CACzD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,6BAA6B,CAAC,MAAiB;QACrD,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAC9C,IAAA,yCAA6B,EAC3B,SAAS,EACT,MAAM,EACN,MAAM,EACN,EAAE,EACF,4BAAgB,CACjB,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,0BAA0B,CAAC,MAAiB;QAClD,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,IAAA,6DAAiD,EACtD,MAAM,EACN,SAAS,EACT,MAAM,EACN,uBAAW,EACX,4BAAgB,CACjB,CAAC;IACJ,CAAC;IAED,gFAAgF;IACxE,KAAK,CAAC,kBAAkB,CAC9B,MAAiB,EACjB,KAAiC;QAOjC,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,qBAAqB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7D,MAAM,gBAAQ,CAAC,UAAU,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG;YACH,SAAS;YACT,eAAe;YACf,mBAAmB,EAAE,eAAe;gBAClC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,GAAG,CAAC,8BAA8B,CAAC,mBAAmB,CAAC;SAClE,CAAC;IACJ,CAAC;IAED,+EAA+E;IACvE,KAAK,CAAC,iBAAiB,CAC7B,IAAwB,EACxB,cAAsB,EACtB,WAAwB,EACxB,GAAQ,EACR,SAA8B,EAC9B,mBAA2B,EAC3B,2BAAoC,EACpC,SAAkB;QAElB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAmB;YAC5B,WAAW;YACX,mBAAmB;YACnB,2BAA2B;YAC3B,SAAS;SACV,CAAC;QACF,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,mBAAmB,CAAC;QACvE,OAAO;YACL,IAAI;YACJ,WAAW;YACX,KAAK;YACL,YAAY;YACZ,aAAa,EAAE;gBACb,cAAc,EAAE,CAAC,WAAW;gBAC5B,qBAAqB,EAAE,cAAc;aACtC;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,8BAA8B,CACpC,MAAiB,EACjB,SAAoB,EACpB,cAAsB,EACtB,iBAAyB,EACzB,aAAqB,EACrB,IAAY,EACZ,SAAoB;QAEpB,MAAM,SAAS,GAAG,IAAA,yCAA6B,EAAC,uBAAW,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAC9C,uBAAa,CAAC,qBAAqB,CAAC;YAClC,UAAU,EAAE,MAAM;YAClB,gBAAgB,EAAE,SAAS;YAC3B,UAAU,EAAE,MAAM;YAClB,IAAI;YACJ,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC;YAC/B,KAAK,EAAE,mBAAmB;YAC1B,SAAS,EAAE,4BAAgB;SAC5B,CAAC,EACF,IAAA,+CAAmC,EACjC,SAAS,EACT,uBAAW,EACX,MAAM,EACN,4BAAgB,CACjB,EACD,IAAA,qCAAyB,EACvB,SAAS,EACT,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,EAAE,EACF,4BAAgB,CACjB,EACD,IAAA,yCAA6B,EAC3B,SAAS,EACT,MAAM,EACN,MAAM,EACN,EAAE,EACF,4BAAgB,CACjB,EACD,uBAAa,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,cAAc;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,wEAAwE;IAExE,gBAAgB,CACd,MAA4B,EAC5B,YAAoB;QAEpB,OAAO,IAAA,oCAAqB,EAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,iCAAiC,CAC/B,MAA6C;QAE7C,OAAO,IAAA,qDAAsC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,sBAAsB,CACpB,MAAkC;QAElC,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,oBAAoB,CAClB,MAAgC,EAChC,WAAmB;QAEnB,OAAO,IAAA,wCAAyB,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,sBAAsB,CACpB,MAAkC,EAClC,WAAmB;QAEnB,OAAO,IAAA,0CAA2B,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,OAAO,IAAA,qCAAsB,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,wBAAwB,CACtB,MAA6B,EAC7B,UAAqC;QAErC,OAAO,IAAA,4CAA6B,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;IAED,uBAAuB,CACrB,MAAmC,EACnC,WAAmB;QAEnB,OAAO,IAAA,2CAA4B,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;IAED,oBAAoB,CAAC,MAAgC;QACnD,OAAO,IAAA,wCAAyB,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,kBAAkB,CAAC,MAA8B;QAC/C,OAAO,IAAA,sCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAC1B,MAAwC,EACxC,WAAmB;QAEnB,OAAO,IAAA,gDAAiC,EACtC,MAAM,EACN,WAAW,EACX,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CAAC;IACJ,CAAC;IAED,uEAAuE;IAEvE,gBAAgB,CACd,MAA4B,EAC5B,YAAoB;QAEpB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvD,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iCAAiC,CAAC,MAA6C;QAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,sBAAsB,CAAC,MAAkC;QACvD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,oBAAoB,CAClB,MAAgC,EAChC,WAAmB;QAEnB,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,sBAAsB,CACpB,MAAkC,EAClC,WAAmB;QAEnB,MAAM,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,wBAAwB,CACtB,MAA6B,EAC7B,UAAqC;QAErC,MAAM,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7D,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAuB,CACrB,MAAmC,EACnC,WAAmB;QAEnB,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7D,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,oBAAoB,CAAC,MAAgC;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,kBAAkB,CAAC,MAA8B;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAC1B,MAAwC,EACxC,WAAmB;QAEnB,MAAM,EAAE,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,OAAO,IAAI,qBAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,sEAAsE;IAEtE,OAAO;QACL,OAAO,IAAI,yBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,uBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,0BAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,gCAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,sCAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,+BAA+B;QAC7B,OAAO,IAAI,sCAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,oCAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,sCAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,iCAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,oCAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,uCAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IAEvE,KAAK,CAAC,UAAU,CAAC,KAAgB,EAAE,MAAiB;QAClD,MAAM,UAAU,GAAG,IAAA,2BAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAA,8BAA0B,EAAC,WAAW,CAAC,IAAc,CAAC,CAAC;IAChE,CAAC;CACF;AArlCD,8BAqlCC","sourcesContent":["import {\n PublicKey,\n SystemProgram,\n Transaction,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport {\n createAssociatedTokenAccountInstruction,\n createAssociatedTokenAccountIdempotentInstruction,\n createInitializeAccount3Instruction,\n createTransferInstruction,\n createCloseAccountInstruction,\n createSyncNativeInstruction,\n getAssociatedTokenAddressSync,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID,\n} from \"@solana/spl-token\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport bs58 from \"bs58\";\nimport { isAuthenticated } from \"../../auth\";\nimport type { ClientContext } from \"../../context\";\nimport {\n requireConnection,\n requireSigningStrategy,\n} from \"../../context\";\nimport { SdkError } from \"../../error\";\nimport { RetryPolicy } from \"../../http\";\nimport {\n buildDepositIx,\n buildMergeIx,\n buildRedeemWinningsIx,\n buildWithdrawConditionalFromPositionIx,\n buildInitPositionTokensIx,\n buildExtendPositionTokensIx,\n buildDepositToGlobalIx,\n buildDepositToGlobalIxWithAlt,\n buildGlobalToMarketDepositIx,\n buildWithdrawFromGlobalIx,\n buildClosePositionAltIx,\n buildClosePositionTokenAccountsIx,\n} from \"../../program/instructions\";\nimport { Rpc } from \"../../rpc\";\nimport { getPositionPda } from \"../../program/pda\";\nimport { deserializePosition as deserializeProgramPosition } from \"../../program/accounts\";\nimport { validateOutcomeIndex, validateOutcomes } from \"../../program/utils\";\nimport {\n requireNativeSigningStrategy,\n signingStrategyWalletAddress,\n} from \"../../shared/signing\";\nimport type {\n Position as ProgramPosition,\n RedeemWinningsParams,\n WithdrawConditionalFromPositionParams,\n WithdrawFromPositionParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositToGlobalParams,\n DepositToGlobalAltContext,\n GlobalToMarketDepositParams,\n WithdrawFromGlobalParams,\n ClosePositionAltParams,\n ClosePositionTokenAccountsParams,\n} from \"../../program/types\";\nimport type { Market } from \"../market\";\nimport type { DepositTokenBalancesSnapshot } from \"./index\";\nimport {\n solBalanceAvailability,\n unwrapAllSolBalanceAvailability,\n type SolActionCosts,\n type SolBalanceAvailability,\n type SolBalanceBreakdown,\n type WalletDepositBalancesState,\n} from \"./state\";\nimport type { MarketPositionsResponse, PositionsResponse } from \"./wire\";\nimport {\n DepositBuilder,\n MergeBuilder,\n WithdrawBuilder,\n RedeemWinningsBuilder,\n WithdrawFromPositionBuilder,\n InitPositionTokensBuilder,\n ExtendPositionTokensBuilder,\n DepositToGlobalBuilder,\n WithdrawFromGlobalBuilder,\n GlobalToMarketDepositBuilder,\n} from \"./builders\";\n\n/** Byte allocation for a legacy SPL Token Program (Tokenkeg) account. */\nconst TOKEN_ACCOUNT_SPACE = 165;\n/** Largest exact lamport amount accepted by Solana transaction instructions. */\nconst MAX_U64 = 0xffff_ffff_ffff_ffffn;\n\n/**\n * Identifies the SOL-aware operation represented by an action plan.\n *\n * `wrap` and `unwrapAll` identify explicit native-keypair conversion plans.\n * Ordinary plan kinds do not call those planners or include canonical-account\n * closure.\n */\nexport type SolActionKind =\n | \"split\"\n | \"merge\"\n | \"redeem\"\n | \"nativeWithdraw\"\n | \"wrap\"\n | \"unwrapAll\";\n\n/** Expected changes to the separately authoritative SOL balances. */\nexport interface SolBalanceDelta {\n /** System-account change in lamports, including unsponsored costs. */\n nativeLamports: bigint;\n /** Persistent canonical WSOL ATA change in lamports. */\n canonicalWsolLamports: bigint;\n}\n\n/** Unsigned prepared transaction plus the exact preflight facts authorizing it. */\nexport interface SolActionPlan {\n /** Operation whose balance semantics produced this plan. */\n kind: SolActionKind;\n /** Fee-prepared message that submission must preserve exactly. */\n transaction: Transaction;\n /** Live fee/rent observations and explicit sponsorship capability. */\n costs: SolActionCosts;\n /** Balance totals after action-specific native reserve. */\n availability: SolBalanceAvailability;\n /** Balance projection that does not replace authoritative state. */\n expectedDelta: SolBalanceDelta;\n}\n\n/** Reject non-bigint, non-positive, or non-u64 lamports before any RPC side effect. */\nfunction assertSolActionAmount(amountLamports: bigint, action: string): void {\n if (typeof amountLamports !== \"bigint\") {\n throw SdkError.validation(`${action} amount must be exact bigint lamports`);\n }\n if (amountLamports <= 0n) {\n throw SdkError.validation(`${action} amount must be greater than zero`);\n }\n if (amountLamports > MAX_U64) {\n throw SdkError.validation(`${action} amount must fit u64`);\n }\n}\n\nfunction assertUnsponsoredPlan(sponsored: boolean): void {\n if (sponsored) {\n throw SdkError.validation(\"sponsored SOL action planning is not supported\");\n }\n}\n\n/**\n * Derive the cross-SDK temporary-account seed for native withdrawal.\n *\n * SHA-256 receives the ASCII domain `lightcone:wsol-withdraw:v1`, one zero byte,\n * raw 32-byte blockhash, wallet, and recipient keys, the amount as unsigned\n * eight-byte big-endian lamports, then the one-byte attempt. The first 16 digest\n * bytes become 32 lowercase hexadecimal ASCII characters for Solana's seed limit.\n */\nexport function nativeWithdrawSeed(\n recentBlockhash: string,\n wallet: PublicKey,\n recipient: PublicKey,\n amountLamports: bigint,\n attempt: number\n): string {\n if (!Number.isInteger(attempt) || attempt < 0 || attempt > 255) {\n throw SdkError.validation(\"temporary WSOL seed attempt must fit u8\");\n }\n if (amountLamports < 0n || amountLamports > MAX_U64) {\n throw SdkError.validation(\"withdraw amount must fit u64\");\n }\n const domain = new TextEncoder().encode(\"lightcone:wsol-withdraw:v1\");\n const blockhash = bs58.decode(recentBlockhash);\n if (blockhash.length !== 32) {\n throw SdkError.validation(\"recent blockhash must decode to 32 bytes\");\n }\n const preimage = new Uint8Array(domain.length + 1 + 32 + 32 + 32 + 8 + 1);\n let offset = 0;\n preimage.set(domain, offset);\n offset += domain.length;\n preimage[offset++] = 0;\n preimage.set(blockhash, offset);\n offset += 32;\n preimage.set(wallet.toBytes(), offset);\n offset += 32;\n preimage.set(recipient.toBytes(), offset);\n offset += 32;\n new DataView(preimage.buffer).setBigUint64(offset, amountLamports, false);\n offset += 8;\n preimage[offset] = attempt;\n return Array.from(sha256(preimage).slice(0, 16), (byte) =>\n byte.toString(16).padStart(2, \"0\")\n ).join(\"\");\n}\n\n/**\n * Plans position operations and explicit canonical WSOL conversions.\n *\n * Explicit conversion state flows as follows: complete matching wallet state and\n * native keypair -> live account and cost reads -> signer, account, reserve, and\n * amount guards -> fee-prepared plan -> unchanged prepared submission -> complete\n * snapshot covering the confirmed slot. An uncertain submission returns control\n * to the caller, which refreshes authoritative state before planning again.\n */\nexport class Positions {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n pda(owner: PublicKey, market: PublicKey): PublicKey {\n return getPositionPda(owner, market, this.client.programId)[0];\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async get(userPubkey: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getForMarket(userPubkey: string, marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Get all conditional-token positions for the authenticated user across\n * every market. The wallet is resolved server-side from the auth cookie,\n * so no parameter is required. Same response shape as `get()`.\n *\n * `GET /api/users/positions`\n */\n async positions(): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positions}, but uses the supplied `cookieHeader` for this\n * call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. In a browser context this is equivalent to {@link positions}\n * because the runtime is already attaching the cookie via\n * `credentials: \"include\"`.\n */\n async positionsWithCookies(cookieHeader: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.getWithCookies<PositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Get the authenticated user's positions in a specific market. The wallet\n * is resolved server-side from the auth cookie.\n *\n * `GET /api/users/markets/{market_pubkey}/positions`\n */\n async positionsForMarket(marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positionsForMarket}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store. For\n * server-side cookie forwarding (SSR / server functions).\n */\n async positionsForMarketWithCookies(\n marketPubkey: string,\n cookieHeader: string,\n ): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.getWithCookies<MarketPositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Fetch a complete authenticated SPL and native-SOL balance snapshot.\n *\n * `minContextSlot` lower-bounds the complete balance snapshot. Native SOL is\n * required canonical nine-decimal text and remains outside the SPL map. The\n * generic HTTP layer trusts that shape at runtime; WebSocket frames are decoded\n * strictly, while malformed REST exact values fail later when state scales them.\n */\n async depositTokenBalances(\n minContextSlot?: number\n ): Promise<DepositTokenBalancesSnapshot> {\n const query =\n minContextSlot === undefined\n ? \"\"\n : `?min_context_slot=${encodeURIComponent(minContextSlot)}`;\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances${query}`;\n return this.client.http.get<DepositTokenBalancesSnapshot>(\n url,\n RetryPolicy.Idempotent,\n );\n }\n\n /**\n * Same as {@link depositTokenBalances}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. The complete response has the same separate, exact native-SOL\n * contract as {@link depositTokenBalances}. In a browser this is equivalent to\n * {@link depositTokenBalances} because the runtime is already attaching\n * the cookie via `credentials: \"include\"`.\n */\n async depositTokenBalancesWithCookies(\n minContextSlot: number | undefined,\n cookieHeader: string,\n ): Promise<DepositTokenBalancesSnapshot> {\n const query =\n minContextSlot === undefined\n ? \"\"\n : `?min_context_slot=${encodeURIComponent(minContextSlot)}`;\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances${query}`;\n return this.client.http.getWithCookies<DepositTokenBalancesSnapshot>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Return a fee-prepared plan for an exact canonical WSOL wrap.\n *\n * The authenticated Trading Wallet must have a local native keypair and complete\n * balance state. Live canonical account data must match that state. An existing\n * account must have account lamports equal to its token amount plus native\n * reserve. Otherwise a later `SyncNative` instruction would recalculate the WSOL\n * token amount from account lamports and wrap donated excess beyond\n * `amountLamports`. The returned transaction contains strict Tokenkeg ATA\n * creation only when the account is absent. It then contains the exact transfer\n * and `SyncNative`. Availability uses the ordinary reserve floor.\n *\n * Callers rebuild immediately before prepared submission. They retain the\n * returned balance projection until a complete snapshot covers the confirmed\n * slot. An uncertain outcome requires authoritative refresh before another plan.\n */\n async planWrapSol(\n amountLamports: bigint,\n state: WalletDepositBalancesState\n ): Promise<SolActionPlan> {\n assertSolActionAmount(amountLamports, \"wrap\");\n const wallet = this.conversionPlanningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const account = await rpc.canonicalWsolAccountInfo(canonical, wallet);\n if (!account && breakdown.canonicalWsolLamports > 0n) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n if (\n account &&\n account.tokenAmountLamports !== breakdown.canonicalWsolLamports\n ) {\n throw SdkError.validation(\n \"live canonical WSOL amount does not match wallet balance state\"\n );\n }\n if (\n account &&\n account.accountLamports !==\n account.tokenAmountLamports + account.nativeReserveLamports\n ) {\n throw SdkError.validation(\n \"canonical WSOL account has unsynchronized native lamports\"\n );\n }\n if (\n account &&\n (account.tokenAmountLamports + amountLamports > MAX_U64 ||\n account.accountLamports + amountLamports > MAX_U64)\n ) {\n throw SdkError.validation(\n \"wrap would exceed canonical WSOL token or account u64 range\"\n );\n }\n const createsCanonicalWsolAccount = account === null;\n const upfrontRentLamports = createsCanonicalWsolAccount\n ? await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE)\n : 0n;\n const transaction = this.buildWrapSolTransaction(\n wallet,\n amountLamports,\n createsCanonicalWsolAccount\n );\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount,\n sponsored: false,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const requiredNativeLamports =\n amountLamports + availability.reserveLamports;\n if (requiredNativeLamports > MAX_U64) {\n throw SdkError.validation(\n \"wrap amount and transaction reserve exceed u64 lamports\"\n );\n }\n if (breakdown.nativeLamports < requiredNativeLamports) {\n throw SdkError.validation(\n \"native SOL cannot fund the wrap amount and transaction reserve\"\n );\n }\n return {\n kind: \"wrap\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports:\n -amountLamports - feeLamports - upfrontRentLamports,\n canonicalWsolLamports: amountLamports,\n },\n };\n }\n\n /**\n * Return a fee-prepared plan for closing the complete canonical WSOL account.\n *\n * The Trading Wallet must have a local native keypair. Canonical WSOL in the\n * complete balance state must be positive and equal the live token amount. The\n * returned transaction contains one `CloseAccount` instruction whose authority,\n * destination, and fee payer are that wallet. If submitted successfully, the\n * instruction transfers the complete account balance, including rent and donated\n * lamports. The returned costs contain only the fresh fee. Availability requires\n * native SOL to fund that fee without relying on the later account transfer.\n *\n * Callers rebuild immediately before prepared submission. They retain the\n * returned balance projection until a complete snapshot covers the confirmed\n * slot. Signing, submission, or confirmation uncertainty requires authoritative\n * refresh and does not authorize automatic resubmission.\n */\n async planUnwrapWsolAll(\n state: WalletDepositBalancesState\n ): Promise<SolActionPlan> {\n const wallet = this.conversionPlanningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n if (breakdown.canonicalWsolLamports === 0n) {\n throw SdkError.validation(\n \"unwrap-all requires a positive canonical WSOL balance\"\n );\n }\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const account = await rpc.canonicalWsolAccountInfo(canonical, wallet);\n if (!account) {\n throw SdkError.validation(\n \"canonical WSOL account is required for unwrap-all\"\n );\n }\n if (account.tokenAmountLamports !== breakdown.canonicalWsolLamports) {\n throw SdkError.validation(\n \"live canonical WSOL amount does not match wallet balance state\"\n );\n }\n const transaction = this.buildUnwrapWsolAllTransaction(wallet);\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports: 0n,\n createsCanonicalWsolAccount: false,\n sponsored: false,\n };\n // Unwrap-all removes the persistent account, so its availability validates\n // SolActionCosts and reserves the fee without the ordinary account floor.\n const availability = unwrapAllSolBalanceAvailability(\n breakdown,\n costs\n );\n const projectedNativeLamports =\n breakdown.nativeLamports + account.accountLamports - feeLamports;\n if (projectedNativeLamports > MAX_U64) {\n throw SdkError.validation(\n \"unwrap-all projected native SOL exceeds the transaction u64 range\"\n );\n }\n return {\n kind: \"unwrapAll\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: account.accountLamports - feeLamports,\n canonicalWsolLamports: -breakdown.canonicalWsolLamports,\n },\n };\n }\n\n /**\n * Plan one atomic split that consumes canonical WSOL before wrapping a shortfall.\n * Amounts and live costs are lamports; unavailable account, fee, or rent reads\n * fail closed, and sponsored planning is rejected until a sponsor owns costs.\n */\n async planSolSplit(\n market: Market,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"split\");\n const wallet = this.planningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const canonicalExists = await rpc.canonicalWsolAccountExists(canonical, wallet);\n if (breakdown.canonicalWsolLamports > 0n && !canonicalExists) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n const shortfall =\n amountLamports > breakdown.canonicalWsolLamports\n ? amountLamports - breakdown.canonicalWsolLamports\n : 0n;\n const upfrontRentLamports = canonicalExists\n ? 0n\n : await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE);\n const transaction = new Transaction({ feePayer: wallet });\n if (!canonicalExists) {\n transaction.add(\n createAssociatedTokenAccountIdempotentInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n )\n );\n }\n if (shortfall > 0n) {\n transaction.add(\n SystemProgram.transfer({ fromPubkey: wallet, toPubkey: canonical, lamports: shortfall }),\n createSyncNativeInstruction(canonical, TOKEN_PROGRAM_ID)\n );\n }\n transaction.add(\n buildDepositIx(\n {\n user: wallet,\n market: new PublicKey(market.pubkey),\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n market.numOutcomes,\n this.client.programId\n )\n );\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount: !canonicalExists,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n if (amountLamports > availability.spendableLamports) {\n throw SdkError.validation(\n \"split amount exceeds spendable SOL after transaction reserve\"\n );\n }\n if (shortfall + availability.reserveLamports > breakdown.nativeLamports) {\n throw SdkError.validation(\n \"native SOL cannot fund the wrap shortfall and transaction reserve\"\n );\n }\n const walletCosts = sponsored ? 0n : feeLamports + upfrontRentLamports;\n return {\n kind: \"split\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: -shortfall - walletCosts,\n canonicalWsolLamports: shortfall - amountLamports,\n },\n };\n }\n\n /**\n * Plan a merge that leaves returned WSOL in the persistent canonical ATA.\n * The prepared transaction does not mutate cached state; refresh authority\n * after confirmed submission.\n */\n async planSolMerge(\n market: Market,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"merge\");\n const wallet = this.planningWallet(state);\n const transaction = new Transaction({ feePayer: wallet });\n const { rpc, breakdown, canonicalExists, upfrontRentLamports } =\n await this.receivePlanContext(wallet, state);\n if (!canonicalExists) {\n transaction.add(this.createCanonicalWsolAccount(wallet));\n }\n transaction.add(\n buildMergeIx(\n {\n user: wallet,\n market: new PublicKey(market.pubkey),\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n market.numOutcomes,\n this.client.programId\n )\n );\n return this.finishReceivePlan(\n \"merge\",\n amountLamports,\n transaction,\n rpc,\n breakdown,\n upfrontRentLamports,\n !canonicalExists,\n sponsored\n );\n }\n\n /**\n * Plan a redemption that leaves returned WSOL in the persistent canonical ATA.\n * `amountLamports` is exact collateral scale; `outcomeIndex` is validated\n * against the supplied authoritative `numOutcomes`.\n */\n async planSolRedeem(\n market: PublicKey,\n amountLamports: bigint,\n outcomeIndex: number,\n numOutcomes: number,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"redeem\");\n validateOutcomes(numOutcomes);\n validateOutcomeIndex(outcomeIndex, numOutcomes);\n const wallet = this.planningWallet(state);\n const transaction = new Transaction({ feePayer: wallet });\n const { rpc, breakdown, canonicalExists, upfrontRentLamports } =\n await this.receivePlanContext(wallet, state);\n if (!canonicalExists) {\n transaction.add(this.createCanonicalWsolAccount(wallet));\n }\n transaction.add(\n buildRedeemWinningsIx(\n {\n user: wallet,\n market,\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n outcomeIndex,\n this.client.programId\n )\n );\n return this.finishReceivePlan(\n \"redeem\",\n amountLamports,\n transaction,\n rpc,\n breakdown,\n upfrontRentLamports,\n !canonicalExists,\n sponsored\n );\n }\n\n /**\n * Plan exact native SOL delivery without closing the canonical WSOL ATA.\n *\n * Native funds are preferred. A shortfall uses a bounded seeded Tokenkeg\n * account whose rent returns on close; all account, rent, and fee reads fail\n * closed. At most eight blockhash-scoped candidates bound RPC latency while\n * making accidental exhaustion negligible. The returned transaction already\n * carries its prepared message.\n */\n async planNativeSolWithdrawal(\n recipient: PublicKey,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"withdraw\");\n const wallet = this.planningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const direct = new Transaction({ feePayer: wallet }).add(\n SystemProgram.transfer({ fromPubkey: wallet, toPubkey: recipient, lamports: amountLamports })\n );\n const directFee = await rpc.prepareAndEstimateTransactionFee(direct);\n const directCosts: SolActionCosts = {\n feeLamports: directFee,\n upfrontRentLamports: 0n,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const directAvailability = solBalanceAvailability(breakdown, directCosts);\n if (amountLamports > directAvailability.spendableLamports) {\n throw SdkError.validation(\n \"withdraw amount exceeds spendable SOL after transaction reserve\"\n );\n }\n if (\n breakdown.nativeLamports >=\n amountLamports + directAvailability.reserveLamports\n ) {\n return {\n kind: \"nativeWithdraw\",\n transaction: direct,\n costs: directCosts,\n availability: directAvailability,\n expectedDelta: {\n nativeLamports: -amountLamports - (sponsored ? 0n : directFee),\n canonicalWsolLamports: 0n,\n },\n };\n }\n\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n if (!(await rpc.canonicalWsolAccountExists(canonical, wallet))) {\n throw SdkError.validation(\n \"canonical WSOL is required for this native withdrawal\"\n );\n }\n const temporaryRent = await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE);\n const { blockhash, lastValidBlockHeight } = await rpc.getLatestBlockhash();\n let seed: string | undefined;\n let temporary: PublicKey | undefined;\n // Bound account-existence RPCs; the blockhash and attempt byte make eight collisions remote.\n for (let attempt = 0; attempt <= 7; attempt++) {\n const candidateSeed = nativeWithdrawSeed(\n blockhash,\n wallet,\n recipient,\n amountLamports,\n attempt\n );\n const candidate = await PublicKey.createWithSeed(\n wallet,\n candidateSeed,\n TOKEN_PROGRAM_ID\n );\n if (!(await rpc.accountExists(candidate))) {\n seed = candidateSeed;\n temporary = candidate;\n break;\n }\n }\n if (!seed || !temporary) {\n throw SdkError.validation(\"temporary WSOL seed attempts are exhausted\");\n }\n\n let transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n 1n,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const initialFee = await rpc.estimatePreparedTransactionFee(transaction);\n const initialCosts: SolActionCosts = {\n feeLamports: initialFee,\n upfrontRentLamports: temporaryRent,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const initialAvailability = solBalanceAvailability(breakdown, initialCosts);\n const initialRequired = amountLamports + initialAvailability.reserveLamports;\n if (initialRequired < breakdown.nativeLamports) {\n throw SdkError.validation(\"invalid temporary withdrawal requirement\");\n }\n const initialTransfer = initialRequired - breakdown.nativeLamports;\n transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n initialTransfer,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const finalFee = await rpc.estimatePreparedTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports: finalFee,\n upfrontRentLamports: temporaryRent,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const finalRequired = amountLamports + availability.reserveLamports;\n if (finalRequired < breakdown.nativeLamports) {\n throw SdkError.validation(\"invalid temporary withdrawal requirement\");\n }\n const canonicalTransfer = finalRequired - breakdown.nativeLamports;\n if (canonicalTransfer > breakdown.canonicalWsolLamports) {\n throw SdkError.validation(\n \"canonical WSOL cannot fund the native withdrawal shortfall\"\n );\n }\n if (canonicalTransfer !== initialTransfer) {\n transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n canonicalTransfer,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const stableFee = await rpc.estimatePreparedTransactionFee(transaction);\n if (stableFee !== finalFee) {\n throw SdkError.validation(\n \"transaction fee changed while rebuilding native withdrawal\"\n );\n }\n }\n return {\n kind: \"nativeWithdraw\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports:\n canonicalTransfer - amountLamports - (sponsored ? 0n : finalFee),\n canonicalWsolLamports: -canonicalTransfer,\n },\n };\n }\n\n /** Resolve the authenticated wallet only from fresh matching cached authority. */\n private planningWallet(state: WalletDepositBalancesState): PublicKey {\n // Cached identity is a signing trust boundary: validate expiry, complete\n // state initialization, and wallet equality before constructing a transaction.\n const credentials = this.client.authCredentials;\n if (!credentials) {\n throw SdkError.validation(\"authenticated credentials are required\");\n }\n if (!isAuthenticated(credentials)) {\n throw SdkError.validation(\"authenticated credentials have expired\");\n }\n if (\n state.walletAddress === undefined ||\n state.contextSlot === undefined ||\n state.nativeSolBalance === undefined\n ) {\n throw SdkError.validation(\"wallet balance state is not initialized\");\n }\n if (state.walletAddress !== credentials.wallet_address) {\n throw SdkError.validation(\n \"authenticated wallet does not match wallet balance state\"\n );\n }\n let wallet: PublicKey;\n try {\n wallet = new PublicKey(credentials.wallet_address);\n } catch (error) {\n throw SdkError.validation(\n `authenticated wallet is invalid: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n const strategy = requireSigningStrategy(this.client);\n const signingAddress = signingStrategyWalletAddress(strategy);\n if (!signingAddress) {\n throw SdkError.validation(\"signing strategy wallet identity is required\");\n }\n let signingWallet: PublicKey;\n try {\n signingWallet = new PublicKey(signingAddress);\n } catch (error) {\n throw SdkError.validation(\n `signing strategy wallet is invalid: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n if (!signingWallet.equals(wallet)) {\n throw SdkError.validation(\n \"signing strategy does not control authenticated wallet\"\n );\n }\n return wallet;\n }\n\n /**\n * Return the authenticated Trading Wallet after native-keypair validation.\n *\n * Complete wallet state and identity are validated by `planningWallet`. This\n * additional guard rejects wallet-adapter and Privy strategies before conversion\n * RPC reads. Ordinary planners do not call this method.\n */\n private conversionPlanningWallet(\n state: WalletDepositBalancesState\n ): PublicKey {\n requireNativeSigningStrategy(requireSigningStrategy(this.client));\n return this.planningWallet(state);\n }\n\n /**\n * Return an unsigned wrap transaction with exact instruction ordering.\n *\n * When planning observed no canonical ATA, the first instruction is strict ATA\n * creation. A concurrently created ATA therefore makes execution fail instead of\n * using account state that was absent from the plan. The transfer and `SyncNative`\n * instructions follow. Fee preparation later attaches the live blockhash.\n */\n private buildWrapSolTransaction(\n wallet: PublicKey,\n amountLamports: bigint,\n createsCanonicalWsolAccount: boolean\n ): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const transaction = new Transaction({ feePayer: wallet });\n if (createsCanonicalWsolAccount) {\n transaction.add(\n createAssociatedTokenAccountInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n )\n );\n }\n return transaction.add(\n SystemProgram.transfer({\n fromPubkey: wallet,\n toPubkey: canonical,\n lamports: amountLamports,\n }),\n createSyncNativeInstruction(canonical, TOKEN_PROGRAM_ID)\n );\n }\n\n /**\n * Return an unsigned transaction containing one canonical `CloseAccount`.\n *\n * The Trading Wallet is the fee payer, close authority, and destination. A later\n * successful submission transfers the complete account balance to that wallet.\n */\n private buildUnwrapWsolAllTransaction(wallet: PublicKey): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return new Transaction({ feePayer: wallet }).add(\n createCloseAccountInstruction(\n canonical,\n wallet,\n wallet,\n [],\n TOKEN_PROGRAM_ID\n )\n );\n }\n\n /**\n * Build idempotent creation of the persistent Tokenkeg WSOL ATA.\n * Tokenkeg is Solana's legacy SPL Token Program; canonical native-mint ATA\n * derivation is pinned to it rather than Token-2022 across the protocol.\n */\n private createCanonicalWsolAccount(wallet: PublicKey): TransactionInstruction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return createAssociatedTokenAccountIdempotentInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n );\n }\n\n /** Read canonical-account existence and upfront rent for merge/redeem plans. */\n private async receivePlanContext(\n wallet: PublicKey,\n state: WalletDepositBalancesState\n ): Promise<{\n rpc: Rpc;\n breakdown: SolBalanceBreakdown;\n canonicalExists: boolean;\n upfrontRentLamports: bigint;\n }> {\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const canonicalExists = await rpc.canonicalWsolAccountExists(canonical, wallet);\n const breakdown = state.solBalanceBreakdown();\n if (breakdown.canonicalWsolLamports > 0n && !canonicalExists) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n return {\n rpc,\n breakdown,\n canonicalExists,\n upfrontRentLamports: canonicalExists\n ? 0n\n : await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE),\n };\n }\n\n /** Finish merge/redeem planning with live fee authority and balance deltas. */\n private async finishReceivePlan(\n kind: \"merge\" | \"redeem\",\n amountLamports: bigint,\n transaction: Transaction,\n rpc: Rpc,\n breakdown: SolBalanceBreakdown,\n upfrontRentLamports: bigint,\n createsCanonicalWsolAccount: boolean,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const walletCosts = sponsored ? 0n : feeLamports + upfrontRentLamports;\n return {\n kind,\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: -walletCosts,\n canonicalWsolLamports: amountLamports,\n },\n };\n }\n\n /**\n * Build the sole WSOL-to-native path without closing canonical authority.\n * The temporary Tokenkeg account is initialized, funded, and closed back to\n * the wallet before the exact recipient transfer in the same transaction.\n */\n private buildTemporaryNativeWithdrawal(\n wallet: PublicKey,\n recipient: PublicKey,\n amountLamports: bigint,\n canonicalTransfer: bigint,\n temporaryRent: bigint,\n seed: string,\n temporary: PublicKey\n ): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return new Transaction({ feePayer: wallet }).add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: wallet,\n newAccountPubkey: temporary,\n basePubkey: wallet,\n seed,\n lamports: Number(temporaryRent),\n space: TOKEN_ACCOUNT_SPACE,\n programId: TOKEN_PROGRAM_ID,\n }),\n createInitializeAccount3Instruction(\n temporary,\n NATIVE_MINT,\n wallet,\n TOKEN_PROGRAM_ID\n ),\n createTransferInstruction(\n canonical,\n temporary,\n wallet,\n canonicalTransfer,\n [],\n TOKEN_PROGRAM_ID\n ),\n createCloseAccountInstruction(\n temporary,\n wallet,\n wallet,\n [],\n TOKEN_PROGRAM_ID\n ),\n SystemProgram.transfer({\n fromPubkey: wallet,\n toPubkey: recipient,\n lamports: amountLamports,\n })\n );\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n redeemWinningsIx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): TransactionInstruction {\n return buildRedeemWinningsIx(params, outcomeIndex, this.client.programId);\n }\n\n withdrawConditionalFromPositionIx(\n params: WithdrawConditionalFromPositionParams\n ): TransactionInstruction {\n return buildWithdrawConditionalFromPositionIx(params, this.client.programId);\n }\n\n withdrawFromPositionIx(\n params: WithdrawFromPositionParams\n ): TransactionInstruction {\n return this.withdrawConditionalFromPositionIx(params);\n }\n\n initPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildInitPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n extendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildExtendPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n depositToGlobalIx(params: DepositToGlobalParams): TransactionInstruction {\n return buildDepositToGlobalIx(params, this.client.programId);\n }\n\n depositToGlobalIxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): TransactionInstruction {\n return buildDepositToGlobalIxWithAlt(params, altContext, this.client.programId);\n }\n\n globalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildGlobalToMarketDepositIx(params, numOutcomes, this.client.programId);\n }\n\n withdrawFromGlobalIx(params: WithdrawFromGlobalParams): TransactionInstruction {\n return buildWithdrawFromGlobalIx(params, this.client.programId);\n }\n\n closePositionAltIx(params: ClosePositionAltParams): TransactionInstruction {\n return buildClosePositionAltIx(params, this.client.programId);\n }\n\n closePositionTokenAccountsIx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildClosePositionTokenAccountsIx(\n params,\n numOutcomes,\n this.client.programId\n );\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n redeemWinningsTx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): Transaction {\n const ix = this.redeemWinningsIx(params, outcomeIndex);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawConditionalFromPositionTx(params: WithdrawConditionalFromPositionParams): Transaction {\n const ix = this.withdrawConditionalFromPositionIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromPositionTx(params: WithdrawFromPositionParams): Transaction {\n return this.withdrawConditionalFromPositionTx(params);\n }\n\n initPositionTokensTx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.initPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.payer }).add(ix);\n }\n\n extendPositionTokensTx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.extendPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n depositToGlobalTx(params: DepositToGlobalParams): Transaction {\n const ix = this.depositToGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n depositToGlobalTxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): Transaction {\n const ix = this.depositToGlobalIxWithAlt(params, altContext);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n globalToMarketDepositTx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.globalToMarketDepositIx(params, numOutcomes);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromGlobalTx(params: WithdrawFromGlobalParams): Transaction {\n const ix = this.withdrawFromGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n closePositionAltTx(params: ClosePositionAltParams): Transaction {\n const ix = this.closePositionAltIx(params);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n closePositionTokenAccountsTx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.closePositionTokenAccountsIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n // ── Builder factories ──────────────────────────────────────────────\n\n deposit(): DepositBuilder {\n return new DepositBuilder(this.client, this.client.depositSource);\n }\n\n merge(): MergeBuilder {\n return new MergeBuilder(this.client);\n }\n\n withdraw(): WithdrawBuilder {\n return new WithdrawBuilder(this.client, this.client.depositSource);\n }\n\n redeemWinnings(): RedeemWinningsBuilder {\n return new RedeemWinningsBuilder(this.client);\n }\n\n withdrawFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n withdrawConditionalFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n initPositionTokens(): InitPositionTokensBuilder {\n return new InitPositionTokensBuilder(this.client);\n }\n\n extendPositionTokens(): ExtendPositionTokensBuilder {\n return new ExtendPositionTokensBuilder(this.client);\n }\n\n depositToGlobal(): DepositToGlobalBuilder {\n return new DepositToGlobalBuilder(this.client);\n }\n\n withdrawFromGlobal(): WithdrawFromGlobalBuilder {\n return new WithdrawFromGlobalBuilder(this.client);\n }\n\n globalToMarketDeposit(): GlobalToMarketDepositBuilder {\n return new GlobalToMarketDepositBuilder(this.client);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getOnchain(owner: PublicKey, market: PublicKey): Promise<ProgramPosition | null> {\n const connection = requireConnection(this.client);\n const positionPda = this.pda(owner, market);\n const accountInfo = await connection.getAccountInfo(positionPda);\n if (!accountInfo) {\n return null;\n }\n return deserializeProgramPosition(accountInfo.data as Buffer);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n SystemProgram,\n Transaction,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport {\n createAssociatedTokenAccountInstruction,\n createAssociatedTokenAccountIdempotentInstruction,\n createInitializeAccount3Instruction,\n createTransferInstruction,\n createCloseAccountInstruction,\n createSyncNativeInstruction,\n getAssociatedTokenAddressSync,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID,\n} from \"@solana/spl-token\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport bs58 from \"bs58\";\nimport { isAuthenticated } from \"../../auth\";\nimport type { ClientContext } from \"../../context\";\nimport {\n requireConnection,\n requireSigningStrategy,\n} from \"../../context\";\nimport { SdkError } from \"../../error\";\nimport { RetryPolicy } from \"../../http\";\nimport {\n buildDepositIx,\n buildMergeIx,\n buildRedeemWinningsIx,\n buildWithdrawConditionalFromPositionIx,\n buildInitPositionTokensIx,\n buildExtendPositionTokensIx,\n buildDepositToGlobalIx,\n buildDepositToGlobalIxWithAlt,\n buildGlobalToMarketDepositIx,\n buildWithdrawFromGlobalIx,\n buildClosePositionAltIx,\n buildClosePositionTokenAccountsIx,\n} from \"../../program/instructions\";\nimport { Rpc } from \"../../rpc\";\nimport { getPositionPda } from \"../../program/pda\";\nimport { deserializePosition as deserializeProgramPosition } from \"../../program/accounts\";\nimport { validateOutcomeIndex, validateOutcomes } from \"../../program/utils\";\nimport {\n requireNativeSigningStrategy,\n signingStrategyWalletAddress,\n} from \"../../shared/signing\";\nimport type {\n Position as ProgramPosition,\n RedeemWinningsParams,\n WithdrawConditionalFromPositionParams,\n WithdrawFromPositionParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositToGlobalParams,\n DepositToGlobalAltContext,\n GlobalToMarketDepositParams,\n WithdrawFromGlobalParams,\n ClosePositionAltParams,\n ClosePositionTokenAccountsParams,\n} from \"../../program/types\";\nimport type { Market } from \"../market\";\nimport type { DepositTokenBalancesSnapshot } from \"./index\";\nimport {\n solBalanceAvailability,\n unwrapAllSolBalanceAvailability,\n type SolActionCosts,\n type SolBalanceAvailability,\n type SolBalanceBreakdown,\n type WalletDepositBalancesState,\n} from \"./state\";\nimport type { MarketPositionsResponse, PositionsResponse } from \"./wire\";\nimport {\n DepositBuilder,\n MergeBuilder,\n WithdrawBuilder,\n RedeemWinningsBuilder,\n WithdrawFromPositionBuilder,\n InitPositionTokensBuilder,\n ExtendPositionTokensBuilder,\n DepositToGlobalBuilder,\n WithdrawFromGlobalBuilder,\n GlobalToMarketDepositBuilder,\n} from \"./builders\";\n\n/** Byte allocation for a legacy SPL Token Program (Tokenkeg) account. */\nconst TOKEN_ACCOUNT_SPACE = 165;\n/** Largest exact lamport amount accepted by Solana transaction instructions. */\nconst MAX_U64 = 0xffff_ffff_ffff_ffffn;\n\n/**\n * Identifies the SOL-aware operation represented by an action plan.\n *\n * `wrap` and `unwrapAll` identify explicit native-keypair conversion plans.\n * Ordinary plan kinds do not call those planners or include canonical-account\n * closure.\n */\nexport type SolActionKind =\n | \"split\"\n | \"merge\"\n | \"redeem\"\n | \"nativeWithdraw\"\n | \"wrap\"\n | \"unwrapAll\";\n\n/** Expected changes to the separately authoritative SOL balances. */\nexport interface SolBalanceDelta {\n /** System-account change in lamports, including unsponsored costs. */\n nativeLamports: bigint;\n /** Persistent canonical WSOL ATA change in lamports. */\n canonicalWsolLamports: bigint;\n}\n\n/** Unsigned prepared transaction plus the exact preflight facts authorizing it. */\nexport interface SolActionPlan {\n /** Operation whose balance semantics produced this plan. */\n kind: SolActionKind;\n /** Fee-prepared message that submission must preserve exactly. */\n transaction: Transaction;\n /** Live fee/rent observations and explicit sponsorship capability. */\n costs: SolActionCosts;\n /** Balance totals after action-specific native reserve. */\n availability: SolBalanceAvailability;\n /** Balance projection that does not replace authoritative state. */\n expectedDelta: SolBalanceDelta;\n}\n\n/** Reject non-bigint, non-positive, or non-u64 lamports before any RPC side effect. */\nfunction assertSolActionAmount(amountLamports: bigint, action: string): void {\n if (typeof amountLamports !== \"bigint\") {\n throw SdkError.validation(`${action} amount must be exact bigint lamports`);\n }\n if (amountLamports <= 0n) {\n throw SdkError.validation(`${action} amount must be greater than zero`);\n }\n if (amountLamports > MAX_U64) {\n throw SdkError.validation(`${action} amount must fit u64`);\n }\n}\n\nfunction assertUnsponsoredPlan(sponsored: boolean): void {\n if (sponsored) {\n throw SdkError.validation(\"sponsored SOL action planning is not supported\");\n }\n}\n\n/**\n * Derive the cross-SDK temporary-account seed for native withdrawal.\n *\n * SHA-256 receives the ASCII domain `lightcone:wsol-withdraw:v1`, one zero byte,\n * raw 32-byte blockhash, wallet, and recipient keys, the amount as unsigned\n * eight-byte big-endian lamports, then the one-byte attempt. The first 16 digest\n * bytes become 32 lowercase hexadecimal ASCII characters for Solana's seed limit.\n */\nexport function nativeWithdrawSeed(\n recentBlockhash: string,\n wallet: PublicKey,\n recipient: PublicKey,\n amountLamports: bigint,\n attempt: number\n): string {\n if (!Number.isInteger(attempt) || attempt < 0 || attempt > 255) {\n throw SdkError.validation(\"temporary WSOL seed attempt must fit u8\");\n }\n if (amountLamports < 0n || amountLamports > MAX_U64) {\n throw SdkError.validation(\"withdraw amount must fit u64\");\n }\n const domain = new TextEncoder().encode(\"lightcone:wsol-withdraw:v1\");\n const blockhash = bs58.decode(recentBlockhash);\n if (blockhash.length !== 32) {\n throw SdkError.validation(\"recent blockhash must decode to 32 bytes\");\n }\n const preimage = new Uint8Array(domain.length + 1 + 32 + 32 + 32 + 8 + 1);\n let offset = 0;\n preimage.set(domain, offset);\n offset += domain.length;\n preimage[offset++] = 0;\n preimage.set(blockhash, offset);\n offset += 32;\n preimage.set(wallet.toBytes(), offset);\n offset += 32;\n preimage.set(recipient.toBytes(), offset);\n offset += 32;\n new DataView(preimage.buffer).setBigUint64(offset, amountLamports, false);\n offset += 8;\n preimage[offset] = attempt;\n return Array.from(sha256(preimage).slice(0, 16), (byte) =>\n byte.toString(16).padStart(2, \"0\")\n ).join(\"\");\n}\n\n/**\n * Plans position operations and explicit canonical WSOL conversions.\n *\n * Explicit conversion state flows as follows: complete matching wallet state and\n * native keypair -> live account and cost reads -> signer, account, reserve, and\n * amount guards -> fee-prepared plan -> unchanged prepared submission -> complete\n * snapshot covering the confirmed slot. An uncertain submission returns control\n * to the caller, which refreshes authoritative state before planning again.\n */\nexport class Positions {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n pda(owner: PublicKey, market: PublicKey): PublicKey {\n return getPositionPda(owner, market, this.client.programId)[0];\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async get(userPubkey: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getForMarket(userPubkey: string, marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Get all conditional-token positions for the authenticated user across\n * every market. The wallet is resolved server-side from the auth cookie,\n * so no parameter is required. Same response shape as `get()`.\n *\n * `GET /api/users/positions`\n */\n async positions(): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positions}, but uses the supplied `cookieHeader` for this\n * call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. In a browser context this is equivalent to {@link positions}\n * because the runtime is already attaching the cookie via\n * `credentials: \"include\"`.\n */\n async positionsWithCookies(cookieHeader: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.getWithCookies<PositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Get the authenticated user's positions in a specific market. The wallet\n * is resolved server-side from the auth cookie.\n *\n * `GET /api/users/markets/{market_pubkey}/positions`\n */\n async positionsForMarket(marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positionsForMarket}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store. For\n * server-side cookie forwarding (SSR / server functions).\n */\n async positionsForMarketWithCookies(\n marketPubkey: string,\n cookieHeader: string,\n ): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.getWithCookies<MarketPositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Fetch a complete authenticated SPL and native-SOL balance snapshot.\n *\n * `minContextSlot` lower-bounds the complete balance snapshot. Native SOL is\n * required canonical nine-decimal text and remains outside the SPL map. The\n * generic HTTP layer trusts that shape at runtime; WebSocket frames are decoded\n * strictly, while malformed REST exact values fail later when state scales them.\n */\n async depositTokenBalances(\n minContextSlot?: number\n ): Promise<DepositTokenBalancesSnapshot> {\n const query =\n minContextSlot === undefined\n ? \"\"\n : `?min_context_slot=${encodeURIComponent(minContextSlot)}`;\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances${query}`;\n return this.client.http.get<DepositTokenBalancesSnapshot>(\n url,\n RetryPolicy.Idempotent,\n );\n }\n\n /**\n * Same as {@link depositTokenBalances}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. The complete response has the same separate, exact native-SOL\n * contract as {@link depositTokenBalances}. In a browser this is equivalent to\n * {@link depositTokenBalances} because the runtime is already attaching\n * the cookie via `credentials: \"include\"`.\n */\n async depositTokenBalancesWithCookies(\n minContextSlot: number | undefined,\n cookieHeader: string,\n ): Promise<DepositTokenBalancesSnapshot> {\n const query =\n minContextSlot === undefined\n ? \"\"\n : `?min_context_slot=${encodeURIComponent(minContextSlot)}`;\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances${query}`;\n return this.client.http.getWithCookies<DepositTokenBalancesSnapshot>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Return a fee-prepared plan for an exact canonical WSOL wrap.\n *\n * The authenticated Trading Wallet must have a local native keypair and complete\n * balance state. Live canonical account data must match that state. An existing\n * account must have account lamports equal to its token amount plus native\n * reserve. Otherwise a later `SyncNative` instruction would recalculate the WSOL\n * token amount from account lamports and wrap donated excess beyond\n * `amountLamports`. The returned transaction contains strict Tokenkeg ATA\n * creation only when the account is absent. It then contains the exact transfer\n * and `SyncNative`. Availability uses the ordinary reserve floor.\n *\n * Callers rebuild immediately before prepared submission. They retain the\n * returned balance projection until a complete snapshot covers the confirmed\n * slot. An uncertain outcome requires authoritative refresh before another plan.\n */\n async planWrapSol(\n amountLamports: bigint,\n state: WalletDepositBalancesState\n ): Promise<SolActionPlan> {\n assertSolActionAmount(amountLamports, \"wrap\");\n const wallet = this.conversionPlanningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const account = await rpc.canonicalWsolAccountInfo(canonical, wallet);\n if (!account && breakdown.canonicalWsolLamports > 0n) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n if (\n account &&\n account.tokenAmountLamports !== breakdown.canonicalWsolLamports\n ) {\n throw SdkError.validation(\n \"live canonical WSOL amount does not match wallet balance state\"\n );\n }\n if (\n account &&\n account.accountLamports !==\n account.tokenAmountLamports + account.nativeReserveLamports\n ) {\n throw SdkError.validation(\n \"canonical WSOL account has unsynchronized native lamports\"\n );\n }\n if (\n account &&\n (account.tokenAmountLamports + amountLamports > MAX_U64 ||\n account.accountLamports + amountLamports > MAX_U64)\n ) {\n throw SdkError.validation(\n \"wrap would exceed canonical WSOL token or account u64 range\"\n );\n }\n const createsCanonicalWsolAccount = account === null;\n const upfrontRentLamports = createsCanonicalWsolAccount\n ? await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE)\n : 0n;\n const transaction = this.buildWrapSolTransaction(\n wallet,\n amountLamports,\n createsCanonicalWsolAccount\n );\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount,\n sponsored: false,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const requiredNativeLamports =\n amountLamports + availability.reserveLamports;\n if (requiredNativeLamports > MAX_U64) {\n throw SdkError.validation(\n \"wrap amount and transaction reserve exceed u64 lamports\"\n );\n }\n if (breakdown.nativeLamports < requiredNativeLamports) {\n throw SdkError.validation(\n \"native SOL cannot fund the wrap amount and transaction reserve\"\n );\n }\n return {\n kind: \"wrap\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports:\n -amountLamports - feeLamports - upfrontRentLamports,\n canonicalWsolLamports: amountLamports,\n },\n };\n }\n\n /**\n * Return a fee-prepared plan for closing the complete canonical WSOL account.\n *\n * The Trading Wallet must have a local native keypair. Canonical WSOL in the\n * complete balance state must be positive and equal the live token amount. The\n * returned transaction contains one `CloseAccount` instruction whose authority,\n * destination, and fee payer are that wallet. If submitted successfully, the\n * instruction transfers the complete account balance, including rent and donated\n * lamports. The returned costs contain only the fresh fee. Availability requires\n * native SOL to fund that fee without relying on the later account transfer.\n *\n * Callers rebuild immediately before prepared submission. They retain the\n * returned balance projection until a complete snapshot covers the confirmed\n * slot. Signing, submission, or confirmation uncertainty requires authoritative\n * refresh and does not authorize automatic resubmission.\n */\n async planUnwrapWsolAll(\n state: WalletDepositBalancesState\n ): Promise<SolActionPlan> {\n const wallet = this.conversionPlanningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n if (breakdown.canonicalWsolLamports === 0n) {\n throw SdkError.validation(\n \"unwrap-all requires a positive canonical WSOL balance\"\n );\n }\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const account = await rpc.canonicalWsolAccountInfo(canonical, wallet);\n if (!account) {\n throw SdkError.validation(\n \"canonical WSOL account is required for unwrap-all\"\n );\n }\n if (account.tokenAmountLamports !== breakdown.canonicalWsolLamports) {\n throw SdkError.validation(\n \"live canonical WSOL amount does not match wallet balance state\"\n );\n }\n const transaction = this.buildUnwrapWsolAllTransaction(wallet);\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports: 0n,\n createsCanonicalWsolAccount: false,\n sponsored: false,\n };\n // Unwrap-all removes the persistent account, so its availability validates\n // SolActionCosts and reserves the fee without the ordinary account floor.\n const availability = unwrapAllSolBalanceAvailability(\n breakdown,\n costs\n );\n const projectedNativeLamports =\n breakdown.nativeLamports + account.accountLamports - feeLamports;\n if (projectedNativeLamports > MAX_U64) {\n throw SdkError.validation(\n \"unwrap-all projected native SOL exceeds the transaction u64 range\"\n );\n }\n return {\n kind: \"unwrapAll\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: account.accountLamports - feeLamports,\n canonicalWsolLamports: -breakdown.canonicalWsolLamports,\n },\n };\n }\n\n /**\n * Plan one atomic split that consumes canonical WSOL before wrapping a shortfall.\n * Amounts and live costs are lamports; unavailable account, fee, or rent reads\n * fail closed, and sponsored planning is rejected until a sponsor owns costs.\n */\n async planSolSplit(\n market: Market,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"split\");\n const wallet = this.planningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const canonicalExists = await rpc.canonicalWsolAccountExists(canonical, wallet);\n if (breakdown.canonicalWsolLamports > 0n && !canonicalExists) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n const shortfall =\n amountLamports > breakdown.canonicalWsolLamports\n ? amountLamports - breakdown.canonicalWsolLamports\n : 0n;\n const upfrontRentLamports = canonicalExists\n ? 0n\n : await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE);\n const transaction = new Transaction({ feePayer: wallet });\n if (!canonicalExists) {\n transaction.add(\n createAssociatedTokenAccountIdempotentInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n )\n );\n }\n if (shortfall > 0n) {\n transaction.add(\n SystemProgram.transfer({ fromPubkey: wallet, toPubkey: canonical, lamports: shortfall }),\n createSyncNativeInstruction(canonical, TOKEN_PROGRAM_ID)\n );\n }\n transaction.add(\n buildDepositIx(\n {\n user: wallet,\n market: new PublicKey(market.pubkey),\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n market.numOutcomes,\n this.client.programId\n )\n );\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount: !canonicalExists,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n if (amountLamports > availability.spendableLamports) {\n throw SdkError.validation(\n \"split amount exceeds spendable SOL after transaction reserve\"\n );\n }\n if (shortfall + availability.reserveLamports > breakdown.nativeLamports) {\n throw SdkError.validation(\n \"native SOL cannot fund the wrap shortfall and transaction reserve\"\n );\n }\n const walletCosts = sponsored ? 0n : feeLamports + upfrontRentLamports;\n return {\n kind: \"split\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: -shortfall - walletCosts,\n canonicalWsolLamports: shortfall - amountLamports,\n },\n };\n }\n\n /**\n * Plan a merge that leaves returned WSOL in the persistent canonical ATA.\n * The prepared transaction does not mutate cached state; refresh authority\n * after confirmed submission.\n */\n async planSolMerge(\n market: Market,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"merge\");\n const wallet = this.planningWallet(state);\n const transaction = new Transaction({ feePayer: wallet });\n const { rpc, breakdown, canonicalExists, upfrontRentLamports } =\n await this.receivePlanContext(wallet, state);\n if (!canonicalExists) {\n transaction.add(this.createCanonicalWsolAccount(wallet));\n }\n transaction.add(\n buildMergeIx(\n {\n user: wallet,\n market: new PublicKey(market.pubkey),\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n market.numOutcomes,\n this.client.programId\n )\n );\n return this.finishReceivePlan(\n \"merge\",\n amountLamports,\n transaction,\n rpc,\n breakdown,\n upfrontRentLamports,\n !canonicalExists,\n sponsored\n );\n }\n\n /**\n * Plan a redemption that leaves returned WSOL in the persistent canonical ATA.\n * `amountLamports` is exact collateral scale; `outcomeIndex` is validated\n * against the supplied authoritative `numOutcomes`.\n */\n async planSolRedeem(\n market: PublicKey,\n amountLamports: bigint,\n outcomeIndex: number,\n numOutcomes: number,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"redeem\");\n validateOutcomes(numOutcomes);\n validateOutcomeIndex(outcomeIndex, numOutcomes);\n const wallet = this.planningWallet(state);\n const transaction = new Transaction({ feePayer: wallet });\n const { rpc, breakdown, canonicalExists, upfrontRentLamports } =\n await this.receivePlanContext(wallet, state);\n if (!canonicalExists) {\n transaction.add(this.createCanonicalWsolAccount(wallet));\n }\n transaction.add(\n buildRedeemWinningsIx(\n {\n user: wallet,\n market,\n depositMint: NATIVE_MINT,\n amount: amountLamports,\n },\n outcomeIndex,\n this.client.programId\n )\n );\n return this.finishReceivePlan(\n \"redeem\",\n amountLamports,\n transaction,\n rpc,\n breakdown,\n upfrontRentLamports,\n !canonicalExists,\n sponsored\n );\n }\n\n /**\n * Plan exact native SOL delivery without closing the canonical WSOL ATA.\n *\n * Native funds are preferred. A shortfall uses a bounded seeded Tokenkeg\n * account whose rent returns on close; all account, rent, and fee reads fail\n * closed. At most eight blockhash-scoped candidates bound RPC latency while\n * making accidental exhaustion negligible. The returned transaction already\n * carries its prepared message.\n */\n async planNativeSolWithdrawal(\n recipient: PublicKey,\n amountLamports: bigint,\n state: WalletDepositBalancesState,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n assertUnsponsoredPlan(sponsored);\n assertSolActionAmount(amountLamports, \"withdraw\");\n const wallet = this.planningWallet(state);\n const breakdown = state.solBalanceBreakdown();\n const rpc = new Rpc(this.client);\n const direct = new Transaction({ feePayer: wallet }).add(\n SystemProgram.transfer({ fromPubkey: wallet, toPubkey: recipient, lamports: amountLamports })\n );\n const directFee = await rpc.prepareAndEstimateTransactionFee(direct);\n const directCosts: SolActionCosts = {\n feeLamports: directFee,\n upfrontRentLamports: 0n,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const directAvailability = solBalanceAvailability(breakdown, directCosts);\n if (amountLamports > directAvailability.spendableLamports) {\n throw SdkError.validation(\n \"withdraw amount exceeds spendable SOL after transaction reserve\"\n );\n }\n if (\n breakdown.nativeLamports >=\n amountLamports + directAvailability.reserveLamports\n ) {\n return {\n kind: \"nativeWithdraw\",\n transaction: direct,\n costs: directCosts,\n availability: directAvailability,\n expectedDelta: {\n nativeLamports: -amountLamports - (sponsored ? 0n : directFee),\n canonicalWsolLamports: 0n,\n },\n };\n }\n\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n if (!(await rpc.canonicalWsolAccountExists(canonical, wallet))) {\n throw SdkError.validation(\n \"canonical WSOL is required for this native withdrawal\"\n );\n }\n const temporaryRent = await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE);\n const { blockhash, lastValidBlockHeight } = await rpc.getLatestBlockhash();\n let seed: string | undefined;\n let temporary: PublicKey | undefined;\n // Bound account-existence RPCs; the blockhash and attempt byte make eight collisions remote.\n for (let attempt = 0; attempt <= 7; attempt++) {\n const candidateSeed = nativeWithdrawSeed(\n blockhash,\n wallet,\n recipient,\n amountLamports,\n attempt\n );\n const candidate = await PublicKey.createWithSeed(\n wallet,\n candidateSeed,\n TOKEN_PROGRAM_ID\n );\n if (!(await rpc.accountExists(candidate))) {\n seed = candidateSeed;\n temporary = candidate;\n break;\n }\n }\n if (!seed || !temporary) {\n throw SdkError.validation(\"temporary WSOL seed attempts are exhausted\");\n }\n\n let transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n 1n,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const initialFee = await rpc.estimatePreparedTransactionFee(transaction);\n const initialCosts: SolActionCosts = {\n feeLamports: initialFee,\n upfrontRentLamports: temporaryRent,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const initialAvailability = solBalanceAvailability(breakdown, initialCosts);\n const initialRequired = amountLamports + initialAvailability.reserveLamports;\n if (initialRequired < breakdown.nativeLamports) {\n throw SdkError.validation(\"invalid temporary withdrawal requirement\");\n }\n const initialTransfer = initialRequired - breakdown.nativeLamports;\n transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n initialTransfer,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const finalFee = await rpc.estimatePreparedTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports: finalFee,\n upfrontRentLamports: temporaryRent,\n createsCanonicalWsolAccount: false,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const finalRequired = amountLamports + availability.reserveLamports;\n if (finalRequired < breakdown.nativeLamports) {\n throw SdkError.validation(\"invalid temporary withdrawal requirement\");\n }\n const canonicalTransfer = finalRequired - breakdown.nativeLamports;\n if (canonicalTransfer > breakdown.canonicalWsolLamports) {\n throw SdkError.validation(\n \"canonical WSOL cannot fund the native withdrawal shortfall\"\n );\n }\n if (canonicalTransfer !== initialTransfer) {\n transaction = this.buildTemporaryNativeWithdrawal(\n wallet,\n recipient,\n amountLamports,\n canonicalTransfer,\n temporaryRent,\n seed,\n temporary\n );\n transaction.recentBlockhash = blockhash;\n transaction.lastValidBlockHeight = lastValidBlockHeight;\n const stableFee = await rpc.estimatePreparedTransactionFee(transaction);\n if (stableFee !== finalFee) {\n throw SdkError.validation(\n \"transaction fee changed while rebuilding native withdrawal\"\n );\n }\n }\n return {\n kind: \"nativeWithdraw\",\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports:\n canonicalTransfer - amountLamports - (sponsored ? 0n : finalFee),\n canonicalWsolLamports: -canonicalTransfer,\n },\n };\n }\n\n /**\n * Resolve an unexpired wallet from matching initialized balance state.\n * This requires the configured signing strategy to control the authenticated\n * wallet. It does not prove balance freshness.\n */\n private planningWallet(state: WalletDepositBalancesState): PublicKey {\n // Cached identity is a signing trust boundary: validate expiry, complete\n // state initialization, and wallet equality before constructing a transaction.\n const credentials = this.client.authCredentials;\n if (!credentials) {\n throw SdkError.validation(\"authenticated credentials are required\");\n }\n if (!isAuthenticated(credentials)) {\n throw SdkError.validation(\"authenticated credentials have expired\");\n }\n if (\n state.walletAddress === undefined ||\n state.contextSlot === undefined ||\n state.nativeSolBalance === undefined\n ) {\n throw SdkError.validation(\"wallet balance state is not initialized\");\n }\n if (state.walletAddress !== credentials.wallet_address) {\n throw SdkError.validation(\n \"authenticated wallet does not match wallet balance state\"\n );\n }\n let wallet: PublicKey;\n try {\n wallet = new PublicKey(credentials.wallet_address);\n } catch (error) {\n throw SdkError.validation(\n `authenticated wallet is invalid: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n const strategy = requireSigningStrategy(this.client);\n const signingAddress = signingStrategyWalletAddress(strategy);\n if (!signingAddress) {\n throw SdkError.validation(\"signing strategy wallet identity is required\");\n }\n let signingWallet: PublicKey;\n try {\n signingWallet = new PublicKey(signingAddress);\n } catch (error) {\n throw SdkError.validation(\n `signing strategy wallet is invalid: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n if (!signingWallet.equals(wallet)) {\n throw SdkError.validation(\n \"signing strategy does not control authenticated wallet\"\n );\n }\n return wallet;\n }\n\n /**\n * Return the authenticated Trading Wallet after native-keypair validation.\n *\n * Complete wallet state and identity are validated by `planningWallet`. This\n * additional guard rejects wallet-adapter and Privy strategies before conversion\n * RPC reads. Ordinary planners do not call this method.\n */\n private conversionPlanningWallet(\n state: WalletDepositBalancesState\n ): PublicKey {\n requireNativeSigningStrategy(requireSigningStrategy(this.client));\n return this.planningWallet(state);\n }\n\n /**\n * Return an unsigned wrap transaction with exact instruction ordering.\n *\n * When planning observed no canonical ATA, the first instruction is strict ATA\n * creation. A concurrently created ATA therefore makes execution fail instead of\n * using account state that was absent from the plan. The transfer and `SyncNative`\n * instructions follow. Fee preparation later attaches the live blockhash.\n */\n private buildWrapSolTransaction(\n wallet: PublicKey,\n amountLamports: bigint,\n createsCanonicalWsolAccount: boolean\n ): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const transaction = new Transaction({ feePayer: wallet });\n if (createsCanonicalWsolAccount) {\n transaction.add(\n createAssociatedTokenAccountInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n )\n );\n }\n return transaction.add(\n SystemProgram.transfer({\n fromPubkey: wallet,\n toPubkey: canonical,\n lamports: amountLamports,\n }),\n createSyncNativeInstruction(canonical, TOKEN_PROGRAM_ID)\n );\n }\n\n /**\n * Return an unsigned transaction containing one canonical `CloseAccount`.\n *\n * The Trading Wallet is the fee payer, close authority, and destination. A later\n * successful submission transfers the complete account balance to that wallet.\n */\n private buildUnwrapWsolAllTransaction(wallet: PublicKey): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return new Transaction({ feePayer: wallet }).add(\n createCloseAccountInstruction(\n canonical,\n wallet,\n wallet,\n [],\n TOKEN_PROGRAM_ID\n )\n );\n }\n\n /**\n * Build idempotent creation of the persistent Tokenkeg WSOL ATA.\n * Tokenkeg is Solana's legacy SPL Token Program; canonical native-mint ATA\n * derivation is pinned to it rather than Token-2022 across the protocol.\n */\n private createCanonicalWsolAccount(wallet: PublicKey): TransactionInstruction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return createAssociatedTokenAccountIdempotentInstruction(\n wallet,\n canonical,\n wallet,\n NATIVE_MINT,\n TOKEN_PROGRAM_ID\n );\n }\n\n /** Read canonical-account existence and upfront rent for merge/redeem plans. */\n private async receivePlanContext(\n wallet: PublicKey,\n state: WalletDepositBalancesState\n ): Promise<{\n rpc: Rpc;\n breakdown: SolBalanceBreakdown;\n canonicalExists: boolean;\n upfrontRentLamports: bigint;\n }> {\n const rpc = new Rpc(this.client);\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n const canonicalExists = await rpc.canonicalWsolAccountExists(canonical, wallet);\n const breakdown = state.solBalanceBreakdown();\n if (breakdown.canonicalWsolLamports > 0n && !canonicalExists) {\n throw SdkError.validation(\n \"canonical WSOL balance is positive but its account is unavailable\"\n );\n }\n return {\n rpc,\n breakdown,\n canonicalExists,\n upfrontRentLamports: canonicalExists\n ? 0n\n : await rpc.minimumBalanceForRentExemption(TOKEN_ACCOUNT_SPACE),\n };\n }\n\n /** Finish merge/redeem planning with live fee authority and balance deltas. */\n private async finishReceivePlan(\n kind: \"merge\" | \"redeem\",\n amountLamports: bigint,\n transaction: Transaction,\n rpc: Rpc,\n breakdown: SolBalanceBreakdown,\n upfrontRentLamports: bigint,\n createsCanonicalWsolAccount: boolean,\n sponsored: boolean\n ): Promise<SolActionPlan> {\n const feeLamports = await rpc.prepareAndEstimateTransactionFee(transaction);\n const costs: SolActionCosts = {\n feeLamports,\n upfrontRentLamports,\n createsCanonicalWsolAccount,\n sponsored,\n };\n const availability = solBalanceAvailability(breakdown, costs);\n const walletCosts = sponsored ? 0n : feeLamports + upfrontRentLamports;\n return {\n kind,\n transaction,\n costs,\n availability,\n expectedDelta: {\n nativeLamports: -walletCosts,\n canonicalWsolLamports: amountLamports,\n },\n };\n }\n\n /**\n * Build the sole WSOL-to-native path without closing canonical authority.\n * The temporary Tokenkeg account is initialized, funded, and closed back to\n * the wallet before the exact recipient transfer in the same transaction.\n */\n private buildTemporaryNativeWithdrawal(\n wallet: PublicKey,\n recipient: PublicKey,\n amountLamports: bigint,\n canonicalTransfer: bigint,\n temporaryRent: bigint,\n seed: string,\n temporary: PublicKey\n ): Transaction {\n const canonical = getAssociatedTokenAddressSync(NATIVE_MINT, wallet);\n return new Transaction({ feePayer: wallet }).add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: wallet,\n newAccountPubkey: temporary,\n basePubkey: wallet,\n seed,\n lamports: Number(temporaryRent),\n space: TOKEN_ACCOUNT_SPACE,\n programId: TOKEN_PROGRAM_ID,\n }),\n createInitializeAccount3Instruction(\n temporary,\n NATIVE_MINT,\n wallet,\n TOKEN_PROGRAM_ID\n ),\n createTransferInstruction(\n canonical,\n temporary,\n wallet,\n canonicalTransfer,\n [],\n TOKEN_PROGRAM_ID\n ),\n createCloseAccountInstruction(\n temporary,\n wallet,\n wallet,\n [],\n TOKEN_PROGRAM_ID\n ),\n SystemProgram.transfer({\n fromPubkey: wallet,\n toPubkey: recipient,\n lamports: amountLamports,\n })\n );\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n redeemWinningsIx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): TransactionInstruction {\n return buildRedeemWinningsIx(params, outcomeIndex, this.client.programId);\n }\n\n withdrawConditionalFromPositionIx(\n params: WithdrawConditionalFromPositionParams\n ): TransactionInstruction {\n return buildWithdrawConditionalFromPositionIx(params, this.client.programId);\n }\n\n withdrawFromPositionIx(\n params: WithdrawFromPositionParams\n ): TransactionInstruction {\n return this.withdrawConditionalFromPositionIx(params);\n }\n\n initPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildInitPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n extendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildExtendPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n depositToGlobalIx(params: DepositToGlobalParams): TransactionInstruction {\n return buildDepositToGlobalIx(params, this.client.programId);\n }\n\n depositToGlobalIxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): TransactionInstruction {\n return buildDepositToGlobalIxWithAlt(params, altContext, this.client.programId);\n }\n\n globalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildGlobalToMarketDepositIx(params, numOutcomes, this.client.programId);\n }\n\n withdrawFromGlobalIx(params: WithdrawFromGlobalParams): TransactionInstruction {\n return buildWithdrawFromGlobalIx(params, this.client.programId);\n }\n\n closePositionAltIx(params: ClosePositionAltParams): TransactionInstruction {\n return buildClosePositionAltIx(params, this.client.programId);\n }\n\n closePositionTokenAccountsIx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildClosePositionTokenAccountsIx(\n params,\n numOutcomes,\n this.client.programId\n );\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n redeemWinningsTx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): Transaction {\n const ix = this.redeemWinningsIx(params, outcomeIndex);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawConditionalFromPositionTx(params: WithdrawConditionalFromPositionParams): Transaction {\n const ix = this.withdrawConditionalFromPositionIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromPositionTx(params: WithdrawFromPositionParams): Transaction {\n return this.withdrawConditionalFromPositionTx(params);\n }\n\n initPositionTokensTx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.initPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.payer }).add(ix);\n }\n\n extendPositionTokensTx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.extendPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n depositToGlobalTx(params: DepositToGlobalParams): Transaction {\n const ix = this.depositToGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n depositToGlobalTxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): Transaction {\n const ix = this.depositToGlobalIxWithAlt(params, altContext);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n globalToMarketDepositTx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.globalToMarketDepositIx(params, numOutcomes);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromGlobalTx(params: WithdrawFromGlobalParams): Transaction {\n const ix = this.withdrawFromGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n closePositionAltTx(params: ClosePositionAltParams): Transaction {\n const ix = this.closePositionAltIx(params);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n closePositionTokenAccountsTx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.closePositionTokenAccountsIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n // ── Builder factories ──────────────────────────────────────────────\n\n deposit(): DepositBuilder {\n return new DepositBuilder(this.client, this.client.depositSource);\n }\n\n merge(): MergeBuilder {\n return new MergeBuilder(this.client);\n }\n\n withdraw(): WithdrawBuilder {\n return new WithdrawBuilder(this.client, this.client.depositSource);\n }\n\n redeemWinnings(): RedeemWinningsBuilder {\n return new RedeemWinningsBuilder(this.client);\n }\n\n withdrawFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n withdrawConditionalFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n initPositionTokens(): InitPositionTokensBuilder {\n return new InitPositionTokensBuilder(this.client);\n }\n\n extendPositionTokens(): ExtendPositionTokensBuilder {\n return new ExtendPositionTokensBuilder(this.client);\n }\n\n depositToGlobal(): DepositToGlobalBuilder {\n return new DepositToGlobalBuilder(this.client);\n }\n\n withdrawFromGlobal(): WithdrawFromGlobalBuilder {\n return new WithdrawFromGlobalBuilder(this.client);\n }\n\n globalToMarketDeposit(): GlobalToMarketDepositBuilder {\n return new GlobalToMarketDepositBuilder(this.client);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getOnchain(owner: PublicKey, market: PublicKey): Promise<ProgramPosition | null> {\n const connection = requireConnection(this.client);\n const positionPda = this.pda(owner, market);\n const accountInfo = await connection.getAccountInfo(positionPda);\n if (!accountInfo) {\n return null;\n }\n return deserializeProgramPosition(accountInfo.data as Buffer);\n }\n}\n"]}
|