@global-torque/domain-types 0.2.2

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.
@@ -0,0 +1,204 @@
1
+ import type {
2
+ IOffer,
3
+ IOfferFormatted,
4
+ } from './offerTypes.ts';
5
+ import type { VaultPosition } from './vaultTypes.ts';
6
+
7
+ export const FundingTypes = {
8
+ ach: 'ach',
9
+ wire: 'wire',
10
+ wallet: 'wallet',
11
+ cryptoWallet: 'crypto_wallet',
12
+ } as const;
13
+
14
+ export type FundingTypes = typeof FundingTypes[keyof typeof FundingTypes];
15
+
16
+ export const InvestStepTypes = {
17
+ amount: 'amount',
18
+ ownership: 'ownership',
19
+ signature: 'signature',
20
+ funding: 'funding',
21
+ review: 'review',
22
+ } as const;
23
+
24
+ export type InvestStepTypes = typeof InvestStepTypes[keyof typeof InvestStepTypes];
25
+
26
+ export const InvestmentStatuses = {
27
+ confirmed: 'confirmed',
28
+ legally_confirmed: 'legally_confirmed',
29
+ closed_successfully: 'closed_successfully',
30
+ cancelled_after_investment: 'cancelled_after_investment',
31
+ } as const;
32
+
33
+ export type InvestmentStatuses = typeof InvestmentStatuses[keyof typeof InvestmentStatuses];
34
+
35
+ export interface IInvestPaymentData {
36
+ account_type: string;
37
+ account_number: string;
38
+ routing_number: string;
39
+ account_holder_name: string;
40
+ created_at?: Date;
41
+ updated_at?: Date;
42
+ transaction_id: string;
43
+ }
44
+
45
+ export interface ISignatureData {
46
+ created_at: string;
47
+ signature_id: string;
48
+ entity_id: string;
49
+ provider: string;
50
+ ip_address: string;
51
+ user_browser: string;
52
+ signed_by_investor: boolean;
53
+ }
54
+
55
+ export const InvestFundingStatuses = {
56
+ none: 'none',
57
+ creation_error: 'creation_error',
58
+ new: 'new',
59
+ initialize: 'initialize',
60
+ in_progress: 'in_progress',
61
+ received: 'received',
62
+ settled: 'settled',
63
+ sent_back_pending: 'sent_back_pending',
64
+ sent_back_settled: 'sent_back_settled',
65
+ failed: 'failed',
66
+ canceled: 'canceled',
67
+ cancelled: 'cancelled',
68
+ error: 'error',
69
+ } as const;
70
+
71
+ export type InvestFundingStatuses = typeof InvestFundingStatuses[keyof typeof InvestFundingStatuses];
72
+
73
+ export interface IEscrowData {
74
+ pr_name: string;
75
+ transaction_id: string;
76
+ pr_approval_date: string;
77
+ pr_approval_status: string;
78
+ }
79
+
80
+ export interface IInvestment {
81
+ closed_at: Date;
82
+ id: number;
83
+ offer: IOffer;
84
+ profile_id: number;
85
+ user_id: number;
86
+ price_per_share: string;
87
+ number_of_shares: string | null;
88
+ amount: number;
89
+ step: InvestStepTypes;
90
+ status: InvestmentStatuses;
91
+ created_at: Date;
92
+ submited_at: Date;
93
+ funding_type: FundingTypes;
94
+ funding_status: InvestFundingStatuses;
95
+ signature_data: ISignatureData;
96
+ escrow_data: IEscrowData;
97
+ payment_data: IInvestPaymentData;
98
+ payment_type: string;
99
+ escrow_type: string;
100
+ entity_id: string;
101
+ transaction_ref: string;
102
+ notes?: string;
103
+ deposit_price_source?: 'offer_deck' | 'finalized_nav' | 'chain_forward_nav' | null;
104
+ deposit_price_usdc_raw?: string | null;
105
+ deposit_nav_record_id?: number | null;
106
+ deposit_nav_version?: number | null;
107
+ deposit_priced_at?: string | null;
108
+ asset_amount_raw?: string | null;
109
+ share_amount_raw?: string | null;
110
+ vault?: VaultPosition['vault'] | null;
111
+ }
112
+
113
+ export interface IInvestmentFormatted extends IInvestment {
114
+ offer: IOfferFormatted;
115
+ amountFormatted: string;
116
+ amountFormattedZero: string;
117
+ amountWithSign: string;
118
+ numberOfSharesFormatted: string;
119
+ pricePerShareFormatted: string;
120
+ createdAtFormatted: string;
121
+ createdAtTime: string;
122
+ submitedAtFormatted: string;
123
+ submitedAtTime: string;
124
+ paymentDataCreatedAtFormatted: string;
125
+ paymentDataCreatedAtTime: string;
126
+ paymentDataUpdatedAtFormatted: string;
127
+ paymentDataUpdatedAtTime: string;
128
+ fundingStatusFormatted: string;
129
+ fundingTypeFormatted: string;
130
+ isFundingTypeWire: boolean;
131
+ statusFormatted: {
132
+ text: string;
133
+ tooltip?: string;
134
+ color: string;
135
+ };
136
+ isActive: boolean;
137
+ isCompleted: boolean;
138
+ isCancelled: boolean;
139
+ isPending: boolean;
140
+ isFundingClickable: boolean;
141
+ }
142
+
143
+ export interface IInvestmentsData {
144
+ meta: {
145
+ avarange_annual: number;
146
+ total_distributions: number;
147
+ total_investments_12_months: number;
148
+ total_investments: number;
149
+ };
150
+ count: number;
151
+ data: IInvestmentFormatted[];
152
+ }
153
+
154
+ /** Raw API response for confirmed investments list before formatting. */
155
+ export interface IInvestmentsDataRaw {
156
+ meta: IInvestmentsData['meta'];
157
+ count: number;
158
+ data: IInvestment[];
159
+ }
160
+
161
+ export interface IInvestUnconfirmed {
162
+ count: number;
163
+ data: (IInvestment | IInvestmentFormatted)[];
164
+ }
165
+
166
+ export interface IInvestConfirm {
167
+ investment: IInvestmentFormatted;
168
+ replayed?: boolean;
169
+ }
170
+
171
+ export interface IInvestFunding {
172
+ funding_type: FundingTypes;
173
+ payment_data?: {
174
+ account_number: string;
175
+ routing_number: string;
176
+ account_holder_name: string;
177
+ account_type: string;
178
+ };
179
+ }
180
+
181
+ export const InvestmentDocumentsTypes = {
182
+ agreement: 'agreement',
183
+ tax_document: 'tax document',
184
+ offer_document: 'offer document',
185
+ } as const;
186
+
187
+ export type InvestmentDocumentsTypes = typeof InvestmentDocumentsTypes[keyof typeof InvestmentDocumentsTypes];
188
+
189
+ export interface IInvestmentDocuments {
190
+ id: number;
191
+ url: string;
192
+ name: string;
193
+ filename: string;
194
+ mime: string;
195
+ bucket_path: string;
196
+ updated_at: string;
197
+ meta_data: {
198
+ big: string;
199
+ small: string;
200
+ medium: string;
201
+ size: number;
202
+ };
203
+ type: InvestmentDocumentsTypes;
204
+ }
@@ -0,0 +1,44 @@
1
+ export const InvestKycTypes = {
2
+ none: 'none',
3
+ new: 'new',
4
+ pending: 'pending',
5
+ approved: 'approved',
6
+ declined: 'declined',
7
+ in_progress: 'in_progress',
8
+ } as const;
9
+
10
+ export type InvestKycTypes = typeof InvestKycTypes[keyof typeof InvestKycTypes];
11
+
12
+ export interface IKycTokenResponse {
13
+ expiration: string;
14
+ link_token: string;
15
+ request_id: string;
16
+ }
17
+
18
+ export interface IKycIdentity {
19
+ id: string;
20
+ status: string;
21
+ created_at: string;
22
+ updated_at: string;
23
+ }
24
+
25
+ export interface IKycData {
26
+ completed_at: string;
27
+ created_at: string;
28
+ status: InvestKycTypes;
29
+ }
30
+
31
+ export interface IKycProfile {
32
+ id: number;
33
+ user_id: number;
34
+ kyc_status: InvestKycTypes;
35
+ kyc_data: IKycData[];
36
+ created_at: string;
37
+ updated_at: string;
38
+ }
39
+
40
+ export type KycPlaidLaunchStatus = 'success' | 'exit';
41
+
42
+ export interface KycPlaidLaunchResult {
43
+ status: KycPlaidLaunchStatus;
44
+ }
@@ -0,0 +1,95 @@
1
+ import type { AccreditationTypes } from './accreditationTypes.ts';
2
+ import type { InvestKycTypes } from './kycTypes.ts';
3
+ import type { IProfileIndividual } from './profilesTypes.ts';
4
+
5
+ export interface INotificationToken {
6
+ address: string;
7
+ id: number;
8
+ name: string;
9
+ offer_id: number;
10
+ symbol?: string;
11
+ decimals?: number;
12
+ standard?: string;
13
+ chain?: string;
14
+ balance_type?: 'rwa_asset' | 'tradable_crypto';
15
+ }
16
+
17
+ export interface INotificationDataFields {
18
+ kyc_status?: InvestKycTypes;
19
+ accreditation_status?: AccreditationTypes;
20
+ funding_status?: string;
21
+ status?: string;
22
+ object_id?: number | string;
23
+ source_file_id?: number | string;
24
+ address?: string;
25
+ amount?: string;
26
+ balance?: number;
27
+ inc_balance?: number;
28
+ out_balance?: number;
29
+ profile?: IProfileIndividual;
30
+ confirmed_shares?: string;
31
+ subscribed_shares?: string;
32
+ type: string;
33
+ transaction_tx?: string;
34
+ created_at?: string;
35
+ updated_at?: string;
36
+ investment_id?: number | null;
37
+ offer_id?: number | null;
38
+ network?: string;
39
+ chain?: string;
40
+ balance_type?: 'rwa_asset' | 'tradable_crypto';
41
+ token?: INotificationToken;
42
+ operation_effects?: {
43
+ effect_id?: number | string;
44
+ chain_account_id?: number | string;
45
+ effect_kind?: string;
46
+ effect_index?: number | string;
47
+ } | null;
48
+ signature_data?: {
49
+ signature_id?: number | string;
50
+ entity_id?: string;
51
+ provider?: string;
52
+ created_at?: string;
53
+ updated_at?: string;
54
+ [key: string]: unknown;
55
+ };
56
+ }
57
+
58
+ interface INotificationData {
59
+ obj: string;
60
+ object_id: number;
61
+ fields: INotificationDataFields;
62
+ }
63
+
64
+ export interface INotification {
65
+ id: number;
66
+ user_id: number;
67
+ content: string;
68
+ data: INotificationData;
69
+ status: string;
70
+ type: string;
71
+ created_at: string;
72
+ updated_at: string;
73
+ }
74
+
75
+ export interface IFormattedNotification extends INotification {
76
+ isNotificationInvestment: boolean;
77
+ isNotificationDocument: boolean;
78
+ isNotificationSystem: boolean;
79
+ isNotificationWallet: boolean;
80
+ isNotificationProfile: boolean;
81
+ isNotificationUser: boolean;
82
+ objectId: number;
83
+ profileId: number;
84
+ kycDeclined: boolean;
85
+ accreditationDeclined: boolean;
86
+ accreditationExpired: boolean;
87
+ isStart: boolean;
88
+ isFundsFailed: boolean;
89
+ tagBackground: string;
90
+ buttonText: string;
91
+ tagText: string;
92
+ isUnread: boolean;
93
+ buttonTo: string;
94
+ buttonHref: string;
95
+ }
@@ -0,0 +1,48 @@
1
+ export interface VOfferCardData {
2
+ id?: number | string;
3
+ name?: string;
4
+ slug?: string;
5
+ seo_description?: string;
6
+ href?: string;
7
+ imageMedium?: string;
8
+ imageSmall?: string;
9
+ imageBig?: string;
10
+ imageSrc?: string;
11
+ imageSrcset?: string;
12
+ imageSizes?: string;
13
+ isDefaultImage?: boolean;
14
+ minInvestmentFormatted?: string;
15
+ targetRaiseFormatted?: string;
16
+ pricePerShareFormatted?: string;
17
+ isOpenEnded?: boolean;
18
+ securityTypeFormatted?: string;
19
+ interestRateFormatted?: string;
20
+ dividendRateFormatted?: string;
21
+ votingRightsFormatted?: string;
22
+ isSecurityTypeDebt?: boolean;
23
+ isSecurityTypeConvertibleDebt?: boolean;
24
+ isSecurityTypeConvertibleNote?: boolean;
25
+ isSecurityTypeEquity?: boolean;
26
+ isSecurityTypePreferredEquity?: boolean;
27
+ isStatusClosedSuccessfully?: boolean;
28
+ tagText?: string;
29
+ tagBackground?: string;
30
+ showTag?: boolean;
31
+ actionLabel?: string;
32
+ }
33
+
34
+ export type VOfferHrefResolver<TOffer extends VOfferCardData = VOfferCardData> = (
35
+ offer: TOffer
36
+ ) => string | undefined;
37
+
38
+ export function getDefaultOfferHref(offer?: VOfferCardData): string | undefined {
39
+ if (!offer) {
40
+ return undefined;
41
+ }
42
+
43
+ if (offer.href) {
44
+ return offer.href;
45
+ }
46
+
47
+ return offer.slug ? `/${offer.slug}` : undefined;
48
+ }
@@ -0,0 +1,275 @@
1
+ export const OfferStatuses = {
2
+ new: 'new',
3
+ draft: 'draft',
4
+ legal_review: 'legal_review',
5
+ legal_accepted: 'legal_accepted',
6
+ legal_declined: 'legal_declined',
7
+ published: 'published',
8
+ legal_closed: 'legal_closed',
9
+ closed_successfully: 'closed_successfully',
10
+ closed_unsuccessfully: 'closed_unsuccessfully',
11
+ } as const;
12
+
13
+ export type OfferStatuses = typeof OfferStatuses[keyof typeof OfferStatuses];
14
+
15
+ export const PaymentScheduleTypes = {
16
+ interest_only_monthly: 'Interest-Only Monthly',
17
+ interest_only_quarterly: 'Interest-Only Quarterly',
18
+ fully_amortizing_monthly: 'Fully Amortizing Monthly',
19
+ all_at_maturity: 'All at Maturity',
20
+ principal_at_maturity: 'Principal at Maturity',
21
+ } as const;
22
+
23
+ export type PaymentScheduleTypes = typeof PaymentScheduleTypes[keyof typeof PaymentScheduleTypes];
24
+
25
+ export const VotingRightsTypes = {
26
+ one_vote_per_share: '1 Vote per Share',
27
+ no_voting_rights: 'No Voting Rights',
28
+ other: 'Other',
29
+ } as const;
30
+
31
+ export type VotingRightsTypes = typeof VotingRightsTypes[keyof typeof VotingRightsTypes];
32
+
33
+ export const DividendType = {
34
+ none: 'None',
35
+ cumulative: 'Cumulative',
36
+ non_cumulative: 'Non-Cumulative',
37
+ } as const;
38
+
39
+ export type DividendType = typeof DividendType[keyof typeof DividendType];
40
+
41
+ export const DividendFrequencyTypes = {
42
+ annually: 'Annually',
43
+ quarterly: 'Quarterly',
44
+ at_discretion_of_board: 'At Discretion of Board',
45
+ } as const;
46
+
47
+ export type DividendFrequencyTypes = typeof DividendFrequencyTypes[keyof typeof DividendFrequencyTypes];
48
+
49
+ export const SecurityType = {
50
+ equity: 'Equity',
51
+ 'preferred-equity': 'Preferred Equity',
52
+ debt: 'Debt',
53
+ equity_warrants: 'Equity Warrants',
54
+ preference_shares: 'Preference Shares',
55
+ convertible_bonds: 'Convertible Bonds',
56
+ convertible_debt: 'Convertible Debt',
57
+ 'convertible-note': 'Convertible Note',
58
+ } as const;
59
+
60
+ export type SecurityType = typeof SecurityType[keyof typeof SecurityType];
61
+
62
+ export const OfferDocumentsObjectTypes = {
63
+ company: 'company',
64
+ investment_agreements: 'investment-agreements',
65
+ tax: 'tax',
66
+ } as const;
67
+
68
+ export type OfferDocumentsObjectTypes = typeof OfferDocumentsObjectTypes[keyof typeof OfferDocumentsObjectTypes];
69
+
70
+ export interface IOfferInfoData {
71
+ wire_to: string;
72
+ swift_id: string;
73
+ custodian: string;
74
+ account_number: string;
75
+ routing_number: string;
76
+ apy: string;
77
+ distribution_frequency: string;
78
+ investment_strategy: string;
79
+ estimated_hold_period: string;
80
+ video?: string;
81
+ }
82
+
83
+ export interface ISecurityInfo {
84
+ voting_rights?: string;
85
+ liquidation_preference?: string;
86
+ dividend_type?: string;
87
+ dividend_rate?: string;
88
+ dividend_payment_frequency?: string;
89
+ cn_valuation_cap?: string;
90
+ cn_discount_rate?: string;
91
+ cn_interest_rate?: string;
92
+ cn_maturity_date?: string;
93
+ interest_rate_apy?: string;
94
+ debt_payment_schedule?: string;
95
+ debt_maturity_date?: string;
96
+ debt_interest_rate?: string;
97
+ debt_term_length?: string;
98
+ debt_term_unit?: string;
99
+ pre_money_valuation?: number;
100
+ }
101
+
102
+ export interface OfferOnChainSummary {
103
+ network: string;
104
+ custody?: {
105
+ address?: string | null;
106
+ explorer_url?: string;
107
+ };
108
+ asset_token?: {
109
+ standard: 'ERC-20' | 'ERC-7943' | 'unknown';
110
+ symbol: string;
111
+ name: string;
112
+ address: string | null;
113
+ decimals?: number;
114
+ explorer_url?: string;
115
+ };
116
+ vault?: {
117
+ standard: string;
118
+ address?: string | null;
119
+ explorer_url?: string;
120
+ share_decimals?: number;
121
+ share_symbol?: string;
122
+ };
123
+ latest_finalized_nav?: {
124
+ id: number;
125
+ version: number;
126
+ nav_usdc_raw: string;
127
+ vault_total_supply_raw: string;
128
+ nav_share_supply_raw: string;
129
+ valuation_block_number: string;
130
+ valuation_as_of: string;
131
+ finalized_at: string;
132
+ } | null;
133
+ subscription_availability?: {
134
+ available: boolean;
135
+ reason: 'offer_not_published'
136
+ | 'not_open_ended'
137
+ | 'unsupported_tokenization_engine'
138
+ | 'vault_not_deployed'
139
+ | null;
140
+ };
141
+ }
142
+
143
+ export interface IOffer {
144
+ id: number;
145
+ name: string;
146
+ legal_name: string;
147
+ slug: string;
148
+ title: string;
149
+ security_type: string;
150
+ price_per_share: string;
151
+ min_investment: string;
152
+ image_link_id: number;
153
+ total_shares: string;
154
+ valuation: number;
155
+ subscribed_shares: string;
156
+ confirmed_shares: string;
157
+ fund_structure?: 'open_ended' | 'closed_ended';
158
+ status: string;
159
+ approved_at: string;
160
+ website: string;
161
+ state: string;
162
+ city: string;
163
+ security_info: ISecurityInfo;
164
+ close_at: string;
165
+ seo_title: string;
166
+ seo_description: string;
167
+ description?: string;
168
+ highlights?: string;
169
+ risk_disclosures?: string;
170
+ additional_details: string;
171
+ data?: IOfferInfoData;
172
+ linkedin?: string;
173
+ facebook?: string;
174
+ twitter?: string;
175
+ github?: string;
176
+ instagram?: string;
177
+ telegram?: string;
178
+ mastodon?: string;
179
+ reg_type?: string;
180
+ amount_raised: number;
181
+ target_raise: number;
182
+ tokenization_engine?: string;
183
+ tokenization_model?: string;
184
+ on_chain_summary?: OfferOnChainSummary;
185
+ }
186
+
187
+ export interface IOfferData {
188
+ count: number;
189
+ data: IOffer[];
190
+ }
191
+
192
+ export interface IOfferSharesError {
193
+ number_of_shares: string[];
194
+ }
195
+
196
+ export interface IOfferComment {
197
+ created_at: string;
198
+ comment: string;
199
+ related?: string;
200
+ user: {
201
+ first_name: string;
202
+ last_name: string;
203
+ };
204
+ }
205
+
206
+ export interface IOfferCommentsResponse {
207
+ count: number;
208
+ data: IOfferComment[];
209
+ }
210
+
211
+ export interface IOfferCommentPayload {
212
+ comment: string;
213
+ related?: string;
214
+ offer_id: number;
215
+ }
216
+
217
+ export interface IOfferFormatted extends IOffer {
218
+ amountRaisedFormatted: string;
219
+ targetRaiseFormatted: string;
220
+ pricePerShareFormatted: string;
221
+ valuationFormatted: string;
222
+ preMoneyValuationFormatted: string | number | undefined;
223
+ securityTypeFormatted: string;
224
+ securityTypeTooltip: string | undefined;
225
+ statusFormatted: {
226
+ text: string;
227
+ color: string;
228
+ };
229
+ approvedAtFormatted: string;
230
+ closeAtFormatted: string;
231
+ isDefaultImage: boolean;
232
+ minInvestment: string;
233
+ minInvestmentFormatted: string;
234
+ offerFundedPercent: number;
235
+ isOpenEnded: boolean;
236
+ isFullyFunded: boolean;
237
+ isClosingSoon: boolean;
238
+ isSharesReached: boolean;
239
+ imageBig: string;
240
+ imageSmall: string;
241
+ imageMedium: string;
242
+ isNew: boolean;
243
+ tagText: string;
244
+ tagBackground: string;
245
+ showTag: boolean;
246
+ isStatusNew: boolean;
247
+ isStatusDraft: boolean;
248
+ isStatusLegalReview: boolean;
249
+ isStatusLegalAccepted: boolean;
250
+ isStatusLegalDeclined: boolean;
251
+ isStatusPublished: boolean;
252
+ isStatusLegalClosed: boolean;
253
+ isStatusClosedSuccessfully: boolean;
254
+ isStatusClosedUnsuccessfully: boolean;
255
+ isFundingCompleted: boolean;
256
+ votingRightsFormatted: string | undefined;
257
+ liquidationPreferenceFormatted: string | undefined;
258
+ dividendTypeFormatted: string | undefined;
259
+ dividendRateFormatted: string | undefined;
260
+ dividendPaymentFrequencyFormatted: string | undefined;
261
+ valuationCapFormatted: string | undefined;
262
+ discountRateFormatted: string | undefined;
263
+ interestRateFormatted: string | undefined;
264
+ maturityDateFormatted: string | undefined;
265
+ interestRateApyFormatted: string | undefined;
266
+ paymentScheduleFormatted: string | undefined;
267
+ termLengthFormatted: string | undefined;
268
+ isSecurityTypeConvertibleDebt: boolean;
269
+ isSecurityTypeConvertibleNote: boolean;
270
+ isSecurityTypeDebt: boolean;
271
+ isSecurityTypeEquity: boolean;
272
+ isSecurityTypePreferredEquity: boolean;
273
+ valuationLabel: string;
274
+ isRegD506cOffer: boolean;
275
+ }
@@ -0,0 +1,55 @@
1
+ import type { ProfileType } from './profileTypes.ts';
2
+
3
+ export const SIGNUP_PROFILE_TYPES = ['individual', 'entity', 'trust'] as const;
4
+
5
+ export type SignupProfileType = Extract<
6
+ ProfileType,
7
+ (typeof SIGNUP_PROFILE_TYPES)[number]
8
+ >;
9
+
10
+ export const WALLET_ONBOARDING_PROFILE_TYPES = [
11
+ 'individual',
12
+ 'entity',
13
+ 'trust',
14
+ 'sdira',
15
+ 'solo401k',
16
+ ] as const;
17
+
18
+ export type WalletOnboardingProfileType = Extract<
19
+ ProfileType,
20
+ (typeof WALLET_ONBOARDING_PROFILE_TYPES)[number]
21
+ >;
22
+
23
+ export type DirectSignupIntent = {
24
+ kind: 'direct-signup';
25
+ profileType: SignupProfileType;
26
+ firstName?: string;
27
+ lastName?: string;
28
+ email?: string;
29
+ };
30
+
31
+ export type InvitationSignupIntent = {
32
+ kind: 'invitation-signup';
33
+ invitationCode: string;
34
+ recommendedProfileType: SignupProfileType;
35
+ selectedProfileType: SignupProfileType;
36
+ firstName: string;
37
+ lastName: string;
38
+ email: string;
39
+ };
40
+
41
+ export type WalletOnboardingIntent = {
42
+ profileId: number;
43
+ expectedProfileType: WalletOnboardingProfileType;
44
+ nextPath: string;
45
+ };
46
+
47
+ export type ProfileCreationHandoff = {
48
+ onboarding: 'signup';
49
+ profileType: Exclude<SignupProfileType, 'individual'>;
50
+ nextPath: string;
51
+ firstName?: string;
52
+ lastName?: string;
53
+ email?: string;
54
+ acceptedProfileId?: number;
55
+ };