Files
zeekay 14a9f303ff feat: add SAFE, note, warrant, vesting, KYC, OmniSub domain packages
New packages (types.go + repository.go + service.go each):
- safe: YC SAFE taxonomy (pre/post money, cap, discount, MFN, pro rata)
- note: convertible notes (interest accrual, conversion triggers)
- warrant: exercise price, expiration, cash/cashless exercise
- vesting: schedules with tranches, cliff, frequency, performance conditions
- kyc: KYC/AML submissions, accreditation verification, provider hooks
- omnisub: Alpaca OmniSub accounts, sub-accounts, orders, positions, tax

Enhanced existing packages:
- securities/types.go: ContractAddress, ChainID, Exemption enum (Reg D/S/A+/CF)
- compliance/types.go: RegDCheck (506b/c), RegSCheck, full Rule144Check
2026-04-06 21:02:32 -07:00

44 lines
1.9 KiB
Go

package omnisub
import "context"
// Repository defines storage for omnibus and sub-account operations.
type Repository interface {
// Omnibus accounts.
CreateOmnibusAccount(ctx context.Context, a *OmnibusAccount) error
GetOmnibusAccount(ctx context.Context, id string) (*OmnibusAccount, error)
UpdateOmnibusAccount(ctx context.Context, a *OmnibusAccount) error
ListOmnibusAccounts(ctx context.Context, companyID string) ([]*OmnibusAccount, error)
// Sub-accounts.
CreateSubAccount(ctx context.Context, a *SubAccount) error
GetSubAccount(ctx context.Context, id string) (*SubAccount, error)
UpdateSubAccount(ctx context.Context, a *SubAccount) error
ListSubAccounts(ctx context.Context, omnibusAccountID string) ([]*SubAccount, error)
GetSubAccountByStakeholder(ctx context.Context, omnibusAccountID, stakeholderID string) (*SubAccount, error)
// Positions.
UpsertPosition(ctx context.Context, p *Position) error
GetPosition(ctx context.Context, subAccountID, securityID string) (*Position, error)
ListPositions(ctx context.Context, subAccountID string) ([]*Position, error)
// Orders.
CreateOrder(ctx context.Context, o *Order) error
GetOrder(ctx context.Context, id string) (*Order, error)
UpdateOrder(ctx context.Context, o *Order) error
ListOrders(ctx context.Context, subAccountID string) ([]*Order, error)
// Corporate actions.
CreateCorporateAction(ctx context.Context, ca *CorporateAction) error
ListCorporateActions(ctx context.Context, securityID string) ([]*CorporateAction, error)
// Tax lots.
CreateTaxLot(ctx context.Context, t *TaxLot) error
ListTaxLots(ctx context.Context, subAccountID, securityID string) ([]*TaxLot, error)
// Tax statements.
CreateTaxStatement(ctx context.Context, ts *TaxStatement) error
GetTaxStatement(ctx context.Context, id string) (*TaxStatement, error)
ListTaxStatements(ctx context.Context, subAccountID string) ([]*TaxStatement, error)
}