@usearete/sdk 0.3.0 → 0.4.0

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/README.md CHANGED
@@ -83,6 +83,64 @@ Each packaged, attached, or standalone program is canonically available under `s
83
83
  - `defaults` - reusable program defaults
84
84
  - `math` - pure protocol calculations
85
85
 
86
+ ### Program Read Transports
87
+
88
+ Generated account readers use a `ProgramReadDescriptor` for each program. Local
89
+ generation emits an explicit `local-http` descriptor, so the endpoint must come
90
+ from the connection call:
91
+
92
+ ```ts
93
+ const client = await Arete.connect(LOCAL_STACK, {
94
+ url: 'ws://localhost:8877',
95
+ httpUrl: 'http://localhost:8877',
96
+ });
97
+ ```
98
+
99
+ Installed hosted SDKs instead contain a complete `hosted-binding` descriptor:
100
+ the release, read endpoint, binding ID, and auth metadata are pinned together.
101
+ Hosted account reads ignore `httpUrl` and stack HTTP endpoints. A
102
+ `programReads` runtime override must replace that complete descriptor; release,
103
+ binding, and endpoint fields are never patched independently.
104
+
105
+ Stack and program queries remain stack-HTTP operations. They continue to use
106
+ `httpUrl` or `stack.endpoints.http` and do not use a hosted Program Read binding.
107
+ Composition sessions accept only complete hosted descriptors or complete hosted
108
+ overrides, and never infer Program Read endpoints from their members.
109
+
110
+ ### Hosted Solana Gateway Transports
111
+
112
+ Hosted composition installs also emit complete, independent `chain` and
113
+ `transactions` gateway bindings. Construct both authenticated transports from
114
+ those generated descriptors instead of using a LiveSpec query endpoint:
115
+
116
+ ```ts
117
+ import { createHostedSolanaGatewayTransports } from '@usearete/sdk';
118
+ import { MY_STACK_HOSTED_BINDINGS } from './generated/my-stack';
119
+
120
+ const { chain, transactions } = createHostedSolanaGatewayTransports(
121
+ {
122
+ chain: MY_STACK_HOSTED_BINDINGS.chain,
123
+ transactions: MY_STACK_HOSTED_BINDINGS.transactions,
124
+ },
125
+ {
126
+ auth: { publishableKey: import.meta.env.VITE_ARETE_PUBLISHABLE_KEY },
127
+ }
128
+ );
129
+ ```
130
+
131
+ The helper mints tokens for the exact `solana-gateway-binding` target. `read`,
132
+ `transaction:inspect`, and `transaction:send` use separate scope caches. An
133
+ authentication failure is refreshed at most once, and transaction requests are
134
+ replayed only when the gateway explicitly reports that upstream dispatch did
135
+ not begin. Chain and transaction descriptors may intentionally share the same
136
+ endpoint and binding ID.
137
+
138
+ Generated hosted compositions additionally export
139
+ `create<StackName>HostedSession(options)`. It constructs these transports and
140
+ passes them to the explicit composition session; the lower-level
141
+ `create<StackName>Session(options)` continues to require caller-supplied `chain`
142
+ and `transactions` transports.
143
+
86
144
  ### Raw Instructions
87
145
 
88
146
  Use raw handlers when you want exact wire control and will compose the transaction yourself: