@growsober/sdk 1.0.29 → 1.0.31

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.
@@ -7,7 +7,14 @@
7
7
  * @module api/mutations/users
8
8
  */
9
9
  import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
10
- import type { UpdateUserRequest, UserResponse } from '../types';
10
+ import type { UpdateUserRequest, UserResponse, SendOtpRequest, OtpSentResponse } from '../types';
11
+ /**
12
+ * Request type for verifying a user's phone OTP (no name field needed)
13
+ */
14
+ export type UserVerifyPhoneOtpRequest = {
15
+ phone: string;
16
+ code: string;
17
+ };
11
18
  /**
12
19
  * Update current user's profile
13
20
  *
@@ -209,3 +216,21 @@ export declare function useUpdateCurrentUser(options?: Omit<UseMutationOptions<U
209
216
  * @returns TanStack Query mutation result
210
217
  */
211
218
  export declare function useCompleteOnboarding(options?: Omit<UseMutationOptions<UserResponse, Error, void>, 'mutationFn'>): UseMutationResult<UserResponse, Error, void>;
219
+ /**
220
+ * Send OTP to verify phone number for authenticated user
221
+ *
222
+ * @endpoint POST /api/v1/users/me/phone/send-otp
223
+ *
224
+ * @param options - TanStack Query mutation options
225
+ * @returns TanStack Query mutation result
226
+ */
227
+ export declare function useSendUserPhoneOtp(options?: Omit<UseMutationOptions<OtpSentResponse, Error, SendOtpRequest>, 'mutationFn'>): UseMutationResult<OtpSentResponse, Error, SendOtpRequest>;
228
+ /**
229
+ * Verify OTP and update phone number for authenticated user
230
+ *
231
+ * @endpoint POST /api/v1/users/me/phone/verify-otp
232
+ *
233
+ * @param options - TanStack Query mutation options
234
+ * @returns TanStack Query mutation result
235
+ */
236
+ export declare function useVerifyUserPhoneOtp(options?: Omit<UseMutationOptions<UserResponse, Error, UserVerifyPhoneOtpRequest>, 'mutationFn'>): UseMutationResult<UserResponse, Error, UserVerifyPhoneOtpRequest>;
@@ -10,6 +10,8 @@
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.useUpdateCurrentUser = useUpdateCurrentUser;
12
12
  exports.useCompleteOnboarding = useCompleteOnboarding;
13
+ exports.useSendUserPhoneOtp = useSendUserPhoneOtp;
14
+ exports.useVerifyUserPhoneOtp = useVerifyUserPhoneOtp;
13
15
  const react_query_1 = require("@tanstack/react-query");
14
16
  const client_1 = require("../client");
15
17
  const users_1 = require("../queries/users");
@@ -258,4 +260,48 @@ function useCompleteOnboarding(options) {
258
260
  ...options,
259
261
  });
260
262
  }
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy91c2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFvR0gsb0RBMEJDO0FBZ0hELHNEQXlCQztBQXJRRCx1REFBMkc7QUFDM0csc0NBQXlDO0FBQ3pDLDRDQUE0QztBQUc1QywrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdGRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxPQUF3RjtJQUV4RixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLElBQXVCLEVBQXlCLEVBQUU7WUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFlLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzFFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxxRUFBcUU7WUFDckUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTNELHFGQUFxRjtZQUNyRixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDWixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELG9DQUFvQztZQUNwQyxtREFBbUQ7UUFDckQsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZHRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxPQUEyRTtJQUUzRSxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxJQUEyQixFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBZSxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3pGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxrRkFBa0Y7WUFDbEYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTNELGlEQUFpRDtZQUNqRCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDWixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBRUQsb0NBQW9DO1lBQ3BDLG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlcnMgTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBob29rcyBmb3IgdXNlci1yZWxhdGVkIHdyaXRlIG9wZXJhdGlvbnMuXG4gKiBUaGVzZSBob29rcyBoYW5kbGUgdXNlciBwcm9maWxlIHVwZGF0ZXMgYW5kIG9uYm9hcmRpbmcgY29tcGxldGlvbi5cbiAqXG4gKiBAbW9kdWxlIGFwaS9tdXRhdGlvbnMvdXNlcnNcbiAqL1xuXG5pbXBvcnQgeyB1c2VNdXRhdGlvbiwgVXNlTXV0YXRpb25PcHRpb25zLCBVc2VNdXRhdGlvblJlc3VsdCwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IHVzZXJLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy91c2Vycyc7XG5pbXBvcnQgdHlwZSB7IFVwZGF0ZVVzZXJSZXF1ZXN0LCBVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXBkYXRlIGN1cnJlbnQgdXNlcidzIHByb2ZpbGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFVwZGF0ZXMgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcidzIHByb2ZpbGUgaW5mb3JtYXRpb24uXG4gKiBUaGlzIGNhbiBpbmNsdWRlIG5hbWUsIGJpbywgYXZhdGFyLCBsb2NhdGlvbiwgc29iZXIgZGF0ZSwgYW5kIG90aGVyIHByb2ZpbGUgZmllbGRzLlxuICogQXV0b21hdGljYWxseSBpbnZhbGlkYXRlcyByZWxldmFudCB1c2VyIHF1ZXJpZXMgdG8gcmVmcmVzaCB0aGUgVUkuXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL3VzZXJzL21lXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgdXNlVXBkYXRlQ3VycmVudFVzZXIgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gRWRpdFByb2ZpbGVGb3JtKCkge1xuICogICBjb25zdCB7IG11dGF0ZTogdXBkYXRlUHJvZmlsZSwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlVXBkYXRlQ3VycmVudFVzZXIoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1Byb2ZpbGUgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAqICAgICAgIG5hdmlnYXRpb24uZ29CYWNrKCk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gdXBkYXRlIHByb2ZpbGU6ICcgKyBlcnJvci5tZXNzYWdlKTtcbiAqICAgICB9LFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChmb3JtRGF0YTogRm9ybURhdGEpID0+IHtcbiAqICAgICB1cGRhdGVQcm9maWxlKHtcbiAqICAgICAgIG5hbWU6IGZvcm1EYXRhLm5hbWUsXG4gKiAgICAgICBiaW86IGZvcm1EYXRhLmJpbyxcbiAqICAgICAgIGF2YXRhcjogZm9ybURhdGEuYXZhdGFyLFxuICogICAgICAgY2l0eTogZm9ybURhdGEuY2l0eSxcbiAqICAgICAgIHNvYmVyRGF0ZTogZm9ybURhdGEuc29iZXJEYXRlLFxuICogICAgIH0pO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fT5cbiAqICAgICAgIDxpbnB1dCBuYW1lPVwibmFtZVwiIC8+XG4gKiAgICAgICA8dGV4dGFyZWEgbmFtZT1cImJpb1wiIC8+XG4gKiAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBkaXNhYmxlZD17aXNQZW5kaW5nfT5cbiAqICAgICAgICAge2lzUGVuZGluZyA/ICdTYXZpbmcuLi4nIDogJ1NhdmUgUHJvZmlsZSd9XG4gKiAgICAgICA8L2J1dHRvbj5cbiAqICAgICAgIHtlcnJvciAmJiA8cCBjbGFzc05hbWU9XCJlcnJvclwiPntlcnJvci5tZXNzYWdlfTwvcD59XG4gKiAgICAgPC9mb3JtPlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFVwZGF0ZSBzcGVjaWZpYyBmaWVsZHM6XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEF2YXRhclVwbG9hZGVyKCkge1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiB1cGRhdGVQcm9maWxlIH0gPSB1c2VVcGRhdGVDdXJyZW50VXNlcigpO1xuICpcbiAqICAgY29uc3QgaGFuZGxlQXZhdGFyQ2hhbmdlID0gYXN5bmMgKGZpbGU6IEZpbGUpID0+IHtcbiAqICAgICBjb25zdCB1cGxvYWRlZFVybCA9IGF3YWl0IHVwbG9hZEltYWdlKGZpbGUpO1xuICogICAgIGF3YWl0IHVwZGF0ZVByb2ZpbGUoeyBhdmF0YXI6IHVwbG9hZGVkVXJsIH0pO1xuICogICAgIHRvYXN0LnN1Y2Nlc3MoJ0F2YXRhciB1cGRhdGVkIScpO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIDxJbWFnZVBpY2tlciBvblNlbGVjdD17aGFuZGxlQXZhdGFyQ2hhbmdlfSAvPjtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBVcGRhdGUgc29iZXIgZGF0ZTpcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gU29iZXJEYXRlUGlja2VyKCkge1xuICogICBjb25zdCB7IG11dGF0ZTogdXBkYXRlUHJvZmlsZSB9ID0gdXNlVXBkYXRlQ3VycmVudFVzZXIoKTtcbiAqICAgY29uc3QgeyBkYXRhOiB1c2VyIH0gPSB1c2VDdXJyZW50VXNlcigpO1xuICpcbiAqICAgY29uc3QgaGFuZGxlRGF0ZUNoYW5nZSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gKiAgICAgdXBkYXRlUHJvZmlsZSh7XG4gKiAgICAgICBzb2JlckRhdGU6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPERhdGVQaWNrZXJcbiAqICAgICAgIHZhbHVlPXt1c2VyPy5zb2JlckRhdGV9XG4gKiAgICAgICBvbkNoYW5nZT17aGFuZGxlRGF0ZUNoYW5nZX1cbiAqICAgICAvPlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUN1cnJlbnRVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8VXNlclJlc3BvbnNlLCBFcnJvciwgVXBkYXRlVXNlclJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxVc2VyUmVzcG9uc2UsIEVycm9yLCBVcGRhdGVVc2VyUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogVXBkYXRlVXNlclJlcXVlc3QpOiBQcm9taXNlPFVzZXJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8VXNlclJlc3BvbnNlPignL2FwaS92MS91c2Vycy9tZScsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgICAgIC8vIEludmFsaWRhdGUgY3VycmVudCB1c2VyIHF1ZXJ5IHRvIHRyaWdnZXIgcmVmZXRjaCB3aXRoIHVwZGF0ZWQgZGF0YVxuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMubWUoKSB9KTtcblxuICAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIHRoZSBkZXRhaWwgcXVlcnkgZm9yIHRoaXMgdXNlciBpZiB0aGV5J3ZlIHZpZXdlZCB0aGVpciBvd24gcHJvZmlsZVxuICAgICAgaWYgKGRhdGEuaWQpIHtcbiAgICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMuZGV0YWlsKGRhdGEuaWQpIH0pO1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5wdWJsaWMoZGF0YS5pZCkgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb21wbGV0ZSB1c2VyIG9uYm9hcmRpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE1hcmtzIHRoZSB1c2VyJ3Mgb25ib2FyZGluZyBwcm9jZXNzIGFzIGNvbXBsZXRlLlxuICogVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGFmdGVyIGEgdXNlciBjb21wbGV0ZXMgYWxsIHJlcXVpcmVkIG9uYm9hcmRpbmcgc3RlcHNcbiAqIChlLmcuLCBzZXR0aW5nIHVwIHByb2ZpbGUsIHNlbGVjdGluZyBpbnRlcmVzdHMsIHNldHRpbmcgc29iZXIgZGF0ZSkuXG4gKiBVcGRhdGVzIHRoZSB1c2VyJ3Mgb25ib2FyZGluZ0NvbXBsZXRlZCBmbGFnIGFuZCB1bmxvY2tzIGZ1bGwgYXBwIGFjY2Vzcy5cbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL3VzZXJzL21lL2NvbXBsZXRlLW9uYm9hcmRpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VDb21wbGV0ZU9uYm9hcmRpbmcgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gT25ib2FyZGluZ0ZpbmFsU3RlcCgpIHtcbiAqICAgY29uc3QgeyBtdXRhdGU6IGNvbXBsZXRlT25ib2FyZGluZywgaXNQZW5kaW5nIH0gPSB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoe1xuICogICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICogICAgICAgdG9hc3Quc3VjY2VzcygnV2VsY29tZSB0byBHcm93U29iZXIhJyk7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gY29tcGxldGUgb25ib2FyZGluZzogJyArIGVycm9yLm1lc3NhZ2UpO1xuICogICAgIH0sXG4gKiAgIH0pO1xuICpcbiAqICAgY29uc3QgaGFuZGxlRmluaXNoID0gKCkgPT4ge1xuICogICAgIGNvbXBsZXRlT25ib2FyZGluZygpO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGgxPllvdSdyZSBBbGwgU2V0ITwvaDE+XG4gKiAgICAgICA8cD5SZWFkeSB0byBzdGFydCB5b3VyIHNvYmVyIGpvdXJuZXk/PC9wPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVGaW5pc2h9IGRpc2FibGVkPXtpc1BlbmRpbmd9PlxuICogICAgICAgICB7aXNQZW5kaW5nID8gJ1NldHRpbmcgdXAuLi4nIDogJ0dldCBTdGFydGVkJ31cbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIE11bHRpLXN0ZXAgb25ib2FyZGluZyB3aXRoIHZhbGlkYXRpb246XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIE9uYm9hcmRpbmdGbG93KCkge1xuICogICBjb25zdCBbY3VycmVudFN0ZXAsIHNldEN1cnJlbnRTdGVwXSA9IHVzZVN0YXRlKDEpO1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiBjb21wbGV0ZU9uYm9hcmRpbmcgfSA9IHVzZUNvbXBsZXRlT25ib2FyZGluZygpO1xuICogICBjb25zdCB7IGRhdGE6IHVzZXIgfSA9IHVzZUN1cnJlbnRVc2VyKCk7XG4gKlxuICogICBjb25zdCBoYW5kbGVDb21wbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgICAvLyBWYWxpZGF0ZSBhbGwgcmVxdWlyZWQgZmllbGRzIGFyZSBmaWxsZWRcbiAqICAgICBpZiAoIXVzZXI/Lm5hbWUgfHwgIXVzZXI/LnNvYmVyRGF0ZSB8fCAhdXNlcj8uY2l0eSkge1xuICogICAgICAgdG9hc3QuZXJyb3IoJ1BsZWFzZSBjb21wbGV0ZSBhbGwgcmVxdWlyZWQgZmllbGRzJyk7XG4gKiAgICAgICByZXR1cm47XG4gKiAgICAgfVxuICpcbiAqICAgICB0cnkge1xuICogICAgICAgYXdhaXQgY29tcGxldGVPbmJvYXJkaW5nKCk7XG4gKiAgICAgICAvLyBVc2VyIHdpbGwgYmUgcmVkaXJlY3RlZCB2aWEgb25TdWNjZXNzIGNhbGxiYWNrXG4gKiAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgICAgIGNvbnNvbGUuZXJyb3IoJ09uYm9hcmRpbmcgZXJyb3I6JywgZXJyb3IpO1xuICogICAgIH1cbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIHtjdXJyZW50U3RlcCA9PT0gMSAmJiA8UHJvZmlsZVNldHVwIG9uTmV4dD17KCkgPT4gc2V0Q3VycmVudFN0ZXAoMil9IC8+fVxuICogICAgICAge2N1cnJlbnRTdGVwID09PSAyICYmIDxJbnRlcmVzdFNlbGVjdGlvbiBvbk5leHQ9eygpID0+IHNldEN1cnJlbnRTdGVwKDMpfSAvPn1cbiAqICAgICAgIHtjdXJyZW50U3RlcCA9PT0gMyAmJiA8U29iZXJEYXRlU2V0dXAgb25OZXh0PXtoYW5kbGVDb21wbGV0ZX0gLz59XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ2hlY2sgb25ib2FyZGluZyBzdGF0dXM6XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcE5hdmlnYXRvcigpIHtcbiAqICAgY29uc3QgeyBkYXRhOiB1c2VyLCBpc0xvYWRpbmcgfSA9IHVzZUN1cnJlbnRVc2VyKCk7XG4gKlxuICogICBpZiAoaXNMb2FkaW5nKSByZXR1cm4gPFNwbGFzaFNjcmVlbiAvPjtcbiAqXG4gKiAgIC8vIFJlZGlyZWN0IHRvIG9uYm9hcmRpbmcgaWYgbm90IGNvbXBsZXRlZFxuICogICBpZiAodXNlciAmJiAhdXNlci5vbmJvYXJkaW5nQ29tcGxldGVkKSB7XG4gKiAgICAgcmV0dXJuIDxPbmJvYXJkaW5nRmxvdyAvPjtcbiAqICAgfVxuICpcbiAqICAgcmV0dXJuIDxNYWluQXBwIC8+O1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggYW5hbHl0aWNzIHRyYWNraW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY29tcGxldGVPbmJvYXJkaW5nIH0gPSB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoe1xuICogICBvblN1Y2Nlc3M6IChkYXRhKSA9PiB7XG4gKiAgICAgYW5hbHl0aWNzLnRyYWNrKCdPbmJvYXJkaW5nIENvbXBsZXRlZCcsIHtcbiAqICAgICAgIHVzZXJJZDogZGF0YS5pZCxcbiAqICAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gKiAgICAgICBwcm9maWxlQ29tcGxldGU6ICEhZGF0YS5iaW8gJiYgISFkYXRhLmF2YXRhcixcbiAqICAgICB9KTtcbiAqICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxVc2VyUmVzcG9uc2UsIEVycm9yLCB2b2lkPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VXNlclJlc3BvbnNlLCBFcnJvciwgdm9pZD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTxVc2VyUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxVc2VyUmVzcG9uc2U+KCcvYXBpL3YxL3VzZXJzL21lL2NvbXBsZXRlLW9uYm9hcmRpbmcnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBJbnZhbGlkYXRlIGN1cnJlbnQgdXNlciBxdWVyeSB0byB0cmlnZ2VyIHJlZmV0Y2ggd2l0aCB1cGRhdGVkIG9uYm9hcmRpbmcgc3RhdHVzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuXG4gICAgICAvLyBBbHNvIGludmFsaWRhdGUgdGhlIGRldGFpbCBxdWVyeSBmb3IgdGhpcyB1c2VyXG4gICAgICBpZiAoZGF0YS5pZCkge1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5kZXRhaWwoZGF0YS5pZCkgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
263
+ /**
264
+ * Send OTP to verify phone number for authenticated user
265
+ *
266
+ * @endpoint POST /api/v1/users/me/phone/send-otp
267
+ *
268
+ * @param options - TanStack Query mutation options
269
+ * @returns TanStack Query mutation result
270
+ */
271
+ function useSendUserPhoneOtp(options) {
272
+ return (0, react_query_1.useMutation)({
273
+ mutationFn: async (data) => {
274
+ const client = (0, client_1.getApiClient)();
275
+ const response = await client.post('/api/v1/users/me/phone/send-otp', data);
276
+ return response.data;
277
+ },
278
+ ...options,
279
+ });
280
+ }
281
+ /**
282
+ * Verify OTP and update phone number for authenticated user
283
+ *
284
+ * @endpoint POST /api/v1/users/me/phone/verify-otp
285
+ *
286
+ * @param options - TanStack Query mutation options
287
+ * @returns TanStack Query mutation result
288
+ */
289
+ function useVerifyUserPhoneOtp(options) {
290
+ const queryClient = (0, react_query_1.useQueryClient)();
291
+ return (0, react_query_1.useMutation)({
292
+ mutationFn: async (data) => {
293
+ const client = (0, client_1.getApiClient)();
294
+ const response = await client.post('/api/v1/users/me/phone/verify-otp', data);
295
+ return response.data;
296
+ },
297
+ ...options,
298
+ onSuccess: (data, variables, onMutateResult, context) => {
299
+ queryClient.invalidateQueries({ queryKey: users_1.userKeys.me() });
300
+ if (data.id) {
301
+ queryClient.invalidateQueries({ queryKey: users_1.userKeys.detail(data.id) });
302
+ }
303
+ options?.onSuccess?.(data, variables, onMutateResult, context);
304
+ },
305
+ });
306
+ }
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy91c2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUF5R0gsb0RBMEJDO0FBZ0hELHNEQXlCQztBQVVELGtEQVdDO0FBVUQsc0RBc0JDO0FBL1RELHVEQUEyRztBQUMzRyxzQ0FBeUM7QUFDekMsNENBQTRDO0FBUTVDLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0ZHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLE9BQXdGO0lBRXhGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBdUIsRUFBeUIsRUFBRTtZQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQWUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLHFFQUFxRTtZQUNyRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFM0QscUZBQXFGO1lBQ3JGLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNaLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFB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RSxDQUFDLENBQUM7WUFFM0QsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1osV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlcnMgTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBob29rcyBmb3IgdXNlci1yZWxhdGVkIHdyaXRlIG9wZXJhdGlvbnMuXG4gKiBUaGVzZSBob29rcyBoYW5kbGUgdXNlciBwcm9maWxlIHVwZGF0ZXMgYW5kIG9uYm9hcmRpbmcgY29tcGxldGlvbi5cbiAqXG4gKiBAbW9kdWxlIGFwaS9tdXRhdGlvbnMvdXNlcnNcbiAqL1xuXG5pbXBvcnQgeyB1c2VNdXRhdGlvbiwgVXNlTXV0YXRpb25PcHRpb25zLCBVc2VNdXRhdGlvblJlc3VsdCwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IHVzZXJLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy91c2Vycyc7XG5pbXBvcnQgdHlwZSB7IFVwZGF0ZVVzZXJSZXF1ZXN0LCBVc2VyUmVzcG9uc2UsIFNlbmRPdHBSZXF1ZXN0LCBPdHBTZW50UmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogUmVxdWVzdCB0eXBlIGZvciB2ZXJpZnlpbmcgYSB1c2VyJ3MgcGhvbmUgT1RQIChubyBuYW1lIGZpZWxkIG5lZWRlZClcbiAqL1xuZXhwb3J0IHR5cGUgVXNlclZlcmlmeVBob25lT3RwUmVxdWVzdCA9IHsgcGhvbmU6IHN0cmluZzsgY29kZTogc3RyaW5nIH07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXBkYXRlIGN1cnJlbnQgdXNlcidzIHByb2ZpbGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFVwZGF0ZXMgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcidzIHByb2ZpbGUgaW5mb3JtYXRpb24uXG4gKiBUaGlzIGNhbiBpbmNsdWRlIG5hbWUsIGJpbywgYXZhdGFyLCBsb2NhdGlvbiwgc29iZXIgZGF0ZSwgYW5kIG90aGVyIHByb2ZpbGUgZmllbGRzLlxuICogQXV0b21hdGljYWxseSBpbnZhbGlkYXRlcyByZWxldmFudCB1c2VyIHF1ZXJpZXMgdG8gcmVmcmVzaCB0aGUgVUkuXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL3VzZXJzL21lXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgdXNlVXBkYXRlQ3VycmVudFVzZXIgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gRWRpdFByb2ZpbGVGb3JtKCkge1xuICogICBjb25zdCB7IG11dGF0ZTogdXBkYXRlUHJvZmlsZSwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlVXBkYXRlQ3VycmVudFVzZXIoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1Byb2ZpbGUgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAqICAgICAgIG5hdmlnYXRpb24uZ29CYWNrKCk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gdXBkYXRlIHByb2ZpbGU6ICcgKyBlcnJvci5tZXNzYWdlKTtcbiAqICAgICB9LFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChmb3JtRGF0YTogRm9ybURhdGEpID0+IHtcbiAqICAgICB1cGRhdGVQcm9maWxlKHtcbiAqICAgICAgIG5hbWU6IGZvcm1EYXRhLm5hbWUsXG4gKiAgICAgICBiaW86IGZvcm1EYXRhLmJpbyxcbiAqICAgICAgIGF2YXRhcjogZm9ybURhdGEuYXZhdGFyLFxuICogICAgICAgY2l0eTogZm9ybURhdGEuY2l0eSxcbiAqICAgICAgIHNvYmVyRGF0ZTogZm9ybURhdGEuc29iZXJEYXRlLFxuICogICAgIH0pO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fT5cbiAqICAgICAgIDxpbnB1dCBuYW1lPVwibmFtZVwiIC8+XG4gKiAgICAgICA8dGV4dGFyZWEgbmFtZT1cImJpb1wiIC8+XG4gKiAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBkaXNhYmxlZD17aXNQZW5kaW5nfT5cbiAqICAgICAgICAge2lzUGVuZGluZyA/ICdTYXZpbmcuLi4nIDogJ1NhdmUgUHJvZmlsZSd9XG4gKiAgICAgICA8L2J1dHRvbj5cbiAqICAgICAgIHtlcnJvciAmJiA8cCBjbGFzc05hbWU9XCJlcnJvclwiPntlcnJvci5tZXNzYWdlfTwvcD59XG4gKiAgICAgPC9mb3JtPlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFVwZGF0ZSBzcGVjaWZpYyBmaWVsZHM6XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEF2YXRhclVwbG9hZGVyKCkge1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiB1cGRhdGVQcm9maWxlIH0gPSB1c2VVcGRhdGVDdXJyZW50VXNlcigpO1xuICpcbiAqICAgY29uc3QgaGFuZGxlQXZhdGFyQ2hhbmdlID0gYXN5bmMgKGZpbGU6IEZpbGUpID0+IHtcbiAqICAgICBjb25zdCB1cGxvYWRlZFVybCA9IGF3YWl0IHVwbG9hZEltYWdlKGZpbGUpO1xuICogICAgIGF3YWl0IHVwZGF0ZVByb2ZpbGUoeyBhdmF0YXI6IHVwbG9hZGVkVXJsIH0pO1xuICogICAgIHRvYXN0LnN1Y2Nlc3MoJ0F2YXRhciB1cGRhdGVkIScpO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIDxJbWFnZVBpY2tlciBvblNlbGVjdD17aGFuZGxlQXZhdGFyQ2hhbmdlfSAvPjtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBVcGRhdGUgc29iZXIgZGF0ZTpcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gU29iZXJEYXRlUGlja2VyKCkge1xuICogICBjb25zdCB7IG11dGF0ZTogdXBkYXRlUHJvZmlsZSB9ID0gdXNlVXBkYXRlQ3VycmVudFVzZXIoKTtcbiAqICAgY29uc3QgeyBkYXRhOiB1c2VyIH0gPSB1c2VDdXJyZW50VXNlcigpO1xuICpcbiAqICAgY29uc3QgaGFuZGxlRGF0ZUNoYW5nZSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gKiAgICAgdXBkYXRlUHJvZmlsZSh7XG4gKiAgICAgICBzb2JlckRhdGU6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPERhdGVQaWNrZXJcbiAqICAgICAgIHZhbHVlPXt1c2VyPy5zb2JlckRhdGV9XG4gKiAgICAgICBvbkNoYW5nZT17aGFuZGxlRGF0ZUNoYW5nZX1cbiAqICAgICAvPlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUN1cnJlbnRVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8VXNlclJlc3BvbnNlLCBFcnJvciwgVXBkYXRlVXNlclJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxVc2VyUmVzcG9uc2UsIEVycm9yLCBVcGRhdGVVc2VyUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogVXBkYXRlVXNlclJlcXVlc3QpOiBQcm9taXNlPFVzZXJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8VXNlclJlc3BvbnNlPignL2FwaS92MS91c2Vycy9tZScsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgICAgIC8vIEludmFsaWRhdGUgY3VycmVudCB1c2VyIHF1ZXJ5IHRvIHRyaWdnZXIgcmVmZXRjaCB3aXRoIHVwZGF0ZWQgZGF0YVxuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMubWUoKSB9KTtcblxuICAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIHRoZSBkZXRhaWwgcXVlcnkgZm9yIHRoaXMgdXNlciBpZiB0aGV5J3ZlIHZpZXdlZCB0aGVpciBvd24gcHJvZmlsZVxuICAgICAgaWYgKGRhdGEuaWQpIHtcbiAgICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMuZGV0YWlsKGRhdGEuaWQpIH0pO1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5wdWJsaWMoZGF0YS5pZCkgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb21wbGV0ZSB1c2VyIG9uYm9hcmRpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE1hcmtzIHRoZSB1c2VyJ3Mgb25ib2FyZGluZyBwcm9jZXNzIGFzIGNvbXBsZXRlLlxuICogVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGFmdGVyIGEgdXNlciBjb21wbGV0ZXMgYWxsIHJlcXVpcmVkIG9uYm9hcmRpbmcgc3RlcHNcbiAqIChlLmcuLCBzZXR0aW5nIHVwIHByb2ZpbGUsIHNlbGVjdGluZyBpbnRlcmVzdHMsIHNldHRpbmcgc29iZXIgZGF0ZSkuXG4gKiBVcGRhdGVzIHRoZSB1c2VyJ3Mgb25ib2FyZGluZ0NvbXBsZXRlZCBmbGFnIGFuZCB1bmxvY2tzIGZ1bGwgYXBwIGFjY2Vzcy5cbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL3VzZXJzL21lL2NvbXBsZXRlLW9uYm9hcmRpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VDb21wbGV0ZU9uYm9hcmRpbmcgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gT25ib2FyZGluZ0ZpbmFsU3RlcCgpIHtcbiAqICAgY29uc3QgeyBtdXRhdGU6IGNvbXBsZXRlT25ib2FyZGluZywgaXNQZW5kaW5nIH0gPSB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoe1xuICogICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICogICAgICAgdG9hc3Quc3VjY2VzcygnV2VsY29tZSB0byBHcm93U29iZXIhJyk7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gY29tcGxldGUgb25ib2FyZGluZzogJyArIGVycm9yLm1lc3NhZ2UpO1xuICogICAgIH0sXG4gKiAgIH0pO1xuICpcbiAqICAgY29uc3QgaGFuZGxlRmluaXNoID0gKCkgPT4ge1xuICogICAgIGNvbXBsZXRlT25ib2FyZGluZygpO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGgxPllvdSdyZSBBbGwgU2V0ITwvaDE+XG4gKiAgICAgICA8cD5SZWFkeSB0byBzdGFydCB5b3VyIHNvYmVyIGpvdXJuZXk/PC9wPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVGaW5pc2h9IGRpc2FibGVkPXtpc1BlbmRpbmd9PlxuICogICAgICAgICB7aXNQZW5kaW5nID8gJ1NldHRpbmcgdXAuLi4nIDogJ0dldCBTdGFydGVkJ31cbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIE11bHRpLXN0ZXAgb25ib2FyZGluZyB3aXRoIHZhbGlkYXRpb246XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIE9uYm9hcmRpbmdGbG93KCkge1xuICogICBjb25zdCBbY3VycmVudFN0ZXAsIHNldEN1cnJlbnRTdGVwXSA9IHVzZVN0YXRlKDEpO1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiBjb21wbGV0ZU9uYm9hcmRpbmcgfSA9IHVzZUNvbXBsZXRlT25ib2FyZGluZygpO1xuICogICBjb25zdCB7IGRhdGE6IHVzZXIgfSA9IHVzZUN1cnJlbnRVc2VyKCk7XG4gKlxuICogICBjb25zdCBoYW5kbGVDb21wbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgICAvLyBWYWxpZGF0ZSBhbGwgcmVxdWlyZWQgZmllbGRzIGFyZSBmaWxsZWRcbiAqICAgICBpZiAoIXVzZXI/Lm5hbWUgfHwgIXVzZXI/LnNvYmVyRGF0ZSB8fCAhdXNlcj8uY2l0eSkge1xuICogICAgICAgdG9hc3QuZXJyb3IoJ1BsZWFzZSBjb21wbGV0ZSBhbGwgcmVxdWlyZWQgZmllbGRzJyk7XG4gKiAgICAgICByZXR1cm47XG4gKiAgICAgfVxuICpcbiAqICAgICB0cnkge1xuICogICAgICAgYXdhaXQgY29tcGxldGVPbmJvYXJkaW5nKCk7XG4gKiAgICAgICAvLyBVc2VyIHdpbGwgYmUgcmVkaXJlY3RlZCB2aWEgb25TdWNjZXNzIGNhbGxiYWNrXG4gKiAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgICAgIGNvbnNvbGUuZXJyb3IoJ09uYm9hcmRpbmcgZXJyb3I6JywgZXJyb3IpO1xuICogICAgIH1cbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIHtjdXJyZW50U3RlcCA9PT0gMSAmJiA8UHJvZmlsZVNldHVwIG9uTmV4dD17KCkgPT4gc2V0Q3VycmVudFN0ZXAoMil9IC8+fVxuICogICAgICAge2N1cnJlbnRTdGVwID09PSAyICYmIDxJbnRlcmVzdFNlbGVjdGlvbiBvbk5leHQ9eygpID0+IHNldEN1cnJlbnRTdGVwKDMpfSAvPn1cbiAqICAgICAgIHtjdXJyZW50U3RlcCA9PT0gMyAmJiA8U29iZXJEYXRlU2V0dXAgb25OZXh0PXtoYW5kbGVDb21wbGV0ZX0gLz59XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ2hlY2sgb25ib2FyZGluZyBzdGF0dXM6XG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcE5hdmlnYXRvcigpIHtcbiAqICAgY29uc3QgeyBkYXRhOiB1c2VyLCBpc0xvYWRpbmcgfSA9IHVzZUN1cnJlbnRVc2VyKCk7XG4gKlxuICogICBpZiAoaXNMb2FkaW5nKSByZXR1cm4gPFNwbGFzaFNjcmVlbiAvPjtcbiAqXG4gKiAgIC8vIFJlZGlyZWN0IHRvIG9uYm9hcmRpbmcgaWYgbm90IGNvbXBsZXRlZFxuICogICBpZiAodXNlciAmJiAhdXNlci5vbmJvYXJkaW5nQ29tcGxldGVkKSB7XG4gKiAgICAgcmV0dXJuIDxPbmJvYXJkaW5nRmxvdyAvPjtcbiAqICAgfVxuICpcbiAqICAgcmV0dXJuIDxNYWluQXBwIC8+O1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggYW5hbHl0aWNzIHRyYWNraW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY29tcGxldGVPbmJvYXJkaW5nIH0gPSB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoe1xuICogICBvblN1Y2Nlc3M6IChkYXRhKSA9PiB7XG4gKiAgICAgYW5hbHl0aWNzLnRyYWNrKCdPbmJvYXJkaW5nIENvbXBsZXRlZCcsIHtcbiAqICAgICAgIHVzZXJJZDogZGF0YS5pZCxcbiAqICAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gKiAgICAgICBwcm9maWxlQ29tcGxldGU6ICEhZGF0YS5iaW8gJiYgISFkYXRhLmF2YXRhcixcbiAqICAgICB9KTtcbiAqICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb21wbGV0ZU9uYm9hcmRpbmcoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxVc2VyUmVzcG9uc2UsIEVycm9yLCB2b2lkPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VXNlclJlc3BvbnNlLCBFcnJvciwgdm9pZD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTxVc2VyUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxVc2VyUmVzcG9uc2U+KCcvYXBpL3YxL3VzZXJzL21lL2NvbXBsZXRlLW9uYm9hcmRpbmcnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBJbnZhbGlkYXRlIGN1cnJlbnQgdXNlciBxdWVyeSB0byB0cmlnZ2VyIHJlZmV0Y2ggd2l0aCB1cGRhdGVkIG9uYm9hcmRpbmcgc3RhdHVzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuXG4gICAgICAvLyBBbHNvIGludmFsaWRhdGUgdGhlIGRldGFpbCBxdWVyeSBmb3IgdGhpcyB1c2VyXG4gICAgICBpZiAoZGF0YS5pZCkge1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5kZXRhaWwoZGF0YS5pZCkgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBTZW5kIE9UUCB0byB2ZXJpZnkgcGhvbmUgbnVtYmVyIGZvciBhdXRoZW50aWNhdGVkIHVzZXJcbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL3VzZXJzL21lL3Bob25lL3NlbmQtb3RwXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbmRVc2VyUGhvbmVPdHAoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxPdHBTZW50UmVzcG9uc2UsIEVycm9yLCBTZW5kT3RwUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PE90cFNlbnRSZXNwb25zZSwgRXJyb3IsIFNlbmRPdHBSZXF1ZXN0PiB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IFNlbmRPdHBSZXF1ZXN0KTogUHJvbWlzZTxPdHBTZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxPdHBTZW50UmVzcG9uc2U+KCcvYXBpL3YxL3VzZXJzL21lL3Bob25lL3NlbmQtb3RwJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFZlcmlmeSBPVFAgYW5kIHVwZGF0ZSBwaG9uZSBudW1iZXIgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlclxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvdXNlcnMvbWUvcGhvbmUvdmVyaWZ5LW90cFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VWZXJpZnlVc2VyUGhvbmVPdHAoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxVc2VyUmVzcG9uc2UsIEVycm9yLCBVc2VyVmVyaWZ5UGhvbmVPdHBSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VXNlclJlc3BvbnNlLCBFcnJvciwgVXNlclZlcmlmeVBob25lT3RwUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogVXNlclZlcmlmeVBob25lT3RwUmVxdWVzdCk6IFByb21pc2U8VXNlclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8VXNlclJlc3BvbnNlPignL2FwaS92MS91c2Vycy9tZS9waG9uZS92ZXJpZnktb3RwJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMubWUoKSB9KTtcblxuICAgICAgaWYgKGRhdGEuaWQpIHtcbiAgICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMuZGV0YWlsKGRhdGEuaWQpIH0pO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zPy5vblN1Y2Nlc3M/LihkYXRhLCB2YXJpYWJsZXMsIG9uTXV0YXRlUmVzdWx0LCBjb250ZXh0KTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growsober/sdk",
3
- "version": "1.0.29",
3
+ "version": "1.0.31",
4
4
  "description": "Shared TypeScript SDK for GrowSober API - TanStack Query hooks, API client, and utilities",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -10,7 +10,12 @@
10
10
  import { useMutation, UseMutationOptions, UseMutationResult, useQueryClient } from '@tanstack/react-query';
11
11
  import { getApiClient } from '../client';
12
12
  import { userKeys } from '../queries/users';
13
- import type { UpdateUserRequest, UserResponse } from '../types';
13
+ import type { UpdateUserRequest, UserResponse, SendOtpRequest, OtpSentResponse } from '../types';
14
+
15
+ /**
16
+ * Request type for verifying a user's phone OTP (no name field needed)
17
+ */
18
+ export type UserVerifyPhoneOtpRequest = { phone: string; code: string };
14
19
 
15
20
  // ============================================================================
16
21
  // MUTATION HOOKS
@@ -269,3 +274,56 @@ export function useCompleteOnboarding(
269
274
  ...options,
270
275
  });
271
276
  }
277
+
278
+ /**
279
+ * Send OTP to verify phone number for authenticated user
280
+ *
281
+ * @endpoint POST /api/v1/users/me/phone/send-otp
282
+ *
283
+ * @param options - TanStack Query mutation options
284
+ * @returns TanStack Query mutation result
285
+ */
286
+ export function useSendUserPhoneOtp(
287
+ options?: Omit<UseMutationOptions<OtpSentResponse, Error, SendOtpRequest>, 'mutationFn'>
288
+ ): UseMutationResult<OtpSentResponse, Error, SendOtpRequest> {
289
+ return useMutation({
290
+ mutationFn: async (data: SendOtpRequest): Promise<OtpSentResponse> => {
291
+ const client = getApiClient();
292
+ const response = await client.post<OtpSentResponse>('/api/v1/users/me/phone/send-otp', data);
293
+ return response.data;
294
+ },
295
+ ...options,
296
+ });
297
+ }
298
+
299
+ /**
300
+ * Verify OTP and update phone number for authenticated user
301
+ *
302
+ * @endpoint POST /api/v1/users/me/phone/verify-otp
303
+ *
304
+ * @param options - TanStack Query mutation options
305
+ * @returns TanStack Query mutation result
306
+ */
307
+ export function useVerifyUserPhoneOtp(
308
+ options?: Omit<UseMutationOptions<UserResponse, Error, UserVerifyPhoneOtpRequest>, 'mutationFn'>
309
+ ): UseMutationResult<UserResponse, Error, UserVerifyPhoneOtpRequest> {
310
+ const queryClient = useQueryClient();
311
+
312
+ return useMutation({
313
+ mutationFn: async (data: UserVerifyPhoneOtpRequest): Promise<UserResponse> => {
314
+ const client = getApiClient();
315
+ const response = await client.post<UserResponse>('/api/v1/users/me/phone/verify-otp', data);
316
+ return response.data;
317
+ },
318
+ ...options,
319
+ onSuccess: (data, variables, onMutateResult, context) => {
320
+ queryClient.invalidateQueries({ queryKey: userKeys.me() });
321
+
322
+ if (data.id) {
323
+ queryClient.invalidateQueries({ queryKey: userKeys.detail(data.id) });
324
+ }
325
+
326
+ options?.onSuccess?.(data, variables, onMutateResult, context);
327
+ },
328
+ });
329
+ }
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>