@dalmore/api-contracts 1.0.6 → 1.0.7
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/contracts/clients/index.d.ts +19 -0
- package/index.mjs +4 -1
- package/package.json +4 -4
- package/src/common/types/account-contact.types.ts +0 -98
- package/src/common/types/account-detail.types.ts +0 -27
- package/src/common/types/account-integration.types.ts +0 -143
- package/src/common/types/account-manager.types.ts +0 -124
- package/src/common/types/account.types.ts +0 -296
- package/src/common/types/activity.types.ts +0 -274
- package/src/common/types/address.spec.ts +0 -203
- package/src/common/types/address.types.ts +0 -41
- package/src/common/types/aic.types.ts +0 -246
- package/src/common/types/aml.types.ts +0 -18
- package/src/common/types/api-key-logs.types.ts +0 -66
- package/src/common/types/api-keys.types.ts +0 -69
- package/src/common/types/asset.types.ts +0 -338
- package/src/common/types/auth.types.ts +0 -370
- package/src/common/types/batch-jobs.types.ts +0 -151
- package/src/common/types/bonus-tier.types.ts +0 -147
- package/src/common/types/cart.types.ts +0 -18
- package/src/common/types/checklist-items.types.ts +0 -70
- package/src/common/types/checklist.types.ts +0 -97
- package/src/common/types/common.types.spec.ts +0 -336
- package/src/common/types/common.types.ts +0 -1520
- package/src/common/types/comply-advantage-api.types.ts +0 -316
- package/src/common/types/comply-advantage.types.ts +0 -25
- package/src/common/types/contact-us.types.ts +0 -107
- package/src/common/types/contract-helpers.ts +0 -205
- package/src/common/types/countries.types.ts +0 -375
- package/src/common/types/covered-person.types.ts +0 -274
- package/src/common/types/dashboard.types.ts +0 -799
- package/src/common/types/data-record.types.ts +0 -325
- package/src/common/types/data-room.types.ts +0 -242
- package/src/common/types/default-theme-config.types.ts +0 -87
- package/src/common/types/disbursement-adjustment.types.ts +0 -32
- package/src/common/types/disbursement-approval-user.types.ts +0 -100
- package/src/common/types/disbursement-review.types.ts +0 -110
- package/src/common/types/disbursement-transaction.types.ts +0 -72
- package/src/common/types/disbursements.types.ts +0 -310
- package/src/common/types/domain-filter.types.ts +0 -55
- package/src/common/types/email-theme.types.ts +0 -442
- package/src/common/types/entity.types.ts +0 -15
- package/src/common/types/error-responses.types.ts +0 -135
- package/src/common/types/escrow-account.types.ts +0 -104
- package/src/common/types/exchange-api-key.types.ts +0 -121
- package/src/common/types/exchange-import.types.ts +0 -36
- package/src/common/types/exchange-provider.types.ts +0 -329
- package/src/common/types/file.types.ts +0 -461
- package/src/common/types/files.types.spec.ts +0 -154
- package/src/common/types/health.types.ts +0 -29
- package/src/common/types/index.ts +0 -48
- package/src/common/types/individuals.types.ts +0 -554
- package/src/common/types/investor-account.types.ts +0 -1239
- package/src/common/types/investorAccountIdSchema.type.ts +0 -0
- package/src/common/types/investors-offering.types.ts +0 -65
- package/src/common/types/invite.types.ts +0 -133
- package/src/common/types/issuer-bank-account.types.ts +0 -107
- package/src/common/types/issuer-offering.types.ts +0 -306
- package/src/common/types/issuer-payment-method.types.spec.ts +0 -612
- package/src/common/types/issuer-payment-method.types.ts +0 -341
- package/src/common/types/issuer.types.ts +0 -312
- package/src/common/types/job-item.types.ts +0 -119
- package/src/common/types/jobs.types.ts +0 -171
- package/src/common/types/kyb.types.ts +0 -53
- package/src/common/types/kyc.types.ts +0 -188
- package/src/common/types/legal-entity.types.ts +0 -185
- package/src/common/types/login-history.types.ts +0 -46
- package/src/common/types/mail-template.types.ts +0 -436
- package/src/common/types/north-cap-integration.types.ts +0 -190
- package/src/common/types/note.types.ts +0 -109
- package/src/common/types/notification.types.ts +0 -58
- package/src/common/types/notion-api.types.ts +0 -374
- package/src/common/types/notion-database.types.ts +0 -125
- package/src/common/types/notion-page.types.ts +0 -267
- package/src/common/types/offering-reports.types.ts +0 -153
- package/src/common/types/offering-submission.types.ts +0 -314
- package/src/common/types/offering.types.spec.ts +0 -91
- package/src/common/types/offering.types.ts +0 -590
- package/src/common/types/page-revision.types.ts +0 -86
- package/src/common/types/page.types.ts +0 -436
- package/src/common/types/password.type.ts +0 -15
- package/src/common/types/payment-methods.types.ts +0 -298
- package/src/common/types/phone.spec.ts +0 -76
- package/src/common/types/phone.type.ts +0 -27
- package/src/common/types/portfolio.types.ts +0 -50
- package/src/common/types/privacy-policy-and-tos.types.ts +0 -231
- package/src/common/types/queue.types.ts +0 -112
- package/src/common/types/registered-reps.types.ts +0 -25
- package/src/common/types/rejection-reasons.types.ts +0 -56
- package/src/common/types/reminder-config.types.ts +0 -40
- package/src/common/types/review.types.ts +0 -133
- package/src/common/types/role.types.ts +0 -26
- package/src/common/types/secondary-customer.types.ts +0 -66
- package/src/common/types/secondary-issuer.types.ts +0 -50
- package/src/common/types/secondary-order.types.ts +0 -58
- package/src/common/types/secondary-security.types.ts +0 -60
- package/src/common/types/secondary-trade.entity.ts +0 -16
- package/src/common/types/secondary-trade.types.ts +0 -95
- package/src/common/types/secure-request.types.ts +0 -68
- package/src/common/types/signer.types.ts +0 -651
- package/src/common/types/site-link.types.spec.ts +0 -134
- package/src/common/types/site-link.types.ts +0 -166
- package/src/common/types/site-settings.types.ts +0 -726
- package/src/common/types/site.types.ts +0 -270
- package/src/common/types/sms.types.ts +0 -30
- package/src/common/types/state-machine.types.ts +0 -177
- package/src/common/types/states.types.ts +0 -163
- package/src/common/types/subdoc-preview.types.ts +0 -35
- package/src/common/types/task.types.ts +0 -258
- package/src/common/types/trade-adjustment.type.ts +0 -33
- package/src/common/types/trade-line-item.type.ts +0 -132
- package/src/common/types/trade.types.ts +0 -929
- package/src/common/types/transaction.types.ts +0 -198
- package/src/common/types/trusted-contact.types.ts +0 -122
- package/src/common/types/typography.types.ts +0 -75
- package/src/common/types/user-manual.types.ts +0 -290
- package/src/common/types/user-setting.types.ts +0 -133
- package/src/common/types/user.types.ts +0 -320
- package/src/common/types/webhook.types.ts +0 -588
- package/src/common/types/zip.type.ts +0 -36
- package/src/contracts/clients/accounts/index.ts +0 -61
- package/src/contracts/clients/aic/index.ts +0 -59
- package/src/contracts/clients/api-key-logs/index.ts +0 -53
- package/src/contracts/clients/api-keys/index.ts +0 -73
- package/src/contracts/clients/assets/index.ts +0 -102
- package/src/contracts/clients/auth/index.ts +0 -50
- package/src/contracts/clients/files/index.ts +0 -166
- package/src/contracts/clients/files-public/index.ts +0 -166
- package/src/contracts/clients/index.ts +0 -44
- package/src/contracts/clients/individuals/index.ts +0 -93
- package/src/contracts/clients/investor-accounts/index.ts +0 -93
- package/src/contracts/clients/issuers/index.ts +0 -94
- package/src/contracts/clients/legal-entities/index.ts +0 -93
- package/src/contracts/clients/offerings/index.ts +0 -117
- package/src/contracts/clients/secure-requests/index.ts +0 -34
- package/src/contracts/clients/sites/index.ts +0 -56
- package/src/contracts/clients/trades/index.ts +0 -122
|
File without changes
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { AccountZod, IPaginationMeta, OfferingType } from './common.types';
|
|
3
|
-
import { IBaseEntity } from './entity.types';
|
|
4
|
-
import { accountIdSchema } from './account.types';
|
|
5
|
-
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
6
|
-
extendZodWithOpenApi(z);
|
|
7
|
-
|
|
8
|
-
export const InvestorsOffering = IBaseEntity.extend({
|
|
9
|
-
name: z.string(),
|
|
10
|
-
tid: z.string().nullable(),
|
|
11
|
-
type: z.nativeEnum(OfferingType).nullable(),
|
|
12
|
-
raiseAmount: z.coerce.number().nullable(),
|
|
13
|
-
minInvestment: z.coerce.number().nullable(),
|
|
14
|
-
maxInvestment: z.coerce.number().nullable(),
|
|
15
|
-
contingencyAmount: z.coerce.number().nullable(),
|
|
16
|
-
startAt: z.date().nullable(),
|
|
17
|
-
endAt: z.date().nullable(),
|
|
18
|
-
platform: z.string(),
|
|
19
|
-
platformSettings: z.string().nullable(),
|
|
20
|
-
enabled: z.boolean(),
|
|
21
|
-
accountId: z.string().nullable(),
|
|
22
|
-
account: AccountZod.optional().nullable(),
|
|
23
|
-
});
|
|
24
|
-
export type InvestorsOffering = z.infer<typeof InvestorsOffering>;
|
|
25
|
-
|
|
26
|
-
export const InvestorsPaginatedOffering = z.object({
|
|
27
|
-
items: z.array(InvestorsOffering),
|
|
28
|
-
meta: IPaginationMeta,
|
|
29
|
-
});
|
|
30
|
-
export type InvestorsPaginatedOffering = z.infer<
|
|
31
|
-
typeof InvestorsPaginatedOffering
|
|
32
|
-
>;
|
|
33
|
-
|
|
34
|
-
const investorsOfferingsInclude = z.enum(['account', 'assets', 'issuer']);
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @description Query parameters for including related entities
|
|
38
|
-
* @xample in contract us as -> query: z.object({}).merge(UsersIncludeQuery),
|
|
39
|
-
*/
|
|
40
|
-
export const InvestorsOfferingsIncludeQuery = z.object({
|
|
41
|
-
include: z
|
|
42
|
-
.string()
|
|
43
|
-
.optional()
|
|
44
|
-
.transform((str) => (str ? str.split(',') : []))
|
|
45
|
-
.refine(
|
|
46
|
-
(includes) =>
|
|
47
|
-
includes.every((include) =>
|
|
48
|
-
investorsOfferingsInclude.options.includes(include as any),
|
|
49
|
-
),
|
|
50
|
-
{
|
|
51
|
-
message: `Invalid include option provided. Valid options are: ${investorsOfferingsInclude.options.join(',')}`,
|
|
52
|
-
},
|
|
53
|
-
)
|
|
54
|
-
.openapi({
|
|
55
|
-
example: `${investorsOfferingsInclude.options.join(',')}`,
|
|
56
|
-
}),
|
|
57
|
-
});
|
|
58
|
-
export interface InvestorsOfferingsIncludeQuery
|
|
59
|
-
extends z.infer<typeof InvestorsOfferingsIncludeQuery> {}
|
|
60
|
-
|
|
61
|
-
export const InvestorsOfferingFiltersZod = z.object({
|
|
62
|
-
name: z.string().optional(),
|
|
63
|
-
accountId: accountIdSchema.optional(),
|
|
64
|
-
issuerId: z.string().optional(),
|
|
65
|
-
});
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
AccountZod,
|
|
4
|
-
IPaginationMeta,
|
|
5
|
-
IssuerRole,
|
|
6
|
-
UserRole,
|
|
7
|
-
} from './common.types';
|
|
8
|
-
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
9
|
-
import { TypeID } from 'typeid-js';
|
|
10
|
-
import { roleIdSchema, RoleZod } from './role.types';
|
|
11
|
-
import { accountIdSchema } from './account.types';
|
|
12
|
-
extendZodWithOpenApi(z);
|
|
13
|
-
export const inviteIdSchema = z.string().refine(
|
|
14
|
-
(value) => {
|
|
15
|
-
try {
|
|
16
|
-
const tid = TypeID.fromString(value);
|
|
17
|
-
return tid.getType() === 'invite';
|
|
18
|
-
} catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
message: `Invalid invite ID format. Must be a valid TypeID with "invite" prefix. Example: invite_01j5y5ghx5fg68d663j1fvy2x7`,
|
|
24
|
-
},
|
|
25
|
-
);
|
|
26
|
-
export const InviteWithoutSecretZod = z.object({
|
|
27
|
-
id: z.string(),
|
|
28
|
-
email: z.string().email(),
|
|
29
|
-
code: z.string(),
|
|
30
|
-
roleId: roleIdSchema.nullable(),
|
|
31
|
-
role: RoleZod.nullable().optional(),
|
|
32
|
-
used: z.boolean(),
|
|
33
|
-
createdAt: z.date(),
|
|
34
|
-
updatedAt: z.date(),
|
|
35
|
-
deletedAt: z.date().nullable(),
|
|
36
|
-
account: AccountZod.nullable().optional(),
|
|
37
|
-
});
|
|
38
|
-
export type InviteWithoutSecretZod = z.infer<typeof InviteWithoutSecretZod>;
|
|
39
|
-
export const IPaginatedInvite = z.object({
|
|
40
|
-
items: z.array(InviteWithoutSecretZod),
|
|
41
|
-
meta: IPaginationMeta,
|
|
42
|
-
});
|
|
43
|
-
export type InviteWithSecretZod = z.infer<typeof InviteWithoutSecretZod>;
|
|
44
|
-
|
|
45
|
-
export const InviteWithUrl = InviteWithoutSecretZod.extend({
|
|
46
|
-
url: z.string(),
|
|
47
|
-
});
|
|
48
|
-
export type InviteWithUrl = z.infer<typeof InviteWithUrl>;
|
|
49
|
-
|
|
50
|
-
export const PostIssuerInviteZod = z.object({
|
|
51
|
-
email: z.string().email(),
|
|
52
|
-
role: z.nativeEnum(IssuerRole),
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
export type PostIssuerInviteZod = z.infer<typeof PostIssuerInviteZod>;
|
|
56
|
-
|
|
57
|
-
export const IssuerInvitesFiltersZod = z.object({
|
|
58
|
-
role: z
|
|
59
|
-
.nativeEnum(UserRole)
|
|
60
|
-
.optional()
|
|
61
|
-
.refine((role) => !role || Object.values(UserRole).includes(role), {
|
|
62
|
-
message: 'Role must be a valid issuer role, such as OWNER or MARKETER',
|
|
63
|
-
}),
|
|
64
|
-
used: z
|
|
65
|
-
.string()
|
|
66
|
-
.optional()
|
|
67
|
-
.transform((val) => {
|
|
68
|
-
if (val === 'true') return true;
|
|
69
|
-
if (val === 'false') return false;
|
|
70
|
-
if (val === '') return undefined;
|
|
71
|
-
return;
|
|
72
|
-
}),
|
|
73
|
-
email: z.string().optional(),
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
export type IssuerInvitesFiltersZod = z.infer<typeof IssuerInvitesFiltersZod>;
|
|
77
|
-
|
|
78
|
-
export const IssuerVerifyInviteResponse = z.object({
|
|
79
|
-
valid: z.boolean(),
|
|
80
|
-
email: z.string().email().nullable(),
|
|
81
|
-
existingLogin: z.boolean().nullable().optional(),
|
|
82
|
-
accountName: z.string().nullable().optional(),
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
export type IssuerVerifyInviteResponse = z.infer<
|
|
86
|
-
typeof IssuerVerifyInviteResponse
|
|
87
|
-
>;
|
|
88
|
-
|
|
89
|
-
export const IssuerInvitesDecisionResponse = z.object({
|
|
90
|
-
message: z.string(),
|
|
91
|
-
});
|
|
92
|
-
export type IssuerInvitesDecisionResponse = z.infer<
|
|
93
|
-
typeof IssuerInvitesDecisionResponse
|
|
94
|
-
>;
|
|
95
|
-
|
|
96
|
-
const invitesInclude = z.enum(['user', 'role']);
|
|
97
|
-
|
|
98
|
-
export const InvitesIncludeQuery = z.object({
|
|
99
|
-
include: z
|
|
100
|
-
.string()
|
|
101
|
-
.optional()
|
|
102
|
-
.transform((str) => (str ? str.split(',') : []))
|
|
103
|
-
.refine(
|
|
104
|
-
(includes) =>
|
|
105
|
-
includes.every((include) =>
|
|
106
|
-
invitesInclude.options.includes(include as any),
|
|
107
|
-
),
|
|
108
|
-
{
|
|
109
|
-
message: `Invalid include option provided. Valid options are: ${invitesInclude.options.join(',')}`,
|
|
110
|
-
},
|
|
111
|
-
)
|
|
112
|
-
.openapi({
|
|
113
|
-
example: `${invitesInclude.options.join(',')}`,
|
|
114
|
-
}),
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
export const PatchInviteRoleZod = z.object({
|
|
118
|
-
role: z.nativeEnum(UserRole).openapi({
|
|
119
|
-
example: UserRole.OWNER,
|
|
120
|
-
}),
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
export type PatchInviteRoleZod = z.infer<typeof PatchInviteRoleZod>;
|
|
124
|
-
|
|
125
|
-
export const PatchInviteForComplianceZod = PatchInviteRoleZod.extend({
|
|
126
|
-
accountId: accountIdSchema.optional().openapi({
|
|
127
|
-
example: 'account_01j5y5ghx5fg68d663j1fvy2x7',
|
|
128
|
-
}),
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
export type PatchInviteForComplianceZod = z.infer<
|
|
132
|
-
typeof PatchInviteForComplianceZod
|
|
133
|
-
>;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { AccountZod, IPaginationMeta } from './common.types';
|
|
4
|
-
import { IBaseEntity } from './entity.types';
|
|
5
|
-
import { IIssuer, issuerIdSchema } from './issuer.types';
|
|
6
|
-
import { TypeID } from 'typeid-js';
|
|
7
|
-
import { accountIdSchema } from './account.types';
|
|
8
|
-
|
|
9
|
-
extendZodWithOpenApi(z);
|
|
10
|
-
|
|
11
|
-
export const issuerBankAccountIdSchema = z.string().refine(
|
|
12
|
-
(value) => {
|
|
13
|
-
try {
|
|
14
|
-
const tid = TypeID.fromString(value);
|
|
15
|
-
return tid.getType() === 'issuer_bank_account';
|
|
16
|
-
} catch {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
message:
|
|
22
|
-
'Invalid issuer ID format. Must be a valid TypeID with "issuer_bank_account" prefix.',
|
|
23
|
-
},
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
export const IIssuerBankAccount = IBaseEntity.extend({
|
|
27
|
-
accountNumber: z.string(),
|
|
28
|
-
accountHolder: z.string(),
|
|
29
|
-
routingNumber: z.string(),
|
|
30
|
-
nickName: z.string(),
|
|
31
|
-
accountId: z.string(),
|
|
32
|
-
account: AccountZod.optional().nullable(),
|
|
33
|
-
issuerId: issuerIdSchema,
|
|
34
|
-
issuer: z
|
|
35
|
-
.lazy(() => IIssuer)
|
|
36
|
-
.optional()
|
|
37
|
-
.nullable(),
|
|
38
|
-
});
|
|
39
|
-
export type IIssuerBankAccount = z.infer<typeof IIssuerBankAccount>;
|
|
40
|
-
|
|
41
|
-
export const IPaginatedIssuerBankAccount = z.object({
|
|
42
|
-
items: z.array(IIssuerBankAccount),
|
|
43
|
-
meta: IPaginationMeta,
|
|
44
|
-
});
|
|
45
|
-
export type IPaginatedIssuerBankAccount = z.infer<
|
|
46
|
-
typeof IPaginatedIssuerBankAccount
|
|
47
|
-
>;
|
|
48
|
-
export const PostIssuerBankAccount = z.object({
|
|
49
|
-
accountId: accountIdSchema.optional(),
|
|
50
|
-
issuerId: z.lazy(() => issuerIdSchema),
|
|
51
|
-
nickName: z.string().min(2).max(50).openapi({ example: 'Bulk' }),
|
|
52
|
-
accountNumber: z
|
|
53
|
-
.string()
|
|
54
|
-
.min(10, 'Account number must be at least 10 digits')
|
|
55
|
-
.max(18, 'Account number must not exceed 18 digits'),
|
|
56
|
-
routingNumber: z.string().min(9).max(9),
|
|
57
|
-
accountHolder: z.string().min(2).max(50),
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
export type PostIssuerBankAccount = z.infer<typeof PostIssuerBankAccount>;
|
|
61
|
-
|
|
62
|
-
const issuerBankAccountsInclude = z.enum([
|
|
63
|
-
'account',
|
|
64
|
-
'issuer',
|
|
65
|
-
'transactions',
|
|
66
|
-
'disbursements',
|
|
67
|
-
]);
|
|
68
|
-
/**
|
|
69
|
-
* @description Query parameters for including related entities
|
|
70
|
-
* @xample in contract us as -> query: z.object({}).merge(IssuerBankAccountsIncludeQuery),
|
|
71
|
-
*/
|
|
72
|
-
export const IssuerBankAccountsIncludeQuery = z.object({
|
|
73
|
-
include: z
|
|
74
|
-
.string()
|
|
75
|
-
.optional()
|
|
76
|
-
.transform((str) => (str ? str.split(',') : []))
|
|
77
|
-
.refine(
|
|
78
|
-
(includes) =>
|
|
79
|
-
includes.every((include) =>
|
|
80
|
-
issuerBankAccountsInclude.options.includes(include as any),
|
|
81
|
-
),
|
|
82
|
-
{
|
|
83
|
-
message: `Invalid include option provided. Valid options are: ${issuerBankAccountsInclude.options.join(',')}`,
|
|
84
|
-
},
|
|
85
|
-
)
|
|
86
|
-
.openapi({
|
|
87
|
-
example: `${issuerBankAccountsInclude.options.join(',')}`,
|
|
88
|
-
}),
|
|
89
|
-
});
|
|
90
|
-
export interface IssuerBankAccountsIncludeQuery
|
|
91
|
-
extends z.infer<typeof IssuerBankAccountsIncludeQuery> {}
|
|
92
|
-
|
|
93
|
-
export const IssuerBankAccountsFilter = z.object({
|
|
94
|
-
issuerId: z.lazy(() => issuerIdSchema).optional(),
|
|
95
|
-
accountId: accountIdSchema.optional(),
|
|
96
|
-
search: z.string().optional(),
|
|
97
|
-
});
|
|
98
|
-
export interface IssuerBankAccountsFilter
|
|
99
|
-
extends z.infer<typeof IssuerBankAccountsFilter> {}
|
|
100
|
-
|
|
101
|
-
export const PatchIssuerBankAccount = z.object({
|
|
102
|
-
nickName: z.string().min(2).max(50).optional(),
|
|
103
|
-
accountNumber: z.string().min(10).max(18).optional(),
|
|
104
|
-
routingNumber: z.string().min(9).max(9).optional(),
|
|
105
|
-
accountHolder: z.string().min(2).max(50).optional(),
|
|
106
|
-
});
|
|
107
|
-
export type PatchIssuerBankAccount = z.infer<typeof PatchIssuerBankAccount>;
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import {
|
|
4
|
-
AccountZod,
|
|
5
|
-
dateSchema,
|
|
6
|
-
IPaginationMeta,
|
|
7
|
-
OfferingType,
|
|
8
|
-
ManagedByType,
|
|
9
|
-
OfferingVersioningType,
|
|
10
|
-
ComplianceReview,
|
|
11
|
-
} from './common.types';
|
|
12
|
-
import { IBaseEntity } from './entity.types';
|
|
13
|
-
import { IIssuer, issuerIdSchema } from './issuer.types';
|
|
14
|
-
import { IAsset } from './asset.types';
|
|
15
|
-
import { fileIdSchema, FileZod } from './file.types';
|
|
16
|
-
import { accountIdSchema } from './account.types';
|
|
17
|
-
|
|
18
|
-
extendZodWithOpenApi(z);
|
|
19
|
-
|
|
20
|
-
export enum OfferingStatus {
|
|
21
|
-
ONBOARDING = 'ONBOARDING',
|
|
22
|
-
IN_COMPLIANCE_REVIEW = 'IN_COMPLIANCE_REVIEW',
|
|
23
|
-
ACTIVE = 'ACTIVE',
|
|
24
|
-
PAUSED = 'PAUSED',
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export const IIssuerOffering = IBaseEntity.extend({
|
|
28
|
-
name: z.string(),
|
|
29
|
-
tid: z.string().nullable(),
|
|
30
|
-
description: z.string().nullable(),
|
|
31
|
-
type: z.nativeEnum(OfferingType).nullable(),
|
|
32
|
-
raiseAmount: z.number().nullable(),
|
|
33
|
-
targetAmount: z.number().nullable(),
|
|
34
|
-
minInvestment: z.number().nullable(),
|
|
35
|
-
maxInvestment: z.number().nullable(),
|
|
36
|
-
contingencyAmount: z.number().nullable(),
|
|
37
|
-
startAt: z.date().nullable(),
|
|
38
|
-
endAt: z.date().nullable(),
|
|
39
|
-
platform: z.string(),
|
|
40
|
-
platformSettings: z.string().nullable(),
|
|
41
|
-
enabled: z.boolean(),
|
|
42
|
-
accountId: z.string().nullable(),
|
|
43
|
-
account: AccountZod.optional().nullable(),
|
|
44
|
-
issuer: z
|
|
45
|
-
.lazy(() => IIssuer)
|
|
46
|
-
.optional()
|
|
47
|
-
.nullable(), // Use z.lazy here
|
|
48
|
-
issuerId: z.string().nullable(),
|
|
49
|
-
assets: z
|
|
50
|
-
.lazy(() => z.array(IAsset))
|
|
51
|
-
.nullable()
|
|
52
|
-
.optional(), // Use z.lazy here
|
|
53
|
-
cancellationPeriod: z.number().nullable(),
|
|
54
|
-
coverArtId: z
|
|
55
|
-
.lazy(() => fileIdSchema)
|
|
56
|
-
.nullable()
|
|
57
|
-
.optional(),
|
|
58
|
-
coverArt: z.lazy(() => FileZod).nullable(),
|
|
59
|
-
memorandumId: z
|
|
60
|
-
.lazy(() => fileIdSchema)
|
|
61
|
-
.optional()
|
|
62
|
-
.nullable(),
|
|
63
|
-
subscriptionAgreementId: z
|
|
64
|
-
.lazy(() => fileIdSchema)
|
|
65
|
-
.optional()
|
|
66
|
-
.nullable(),
|
|
67
|
-
managedBy: z.nativeEnum(ManagedByType).nullable(),
|
|
68
|
-
valuationCap: z.number().nullable(),
|
|
69
|
-
showTotalRaised: z.boolean().optional(),
|
|
70
|
-
status: z.nativeEnum(OfferingStatus).optional().nullable(),
|
|
71
|
-
});
|
|
72
|
-
export type IIssuerOffering = z.infer<typeof IIssuerOffering>;
|
|
73
|
-
|
|
74
|
-
export const IPaginatedIssuerOffering = z.object({
|
|
75
|
-
items: z.array(IIssuerOffering),
|
|
76
|
-
meta: IPaginationMeta,
|
|
77
|
-
});
|
|
78
|
-
export type IPaginatedIssuerOffering = z.infer<typeof IPaginatedIssuerOffering>;
|
|
79
|
-
export const PostIssuerOffering = z
|
|
80
|
-
.object({
|
|
81
|
-
issuerId: issuerIdSchema,
|
|
82
|
-
name: z.string().min(2).max(100).openapi({ example: 'Airbnb IPO' }),
|
|
83
|
-
type: z.nativeEnum(OfferingType).openapi({ example: OfferingType.REG_D }),
|
|
84
|
-
targetAmount: z
|
|
85
|
-
.number()
|
|
86
|
-
.min(0.01)
|
|
87
|
-
.max(10000000000)
|
|
88
|
-
.openapi({ example: 120000 }),
|
|
89
|
-
raiseAmount: z
|
|
90
|
-
.number()
|
|
91
|
-
.min(0)
|
|
92
|
-
.max(10000000000)
|
|
93
|
-
.optional()
|
|
94
|
-
.openapi({ example: 200000 }),
|
|
95
|
-
minInvestment: z
|
|
96
|
-
.number()
|
|
97
|
-
.min(0)
|
|
98
|
-
.max(10000000000)
|
|
99
|
-
.optional()
|
|
100
|
-
.openapi({ example: 1000 }),
|
|
101
|
-
maxInvestment: z
|
|
102
|
-
.number()
|
|
103
|
-
.min(0)
|
|
104
|
-
.max(10000000000)
|
|
105
|
-
.optional()
|
|
106
|
-
.openapi({ example: 20000 }),
|
|
107
|
-
contingencyAmount: z
|
|
108
|
-
.number()
|
|
109
|
-
.min(0)
|
|
110
|
-
.max(10000000000)
|
|
111
|
-
.optional()
|
|
112
|
-
.openapi({ example: 5000 }),
|
|
113
|
-
startAt: dateSchema.optional().openapi({ example: '10/20/2024' }),
|
|
114
|
-
endAt: dateSchema.optional().openapi({ example: '10/27/2024' }),
|
|
115
|
-
active: z.boolean().optional().openapi({ example: true }),
|
|
116
|
-
cancellationPeriod: z
|
|
117
|
-
.number()
|
|
118
|
-
.min(1)
|
|
119
|
-
.max(30)
|
|
120
|
-
.openapi({ example: 4 })
|
|
121
|
-
.optional()
|
|
122
|
-
.nullable(),
|
|
123
|
-
description: z
|
|
124
|
-
.string()
|
|
125
|
-
.min(1)
|
|
126
|
-
.max(1000)
|
|
127
|
-
.optional()
|
|
128
|
-
.nullable()
|
|
129
|
-
.openapi({ example: 'This is a description of the offering.' }),
|
|
130
|
-
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
131
|
-
})
|
|
132
|
-
.refine(
|
|
133
|
-
(data) => {
|
|
134
|
-
// Check if both values are present, and if so, ensure minInvestment is less than maxInvestment
|
|
135
|
-
if (data.minInvestment && data.maxInvestment) {
|
|
136
|
-
return data.minInvestment < data.maxInvestment;
|
|
137
|
-
}
|
|
138
|
-
return true; // If one or both values are undefined, skip this check
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
message: 'Minimum investment must be less than maximum investment.',
|
|
142
|
-
path: ['minInvestment'],
|
|
143
|
-
},
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
export type PostIssuerOffering = z.infer<typeof PostIssuerOffering>;
|
|
147
|
-
export const PatchIssuerOffering = z.object({
|
|
148
|
-
name: z
|
|
149
|
-
.string()
|
|
150
|
-
.min(2)
|
|
151
|
-
.max(100)
|
|
152
|
-
.optional()
|
|
153
|
-
.openapi({ example: 'Airbnb IPO' }),
|
|
154
|
-
targetAmount: z
|
|
155
|
-
.number()
|
|
156
|
-
.min(0)
|
|
157
|
-
.max(10000000000)
|
|
158
|
-
.optional()
|
|
159
|
-
.openapi({ example: 120000 }),
|
|
160
|
-
raiseAmount: z
|
|
161
|
-
.number()
|
|
162
|
-
.min(0)
|
|
163
|
-
.max(10000000000)
|
|
164
|
-
.optional()
|
|
165
|
-
.openapi({ example: 200000 }),
|
|
166
|
-
minInvestment: z
|
|
167
|
-
.number()
|
|
168
|
-
.min(0)
|
|
169
|
-
.max(10000000000)
|
|
170
|
-
.optional()
|
|
171
|
-
.openapi({ example: 1000 }),
|
|
172
|
-
maxInvestment: z
|
|
173
|
-
.number()
|
|
174
|
-
.min(0)
|
|
175
|
-
.max(10000000000)
|
|
176
|
-
.optional()
|
|
177
|
-
.openapi({ example: 20000 }),
|
|
178
|
-
contingencyAmount: z
|
|
179
|
-
.number()
|
|
180
|
-
.min(0)
|
|
181
|
-
.max(10000000000)
|
|
182
|
-
.optional()
|
|
183
|
-
.openapi({ example: 5000 }),
|
|
184
|
-
startAt: dateSchema.optional().openapi({ example: '10/20/2024' }),
|
|
185
|
-
endAt: dateSchema.optional().openapi({ example: '10/27/2024' }),
|
|
186
|
-
cancellationPeriod: z
|
|
187
|
-
.number()
|
|
188
|
-
.min(1)
|
|
189
|
-
.max(30)
|
|
190
|
-
.optional()
|
|
191
|
-
.openapi({ example: 4 })
|
|
192
|
-
.nullable(),
|
|
193
|
-
description: z
|
|
194
|
-
.string()
|
|
195
|
-
.min(1)
|
|
196
|
-
.max(1000)
|
|
197
|
-
.optional()
|
|
198
|
-
.nullable()
|
|
199
|
-
.openapi({ example: 'This is a description of the offering.' }),
|
|
200
|
-
memorandumId: z
|
|
201
|
-
.lazy(() => fileIdSchema)
|
|
202
|
-
.optional()
|
|
203
|
-
.nullable(),
|
|
204
|
-
subscriptionAgreementId: z
|
|
205
|
-
.lazy(() => fileIdSchema)
|
|
206
|
-
.optional()
|
|
207
|
-
.nullable(),
|
|
208
|
-
coverArtId: z
|
|
209
|
-
.lazy(() => fileIdSchema)
|
|
210
|
-
.nullable()
|
|
211
|
-
.optional(),
|
|
212
|
-
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
213
|
-
showTotalRaised: z.boolean().optional(),
|
|
214
|
-
issuerId: issuerIdSchema.optional(),
|
|
215
|
-
});
|
|
216
|
-
export type PatchIssuerOffering = z.infer<typeof PatchIssuerOffering>;
|
|
217
|
-
|
|
218
|
-
const issuerOfferingsInclude = z.enum([
|
|
219
|
-
'account',
|
|
220
|
-
'trades',
|
|
221
|
-
'issuer',
|
|
222
|
-
'assets',
|
|
223
|
-
'draftVersion',
|
|
224
|
-
'publishedVersion',
|
|
225
|
-
'revisions',
|
|
226
|
-
'onboardingReviewedBy',
|
|
227
|
-
]);
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* @description Query parameters for including related entities
|
|
231
|
-
* @xample in contract us as -> query: z.object({}).merge(UsersIncludeQuery),
|
|
232
|
-
*/
|
|
233
|
-
export const IssuerOfferingsIncludeQuery = z.object({
|
|
234
|
-
include: z
|
|
235
|
-
.string()
|
|
236
|
-
.optional()
|
|
237
|
-
.transform((str) => (str ? str.split(',') : []))
|
|
238
|
-
.refine(
|
|
239
|
-
(includes) =>
|
|
240
|
-
includes.every((include) =>
|
|
241
|
-
issuerOfferingsInclude.options.includes(include as any),
|
|
242
|
-
),
|
|
243
|
-
{
|
|
244
|
-
message: `Invalid include option provided. Valid options are: ${issuerOfferingsInclude.options.join(',')}`,
|
|
245
|
-
},
|
|
246
|
-
)
|
|
247
|
-
.openapi({
|
|
248
|
-
example: `${issuerOfferingsInclude.options.join(',')}`,
|
|
249
|
-
}),
|
|
250
|
-
});
|
|
251
|
-
export interface IssuerOfferingsIncludeQuery
|
|
252
|
-
extends z.infer<typeof IssuerOfferingsIncludeQuery> {}
|
|
253
|
-
|
|
254
|
-
export const IssuerOfferingsDeleteResponse = z.object({
|
|
255
|
-
message: z.string(),
|
|
256
|
-
});
|
|
257
|
-
export type IssuerOfferingsDeleteResponse = z.infer<
|
|
258
|
-
typeof IssuerOfferingsDeleteResponse
|
|
259
|
-
>;
|
|
260
|
-
export const OfferingCapTableFiltersZod = z.object({
|
|
261
|
-
startDate: dateSchema.optional(),
|
|
262
|
-
endDate: dateSchema.optional(),
|
|
263
|
-
});
|
|
264
|
-
export type OfferingCapTableFiltersZod = z.infer<
|
|
265
|
-
typeof OfferingCapTableFiltersZod
|
|
266
|
-
>;
|
|
267
|
-
|
|
268
|
-
export const OfferingCapTableResponse = z.array(
|
|
269
|
-
z.object({
|
|
270
|
-
name: z.string(),
|
|
271
|
-
sharesOwned: z.coerce.number().default(0),
|
|
272
|
-
percentageOfOwnership: z.coerce.number().default(0),
|
|
273
|
-
}),
|
|
274
|
-
);
|
|
275
|
-
export type OfferingCapTableResponse = z.infer<typeof OfferingCapTableResponse>;
|
|
276
|
-
|
|
277
|
-
export const IssuerOfferingsFilterZod = z.object({
|
|
278
|
-
issuerName: z.string().optional(),
|
|
279
|
-
name: z.string().optional(),
|
|
280
|
-
accountId: accountIdSchema.optional(),
|
|
281
|
-
issuerId: z.lazy(() => issuerIdSchema).optional(),
|
|
282
|
-
type: z.nativeEnum(OfferingType).optional(),
|
|
283
|
-
status: z.nativeEnum(ComplianceReview).optional(),
|
|
284
|
-
enabled: z.preprocess(
|
|
285
|
-
(val) =>
|
|
286
|
-
val === 'true' || val === '1'
|
|
287
|
-
? true
|
|
288
|
-
: val === 'false' || val === '0'
|
|
289
|
-
? false
|
|
290
|
-
: val,
|
|
291
|
-
z.boolean().optional(),
|
|
292
|
-
),
|
|
293
|
-
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
294
|
-
versioningType: z.nativeEnum(OfferingVersioningType).optional(),
|
|
295
|
-
combinedStatus: z.nativeEnum(OfferingStatus).optional(),
|
|
296
|
-
sortByNameASC: z.preprocess(
|
|
297
|
-
(val) =>
|
|
298
|
-
val === 'true' || val === '1'
|
|
299
|
-
? true
|
|
300
|
-
: val === 'false' || val === '0'
|
|
301
|
-
? false
|
|
302
|
-
: val,
|
|
303
|
-
z.boolean().optional().default(false),
|
|
304
|
-
),
|
|
305
|
-
});
|
|
306
|
-
export type IssuerOfferingsFilterZod = z.infer<typeof IssuerOfferingsFilterZod>;
|