Market Views
getBorrowerProfile()
READ
getBorrowerProfile(borrower: address): string
Returns a packed credit summary for a borrower address, useful for lender UIs that need to show creditworthiness at a glance. The string is prefixed with the number of days the borrower has been in the system, then appended with the full credit report from saturncredit. Format: "daysInSystem:<N>_<creditReport>" (e.g. "daysInSystem:42_score:780_..."). Reverts if the address is not registered.
Parameters
| Name | Type | Description |
| borrower | address | Address of the borrower whose profile to fetch. |
Returns
string — Packed string: "daysInSystem:<N>_<creditReport>".
What to expect
Reverts if borrower is not registered in saturncredit.
Example
const profile = await readContract("saturnmarket", "getBorrowerProfile", [borrowerAddr]);
// "daysInSystem:42_score:780_repaid:5_defaulted:0_streak:5"
getMarketEnabled()
READ
getMarketEnabled(): number
Returns 1 if the P2P market is open for new requests and quotes, 0 if an admin has paused it. Check this before rendering the post-request UI.
Returns
number — 1 = enabled, 0 = disabled.
Example
const enabled = await readContract("saturnmarket", "getMarketEnabled", []);
getTotalOpenRequests()
READ
getTotalOpenRequests(): number
Live count of requests currently in status 1 (open). Use for marketplace summary stats.
Returns
number — Number of open loan requests.
Example
const open = await readContract("saturnmarket", "getTotalOpenRequests", []);
getTotalMatchedLoans()
READ
getTotalMatchedLoans(): number
Cumulative count of loan requests that have been accepted (i.e. loans opened) through the marketplace since deployment.
Returns
number — Total number of matched / accepted loans.
Example
const matched = await readContract("saturnmarket", "getTotalMatchedLoans", []);
getNextRequestId()
READ
getNextRequestId(): number
Returns the ID that will be assigned to the next loan request. Subtract 1 to get the most recently created request ID. Use to paginate all-time listings.
Returns
number — Next request ID (starts at 1; increments by 1 for each postLoanRequest).
Example
const nextId = await readContract("saturnmarket", "getNextRequestId", []);
// Iterate requestIds 1 .. nextId-1 to enumerate all requests
getNextQuoteId()
READ
getNextQuoteId(): number
Returns the ID that will be assigned to the next submitted quote. Use alongside getNextRequestId to enumerate all market activity.
Returns
number — Next quote ID (starts at 1; increments by 1 for each submitQuote).
Example
const nextQId = await readContract("saturnmarket", "getNextQuoteId", []);
getRequestSummary()
READ
getRequestSummary(reqId: number): string
One-call summary of a request's most-needed fields. Format: "token:<sym>_loanDex:<n>_amount:<n>_colType:<n>_status:<n>_quotes:<n>_maxRate:<n>". Use for marketplace listing cards where a single round-trip is preferable to seven.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
string — Packed summary string.
Example
const summary = await readContract("saturnmarket", "getRequestSummary", [reqId]);
// "token:TAZ_loanDex:2_amount:500000000_colType:2_status:1_quotes:3_maxRate:2000"
getRequestBorrower()
READ
getRequestBorrower(reqId: number): address
Returns the borrower address that posted this loan request.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
address — Borrower's wallet address.
getRequestLoanToken()
READ
getRequestLoanToken(reqId: number): string
Returns the token symbol the borrower wants to borrow (TAZ in v1.0).
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
string — Token symbol, e.g. "TAZ".
getRequestLoanDexVersion()
READ
getRequestLoanDexVersion(reqId: number): number
Returns which DEX (1 = V3, 2 = V4) is used to price the loan token against RA.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — 1 = V3, 2 = V4.
getRequestLoanAmount()
READ
getRequestLoanAmount(reqId: number): number
Returns the raw-unit amount of the loan token the borrower is requesting.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Requested loan amount in raw token units.
getRequestCollateralType()
READ
getRequestCollateralType(reqId: number): number
Returns the borrower's offered collateral type. In v1.0 this will be 2 (v4 pool) or 3 (v3 LP NFT) — type 1 is never stored since it is rejected at post time.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — 2 = v4 LP pool, 3 = v3 LP NFT.
getRequestCollateralToken()
READ
getRequestCollateralToken(reqId: number): string
Returns the collateral token symbol (type 1 only). Empty string for types 2 and 3.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
string — Token symbol for type-1 collateral; empty otherwise.
getRequestCollateralAmount()
READ
getRequestCollateralAmount(reqId: number): number
Returns the collateral token amount (type 1 only). 0 for types 2 and 3.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Raw-unit collateral token amount; 0 for LP collateral types.
getRequestCollateralDexVersion()
READ
getRequestCollateralDexVersion(reqId: number): number
Returns the DEX version used to price the type-1 collateral token. 0 for types 2 and 3.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — 1 = V3, 2 = V4, or 0 for LP collateral types.
getRequestCollateralPoolId()
READ
getRequestCollateralPoolId(reqId: number): number
Returns the v4 pool ID offered as collateral (type 2). 0 for types 1 and 3.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — v4 pool ID, or 0 if not a pool-backed request.
getRequestCollateralNftId()
READ
getRequestCollateralNftId(reqId: number): number
Returns the v3 LP NFT ID offered as collateral (type 3). 0 for types 1 and 2.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — v3 LP NFT ID, or 0 if not an NFT-backed request.
getRequestPreferredDuration()
READ
getRequestPreferredDuration(reqId: number): number
Returns the borrower's preferred loan duration in seconds. Advisory — lenders may quote different durations.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Preferred duration in seconds.
getRequestMaxInterestRate()
READ
getRequestMaxInterestRate(reqId: number): number
Returns the maximum interest rate (basis points) the borrower is willing to accept. Use to filter out quotes above this threshold in your lender UI.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Max interest rate in basis points.
getRequestMessage()
READ
getRequestMessage(reqId: number): string
Returns the borrower's optional freeform message attached to the request.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
string — Freeform note from the borrower. May be empty.
getRequestStatus()
READ
getRequestStatus(reqId: number): number
Returns the current status of the request. 1 = open, 2 = accepted, 3 = cancelled, 4 = expired.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — 1 open | 2 accepted | 3 cancelled | 4 expired.
Example
const status = await readContract("saturnmarket", "getRequestStatus", [reqId]);
if (status === 1) { /* show quote button */ }
getRequestCreatedAt()
READ
getRequestCreatedAt(reqId: number): number
Returns the Unix timestamp (seconds) when the request was posted.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Unix timestamp of creation.
getRequestExpiresAt()
READ
getRequestExpiresAt(reqId: number): number
Returns the Unix timestamp (seconds) when the request expires. Use for countdown timers in the marketplace UI.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Unix expiry timestamp.
Example
const expiresAt = await readContract("saturnmarket", "getRequestExpiresAt", [reqId]);
const secsLeft = expiresAt - Math.floor(Date.now() / 1000);
getRequestQuoteCount()
READ
getRequestQuoteCount(reqId: number): number
Returns how many quotes have been submitted for this request. Combine with getRequestQuoteAtIndex to iterate them.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Total quote count for this request (includes withdrawn quotes).
Example
const count = await readContract("saturnmarket", "getRequestQuoteCount", [reqId]);
for (let i = 0; i < count; i++) {
const qId = await readContract("saturnmarket", "getRequestQuoteAtIndex", [reqId, i]);
}
getRequestAcceptedQuoteId()
READ
getRequestAcceptedQuoteId(reqId: number): number
Returns the ID of the quote that was accepted to open the loan. Only meaningful when request status is 2 (accepted).
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Accepted quote ID, or 0 if no quote has been accepted yet.
getRequestLoanId()
READ
getRequestLoanId(reqId: number): number
Returns the saturnloans loanId created when this request was accepted. Use to link from the marketplace entry to the live loan in saturnloans. Only set after status becomes 2.
Parameters
| Name | Type | Description |
| reqId | number | Loan request ID. |
Returns
number — Loan ID in saturnloans, or 0 if not yet accepted.
getRequestQuoteAtIndex()
READ
getRequestQuoteAtIndex(requestId: number, index: number): number
Returns the quoteId at a given index within the quote list for a specific request. Iterate from 0 to getRequestQuoteCount(requestId)-1 to enumerate all quotes on a request.
Parameters
| Name | Type | Description |
| requestId | number | Loan request ID. |
| index | number | Zero-based index into the request's quote list. |
Returns
number — Quote ID at the given index.
Example
const count = await readContract("saturnmarket", "getRequestQuoteCount", [reqId]);
const quoteIds = await Promise.all(
Array.from({ length: count }, (_, i) =>
readContract("saturnmarket", "getRequestQuoteAtIndex", [reqId, i])
)
);
getQuoteSummary()
READ
getQuoteSummary(qId: number): string
One-call summary of a quote's most-needed fields. Format: "rate:<n>_duration:<n>_amount:<n>_colType:<n>_status:<n>". Use for the quote card in the borrower's decision UI.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
string — Packed summary string.
Example
const summary = await readContract("saturnmarket", "getQuoteSummary", [quoteId]);
// "rate:1500_duration:1209600_amount:500000000_colType:2_status:1"
getQuoteLender()
READ
getQuoteLender(qId: number): address
Returns the lender address that submitted this quote.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
address — Lender's wallet address.
getQuoteRequestId()
READ
getQuoteRequestId(qId: number): number
Returns the loan request ID that this quote is responding to.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Parent request ID.
getQuoteInterestRate()
READ
getQuoteInterestRate(qId: number): number
Returns the per-period interest rate offered by the lender, in basis points.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Interest rate in basis points.
getQuoteDuration()
READ
getQuoteDuration(qId: number): number
Returns the loan term in seconds proposed by the lender.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Loan duration in seconds.
getQuoteLoanAmount()
READ
getQuoteLoanAmount(qId: number): number
Returns the raw-unit loan amount the lender is offering (and has escrowed). This amount minus the origination fee is what the borrower actually receives.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Escrowed loan amount in raw token units.
getQuoteColType()
READ
getQuoteColType(qId: number): number
Returns the collateral type the lender is demanding. In v1.0 this will be 2 (v4 pool) or 3 (v3 LP NFT).
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — 2 = v4 LP pool, 3 = v3 LP NFT.
getQuoteColTokenSymbol()
READ
getQuoteColTokenSymbol(qId: number): string
Returns the token symbol the lender requires as collateral (type 1 only). Empty for types 2 and 3.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
string — Collateral token symbol for type-1 quotes; empty otherwise.
getQuoteColTokenAmount()
READ
getQuoteColTokenAmount(qId: number): number
Returns the collateral token amount required (type 1 only). 0 for types 2 and 3.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Required collateral amount in raw token units; 0 for LP types.
getQuoteColDexVersion()
READ
getQuoteColDexVersion(qId: number): number
Returns the DEX version used to price the type-1 collateral. 0 for types 2 and 3.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — 1 = V3, 2 = V4, or 0 for LP collateral types.
getQuoteColPoolId()
READ
getQuoteColPoolId(qId: number): number
Returns the specific v4 pool ID the lender requires as collateral (type 2). 0 for types 1 and 3.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Required v4 pool ID; 0 if not a pool-collateral quote.
getQuoteColNftId()
READ
getQuoteColNftId(qId: number): number
Returns the specific v3 LP NFT ID the lender requires as collateral (type 3). 0 for types 1 and 2.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Required v3 LP NFT ID; 0 if not an NFT-collateral quote.
getQuoteMessage()
READ
getQuoteMessage(qId: number): string
Returns the lender's optional message attached to the quote.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
string — Freeform note from the lender. May be empty.
getQuoteStatus()
READ
getQuoteStatus(qId: number): number
Returns the current status of the quote. 1 = pending, 2 = accepted, 4 = withdrawn.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — 1 pending | 2 accepted | 4 withdrawn.
Example
const status = await readContract("saturnmarket", "getQuoteStatus", [quoteId]);
if (status === 1) { /* quote is still live, borrower can accept */ }
getQuoteCreatedAt()
READ
getQuoteCreatedAt(qId: number): number
Returns the Unix timestamp (seconds) when the quote was submitted.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Unix timestamp of quote creation.
getQuoteExpiresAt()
READ
getQuoteExpiresAt(qId: number): number
Returns the Unix timestamp (seconds) when the quote expires. acceptQuote reverts after this time.
Parameters
| Name | Type | Description |
| qId | number | Quote ID. |
Returns
number — Unix expiry timestamp.
Example
const expiresAt = await readContract("saturnmarket", "getQuoteExpiresAt", [quoteId]);
const expired = Date.now() / 1000 > expiresAt;
getUserRequestCount()
READ
getUserRequestCount(user: address): number
Returns the total number of loan requests ever posted by this address (includes cancelled and accepted ones). Use as the upper bound when iterating getUserRequestAtIndex.
Parameters
| Name | Type | Description |
| user | address | Borrower address to look up. |
Returns
number — Total request count for this user.
Example
const count = await readContract("saturnmarket", "getUserRequestCount", [userAddr]);
getUserRequestAtIndex()
READ
getUserRequestAtIndex(user: address, index: number): number
Returns the requestId at the given zero-based index in the user's personal request list. Iterate from 0 to getUserRequestCount(user)-1 for a full user history.
Parameters
| Name | Type | Description |
| user | address | Borrower address. |
| index | number | Zero-based index. |
Returns
number — Loan request ID at the given index.
Example
const count = await readContract("saturnmarket", "getUserRequestCount", [userAddr]);
const ids = await Promise.all(
Array.from({ length: count }, (_, i) =>
readContract("saturnmarket", "getUserRequestAtIndex", [userAddr, i])
)
);
getUserQuoteCount()
READ
getUserQuoteCount(user: address): number
Returns the total number of quotes ever submitted by this lender address (includes withdrawn ones). Use as the upper bound when iterating getUserQuoteAtIndex.
Parameters
| Name | Type | Description |
| user | address | Lender address to look up. |
Returns
number — Total quote count for this lender.
getUserQuoteAtIndex()
READ
getUserQuoteAtIndex(user: address, index: number): number
Returns the quoteId at the given zero-based index in the lender's personal quote list. Iterate from 0 to getUserQuoteCount(user)-1 for a full lender quote history.
Parameters
| Name | Type | Description |
| user | address | Lender address. |
| index | number | Zero-based index. |
Returns
number — Quote ID at the given index.
Example
const count = await readContract("saturnmarket", "getUserQuoteCount", [lenderAddr]);
const qIds = await Promise.all(
Array.from({ length: count }, (_, i) =>
readContract("saturnmarket", "getUserQuoteAtIndex", [lenderAddr, i])
)
);