@oxy.so/core 4.6.0 → 4.9.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.
@@ -1,4 +1,65 @@
1
1
  const dict = {
2
+ organizationDirectory: {
3
+ invalidName: 'Use a plain-text organization name (up to 300 characters).',
4
+ review: {
5
+ title: 'Review organization access requests',
6
+ forbidden: 'This action requires current staff authorization.',
7
+ empty: 'No requests are waiting for review.',
8
+ hint: 'Review the supporting evidence independently. Approval grants management access to the existing organization account.',
9
+ independent: 'Another reviewer must decide your own request.',
10
+ evidence: 'Review evidence reference',
11
+ approved: 'Approve access',
12
+ rejected: 'Reject request',
13
+ conflict: 'This request or organization changed. Refresh the queue before making another decision.',
14
+ failed: 'The review could not be saved. Your decision has not been confirmed.',
15
+ },
16
+ title: 'Organization directory',
17
+ search: 'Find your organization',
18
+ searchHint: 'Find an existing organization before creating an account. Its identity is shared across Oxy apps.',
19
+ empty: 'No organizations found.',
20
+ retry: 'Try again',
21
+ loadMore: 'Show more',
22
+ failed: 'Could not load the organization directory.',
23
+ unclaimed: 'Unclaimed',
24
+ claimed: 'Managed organization',
25
+ inactive: 'Inactive',
26
+ newAccount: 'Create a new organization account',
27
+ newAccountHint: 'Create and manage a new organization. Choose an existing entry if your organization is already listed.',
28
+ addDirectory: 'Add to directory',
29
+ directoryHint: 'This creates a shared, unclaimed entry. It does not give you access to manage the organization.',
30
+ added: 'Organization added to the directory',
31
+ back: 'Back to search',
32
+ type: 'Organization type',
33
+ types: {
34
+ business: 'Business',
35
+ nonprofit: 'Nonprofit',
36
+ public_body: 'Public body',
37
+ community: 'Community',
38
+ other: 'Other',
39
+ },
40
+ name: 'Organization name',
41
+ legalName: 'Legal name',
42
+ website: 'Website',
43
+ country: 'Country code',
44
+ save: 'Save organization',
45
+ saved: 'Organization updated',
46
+ invalid: 'Check the organization details. Use a complete website URL and a two-letter country code.',
47
+ saveFailed: 'Could not save the organization. Try again.',
48
+ claim: 'Request management access',
49
+ claimHint: 'Oxy reviews evidence of your authority. A request does not grant access or verify your role.',
50
+ evidence: 'Supporting evidence reference',
51
+ evidenceHint: 'Provide a reference to your private verification case or supporting records. Only you and reviewers can read it.',
52
+ claimSent: 'Request submitted for review',
53
+ claimFailed: 'Could not submit your request. Try again.',
54
+ claimedHint: 'This organization already has managers. Contact a manager to request access.',
55
+ requests: 'Organization access requests',
56
+ pending: 'Pending review',
57
+ approved: 'Approved',
58
+ rejected: 'Rejected',
59
+ requestError: 'Could not load your access requests.',
60
+ view: 'Organization details',
61
+ readonly: 'You do not have permission to edit this organization.',
62
+ },
2
63
  signin: {
3
64
  title: 'Sign in',
4
65
  subtitle: 'Use your Oxy account',
@@ -1373,6 +1434,13 @@ const dict = {
1373
1434
  },
1374
1435
  },
1375
1436
  preferences: {
1437
+ displayCurrency: {
1438
+ label: 'Display currency',
1439
+ saveFailed: 'Could not save display currency. Please try again.',
1440
+ unavailable: 'Equivalent in {{currency}} unavailable',
1441
+ approximate: 'Approx. {{amount}}',
1442
+ estimate: 'Display estimate. The final payable amount is quoted in FAIR at checkout.',
1443
+ },
1376
1444
  title: 'Preferences',
1377
1445
  subtitle: 'Theme, motion, and regional settings',
1378
1446
  sections: {
@@ -1,4 +1,65 @@
1
1
  const dict = {
2
+ organizationDirectory: {
3
+ invalidName: 'Usa un nombre de organización en texto plano (hasta 300 caracteres).',
4
+ review: {
5
+ title: 'Revisar solicitudes de acceso a organizaciones',
6
+ forbidden: 'Esta acción requiere autorización vigente del personal de Oxy.',
7
+ empty: 'No hay solicitudes pendientes de revisión.',
8
+ hint: 'Revisa la documentación de forma independiente. La aprobación concede acceso de administración a la cuenta existente.',
9
+ independent: 'Otro revisor debe decidir sobre tu propia solicitud.',
10
+ evidence: 'Referencia de la documentación de revisión',
11
+ approved: 'Aprobar acceso',
12
+ rejected: 'Rechazar solicitud',
13
+ conflict: 'La solicitud o la organización ha cambiado. Actualiza la lista antes de tomar otra decisión.',
14
+ failed: 'No se pudo guardar la revisión. Tu decisión no se ha confirmado.',
15
+ },
16
+ title: 'Directorio de organizaciones',
17
+ search: 'Busca tu organización',
18
+ searchHint: 'Busca una organización existente antes de crear una cuenta. Su identidad se comparte entre las aplicaciones de Oxy.',
19
+ empty: 'No se encontraron organizaciones.',
20
+ retry: 'Reintentar',
21
+ loadMore: 'Mostrar más',
22
+ failed: 'No se pudo cargar el directorio de organizaciones.',
23
+ unclaimed: 'Sin reclamar',
24
+ claimed: 'Organización administrada',
25
+ inactive: 'Inactiva',
26
+ newAccount: 'Crear una nueva cuenta de organización',
27
+ newAccountHint: 'Crea y administra una organización nueva. Si ya aparece en el directorio, elige la entrada existente.',
28
+ addDirectory: 'Añadir al directorio',
29
+ directoryHint: 'Esto crea una entrada compartida sin reclamar. No te da acceso para administrar la organización.',
30
+ added: 'Organización añadida al directorio',
31
+ back: 'Volver a la búsqueda',
32
+ type: 'Tipo de organización',
33
+ types: {
34
+ business: 'Empresa',
35
+ nonprofit: 'Sin ánimo de lucro',
36
+ public_body: 'Organismo público',
37
+ community: 'Comunidad',
38
+ other: 'Otro',
39
+ },
40
+ name: 'Nombre de la organización',
41
+ legalName: 'Nombre legal',
42
+ website: 'Sitio web',
43
+ country: 'Código de país',
44
+ save: 'Guardar organización',
45
+ saved: 'Organización actualizada',
46
+ invalid: 'Revisa los datos. Usa una URL completa y un código de país de dos letras.',
47
+ saveFailed: 'No se pudo guardar la organización. Inténtalo de nuevo.',
48
+ claim: 'Solicitar acceso de administración',
49
+ claimHint: 'Oxy revisará las pruebas de tu autorización. Una solicitud no concede acceso ni verifica tu cargo.',
50
+ evidence: 'Referencia de la documentación',
51
+ evidenceHint: 'Indica una referencia a tu expediente privado de verificación o documentación acreditativa. Solo tú y los revisores podéis verla.',
52
+ claimSent: 'Solicitud enviada para revisión',
53
+ claimFailed: 'No se pudo enviar la solicitud. Inténtalo de nuevo.',
54
+ claimedHint: 'Esta organización ya tiene administradores. Contacta con uno para solicitar acceso.',
55
+ requests: 'Solicitudes de acceso a organizaciones',
56
+ pending: 'Pendiente de revisión',
57
+ approved: 'Aprobada',
58
+ rejected: 'Rechazada',
59
+ requestError: 'No se pudieron cargar tus solicitudes.',
60
+ view: 'Datos de la organización',
61
+ readonly: 'No tienes permiso para editar esta organización.',
62
+ },
2
63
  signin: {
3
64
  title: 'Iniciar sesión',
4
65
  subtitle: 'Usa tu cuenta de Oxy',
@@ -1373,6 +1434,13 @@ const dict = {
1373
1434
  },
1374
1435
  },
1375
1436
  preferences: {
1437
+ displayCurrency: {
1438
+ label: 'Moneda mostrada',
1439
+ saveFailed: 'No se ha podido guardar la moneda. Inténtalo de nuevo.',
1440
+ unavailable: 'Equivalencia en {{currency}} no disponible',
1441
+ approximate: 'Aprox. {{amount}}',
1442
+ estimate: 'Importe orientativo. El importe final se cotiza en FAIR al pagar.',
1443
+ },
1376
1444
  title: 'Preferencias',
1377
1445
  subtitle: 'Tema, movimiento y configuración regional',
1378
1446
  sections: {
@@ -1,3 +1,4 @@
1
+ import { SafetyApi } from './api/safety';
1
2
  /**
2
3
  * `OxyServices` — the Oxy API client.
3
4
  *
@@ -31,6 +32,7 @@ import { PrivacyApi } from './api/privacy';
31
32
  import { NotificationsApi } from './api/notifications';
32
33
  import { AssetsApi } from './api/assets';
33
34
  import { IdentityApi } from './api/identity';
35
+ import { OrganizationsApi } from './api/organizations';
34
36
  import { AccountsApi } from './api/accounts';
35
37
  import { AppsApi } from './api/apps';
36
38
  import { LinkedAccountsApi } from './api/linkedAccounts';
@@ -116,6 +118,8 @@ export declare class OxyServices {
116
118
  private _assets?;
117
119
  private _identity?;
118
120
  private _accounts?;
121
+ private _organizations?;
122
+ private _safety?;
119
123
  private _apps?;
120
124
  private _linkedAccounts?;
121
125
  private _agency?;
@@ -145,6 +149,8 @@ export declare class OxyServices {
145
149
  /** DID, keys, identity links, domains, backup and the signed export. */
146
150
  get identity(): IdentityApi;
147
151
  /** The account graph: accounts and their members. */
152
+ get safety(): SafetyApi;
153
+ get organizations(): OrganizationsApi;
148
154
  get accounts(): AccountsApi;
149
155
  /** Applications an account owns, and the ones this user granted access. */
150
156
  get apps(): AppsApi;
@@ -1,3 +1,4 @@
1
+ import type { OrganizationType } from '@oxy.so/contracts';
1
2
  /**
2
3
  * `oxy.accounts` — the unified account graph (`/accounts`).
3
4
  *
@@ -193,6 +194,7 @@ export interface CreateAccountInput {
193
194
  * keep working. At most `MAX_ACCOUNT_CATEGORIES`, no duplicates.
194
195
  */
195
196
  accountCategories?: AccountCategoryId[];
197
+ organizationType?: OrganizationType;
196
198
  /**
197
199
  * Create the account already opted OUT of discovery — kept out of people
198
200
  * search, the follow-graph lists, `/similar` and the recommendation pools,
@@ -261,6 +263,7 @@ export interface UpdateAccountInput {
261
263
  * every other field here (`account:update`).
262
264
  */
263
265
  character?: AvatarCharacter;
266
+ organizationType?: OrganizationType;
264
267
  }
265
268
  /** Input accepted by `accounts.members.invite`. The owner role cannot be invited. */
266
269
  export interface InviteAccountMemberInput {
@@ -333,7 +336,8 @@ export declare class AccountMembersApi {
333
336
  */
334
337
  list(accountId: string): Promise<AccountMember[]>;
335
338
  /**
336
- * Add a member to an account.
339
+ * @deprecated The API returns 410. Use accounts.invitations.create with an email.
340
+ * Access is granted only after recipient confirmation.
337
341
  * @param accountId - The account's `_id`.
338
342
  * @param data - Target user's username or email and role (never `owner`).
339
343
  * The server resolves `usernameOrEmail` to a personal account; an unknown
@@ -390,10 +394,46 @@ export declare class AccountAgentKeysApi {
390
394
  revokedMethodIds: string[];
391
395
  }>;
392
396
  }
397
+ export interface AccountInvitation {
398
+ id: string;
399
+ accountId: string;
400
+ email: string;
401
+ role: Exclude<AccountRole, 'owner'>;
402
+ status: 'pending' | 'expired' | 'accepted' | 'cancelled';
403
+ expiresAt: string;
404
+ createdAt: string;
405
+ }
406
+ export interface AccountInvitationPreview {
407
+ invitation: AccountInvitation;
408
+ account: {
409
+ id: string;
410
+ username: string | null;
411
+ displayName: string | null;
412
+ };
413
+ }
414
+ /** Consent-based invitations; never cached or queued as offline mutations. */
415
+ export declare class AccountInvitationsApi {
416
+ private readonly ctx;
417
+ constructor(ctx: OxyContext);
418
+ list(accountId: string): Promise<AccountInvitation[]>;
419
+ create(accountId: string, data: {
420
+ email: string;
421
+ role: Exclude<AccountRole, 'owner'>;
422
+ inherit?: boolean;
423
+ }): Promise<AccountInvitation>;
424
+ resend(accountId: string, id: string): Promise<AccountInvitation>;
425
+ cancel(accountId: string, id: string): Promise<AccountSuccessResult>;
426
+ preview(token: string): Promise<AccountInvitationPreview>;
427
+ /** selectedUserId must equal the currently authenticated personal account. */
428
+ accept(token: string, selectedUserId: string): Promise<AccountSuccessResult & {
429
+ accountId: string;
430
+ }>;
431
+ }
393
432
  export declare class AccountsApi {
394
433
  private readonly ctx;
395
434
  /** Who can act on an account, and with what role. */
396
435
  readonly members: AccountMembersApi;
436
+ readonly invitations: AccountInvitationsApi;
397
437
  readonly agentKeys: AccountAgentKeysApi;
398
438
  constructor(ctx: OxyContext);
399
439
  /**
@@ -1,4 +1,4 @@
1
- import { type PersonalPlanCheckoutRequest, type PersonalPlanCheckoutResult } from '@oxy.so/contracts';
1
+ import { type ProductSubscriptionRenewalRequest, type ProductPlanCheckoutRequest, type ProductPlanCatalogue, type PersonalPlanCheckoutRequest, type PersonalPlanCheckoutResult } from '@oxy.so/contracts';
2
2
  /**
3
3
  * `oxy.billing` — the signed-in user's subscription, wallet and payment history.
4
4
  *
@@ -101,6 +101,9 @@ export interface WalletTransactionsPage {
101
101
  export declare class BillingApi {
102
102
  protected readonly ctx: OxyContext;
103
103
  constructor(ctx: OxyContext);
104
+ renewProductSubscription(request: ProductSubscriptionRenewalRequest): Promise<PersonalPlanCheckoutResult>;
105
+ startProductPlanCheckout(request: ProductPlanCheckoutRequest): Promise<PersonalPlanCheckoutResult>;
106
+ productPlans(productId: string): Promise<ProductPlanCatalogue>;
104
107
  startPersonalPlanCheckout(request: PersonalPlanCheckoutRequest): Promise<PersonalPlanCheckoutResult>;
105
108
  /** Public versioned personal plans. Discovery never proves customer access. */
106
109
  personalPlans(): Promise<PersonalPlanCatalogue>;
@@ -0,0 +1,246 @@
1
+ import { type OrganizationCuration, type OrganizationImportBatch, type OrganizationClaimListQuery, type CreateOrganization, type OrganizationSearch, type UpdateOrganization, type OrganizationClaimInput, type OrganizationClaimReview, type OrganizationExternalInput, type OrganizationMerge } from '@oxy.so/contracts';
2
+ import type { OxyContext } from '../client/context';
3
+ /** The public canonical organization directory. Claiming changes authority, never identity. */
4
+ export declare class OrganizationsApi {
5
+ private readonly ctx;
6
+ constructor(ctx: OxyContext);
7
+ search(input: OrganizationSearch): Promise<{
8
+ items: {
9
+ status: "active" | "inactive" | "merged" | "suppressed";
10
+ name: string;
11
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
12
+ legalName: string | null;
13
+ websiteUrl: string | null;
14
+ countryCode: string | null;
15
+ aliases: {
16
+ alias: string;
17
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
18
+ language?: string | undefined;
19
+ }[];
20
+ accountId: string;
21
+ username: string | null;
22
+ avatar: string | null;
23
+ verifiedDomains: string[];
24
+ claimStatus: "unclaimed" | "claimed";
25
+ mergedIntoAccountId: string | null;
26
+ createdAt: string;
27
+ updatedAt: string;
28
+ }[];
29
+ nextCursor: string | null;
30
+ }>;
31
+ get(accountId: string): Promise<{
32
+ status: "active" | "inactive" | "merged" | "suppressed";
33
+ name: string;
34
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
35
+ legalName: string | null;
36
+ websiteUrl: string | null;
37
+ countryCode: string | null;
38
+ aliases: {
39
+ alias: string;
40
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
41
+ language?: string | undefined;
42
+ }[];
43
+ accountId: string;
44
+ username: string | null;
45
+ avatar: string | null;
46
+ verifiedDomains: string[];
47
+ claimStatus: "unclaimed" | "claimed";
48
+ mergedIntoAccountId: string | null;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ }>;
52
+ batch(input: {
53
+ ids: string[];
54
+ }): Promise<{
55
+ items: {
56
+ requestedAccountId: string;
57
+ organization: {
58
+ status: "active" | "inactive" | "merged" | "suppressed";
59
+ name: string;
60
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
61
+ legalName: string | null;
62
+ websiteUrl: string | null;
63
+ countryCode: string | null;
64
+ aliases: {
65
+ alias: string;
66
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
67
+ language?: string | undefined;
68
+ }[];
69
+ accountId: string;
70
+ username: string | null;
71
+ avatar: string | null;
72
+ verifiedDomains: string[];
73
+ claimStatus: "unclaimed" | "claimed";
74
+ mergedIntoAccountId: string | null;
75
+ createdAt: string;
76
+ updatedAt: string;
77
+ };
78
+ }[];
79
+ missingIds: string[];
80
+ }>;
81
+ create(input: CreateOrganization): Promise<{
82
+ status: "active" | "inactive" | "merged" | "suppressed";
83
+ name: string;
84
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
85
+ legalName: string | null;
86
+ websiteUrl: string | null;
87
+ countryCode: string | null;
88
+ aliases: {
89
+ alias: string;
90
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
91
+ language?: string | undefined;
92
+ }[];
93
+ accountId: string;
94
+ username: string | null;
95
+ avatar: string | null;
96
+ verifiedDomains: string[];
97
+ claimStatus: "unclaimed" | "claimed";
98
+ mergedIntoAccountId: string | null;
99
+ createdAt: string;
100
+ updatedAt: string;
101
+ }>;
102
+ update(accountId: string, input: UpdateOrganization): Promise<{
103
+ status: "active" | "inactive" | "merged" | "suppressed";
104
+ name: string;
105
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
106
+ legalName: string | null;
107
+ websiteUrl: string | null;
108
+ countryCode: string | null;
109
+ aliases: {
110
+ alias: string;
111
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
112
+ language?: string | undefined;
113
+ }[];
114
+ accountId: string;
115
+ username: string | null;
116
+ avatar: string | null;
117
+ verifiedDomains: string[];
118
+ claimStatus: "unclaimed" | "claimed";
119
+ mergedIntoAccountId: string | null;
120
+ createdAt: string;
121
+ updatedAt: string;
122
+ }>;
123
+ claim(accountId: string, input: OrganizationClaimInput): Promise<{
124
+ status: "pending" | "approved" | "rejected";
125
+ accountId: string;
126
+ createdAt: string;
127
+ id: string;
128
+ claimantUserId: string;
129
+ }>;
130
+ myClaims(input?: OrganizationClaimListQuery): Promise<{
131
+ items: {
132
+ status: "pending" | "approved" | "rejected";
133
+ accountId: string;
134
+ createdAt: string;
135
+ evidenceReference: string;
136
+ id: string;
137
+ claimantUserId: string;
138
+ reviewEvidenceReference: string | null;
139
+ reviewedAt: string | null;
140
+ }[];
141
+ nextCursor: string | null;
142
+ }>;
143
+ myClaim(claimId: string): Promise<{
144
+ status: "pending" | "approved" | "rejected";
145
+ accountId: string;
146
+ createdAt: string;
147
+ evidenceReference: string;
148
+ id: string;
149
+ claimantUserId: string;
150
+ reviewEvidenceReference: string | null;
151
+ reviewedAt: string | null;
152
+ }>;
153
+ reviewClaims(input?: OrganizationClaimListQuery): Promise<{
154
+ items: {
155
+ status: "pending" | "approved" | "rejected";
156
+ accountId: string;
157
+ createdAt: string;
158
+ evidenceReference: string;
159
+ id: string;
160
+ claimantUserId: string;
161
+ reviewEvidenceReference: string | null;
162
+ reviewedAt: string | null;
163
+ }[];
164
+ nextCursor: string | null;
165
+ }>;
166
+ reviewClaimDetail(claimId: string): Promise<{
167
+ status: "pending" | "approved" | "rejected";
168
+ accountId: string;
169
+ createdAt: string;
170
+ evidenceReference: string;
171
+ id: string;
172
+ claimantUserId: string;
173
+ reviewEvidenceReference: string | null;
174
+ reviewedAt: string | null;
175
+ }>;
176
+ reviewClaim(claimId: string, input: OrganizationClaimReview): Promise<{
177
+ status: "pending" | "approved" | "rejected";
178
+ accountId: string;
179
+ createdAt: string;
180
+ id: string;
181
+ claimantUserId: string;
182
+ }>;
183
+ importBatch(input: OrganizationImportBatch): Promise<{
184
+ items: {
185
+ accountId: string;
186
+ externalId: string;
187
+ created: boolean;
188
+ }[];
189
+ }>;
190
+ importExternal(input: OrganizationExternalInput): Promise<{
191
+ accountId: string;
192
+ created: boolean;
193
+ }>;
194
+ resolveExternal(input: {
195
+ namespace: string;
196
+ externalId: string;
197
+ }): Promise<{
198
+ accountId: string;
199
+ }>;
200
+ curate(accountId: string, input: OrganizationCuration): Promise<{
201
+ status: "active" | "inactive" | "suppressed";
202
+ accountId: string;
203
+ }>;
204
+ merge(accountId: string, input: OrganizationMerge): Promise<{
205
+ status: "active" | "inactive" | "merged" | "suppressed";
206
+ name: string;
207
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
208
+ legalName: string | null;
209
+ websiteUrl: string | null;
210
+ countryCode: string | null;
211
+ aliases: {
212
+ alias: string;
213
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
214
+ language?: string | undefined;
215
+ }[];
216
+ accountId: string;
217
+ username: string | null;
218
+ avatar: string | null;
219
+ verifiedDomains: string[];
220
+ claimStatus: "unclaimed" | "claimed";
221
+ mergedIntoAccountId: string | null;
222
+ createdAt: string;
223
+ updatedAt: string;
224
+ }>;
225
+ iterate(input: OrganizationSearch): AsyncGenerator<{
226
+ status: "active" | "inactive" | "merged" | "suppressed";
227
+ name: string;
228
+ organizationType: "business" | "nonprofit" | "public_body" | "community" | "other";
229
+ legalName: string | null;
230
+ websiteUrl: string | null;
231
+ countryCode: string | null;
232
+ aliases: {
233
+ alias: string;
234
+ kind: "name_variant" | "former_name" | "localized_name" | "marketing_name" | "misspelling";
235
+ language?: string | undefined;
236
+ }[];
237
+ accountId: string;
238
+ username: string | null;
239
+ avatar: string | null;
240
+ verifiedDomains: string[];
241
+ claimStatus: "unclaimed" | "claimed";
242
+ mergedIntoAccountId: string | null;
243
+ createdAt: string;
244
+ updatedAt: string;
245
+ }, void, unknown>;
246
+ }
@@ -0,0 +1,14 @@
1
+ import { type ProfileAccessInput } from '@oxy.so/contracts';
2
+ import type { OxyContext } from '../client/context';
3
+ export declare class SafetyApi {
4
+ private readonly ctx;
5
+ constructor(ctx: OxyContext);
6
+ /** Server callers must explicitly supply the incoming user bearer or null for anonymous access. */
7
+ profileAccess(input: ProfileAccessInput, options?: {
8
+ accessToken: string | null;
9
+ }): Promise<{
10
+ allowed: boolean;
11
+ reason: "unavailable" | "owner" | "public" | "private" | "blocked";
12
+ policyVersion: "1";
13
+ }>;
14
+ }
@@ -1,4 +1,65 @@
1
1
  declare const dict: {
2
+ organizationDirectory: {
3
+ invalidName: string;
4
+ review: {
5
+ title: string;
6
+ forbidden: string;
7
+ empty: string;
8
+ hint: string;
9
+ independent: string;
10
+ evidence: string;
11
+ approved: string;
12
+ rejected: string;
13
+ conflict: string;
14
+ failed: string;
15
+ };
16
+ title: string;
17
+ search: string;
18
+ searchHint: string;
19
+ empty: string;
20
+ retry: string;
21
+ loadMore: string;
22
+ failed: string;
23
+ unclaimed: string;
24
+ claimed: string;
25
+ inactive: string;
26
+ newAccount: string;
27
+ newAccountHint: string;
28
+ addDirectory: string;
29
+ directoryHint: string;
30
+ added: string;
31
+ back: string;
32
+ type: string;
33
+ types: {
34
+ business: string;
35
+ nonprofit: string;
36
+ public_body: string;
37
+ community: string;
38
+ other: string;
39
+ };
40
+ name: string;
41
+ legalName: string;
42
+ website: string;
43
+ country: string;
44
+ save: string;
45
+ saved: string;
46
+ invalid: string;
47
+ saveFailed: string;
48
+ claim: string;
49
+ claimHint: string;
50
+ evidence: string;
51
+ evidenceHint: string;
52
+ claimSent: string;
53
+ claimFailed: string;
54
+ claimedHint: string;
55
+ requests: string;
56
+ pending: string;
57
+ approved: string;
58
+ rejected: string;
59
+ requestError: string;
60
+ view: string;
61
+ readonly: string;
62
+ };
2
63
  signin: {
3
64
  title: string;
4
65
  subtitle: string;
@@ -1364,6 +1425,13 @@ declare const dict: {
1364
1425
  };
1365
1426
  };
1366
1427
  preferences: {
1428
+ displayCurrency: {
1429
+ label: string;
1430
+ saveFailed: string;
1431
+ unavailable: string;
1432
+ approximate: string;
1433
+ estimate: string;
1434
+ };
1367
1435
  title: string;
1368
1436
  subtitle: string;
1369
1437
  sections: {