Files
zeekay ce753666c2 feat: add voting, communications, disclosure packages
Merged from luxfi/transfer into captable for single-library TA engine:

- pkg/voting: Proxy voting proposals, vote casting, quorum tracking,
  results aggregation (board elections, mergers, amendments)

- pkg/comms: Investor communications — notices (proxy, dividend,
  regulatory, K-1), recipient tracking, delivery/read status

- pkg/disclosure: Investor disclosures — PPM, subscription agreements,
  supplements, annual reports. Delivery + acknowledgment tracking.

All follow captable's repository pattern (types.go + repository.go + service.go).
2025-12-15 10:30:00 -08:00

30 lines
1.0 KiB
Go

package comms
import "time"
// Notice is an investor communication (proxy notice, dividend announcement, regulatory update).
type Notice struct {
ID string `json:"id"`
CompanyID string `json:"company_id"`
Subject string `json:"subject"`
Body string `json:"body"`
Type string `json:"type"` // general, proxy, dividend, regulatory, k1
Recipients []NoticeRecipient `json:"recipients,omitempty"`
SentAt *time.Time `json:"sent_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
// NoticeRecipient tracks delivery to a specific stakeholder.
type NoticeRecipient struct {
StakeholderID string `json:"stakeholder_id"`
Email string `json:"email"`
DeliveredAt *time.Time `json:"delivered_at,omitempty"`
ReadAt *time.Time `json:"read_at,omitempty"`
}
// NoticeFilter for listing notices.
type NoticeFilter struct {
CompanyID string `json:"company_id,omitempty"`
Type string `json:"type,omitempty"`
}