Subscriptions
The request-based deposit flow, from an investor's request to operator-settled, newly minted shares.
A subscription is a user's request to enter the fund by depositing an approved asset (for example USDC) in exchange for newly minted shares priced against the current NAV.
Lifecycle
Request. After approving the asset, the investor calls requestSubscription(assetsIn, minSharesOut, subscriptionAsset, receiver). The deposited assets are pulled into escrow inside the kpkShares contract, a PENDING request is recorded, and a SubscriptionRequest event is emitted with the request id. minSharesOut is slippage protection; the actual shares are computed at settlement time. receiver may differ from the investor.
Settlement. An operator calls processRequests(approveIds, rejectIds, asset, sharesPrice). For each approved subscription it computes shares = assetsToShares(assetAmount, sharesPrice, asset), checks shares ≥ minSharesOut, mints the shares to the receiver, and transfers the escrowed assets to the Portfolio Safe (portfolio). The request becomes PROCESSED and SubscriptionApproval is emitted.
Or rejection / expiry. An operator can reject a request (SubscriptionDenial), returning the escrowed assets to the investor. Any request older than its 7-day lifetime is skipped during processing and auto-rejected (SubscriptionRequestExpired), also returning the assets.
Or cancellation. While still PENDING, the investor or receiver can cancel after the request's TTL has elapsed (cancelSubscription(id)), recovering the escrowed assets. See Cancel a request.
A request moves through exactly one terminal state: PROCESSED, REJECTED, or CANCELLED.
The request event
cancelableFrom is when the investor may cancel; expiryAt is when the request can no longer be approved. See Subscription request for integration code, and Fees for the management/performance fees charged during settlement.
Last updated