@universal-everything/sdk-core 1.1.0-dev.35f5247 → 1.1.0-dev.5673e05

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
@@ -313,6 +313,11 @@ type NonceResponse = {
313
313
  nonce: string;
314
314
  issuedAt: string;
315
315
  };
316
+ /** `POST /v1/ipfs/upload-token` — a short-lived bearer for the IPFS upload service. */
317
+ type IpfsUploadTokenResponse = {
318
+ token: string;
319
+ expiresAt: string;
320
+ };
316
321
  type DeployProfileBase = {
317
322
  chainId: number;
318
323
  label?: string | null;
@@ -331,10 +336,17 @@ type DeployProfileBase = {
331
336
  * Deploy a sponsored Universal Profile. Two mutually-exclusive controller
332
337
  * modes:
333
338
  * - **custody**: `controllerWalletId` — a relayer-held wallet row.
334
- * - **external (A1)**: `controllerAddress` + `controlProof` — a user-held key
335
- * (a Privy embedded wallet, or an extension/mobile key) that proves control
336
- * by signing a nonce-bound challenge. Build the proof with
339
+ * - **external (A1)**: `controllerAddress` (+ `controlProof`) — a user-held key
340
+ * (a Privy embedded wallet, or an extension/mobile key). The proof is a
341
+ * signature by that key over a nonce-bound challenge; build it with
337
342
  * `@universal-everything/sdk-core-viem`'s `buildControlProof`.
343
+ *
344
+ * On `/v1` the proof is **optional**: a first-time user has only a social
345
+ * login, and the extension / mobile app holding the new controller cannot sign
346
+ * for a not-yet-deployed profile. When present it is always verified. The next
347
+ * API version makes it mandatory for everyone (relayer
348
+ * `docs/DESIGN_2026-09-10_control-proof-versioning.md`), so callers that CAN
349
+ * sign (a Privy embedded wallet) should always send it.
338
350
  */
339
351
  type DeployProfileInput = (DeployProfileBase & {
340
352
  controllerWalletId: string;
@@ -342,7 +354,7 @@ type DeployProfileInput = (DeployProfileBase & {
342
354
  controlProof?: never;
343
355
  }) | (DeployProfileBase & {
344
356
  controllerAddress: Hex;
345
- controlProof: ControlProof;
357
+ controlProof?: ControlProof;
346
358
  controllerWalletId?: never;
347
359
  });
348
360
  type DeployProfileSingleChainResponse = {
@@ -475,6 +487,14 @@ declare class WalletKitClient {
475
487
  * bind an A1 control proof for an external-controller {@link deployProfile}.
476
488
  */
477
489
  getNonce(): Promise<NonceResponse>;
490
+ /**
491
+ * Mint a short-lived (~120s) HS256 token for the IPFS upload service
492
+ * (`POST /v1/ipfs/upload-token`, authenticated). Fetch one per upload:
493
+ * the token is meant to expire within the service's 600s window (which the
494
+ * service does not enforce today — see the relayer's routes/ipfs.ts). 503
495
+ * when the relayer has no upload secret configured.
496
+ */
497
+ getIpfsUploadToken(): Promise<IpfsUploadTokenResponse>;
478
498
  importProfile(input: {
479
499
  address: Hex;
480
500
  chainId: number;
@@ -539,4 +559,4 @@ declare class IdentityError extends Error {
539
559
  constructor(code: IdentityErrorCode, message: string);
540
560
  }
541
561
 
542
- export { type ChainStatus, type CheckoutSession, type ControlProof, type ControllerSummary, type DeployProfileInput, type DeployProfileMultiChainResponse, type DeployProfileResponse, type DeployProfileSingleChainResponse, type DeployQueueStatus, type ExportCompleteResponse, type ExportRequestInput, type ExportRequestResponse, type ExportedKey, type FreeDefaultSnapshot, type Hex, IdentityError, type IdentityErrorCode, type IdentityProvider, type ImportBeginResponse, type ImportCompleteInput, type ImportCompleteResponse, KeyCustodyError, type KeyCustodyErrorCode, type KeyCustodyOpContext, type KeyCustodyProvider, type NonceResponse, type OpContext, type OpenCheckoutInput, type Profile, type ProfileStatus, type ProfileWithChains, type QuotaSnapshot, type RelaySponsoredInput, type RelaySponsoredResponse, type SignLsp25Input, type SignLsp25Response, type SignMessageResponse, type SignTransactionInput, type SignTransactionResponse, type SignTxRequest, type Subject, type SubscriptionResponse, type SubscriptionSnapshot, TIER_ERROR_CODES, TierError, type VerifiedToken, type VerifyOptions, type Wallet, type WalletInfo, WalletKitClient, type WalletKitClientConfig, WalletKitError, createWalletKitClient };
562
+ export { type ChainStatus, type CheckoutSession, type ControlProof, type ControllerSummary, type DeployProfileInput, type DeployProfileMultiChainResponse, type DeployProfileResponse, type DeployProfileSingleChainResponse, type DeployQueueStatus, type ExportCompleteResponse, type ExportRequestInput, type ExportRequestResponse, type ExportedKey, type FreeDefaultSnapshot, type Hex, IdentityError, type IdentityErrorCode, type IdentityProvider, type ImportBeginResponse, type ImportCompleteInput, type ImportCompleteResponse, type IpfsUploadTokenResponse, KeyCustodyError, type KeyCustodyErrorCode, type KeyCustodyOpContext, type KeyCustodyProvider, type NonceResponse, type OpContext, type OpenCheckoutInput, type Profile, type ProfileStatus, type ProfileWithChains, type QuotaSnapshot, type RelaySponsoredInput, type RelaySponsoredResponse, type SignLsp25Input, type SignLsp25Response, type SignMessageResponse, type SignTransactionInput, type SignTransactionResponse, type SignTxRequest, type Subject, type SubscriptionResponse, type SubscriptionSnapshot, TIER_ERROR_CODES, TierError, type VerifiedToken, type VerifyOptions, type Wallet, type WalletInfo, WalletKitClient, type WalletKitClientConfig, WalletKitError, createWalletKitClient };
package/dist/index.js CHANGED
@@ -121,6 +121,16 @@ var WalletKitClient = class {
121
121
  async getNonce() {
122
122
  return this.#request("POST", "/v1/auth/nonce");
123
123
  }
124
+ /**
125
+ * Mint a short-lived (~120s) HS256 token for the IPFS upload service
126
+ * (`POST /v1/ipfs/upload-token`, authenticated). Fetch one per upload:
127
+ * the token is meant to expire within the service's 600s window (which the
128
+ * service does not enforce today — see the relayer's routes/ipfs.ts). 503
129
+ * when the relayer has no upload secret configured.
130
+ */
131
+ async getIpfsUploadToken() {
132
+ return this.#request("POST", "/v1/ipfs/upload-token");
133
+ }
124
134
  async importProfile(input) {
125
135
  return this.#request("POST", "/v1/profiles/import", input);
126
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universal-everything/sdk-core",
3
- "version": "1.1.0-dev.35f5247",
3
+ "version": "1.1.0-dev.5673e05",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/universal-everything/universal-relayer.git",