All notable changes to this project will be documented in this file.
- Experimental field warning — when a caller sets any of the
experimental agent-layer fields (
attestation,agentInstance,minCounterpartyTier,hideIdentity) oncreateRFQ,submitQuote, orfundHTLC, the SDK now emits a one-timeconsole.warnper field/method pair explaining that GraphQL wire-through to the Cayman backend is not yet implemented and the field is currently a no-op at the network layer. - Warning can be suppressed with
HASHLOCK_SDK_SILENCE_EXPERIMENTAL=1for call sites that have already acknowledged the experimental status. - 2 new tests verifying the warning fires when experimental fields are set and stays silent when they are not.
The v0.1.3 release exposed experimental type surface for agent
flows but dropped the fields silently at the network layer — a
DX hazard, because a caller could set attestation and assume
it reached the backend. This warning closes the expectation gap.
- Principal + attestation type surface (experimental) — agents operating
under a KYC'd principal can now attach structured metadata to RFQs,
quotes, and HTLC funding calls:
PrincipalAttestationinterface: opaque binding from an order to a KYC'd entity (principalId, principalType, tier, blindId, issuedAt, expiresAt, proof) without leaking identity to counterpartiesAgentInstanceinterface: autonomous agent instance metadata (instanceId, strategy, version, spawnedAt)KycTierenum withNONE < BASIC < STANDARD < ENHANCED < INSTITUTIONALordering plusKYC_TIER_RANKandmeetsKycTier()helper- New optional response fields on
RFQ(attestationTier,attestationBlindId,minCounterpartyTier),Quote(attestationTier,attestationBlindId), andTrade(initiatorAttestationTier,counterpartyAttestationTier) - New optional input fields on
CreateRFQInput(attestation,agentInstance,minCounterpartyTier,hideIdentity),SubmitQuoteInput(attestation,agentInstance,hideIdentity), andFundHTLCInput(attestation,agentInstance)
- 6 new tests covering the agent principal layer and backward compat
- Widen
GraphQLClient.execute()variables parameter to acceptRecord<string, unknown> | object | undefinedso typed SDK inputs (e.g.,CreateRFQInput) satisfy the signature under strict TypeScript. This fix was a pre-existing CI lint failure from the v0.1.1 and v0.1.2 publish commits; v0.1.3 is the first version whose CI lint step is green.
- Backward compatible. All new fields are optional. Existing human OTC flows without attestation continue to work unchanged.
- EXPERIMENTAL. The new agent-layer fields are accepted at the SDK
type surface today but are not yet sent to the Cayman GraphQL
backend. Wire-through will land in a later release once the backend
schema accepts
PrincipalAttestationInputandAgentInstanceInput. Passing these fields today is a no-op at the network layer.
- Use
/api/graphqlendpoint to bypass CSRF protection.
- HTLC query uses
chainIdinstead ofchainTypeto match backend schema.
- Initial release
- RFQ trading: createRFQ, submitQuote, acceptQuote, listRFQs, cancelRFQ
- Trade management: getTrade, listTrades, acceptTrade, cancelTrade, confirmDirectTrade
- EVM HTLC: fundHTLC, claimHTLC, refundHTLC, getHTLCStatus
- Bitcoin HTLC: prepareBitcoinHTLC, buildBitcoinClaimPSBT, broadcastBitcoinTx
- Settlement wallet management: confirmSettlementWallets
- Full TypeScript types for all inputs and outputs
- Automatic retry with exponential backoff
- Error hierarchy: HashLockError, GraphQLError, NetworkError, AuthError
- ESM + CJS dual build