@candledottv/agent-sdk 0.6.10 → 0.6.12

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/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { AcceptedJob, AgentDirectoryEntry, AgentDirectoryPage, AgentDirectorySort, AgentFeeAmount, AgentFeeClaimOptions, AgentFeeClaimResult, AgentFeeIncome, AgentFeeReason, AgentFeesOptions, AgentFeesPage, AgentFeeToken, AgentHoldingOrigin, AgentLeaderboardEntry, AgentPost, AgentPostsPage, AgentPostToken, AgentPostTokenRef, AgentProfile, AgentPublicHolding, AgentPublicRecord, AgentRecordTotals, AgentRewardClaim, AgentTierInfo, AtomicBundleLegRole, AtomicBundleLegSigner, AtomicBundleResponseLeg, AtomicDryRunFill, AtomicDryRunResult, AtomicFirstBuyRequest, AtomicLaunchPayer, BaseAssetKey, BuildAtomicLaunchRequest, BuildAtomicLaunchResult, BuildSelfLaunchAtomicResult, BuildSelfLaunchHoodResult, BuildSelfLaunchRequest, BuildSelfLaunchResult, BuildSelfLaunchSolanaResult, BuildTradeBuiltResult, BuildTradeRequest, BuildTradeResult, CandleClientOptions, CandleFees, CandlePerps, CandlePerpsWithdraw, CandleWallets, Chain, CloseEmptyAccountsBatch, CloseEmptyAccountsFailure, CloseEmptyAccountsJob, CloseEmptyAccountsJobOptions, CloseEmptyAccountsPreview, CloseEmptyAccountsRequest, CloseEmptyAccountsResult, CloseEmptyAccountsUnresolved, ConfirmSelfLaunchRequest, ConfirmSelfLaunchResult, ConfirmTradeRequest, ConfirmTradeResult, CreateAgentPostRequest, CurveTerms, DryRunResult, EmptyTokenAccount, EmptyTokenAccountSkipReason, EvmSignTransactionParams, ExecutedTradeResult, FeedBucket, FeedResult, FeedToken, HoodTradeArtifacts, ImportWalletResult, LaunchAtomicFirstBuyRequest, LaunchAtomicPayer, LaunchAtomicRequest, LaunchAtomicResult, LaunchCurve, LaunchCurveTerms, LaunchGraduationPreview, LaunchJob, LaunchPreset, LaunchPreviewFeeLine, LaunchPreviewTerms, LaunchRequest, LaunchResult, LaunchTier, LinkedSwapRequest, LinkedSwapResult, LinkedWalletRow, ListAgentPostsOptions, ListAgentsOptions, ListWalletsResult, MarketState, MigrationStatus, OwnAgentProfile, OwnAgentProfilePatch, PerpsAccountStatus, PerpsActionResult, PerpsBuild, PerpsCancelParams, PerpsCloseParams, PerpsConfig, PerpsDepositBuild, PerpsDepositParams, PerpsDepositResult, PerpsLeverageParams, PerpsMarginParams, PerpsModifyParams, PerpsOpenParams, PerpsOrderRecord, PerpsOrders, PerpsPositions, PerpsReduceOnlyResult, PerpsReplay, PerpsReplayResult, PerpsRiskSettingsResult, PerpsRiskWrite, PerpsRiskWriteResult, PerpsScheduleCancelParams, PerpsSetupResult, PerpsSide, PerpsStreamFrame, PerpsStreamSocketOptions, PerpsStreamWebSocket, PerpsWalletRef, PerpsWithdrawBuildRequest, PerpsWithdrawParams, PerpsWithdrawResult, PerpsWithdrawStatus, PoolFee, PortfolioHoodSection, PortfolioHoodTeeWallet, PortfolioHoodToken, PortfolioHoodWallet, PortfolioPrice, PortfolioResult, PortfolioSolanaTeeWallet, PortfolioSolanaToken, PortfolioSolanaWallet, PortfolioUnpricedReason, PresetsPayload, PreviewCloseEmptyAccountsRequest, ProfileBoardPnl, ProfileChainPnl, ProfileClosedPosition, ProfileClosedSummary, ProfileOpenPosition, ProfilePnlEngineFields, ProfilePnlResult, ProfilePnlSummaryRow, ProfileTradeRow, ProfileTradesOptions, ProfileTradesResult, ProfileWalletPnl, ProfileWalletRow, ProfileWalletScope, ProfileWalletsResult, QuoteBreakdown, QuotePair, QuotePairsPayload, QuoteResult, ResolvedLaunch, SelfBalancesOptions, SelfBalancesResult, SelfLaunchDryRunResult, SelfLaunchRequest, SelfWallet, SelfWalletBalance, SignLinkedTransactionParams, SignLinkedTransactionResult, SkippedEmptyTokenAccount, SolanaTradeArtifacts, SpendLimit, SpendLimitsResult, SubmitAtomicLaunchRequest, SubmitAtomicLaunchResult, SubmitTradeRequest, SwapRequest, SwapResult, SwapSettlement, SwapSettlementLeg, SwapSettlementState, TokenCard, TokenCardFact, TokenCardFacts, TokenCardSameName, TokenCardSameNameCandidate, TokenEvent, TokenEventGroup, TokenEventGroupVisibility, TokenEventKind, TokenEventsPage, TokenEventWallet, TradeFee, TradeJob, TradePayer, TradeRace, TradeRequest, TradeRoute, TradeRouteHop, TradeSide, VerifyResult, WalletKind, } from "./client";
1
+ export type { AcceptedJob, AgentDirectoryEntry, AgentDirectoryPage, AgentDirectorySort, AgentFeeAmount, AgentFeeClaimOptions, AgentFeeClaimResult, AgentFeeIncome, AgentFeeReason, AgentFeesOptions, AgentFeesPage, AgentFeeToken, AgentHoldingOrigin, AgentLeaderboardEntry, AgentPerpPosition, AgentPosition, AgentPositions, AgentPositionsKind, AgentPost, AgentPostsPage, AgentPostToken, AgentPostTokenRef, AgentProfile, AgentPublicHolding, AgentPublicRecord, AgentRecordTotals, AgentRewardClaim, AgentSpotPosition, AgentTierInfo, AtomicBundleLegRole, AtomicBundleLegSigner, AtomicBundleResponseLeg, AtomicDryRunFill, AtomicDryRunResult, AtomicFirstBuyRequest, AtomicLaunchPayer, BaseAssetKey, BuildAtomicLaunchRequest, BuildAtomicLaunchResult, BuildSelfLaunchAtomicResult, BuildSelfLaunchHoodResult, BuildSelfLaunchRequest, BuildSelfLaunchResult, BuildSelfLaunchSolanaResult, BuildTradeBuiltResult, BuildTradeRequest, BuildTradeResult, CandleClientOptions, CandleFees, CandlePerps, CandlePerpsWithdraw, CandleWallets, Chain, CloseEmptyAccountsBatch, CloseEmptyAccountsFailure, CloseEmptyAccountsJob, CloseEmptyAccountsJobOptions, CloseEmptyAccountsPreview, CloseEmptyAccountsRequest, CloseEmptyAccountsResult, CloseEmptyAccountsUnresolved, ConfirmSelfLaunchRequest, ConfirmSelfLaunchResult, ConfirmTradeRequest, ConfirmTradeResult, CreateAgentPostRequest, CurveTerms, DryRunResult, EditTokenMetadataRequest, EmptyTokenAccount, EmptyTokenAccountSkipReason, EvmSignTransactionParams, ExecutedTradeResult, FeedBucket, FeedResult, FeedToken, GetAgentPositionsOptions, HoodTradeArtifacts, ImportWalletResult, LaunchAtomicFirstBuyRequest, LaunchAtomicPayer, LaunchAtomicRequest, LaunchAtomicResult, LaunchCurve, LaunchCurveTerms, LaunchGraduationPreview, LaunchJob, LaunchPreset, LaunchPreviewFeeLine, LaunchPreviewTerms, LaunchRequest, LaunchResult, LaunchTier, LinkedSwapRequest, LinkedSwapResult, LinkedWalletRow, ListAgentPostsOptions, ListAgentsOptions, ListWalletsResult, MarketState, MigrationStatus, OwnAgentProfile, OwnAgentProfilePatch, PerpsAccountStatus, PerpsActionResult, PerpsBuild, PerpsCancelParams, PerpsCloseParams, PerpsConfig, PerpsDepositBuild, PerpsDepositParams, PerpsDepositResult, PerpsLeverageParams, PerpsMarginParams, PerpsModifyParams, PerpsOpenParams, PerpsOrderRecord, PerpsOrders, PerpsPositions, PerpsReduceOnlyResult, PerpsReplay, PerpsReplayResult, PerpsRiskSettingsResult, PerpsRiskWrite, PerpsRiskWriteResult, PerpsScheduleCancelParams, PerpsSetupResult, PerpsSide, PerpsStreamFrame, PerpsStreamSocketOptions, PerpsStreamWebSocket, PerpsWalletRef, PerpsWithdrawBuildRequest, PerpsWithdrawParams, PerpsWithdrawResult, PerpsWithdrawStatus, PoolFee, PortfolioHoodSection, PortfolioHoodTeeWallet, PortfolioHoodToken, PortfolioHoodWallet, PortfolioPrice, PortfolioResult, PortfolioSolanaTeeWallet, PortfolioSolanaToken, PortfolioSolanaWallet, PortfolioUnpricedReason, PresetsPayload, PreviewCloseEmptyAccountsRequest, ProfileBoardPnl, ProfileChainPnl, ProfileClosedPosition, ProfileClosedSummary, ProfileOpenPosition, ProfilePnlEngineFields, ProfilePnlResult, ProfilePnlSummaryRow, ProfileTradeRow, ProfileTradesOptions, ProfileTradesResult, ProfileWalletPnl, ProfileWalletRow, ProfileWalletScope, ProfileWalletsResult, QuoteBreakdown, QuotePair, QuotePairsPayload, QuoteResult, ResolvedLaunch, SelfBalancesOptions, SelfBalancesResult, SelfLaunchDryRunResult, SelfLaunchRequest, SelfWallet, SelfWalletBalance, SignLinkedTransactionParams, SignLinkedTransactionResult, SkippedEmptyTokenAccount, SolanaTradeArtifacts, SpendLimit, SpendLimitsResult, SubmitAtomicLaunchRequest, SubmitAtomicLaunchResult, SubmitTradeRequest, SwapRequest, SwapResult, SwapSettlement, SwapSettlementLeg, SwapSettlementState, TokenCard, TokenCardFact, TokenCardFacts, TokenCardSameName, TokenCardSameNameCandidate, TokenEvent, TokenEventGroup, TokenEventGroupVisibility, TokenEventKind, TokenEventsPage, TokenEventWallet, TokenMetadataEditResult, TokenMetadataHistory, TokenMetadataHistoryItem, TokenMetadataSocialKey, TokenMetadataSocials, TradeFee, TradeJob, TradePayer, TradeRace, TradeRequest, TradeRoute, TradeRouteHop, TradeSide, VerifyResult, WalletKind, } from "./client";
2
2
  export { CandleClient, CrossOriginRedirectError, perpsDepositProblem } from "./client";
3
3
  export type { BridgeErrorCode, CandleErrorPayload, CandleRoutingDetail, OperationIds, SelfLaunchFeeOutcome, SelfLaunchOutcomeErrorArgs, SolanaRpcErrorData, } from "./errors";
4
4
  export { BRIDGE_ERROR_CODES, CandleApiError, CandleOperationError, isSolanaRpcErrorData, JsonRpcError, operationIds, SelfLaunchOutcomeError, type SignedTradeLeg, TradeLandedFeeLegError, TradeLandedUnconfirmedError, TradeLegOutcomeError, } from "./errors";
@@ -9,12 +9,14 @@ export type { HyperliquidPerpsPosition, HyperliquidPnlFigures, HyperliquidPnlSec
9
9
  export { effectivePerpsRisk, HYPERLIQUID_RISK_DEFAULTS, type HyperliquidInfoFetcher, HyperliquidReadError, hyperliquidRiskReport, type PerpsAccountLine, type PerpsAccountReport, type PerpsPortfolioAccount, type PerpsPortfolioSection, type PerpsPositionRow, type PerpsRecentFigures, type PerpsRiskDriver, type PerpsRiskLevel, type PerpsRiskReport, type PerpsRiskSettings, type PerpsRiskThresholds, type PerpsRiskThresholdsReport, type PerpsWatchEvent, perpsPortfolioSection, perpsRiskExitCode, perpsRiskStep, readPerpsRisk, watchPerpsRisk, } from "./hyperliquid-risk";
10
10
  export { CANDLE_PERPS_WITHDRAW_PINS, type PerpsWithdrawAuthorization, type PerpsWithdrawBuild, type PerpsWithdrawPins, parseSendAssetAmount, parseWithdrawAmount, verifyWithdrawMapping, verifyWithdrawSendAsset, type WithdrawCheck, } from "./hyperliquid-withdraw";
11
11
  export { KeychainSecretStore } from "./keychain-secret-store";
12
+ export { createLabClient, LAB_CALL_TIMEOUT_MS, LAB_DEFAULT_URL, LAB_PATH, LAB_REPLAY_INTERVAL_MS, LAB_REPLAY_TIMEOUT_MS, type LabAnswer, type LabClient, type LabClientOptions, type LabJobId, type LabRecord, type LabRefusal, type LabReplayInput, type LabReplayJob, type LabReplayStarted, type LabStatus, } from "./lab";
12
13
  export { PERPS_HISTORY_DEFAULT_LIMIT, PERPS_HISTORY_MAX_LIMIT, type PerpsFillRow, type PerpsFillsPage, type PerpsFundingPage, type PerpsFundingRow, PerpsHistoryError, type PerpsHistoryOptions, type PerpsHistoryWarning, readPerpsHistoryPage, } from "./perps-history";
13
14
  export { type AgentPlansResult, formatPlanBps, PLAN_CAPABILITY_LABELS, PLAN_CAPABILITY_NOTE, type PlanCapabilities, type PlanLimits, type PlanName, type PlanPrice, type PlanTable, type PlanTableEntry, planLabel, planPromotionLine, planTableMarkdown, planTableRows, } from "./plans";
14
15
  export { createQuantKeyClient, newClientTurnId, QUANT_AGENT_PATH, QUANT_CALL_TIMEOUT_MS, QUANT_DEFAULT_MAX_TEXT_CHARS, QUANT_POLL_TIMEOUT_MS, type QuantAnswer, type QuantEventsPage, type QuantHistoryItem, type QuantHistoryPage, type QuantKeyClient, type QuantKeyClientOptions, type QuantKeyStatus, type QuantRefusal, type QuantTurnEvent, type QuantTurnStarted, quantCodePoints, quantRefusalCode, } from "./quant";
15
16
  export type { SecretStore } from "./secret-store";
16
17
  export { EncryptedFileSecretStore, InMemorySecretStore } from "./secret-store";
17
18
  export type * from "./staking";
19
+ export { CLUSTER_CAVEAT, CLUSTER_LABEL, CLUSTER_MESSAGE, CLUSTER_REASONS, type ClusterAnalysis, type ClusterReason, type ClusterResult, } from "./token-clusters";
18
20
  export type * from "./token-pages";
19
21
  export { TokenPageError } from "./token-pages";
20
22
  export * from "./token-pages.types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4389,6 +4389,88 @@ async function readPerpsHistoryPage(req) {
4389
4389
  return kind === "fills" ? { ...envelope, fills: page } : { ...envelope, funding: page };
4390
4390
  }
4391
4391
 
4392
+ // src/token-clusters.ts
4393
+ var CLUSTER_REASONS = [
4394
+ "disabled",
4395
+ "invalid_config",
4396
+ "unsupported_chain",
4397
+ "invalid_mint",
4398
+ "key_missing",
4399
+ "gate_uncalibrated",
4400
+ "market_data_missing",
4401
+ "market_data_stale",
4402
+ "token_too_new",
4403
+ "gate_not_met",
4404
+ "not_indexed",
4405
+ "empty_analysis",
4406
+ "invalid_response",
4407
+ "timeout",
4408
+ "upstream_unavailable",
4409
+ "upstream_4xx",
4410
+ "upstream_5xx",
4411
+ "rate_limited",
4412
+ "quota_exhausted",
4413
+ "budget_exhausted",
4414
+ "budget_unavailable",
4415
+ "request_in_progress",
4416
+ "transport_error",
4417
+ "internal_unavailable"
4418
+ ];
4419
+ var CLUSTER_MESSAGE = "Cluster analysis not available for this token";
4420
+ var CLUSTER_LABEL = "Third-party cluster analysis";
4421
+ var CLUSTER_CAVEAT = "Third-party estimates of linked wallets. Exchange, pool and service wallets may be grouped together. These figures do not establish common ownership, insider conduct or wrongdoing.";
4422
+ function clusterUnavailable(mint, reason, retryAt) {
4423
+ return {
4424
+ status: "unavailable",
4425
+ mint,
4426
+ reason,
4427
+ message: CLUSTER_MESSAGE,
4428
+ ...retryAt !== undefined && Number.isFinite(retryAt) ? { retryAt: new Date(retryAt).toISOString() } : {}
4429
+ };
4430
+ }
4431
+ function readClusterResult(value, mint) {
4432
+ if (!value || typeof value !== "object")
4433
+ return null;
4434
+ const v = value;
4435
+ if (v.mint !== mint)
4436
+ return null;
4437
+ if (v.status === "unavailable" && CLUSTER_REASONS.includes(v.reason)) {
4438
+ const retry = v.retryAt === undefined ? undefined : typeof v.retryAt === "string" ? Date.parse(v.retryAt) : NaN;
4439
+ if (retry !== undefined && !Number.isFinite(retry))
4440
+ return null;
4441
+ return clusterUnavailable(mint, v.reason, retry);
4442
+ }
4443
+ if (v.status !== "available" || v.chain !== "solana" || v.source !== "third_party" || !["hit", "miss"].includes(v.cache) || typeof v.fetchedAt !== "string" || typeof v.expiresAt !== "string" || !Number.isFinite(Date.parse(v.fetchedAt)) || !(Date.parse(v.expiresAt) > Date.parse(v.fetchedAt)))
4444
+ return null;
4445
+ const a = v.analysis;
4446
+ const percent = (n) => typeof n === "number" && Number.isFinite(n) && n >= 0 && n <= 100;
4447
+ if (!a || !percent(a.clusterSupplyPct) || !Array.isArray(a.clusters) || !a.clusters.length || a.clusters.length > 100)
4448
+ return null;
4449
+ let addresses = 0;
4450
+ for (const c of a.clusters) {
4451
+ if (!c || !percent(c.supplyPct) || c.supplyPct > a.clusterSupplyPct + 0.01 || !Array.isArray(c.addresses) || !Array.isArray(c.tags) || c.tags.length > 32 || c.tags.some((t) => typeof t !== "string" || t.length > 100) || c.addresses.some((x) => typeof x !== "string" || !/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(x)))
4452
+ return null;
4453
+ addresses += c.addresses.length;
4454
+ }
4455
+ if (addresses > 1000 || a.clusterSupplyPct === 0 && a.clusters.every((c) => c.supplyPct === 0))
4456
+ return null;
4457
+ return {
4458
+ status: "available",
4459
+ chain: "solana",
4460
+ mint,
4461
+ source: "third_party",
4462
+ label: CLUSTER_LABEL,
4463
+ caveat: CLUSTER_CAVEAT,
4464
+ fetchedAt: v.fetchedAt,
4465
+ expiresAt: v.expiresAt,
4466
+ cache: v.cache,
4467
+ analysis: {
4468
+ clusterSupplyPct: a.clusterSupplyPct,
4469
+ clusters: a.clusters.map((c) => ({ supplyPct: c.supplyPct, addresses: [...c.addresses], tags: [...c.tags] }))
4470
+ }
4471
+ };
4472
+ }
4473
+
4392
4474
  // src/token-pages.ts
4393
4475
  class TokenPageError extends CandleApiError {
4394
4476
  idempotencyKey;
@@ -4485,6 +4567,13 @@ function createTokenPagesClient(io) {
4485
4567
  }
4486
4568
  const sectionPath = (section) => `/sections/${encodeURIComponent(section)}`;
4487
4569
  return {
4570
+ updates: (token, options) => request("GET", path(token, `/updates${query(options)}`), false),
4571
+ postUpdate: (token, body, options) => write("POST", path(token, "/updates"), body, options),
4572
+ deletePost: (token, id, options) => write("DELETE", path(token, `/posts/${encodeURIComponent(id)}`), {}, options),
4573
+ comments: (token, options) => request("GET", path(token, `/comments${query(options)}`), false),
4574
+ postComment: (token, body, options) => write("POST", path(token, "/comments"), body, options),
4575
+ seen: (token) => request("GET", path(token, "/seen"), true),
4576
+ markSeen: (token, visibleUpdateSequence, options) => write("POST", path(token, "/seen"), { visibleUpdateSequence }, options),
4488
4577
  about: (token) => request("GET", path(token), false),
4489
4578
  capabilities: (token) => request("GET", path(token, "/capabilities"), true),
4490
4579
  burns: (token, options) => request("GET", path(token, `/burns${query(options)}`), false),
@@ -4715,6 +4804,7 @@ function isAtomicSubmitOutcome(value) {
4715
4804
  return false;
4716
4805
  }
4717
4806
  var DEFAULT_MAX_RETRIES = 3;
4807
+ var CLUSTER_READ_TIMEOUT_MS = 12000;
4718
4808
  var DEFAULT_POLL_MS = 2000;
4719
4809
  var DEFAULT_WAIT_TIMEOUT_MS = 180000;
4720
4810
  function isLoopbackHost(hostname) {
@@ -4986,9 +5076,43 @@ class CandleClient {
4986
5076
  const body = await this.requestJson("GET", `/api/v1/tokens/${chain}/${encodeURIComponent(mint)}/card${query}`);
4987
5077
  return body.card;
4988
5078
  }
5079
+ async editTokenMetadata(request, opts = {}) {
5080
+ this.requireKey("editTokenMetadata()");
5081
+ const body = {
5082
+ ...request.description !== undefined ? { description: request.description } : {},
5083
+ ...request.socials !== undefined ? { socials: request.socials } : {}
5084
+ };
5085
+ const res = await this.fetchImpl(`${this.apiUrl}/api/v1/tokens/${request.chain}/${encodeURIComponent(request.mint)}/metadata`, {
5086
+ method: "PATCH",
5087
+ headers: { ...this.headers({ json: true }), "Idempotency-Key": opts.idempotencyKey ?? crypto.randomUUID() },
5088
+ body: JSON.stringify(body)
5089
+ });
5090
+ return (await this.parseResponse(res)).payload;
5091
+ }
5092
+ async tokenMetadataHistory(params) {
5093
+ const query = new URLSearchParams({
5094
+ ...params.limit !== undefined ? { limit: String(params.limit) } : {},
5095
+ ...params.cursor !== undefined ? { cursor: params.cursor } : {}
5096
+ }).toString();
5097
+ const body = await this.requestJson("GET", `/api/v1/tokens/${params.chain}/${encodeURIComponent(params.mint)}/metadata/history${query ? `?${query}` : ""}`);
5098
+ return body.payload;
5099
+ }
4989
5100
  async verify(chain, mint) {
4990
5101
  return this.requestJson("GET", `/api/v1/verify/${chain}/${encodeURIComponent(mint)}`);
4991
5102
  }
5103
+ async getTokenClusters(mint, opts = {}) {
5104
+ const chain = opts.chain ?? "solana";
5105
+ try {
5106
+ const res = await this.fetchImpl(`${this.apiUrl}/api/v1/tokens/${encodeURIComponent(mint)}/clusters?chain=${encodeURIComponent(chain)}`, { method: "GET", cache: "no-store", signal: AbortSignal.timeout(CLUSTER_READ_TIMEOUT_MS) });
5107
+ noteLatestSdkVersion(res.headers?.get?.("x-candle-sdk-latest") ?? null);
5108
+ if (res.ok) {
5109
+ const body = JSON.parse(await res.text());
5110
+ if (body?.success === true)
5111
+ return readClusterResult(body.data, mint) ?? clusterUnavailable(mint, "transport_error");
5112
+ }
5113
+ } catch {}
5114
+ return clusterUnavailable(mint, "transport_error");
5115
+ }
4992
5116
  async getOwnProfile() {
4993
5117
  this.requireKey("getOwnProfile()");
4994
5118
  return this.requestJson("GET", "/api/v1/agent/keys/self/public-profile");
@@ -5028,6 +5152,13 @@ class CandleClient {
5028
5152
  const body = await this.requestJson("GET", `/api/v1/agent/records/${encodeURIComponent(profileId)}/posts${params.size ? `?${params}` : ""}`);
5029
5153
  return { posts: body.posts, cursor: body.cursor ?? null };
5030
5154
  }
5155
+ async getAgentPositions(profileId, options = {}) {
5156
+ const params = new URLSearchParams;
5157
+ if (options.kind !== undefined)
5158
+ params.set("kind", options.kind);
5159
+ const { success: _success, ...positions } = await this.requestJson("GET", `/api/v1/agent/records/${encodeURIComponent(profileId)}/positions${params.size ? `?${params}` : ""}`);
5160
+ return positions;
5161
+ }
5031
5162
  async getAgentProfile(idOrWallet) {
5032
5163
  const body = await this.requestJson("GET", `/api/v1/users/${encodeURIComponent(idOrWallet)}/agent`);
5033
5164
  return body.agent;
@@ -6629,7 +6760,7 @@ function generateClientLaunchId() {
6629
6760
  function generateClientTradeId() {
6630
6761
  return generateSdkId();
6631
6762
  }
6632
- var SDK_VERSION = "0.6.10";
6763
+ var SDK_VERSION = "0.6.12";
6633
6764
  var sdkUpdateWarned = false;
6634
6765
  function noteLatestSdkVersion(value) {
6635
6766
  if (sdkUpdateWarned || !value || !/^\d+\.\d+\.\d+$/.test(value))
@@ -6754,6 +6885,107 @@ class KeychainSecretStore {
6754
6885
  await this.exec("secret-tool", ["clear", "service", SERVICE, "account", ref]);
6755
6886
  }
6756
6887
  }
6888
+ // src/lab.ts
6889
+ var LAB_DEFAULT_URL = "https://api.hacc.fun";
6890
+ var LAB_PATH = "/v1/strategy-lab";
6891
+ var LAB_CALL_TIMEOUT_MS = 1e4;
6892
+ var LAB_REPLAY_INTERVAL_MS = 5000;
6893
+ var LAB_REPLAY_TIMEOUT_MS = 660000;
6894
+ function record(value) {
6895
+ return value !== null && typeof value === "object" && !Array.isArray(value);
6896
+ }
6897
+ function transportRefusal(code, message) {
6898
+ return { ok: false, refusal: { status: 0, code, message } };
6899
+ }
6900
+ function query(values) {
6901
+ const search = new URLSearchParams;
6902
+ for (const [key, value] of Object.entries(values))
6903
+ if (value !== undefined)
6904
+ search.set(key, String(value));
6905
+ return search.size ? `?${search}` : "";
6906
+ }
6907
+ function createLabClient(options) {
6908
+ const base = new URL(options.apiUrl ?? LAB_DEFAULT_URL);
6909
+ if (base.protocol !== "https:" || base.username || base.password || base.search || base.hash) {
6910
+ throw new Error("The lab needs an HTTPS CANDLE_HACC_URL without credentials, query or fragment.");
6911
+ }
6912
+ const root = base.toString().replace(/\/+$/, "");
6913
+ const doFetch = options.fetch ?? globalThis.fetch;
6914
+ const callMs = options.callTimeoutMs ?? LAB_CALL_TIMEOUT_MS;
6915
+ const now = options.now ?? Date.now;
6916
+ const sleep3 = options.sleep ?? ((ms) => new Promise((resolve2) => setTimeout(resolve2, ms)));
6917
+ async function call(method, path, valid = () => true, body, timeoutMs = callMs) {
6918
+ const controller = new AbortController;
6919
+ let timedOut = false;
6920
+ const timer = setTimeout(() => {
6921
+ timedOut = true;
6922
+ controller.abort();
6923
+ }, timeoutMs);
6924
+ try {
6925
+ const response = await doFetch(`${root}${LAB_PATH}${path}`, {
6926
+ method,
6927
+ redirect: "error",
6928
+ signal: controller.signal,
6929
+ headers: {
6930
+ authorization: `Bearer ${options.apiKey}`,
6931
+ accept: "application/json",
6932
+ ...body !== undefined ? { "content-type": "application/json" } : {}
6933
+ },
6934
+ ...body !== undefined ? { body: JSON.stringify(body) } : {}
6935
+ });
6936
+ const received = await response.json().catch(() => {
6937
+ return;
6938
+ });
6939
+ if (timedOut)
6940
+ return transportRefusal("TIMEOUT", "The lab request timed out.");
6941
+ if (!response.ok) {
6942
+ return {
6943
+ ok: false,
6944
+ refusal: {
6945
+ status: response.status,
6946
+ code: record(received) && typeof received.code === "string" ? received.code : `HTTP_${response.status}`,
6947
+ message: record(received) && typeof received.error === "string" ? received.error : `Lab request failed (${response.status}).`,
6948
+ body: received
6949
+ }
6950
+ };
6951
+ }
6952
+ if (!record(received) || !valid(received)) {
6953
+ return transportRefusal("BAD_RESPONSE", "The lab returned an unreadable response.");
6954
+ }
6955
+ return { ok: true, status: response.status, body: received };
6956
+ } catch {
6957
+ return transportRefusal(timedOut ? "TIMEOUT" : "NETWORK_ERROR", timedOut ? "The lab request timed out." : "Could not reach the lab.");
6958
+ } finally {
6959
+ clearTimeout(timer);
6960
+ }
6961
+ }
6962
+ const jobPath = (id) => `/replay/${encodeURIComponent(String(id))}`;
6963
+ const validId = (id) => typeof id === "string" && id.length > 0 || typeof id === "number" && Number.isSafeInteger(id) && id > 0;
6964
+ const validJob = (body) => validId(body.job_id) && typeof body.status === "string";
6965
+ return {
6966
+ status: () => call("GET", "/status", (b) => typeof b.plan === "string" && typeof b.allowed === "boolean" && record(b.replays)),
6967
+ replay: (body) => call("POST", "/replay", (b) => validId(b.job_id), body),
6968
+ replayGet: (id) => call("GET", jobPath(id), validJob),
6969
+ replayCancel: (id) => call("POST", `${jobPath(id)}/cancel`),
6970
+ runners: (q = {}) => call("GET", `/runners${query(q)}`),
6971
+ edges: (q = {}) => call("GET", `/edges${query(q)}`),
6972
+ async waitForReplay(id, wait = {}) {
6973
+ const intervalMs = wait.intervalMs ?? LAB_REPLAY_INTERVAL_MS;
6974
+ const timeoutMs = wait.timeoutMs ?? LAB_REPLAY_TIMEOUT_MS;
6975
+ if (!Number.isFinite(intervalMs) || intervalMs <= 0 || !Number.isFinite(timeoutMs) || timeoutMs <= 0) {
6976
+ throw new Error("Replay polling interval and timeout must be positive finite numbers.");
6977
+ }
6978
+ const deadline = now() + timeoutMs;
6979
+ while (now() < deadline) {
6980
+ const answer = await call("GET", jobPath(id), validJob, undefined, Math.min(callMs, deadline - now()));
6981
+ if (!answer.ok || !["pending", "running"].includes(answer.body.status))
6982
+ return answer;
6983
+ await sleep3(Math.min(intervalMs, Math.max(0, deadline - now())));
6984
+ }
6985
+ return transportRefusal("REPLAY_TIMEOUT", `Replay ${id} is still pending or running. Read it with candle lab replay get ${id}.`);
6986
+ }
6987
+ };
6988
+ }
6757
6989
  // src/plans.ts
6758
6990
  var PLAN_CAPABILITY_NOTE = "A capability marked yes is what the plan allows. It is subject to the deployment's own switches (perps and own-wallet bridges each have one) and to the wallet, scopes and setup the feature needs. Every plan can launch a token from its embedded wallet, with an optional dev buy (same transaction on Solana; best-effort follow-up on Hood), through the headless launch; the two launch rows are additional routes, not the only ones.";
6759
6991
  var PLAN_CAPABILITY_LABELS = {
@@ -6842,28 +7074,28 @@ function newClientTurnId() {
6842
7074
  return crypto.randomUUID();
6843
7075
  }
6844
7076
  function quantRefusalCode(body) {
6845
- const record = asRecord(body);
6846
- if (typeof record?.code === "string")
6847
- return record.code;
6848
- const inner = asRecord(record?.error);
7077
+ const record2 = asRecord(body);
7078
+ if (typeof record2?.code === "string")
7079
+ return record2.code;
7080
+ const inner = asRecord(record2?.error);
6849
7081
  return typeof inner?.code === "string" ? inner.code : undefined;
6850
7082
  }
6851
7083
  function asRecord(value) {
6852
7084
  return value !== null && typeof value === "object" && !Array.isArray(value) ? value : undefined;
6853
7085
  }
6854
7086
  function refusalOf(status, body) {
6855
- const record = asRecord(body) ?? {};
6856
- const relayCode = typeof record.code === "string" ? record.code : undefined;
7087
+ const record2 = asRecord(body) ?? {};
7088
+ const relayCode = typeof record2.code === "string" ? record2.code : undefined;
6857
7089
  const code = quantRefusalCode(body) ?? `HTTP_${status}`;
6858
7090
  const refusal = { code, status, shape: relayCode !== undefined ? "relay" : "envelope" };
6859
- if (typeof record.retryable === "boolean")
6860
- refusal.retryable = record.retryable;
6861
- if (typeof record.resetsAt === "string" || typeof record.resetsAt === "number")
6862
- refusal.resetsAt = record.resetsAt;
6863
- if (typeof record.turnId === "string")
6864
- refusal.turnId = record.turnId;
6865
- if (typeof record.limit === "number")
6866
- refusal.limit = record.limit;
7091
+ if (typeof record2.retryable === "boolean")
7092
+ refusal.retryable = record2.retryable;
7093
+ if (typeof record2.resetsAt === "string" || typeof record2.resetsAt === "number")
7094
+ refusal.resetsAt = record2.resetsAt;
7095
+ if (typeof record2.turnId === "string")
7096
+ refusal.turnId = record2.turnId;
7097
+ if (typeof record2.limit === "number")
7098
+ refusal.limit = record2.limit;
6867
7099
  return refusal;
6868
7100
  }
6869
7101
  function parseStatus(body) {
@@ -6998,12 +7230,12 @@ function createQuantKeyClient(options) {
6998
7230
  }),
6999
7231
  cancel: (turnId) => call("POST", `${turnPath(turnId)}/cancel`, (body) => asRecord(body) ?? {}, { timeoutMs: callMs }),
7000
7232
  history: (input = {}) => {
7001
- const query = new URLSearchParams;
7233
+ const query2 = new URLSearchParams;
7002
7234
  if (input.before !== undefined)
7003
- query.set("before", input.before);
7235
+ query2.set("before", input.before);
7004
7236
  if (input.limit !== undefined)
7005
- query.set("limit", String(input.limit));
7006
- const encoded = query.toString();
7237
+ query2.set("limit", String(input.limit));
7238
+ const encoded = query2.toString();
7007
7239
  const suffix = encoded ? `?${encoded}` : "";
7008
7240
  return call("GET", `/history${suffix}`, parseHistory, { timeoutMs: callMs });
7009
7241
  }
@@ -7208,6 +7440,7 @@ export {
7208
7440
  encryptWalletKeyForImport,
7209
7441
  effectivePerpsRisk,
7210
7442
  createQuantKeyClient,
7443
+ createLabClient,
7211
7444
  TradeLegOutcomeError,
7212
7445
  TradeLandedUnconfirmedError,
7213
7446
  TradeLandedFeeLegError,
@@ -7229,6 +7462,11 @@ export {
7229
7462
  PERPS_FUNDING_HISTORY_MAX_MS,
7230
7463
  PERPS_FLATTEN_MAX_STEPS,
7231
7464
  PERPS_CANDLE_INTERVALS,
7465
+ LAB_REPLAY_TIMEOUT_MS,
7466
+ LAB_REPLAY_INTERVAL_MS,
7467
+ LAB_PATH,
7468
+ LAB_DEFAULT_URL,
7469
+ LAB_CALL_TIMEOUT_MS,
7232
7470
  KeychainSecretStore,
7233
7471
  JsonRpcError,
7234
7472
  InMemorySecretStore,
@@ -7242,6 +7480,10 @@ export {
7242
7480
  CandleOperationError,
7243
7481
  CandleClient,
7244
7482
  CandleApiError,
7483
+ CLUSTER_REASONS,
7484
+ CLUSTER_MESSAGE,
7485
+ CLUSTER_LABEL,
7486
+ CLUSTER_CAVEAT,
7245
7487
  CANDLE_PERPS_WITHDRAW_PINS,
7246
7488
  CANDLE_HYPERLIQUID_BUILDER_ADDRESS,
7247
7489
  BRIDGE_ERROR_CODES
package/dist/lab.d.ts ADDED
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Dependency-free hacc strategy lab client (BE-2038, strategy lab spec R18).
3
+ * The CLI carries a byte-identical copy. Copy changes verbatim:
4
+ * `cp packages/sdk/src/lab.ts packages/cli/src/lab.ts`.
5
+ * Bodies, including refusals and older results without a lead card, are kept unchanged.
6
+ */
7
+ export declare const LAB_DEFAULT_URL = "https://api.hacc.fun";
8
+ export declare const LAB_PATH = "/v1/strategy-lab";
9
+ export declare const LAB_CALL_TIMEOUT_MS = 10000;
10
+ export declare const LAB_REPLAY_INTERVAL_MS = 5000;
11
+ export declare const LAB_REPLAY_TIMEOUT_MS = 660000;
12
+ export type LabRecord = Record<string, unknown>;
13
+ export type LabJobId = string | number;
14
+ export interface LabStatus extends LabRecord {
15
+ plan: string;
16
+ allowed: boolean;
17
+ replays: {
18
+ cap: number | null;
19
+ used: number | null;
20
+ resets_at: string;
21
+ };
22
+ active_job_id: LabJobId | null;
23
+ }
24
+ export interface LabReplayInput {
25
+ definition: LabRecord;
26
+ from: string;
27
+ to: string;
28
+ asset_ids?: number[];
29
+ cost?: {
30
+ fee_bps_per_side?: number;
31
+ slippage_bps_per_side?: number;
32
+ };
33
+ }
34
+ export interface LabReplayStarted extends LabRecord {
35
+ job_id: LabJobId;
36
+ }
37
+ export interface LabReplayJob extends LabReplayStarted {
38
+ status: string;
39
+ error?: string | null;
40
+ result?: LabRecord | null;
41
+ }
42
+ export interface LabRefusal {
43
+ status: number;
44
+ code: string;
45
+ message: string;
46
+ /** The server's complete body, retained for machine output and future additive fields. */
47
+ body?: unknown;
48
+ }
49
+ export type LabAnswer<T> = {
50
+ ok: true;
51
+ status: number;
52
+ body: T;
53
+ } | {
54
+ ok: false;
55
+ refusal: LabRefusal;
56
+ };
57
+ export interface LabClientOptions {
58
+ apiKey: string;
59
+ /** Pass CANDLE_HACC_URL here; it must be HTTPS, including for local servers. */
60
+ apiUrl?: string;
61
+ fetch?: typeof fetch;
62
+ callTimeoutMs?: number;
63
+ now?: () => number;
64
+ sleep?: (ms: number) => Promise<void>;
65
+ }
66
+ export interface LabClient {
67
+ status(): Promise<LabAnswer<LabStatus>>;
68
+ replay(body: LabReplayInput): Promise<LabAnswer<LabReplayStarted>>;
69
+ replayGet(id: LabJobId): Promise<LabAnswer<LabReplayJob>>;
70
+ replayCancel(id: LabJobId): Promise<LabAnswer<LabRecord>>;
71
+ runners(q?: {
72
+ hours?: number;
73
+ min_wallets?: number;
74
+ }): Promise<LabAnswer<LabRecord>>;
75
+ edges(q?: {
76
+ days?: number;
77
+ min_n?: number;
78
+ }): Promise<LabAnswer<LabRecord>>;
79
+ waitForReplay(id: LabJobId, options?: {
80
+ intervalMs?: number;
81
+ timeoutMs?: number;
82
+ }): Promise<LabAnswer<LabReplayJob>>;
83
+ }
84
+ export declare function createLabClient(options: LabClientOptions): LabClient;
85
+ //# sourceMappingURL=lab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lab.d.ts","sourceRoot":"","sources":["../src/lab.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,eAAe,yBAAyB,CAAA;AACrD,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,mBAAmB,QAAS,CAAA;AACzC,eAAO,MAAM,sBAAsB,OAAQ,CAAA;AAC3C,eAAO,MAAM,qBAAqB,SAAU,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtC,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACvE,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrE;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,MAAM,EAAE,QAAQ,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAA;AAErG,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IACvC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAClE,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IACzD,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IACzD,OAAO,CAAC,CAAC,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IACpF,KAAK,CAAC,CAAC,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3E,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;CACrH;AAgBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA0GpE"}
@@ -0,0 +1,36 @@
1
+ /** Public protocol for the optional cluster read. Unavailable never contains numeric analysis. */
2
+ export declare const CLUSTER_REASONS: readonly ["disabled", "invalid_config", "unsupported_chain", "invalid_mint", "key_missing", "gate_uncalibrated", "market_data_missing", "market_data_stale", "token_too_new", "gate_not_met", "not_indexed", "empty_analysis", "invalid_response", "timeout", "upstream_unavailable", "upstream_4xx", "upstream_5xx", "rate_limited", "quota_exhausted", "budget_exhausted", "budget_unavailable", "request_in_progress", "transport_error", "internal_unavailable"];
3
+ export type ClusterReason = (typeof CLUSTER_REASONS)[number];
4
+ export declare const CLUSTER_MESSAGE = "Cluster analysis not available for this token";
5
+ export declare const CLUSTER_LABEL = "Third-party cluster analysis";
6
+ export declare const CLUSTER_CAVEAT = "Third-party estimates of linked wallets. Exchange, pool and service wallets may be grouped together. These figures do not establish common ownership, insider conduct or wrongdoing.";
7
+ export interface ClusterAnalysis {
8
+ clusterSupplyPct: number;
9
+ clusters: {
10
+ supplyPct: number;
11
+ addresses: string[];
12
+ tags: string[];
13
+ }[];
14
+ }
15
+ export type ClusterResult = {
16
+ status: "available";
17
+ chain: "solana";
18
+ mint: string;
19
+ source: "third_party";
20
+ label: typeof CLUSTER_LABEL;
21
+ caveat: string;
22
+ fetchedAt: string;
23
+ expiresAt: string;
24
+ cache: "hit" | "miss";
25
+ analysis: ClusterAnalysis;
26
+ } | {
27
+ status: "unavailable";
28
+ mint: string;
29
+ reason: ClusterReason;
30
+ message: typeof CLUSTER_MESSAGE;
31
+ retryAt?: string;
32
+ };
33
+ export declare function clusterUnavailable(mint: string, reason: ClusterReason, retryAt?: number): ClusterResult;
34
+ /** Construct only protocol fields; malformed/unknown server output is a client availability failure. */
35
+ export declare function readClusterResult(value: unknown, mint: string): ClusterResult | null;
36
+ //# sourceMappingURL=token-clusters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-clusters.d.ts","sourceRoot":"","sources":["../src/token-clusters.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,eAAO,MAAM,eAAe,scAyBlB,CAAA;AACV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC5D,eAAO,MAAM,eAAe,kDAAkD,CAAA;AAC9E,eAAO,MAAM,aAAa,iCAAiC,CAAA;AAC3D,eAAO,MAAM,cAAc,yLAC6J,CAAA;AACxL,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAA;CACvE;AACD,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,OAAO,aAAa,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;CAC1B,GACD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACrH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAQvG;AAED,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAuDpF"}
@@ -1,5 +1,5 @@
1
1
  import { CandleApiError } from "./errors";
2
- import type { AboutBurnHistory, AboutCapabilities, AboutHistory, AboutSection, AboutToken, ClaimResult, CreatorChallenge, FlagReason, FlagResult, TokenAbout } from "./token-pages.types";
2
+ import type { AboutBurnHistory, AboutCapabilities, AboutComments, AboutHistory, AboutSection, AboutSeen, AboutToken, AboutUpdates, ClaimResult, CreatorChallenge, FlagReason, FlagResult, TokenAbout } from "./token-pages.types";
3
3
  export type TokenPageClaim = {
4
4
  kind: "holder" | "creator";
5
5
  challengeId?: string;
@@ -52,6 +52,27 @@ export declare class TokenPageError extends CandleApiError {
52
52
  }
53
53
  /** The API remains the authoritative validator, including strict bodies and fresh eligibility. */
54
54
  export interface CandleTokenPages {
55
+ updates(token: AboutToken, options?: TokenPagePagination): Promise<AboutUpdates>;
56
+ postUpdate(token: AboutToken, body: {
57
+ text: string;
58
+ }, options?: TokenPageWriteOptions): Promise<TokenPageWriteResult<{
59
+ id: string;
60
+ sequence: string;
61
+ }>>;
62
+ deletePost(token: AboutToken, id: string, options?: TokenPageWriteOptions): Promise<TokenPageWriteResult<{
63
+ id: string;
64
+ deleted: true;
65
+ }>>;
66
+ /** Public newest-first comments with tombstones; sends no key. */
67
+ comments(token: AboutToken, options?: TokenPagePagination): Promise<AboutComments>;
68
+ /** An immutable comment under the 0.5% editing gate. Never pushed; delete it with `deletePost`. */
69
+ postComment(token: AboutToken, body: {
70
+ text: string;
71
+ }, options?: TokenPageWriteOptions): Promise<TokenPageWriteResult<{
72
+ id: string;
73
+ }>>;
74
+ seen(token: AboutToken): Promise<AboutSeen>;
75
+ markSeen(token: AboutToken, visibleUpdateSequence: string, options?: TokenPageWriteOptions): Promise<TokenPageWriteResult<AboutSeen>>;
55
76
  about(token: AboutToken): Promise<TokenAbout>;
56
77
  capabilities(token: AboutToken): Promise<AboutCapabilities>;
57
78
  burns(token: AboutToken, options?: TokenPagePagination): Promise<AboutBurnHistory>;
@@ -1 +1 @@
1
- {"version":3,"file":"token-pages.d.ts","sourceRoot":"","sources":["../src/token-pages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-pages.d.ts","sourceRoot":"","sources":["../src/token-pages.ts"],"names":[],"mappings":"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"}