@t2000/sdk 10.32.2 → 10.33.0
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/browser.cjs +94 -1
- package/dist/browser.d.cts +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js +83 -3
- package/dist/{commerce-CiewZ7vq.d.cts → commerce-CptpOlnv.d.cts} +207 -1
- package/dist/{commerce-CiewZ7vq.d.ts → commerce-CptpOlnv.d.ts} +207 -1
- package/dist/index.cjs +170 -5
- package/dist/index.d.cts +23 -112
- package/dist/index.d.ts +23 -112
- package/dist/index.js +154 -7
- package/package.json +2 -2
|
@@ -1601,6 +1601,212 @@ declare function verifyJobForSeller({ client, jobId, seller, minAmountUsdc, minR
|
|
|
1601
1601
|
minRunwayMs?: number;
|
|
1602
1602
|
}): Promise<JobVerification>;
|
|
1603
1603
|
|
|
1604
|
+
/**
|
|
1605
|
+
* Open door — client for `a2a_escrow::opening` (SPEC_T2_AGENTS_OPEN_ONCHAIN,
|
|
1606
|
+
* Phase 3 escrow-at-post). Posting an open job escrows USDC on-chain
|
|
1607
|
+
* immediately in a shared `Opening<USDC>`; the first ACTIVE registered ASP
|
|
1608
|
+
* to claim mints a normal `escrow::Job` (deliver/settle with the job verbs).
|
|
1609
|
+
* No claim by `open_until` → `refund_unclaimed` (permissionless, fee-free);
|
|
1610
|
+
* the buyer can `cancel_open` any time while unclaimed.
|
|
1611
|
+
*
|
|
1612
|
+
* The `opening` module shipped in the v2 package upgrade, so its calls
|
|
1613
|
+
* target the LATEST published id — the original id (types, Job verbs) is
|
|
1614
|
+
* unchanged.
|
|
1615
|
+
*/
|
|
1616
|
+
/** The LATEST published `a2a_escrow` package id on MAINNET (v6 upgrade
|
|
1617
|
+
* 2026-08-15, S.1054 — `reputation` module + `opening::claim_proven`;
|
|
1618
|
+
* v5 locked open reject at 10000 (S.1019); v4 added amount bounds
|
|
1619
|
+
* (S.981); v3 added `escrow::decline`; v2 the `opening` module).
|
|
1620
|
+
* A literal, never an env read, so it can serve as a signature-time trust
|
|
1621
|
+
* anchor (S.930). Must match the Move upgrade publish notes.
|
|
1622
|
+
*
|
|
1623
|
+
* S.981: EVERY version-gated verb (escrow create/deliver/release/reject/
|
|
1624
|
+
* refund + decline + all opening verbs) targets this id, so a package
|
|
1625
|
+
* upgrade + `migrate` cutover is a ONE-VALUE change here. The original id
|
|
1626
|
+
* (`MAINNET_A2A_ESCROW_PACKAGE_ID` in job.ts) remains the anchor for type
|
|
1627
|
+
* strings, event filters, and object-type queries — those never move. */
|
|
1628
|
+
declare const MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID = "0xb065033b6f72c4899055a0b3afac28f09dc7b0b7b491eada793157de20000618";
|
|
1629
|
+
/** Back-compat name for the latest id (pre-S.981 consumers import this). */
|
|
1630
|
+
declare const MAINNET_A2A_ESCROW_OPENING_PACKAGE_ID = "0xb065033b6f72c4899055a0b3afac28f09dc7b0b7b491eada793157de20000618";
|
|
1631
|
+
/** Env-overridable latest id for testnet/dev (NOT a trust anchor). A fresh
|
|
1632
|
+
* dev publish has original == latest, so `A2A_ESCROW_PACKAGE_ID` alone is
|
|
1633
|
+
* honored as the fallback override. */
|
|
1634
|
+
declare const A2A_ESCROW_LATEST_PACKAGE_ID: string;
|
|
1635
|
+
/** Back-compat name (pre-S.981). */
|
|
1636
|
+
declare const A2A_ESCROW_OPENING_PACKAGE_ID: string;
|
|
1637
|
+
/**
|
|
1638
|
+
* PINNED per-upgrade package ids — event-filter anchors, NEVER bump these.
|
|
1639
|
+
*
|
|
1640
|
+
* A Sui event's type carries the package id that FIRST DEFINED the struct,
|
|
1641
|
+
* not the id of the version that executed. Indexers filtering
|
|
1642
|
+
* `<pkg>::module` must therefore pin the DEFINING id per event family:
|
|
1643
|
+
* v1 (A2A_ESCROW_PACKAGE_ID) — JobCreated/Delivered/Released/Rejected/Refunded
|
|
1644
|
+
* v2 (…_V2_ID) — OpeningCreated/Claimed/Cancelled/Refunded
|
|
1645
|
+
* v3 (…_V3_ID) — JobDeclined
|
|
1646
|
+
* Filtering the floating LATEST id matches nothing once the next upgrade
|
|
1647
|
+
* lands (live finding, 2026-07-28: the openings indexer went dark when
|
|
1648
|
+
* A2A_ESCROW_OPENING_PACKAGE_ID moved v2 → v3).
|
|
1649
|
+
*/
|
|
1650
|
+
declare const A2A_ESCROW_PACKAGE_V2_ID = "0x860288d789dc617f6474a0a6801d6011e53bf30d5fb801cdad47b9bc6adb098b";
|
|
1651
|
+
declare const A2A_ESCROW_PACKAGE_V3_ID = "0x69ad93c555519de520a5c7f7f2963ad6f8b91cefc098fc2eed75942dcb5bcbe7";
|
|
1652
|
+
/** v6 (S.1054, upgrade FHcn7KCB… 2026-08-15) — defining id for the
|
|
1653
|
+
* `reputation` module: the ScoreBoardCreated/ScoreCreated/ReviewSubmitted
|
|
1654
|
+
* events and the ScoreBoard/AgentScore object types. A DEFINING-id anchor
|
|
1655
|
+
* like V2/V3 — never moves again, even when LATEST does. */
|
|
1656
|
+
declare const A2A_ESCROW_PACKAGE_V6_ID = "0xb065033b6f72c4899055a0b3afac28f09dc7b0b7b491eada793157de20000618";
|
|
1657
|
+
/** Default claim policy: any ACTIVE registered Agent ID ($0 claim, FCFS). */
|
|
1658
|
+
declare const OPENING_CLAIM_POLICY_ANY_ACTIVE = 0;
|
|
1659
|
+
/** S.1054 — Proven: claimer needs ≥ PROVEN_MIN_REVIEWS on-chain reviews
|
|
1660
|
+
* (see `wallet/reputation.ts`). Claims route through `claim_proven`. */
|
|
1661
|
+
declare const OPENING_CLAIM_POLICY_PROVEN = 1;
|
|
1662
|
+
/** S.1054 — Proven · 4★+: Proven AND average stars ≥ 4.0 (strictly
|
|
1663
|
+
* stronger than policy 1). */
|
|
1664
|
+
declare const OPENING_CLAIM_POLICY_PROVEN_4STAR = 2;
|
|
1665
|
+
/** Max time an opening may stay claimable (contract cap): 30 days. */
|
|
1666
|
+
declare const MAX_OPEN_WINDOW_MS = 2592000000;
|
|
1667
|
+
interface OpeningTerms {
|
|
1668
|
+
/** Budget in USDC — escrows NOW, at post. */
|
|
1669
|
+
amountUsdc: number;
|
|
1670
|
+
/** sha256 of the public spec envelope (t2-acp-custom@1: title + brief). */
|
|
1671
|
+
specHash: string;
|
|
1672
|
+
/** Epoch-ms the opening stays claimable until (≤ 30d out). */
|
|
1673
|
+
openUntilMs: number;
|
|
1674
|
+
/** Delivery window the claiming ASP gets: deliver_by = claim + sla. */
|
|
1675
|
+
slaMs: number;
|
|
1676
|
+
reviewWindowMs: number;
|
|
1677
|
+
/** v5 (S.1019): MUST be 10000 — open-board reject pays the buyer in
|
|
1678
|
+
* full (contract-asserted; a partial split made junk delivery +EV over
|
|
1679
|
+
* an honest decline). Hire/`escrow::create` keeps the 0–10000 range. */
|
|
1680
|
+
rejectSplitBps: number;
|
|
1681
|
+
/** S.1054 — who may race to claim: 0 Anyone (default), 1 Proven,
|
|
1682
|
+
* 2 Proven · 4★+. Never changes HOW a claim works: still FCFS, still
|
|
1683
|
+
* $0. 3+ aborts on-chain until defined. */
|
|
1684
|
+
claimPolicy?: number;
|
|
1685
|
+
}
|
|
1686
|
+
/** Every claim policy `create_open` accepts (S.1054). */
|
|
1687
|
+
declare const OPENING_CLAIM_POLICIES: readonly [0, 1, 2];
|
|
1688
|
+
/** Client-side preflight — mirrors the contract's `create_open` bounds plus
|
|
1689
|
+
* the $50 client cap (the contract is value-neutral, same as Job). */
|
|
1690
|
+
declare function preflightCreateOpening(terms: OpeningTerms): {
|
|
1691
|
+
valid: boolean;
|
|
1692
|
+
code?: 'INVALID_AMOUNT' | 'INVALID_INPUT';
|
|
1693
|
+
error?: string;
|
|
1694
|
+
};
|
|
1695
|
+
/** Build the escrow-at-post tx: split USDC → `opening::create_open`. */
|
|
1696
|
+
declare function buildCreateOpeningTx({ client, buyer, terms, }: {
|
|
1697
|
+
client: SuiCoreClient;
|
|
1698
|
+
buyer: string;
|
|
1699
|
+
terms: OpeningTerms;
|
|
1700
|
+
}): Promise<Transaction>;
|
|
1701
|
+
/** Claim an opening (ASP side) — consumes it and mints the funded Job.
|
|
1702
|
+
* `registryId` = the shared `agent_id::registry::Registry` object
|
|
1703
|
+
* (callers pass `AGENT_ID_REGISTRY_ID` from `@t2000/id` — single source).
|
|
1704
|
+
*
|
|
1705
|
+
* S.1054: for a PROVEN opening (`claimPolicy` 1/2) pass `scoreId` — the
|
|
1706
|
+
* claimer's own `AgentScore` (compute with `deriveAgentScoreId`) — and the
|
|
1707
|
+
* call routes to `claim_proven`, which reads it immutably. Omitting it on
|
|
1708
|
+
* a Proven opening aborts on-chain; preflight with `meetsClaimPolicy`
|
|
1709
|
+
* first for an English refusal. */
|
|
1710
|
+
declare function buildClaimOpeningTx({ openingId, registryId, scoreId, }: {
|
|
1711
|
+
openingId: string;
|
|
1712
|
+
registryId: string;
|
|
1713
|
+
scoreId?: string;
|
|
1714
|
+
}): Transaction;
|
|
1715
|
+
/** Buyer withdraws an unclaimed opening — fee-free, any time. */
|
|
1716
|
+
declare function buildCancelOpeningTx(openingId: string): Transaction;
|
|
1717
|
+
/** Permissionless refund crank for an opening past `open_until`. */
|
|
1718
|
+
declare function buildRefundUnclaimedTx(openingId: string): Transaction;
|
|
1719
|
+
/** On-chain view of one Opening. */
|
|
1720
|
+
interface Opening {
|
|
1721
|
+
id: string;
|
|
1722
|
+
buyer: string;
|
|
1723
|
+
amountUsdc: number;
|
|
1724
|
+
feeBps: number;
|
|
1725
|
+
specHash: string;
|
|
1726
|
+
openUntilMs: number;
|
|
1727
|
+
slaMs: number;
|
|
1728
|
+
reviewWindowMs: number;
|
|
1729
|
+
rejectSplitBps: number;
|
|
1730
|
+
claimPolicy: number;
|
|
1731
|
+
createdAtMs: number;
|
|
1732
|
+
}
|
|
1733
|
+
/** Read one Opening by object id (null = gone: claimed/cancelled/refunded). */
|
|
1734
|
+
declare function getOpening(client: SuiCoreClient, openingId: string): Promise<Opening | null>;
|
|
1735
|
+
|
|
1736
|
+
/**
|
|
1737
|
+
* On-chain reputation — client for `a2a_escrow::reputation` (S.1054,
|
|
1738
|
+
* SPEC_AGENT_ID_REPUTATION Phase C). One shared `AgentScore` per reviewed
|
|
1739
|
+
* seller, lazily created on their first review at a DETERMINISTIC address
|
|
1740
|
+
* derived from the shared `ScoreBoard` — `deriveAgentScoreId` computes it
|
|
1741
|
+
* locally, no lookup. Aggregates only (`review_count` + `stars_sum`);
|
|
1742
|
+
* review TEXT stays off-chain (jobId-keyed rows on the API).
|
|
1743
|
+
*
|
|
1744
|
+
* Write authority is Move-enforced: only the buyer of a RELEASED (and
|
|
1745
|
+
* actually delivered) `escrow::Job` can write, once per job — resubmitting
|
|
1746
|
+
* edits the stars in place. There is no admin mint: reputation is receipts.
|
|
1747
|
+
*
|
|
1748
|
+
* These aggregates are the ONE public score SSOT (profile stars, Proven
|
|
1749
|
+
* claim gates). `claim_policy` `1`/`2` openings claim via
|
|
1750
|
+
* `opening::claim_proven`, which reads the claimer's own score immutably.
|
|
1751
|
+
*/
|
|
1752
|
+
/** The shared `reputation::ScoreBoard` object id on MAINNET — the derived-
|
|
1753
|
+
* address namespace parent every `AgentScore` hangs off. Created ONCE by
|
|
1754
|
+
* the S.1054 cutover (`create_score_board`); single instance is
|
|
1755
|
+
* chain-enforced (S.1054b: the id records into the `ScoreBoardKey` DF on
|
|
1756
|
+
* FeeConfig and a second create aborts). This pin MUST equal
|
|
1757
|
+
* `escrow::config_score_board_id(FeeConfig)` — verify at cutover. */
|
|
1758
|
+
declare const MAINNET_A2A_SCORE_BOARD_ID = "0x7506f01e01b1c48d73832949a2808929b80dec2f7104889e012f8a4f09719f6e";
|
|
1759
|
+
/** Env-overridable board id for testnet/dev (NOT a trust anchor). */
|
|
1760
|
+
declare const A2A_SCORE_BOARD_ID: string;
|
|
1761
|
+
/** Reviews required for Proven (`claim_policy` 1, and the floor of 2). */
|
|
1762
|
+
declare const PROVEN_MIN_REVIEWS = 3;
|
|
1763
|
+
/** Average-stars floor for Proven · 4★+ (`claim_policy` 2), scaled ×10. */
|
|
1764
|
+
declare const PROVEN_MIN_AVG_STARS_X10 = 40;
|
|
1765
|
+
/** Star bounds on a review. */
|
|
1766
|
+
declare const REVIEW_MIN_STARS = 1;
|
|
1767
|
+
declare const REVIEW_MAX_STARS = 5;
|
|
1768
|
+
/** Compute the deterministic `AgentScore` object id for an agent — pure
|
|
1769
|
+
* local math (`sui::derived_object`), no RPC. The object may not exist
|
|
1770
|
+
* yet: no score object ⇔ zero on-chain reviews. */
|
|
1771
|
+
declare function deriveAgentScoreId(agent: string, boardId?: string): string;
|
|
1772
|
+
/** On-chain view of one agent's score aggregates. */
|
|
1773
|
+
interface AgentScore {
|
|
1774
|
+
id: string;
|
|
1775
|
+
agent: string;
|
|
1776
|
+
reviewCount: number;
|
|
1777
|
+
starsSum: number;
|
|
1778
|
+
/** Integer-safe average, rounded to 2dp for display (0 when no reviews). */
|
|
1779
|
+
averageStars: number;
|
|
1780
|
+
}
|
|
1781
|
+
/** Read an agent's score (null = no reviews yet — the lazy-create means the
|
|
1782
|
+
* object simply doesn't exist). */
|
|
1783
|
+
declare function getAgentScore(client: SuiCoreClient, agent: string, boardId?: string): Promise<AgentScore | null>;
|
|
1784
|
+
/** Does a score satisfy an Opening's claim policy? (`null` score = zero
|
|
1785
|
+
* reviews.) Mirrors the Move predicates exactly — integer math, and
|
|
1786
|
+
* policy 2 is strictly stronger than policy 1. */
|
|
1787
|
+
declare function meetsClaimPolicy(score: AgentScore | null, claimPolicy: number): boolean;
|
|
1788
|
+
/** Human label for a claim policy — every surface uses these, never the
|
|
1789
|
+
* raw enum. */
|
|
1790
|
+
declare function claimPolicyLabel(claimPolicy: number): string;
|
|
1791
|
+
/** One English sentence for a Proven refusal — CLI/MCP/prepare all reuse
|
|
1792
|
+
* this instead of surfacing a raw Move abort. */
|
|
1793
|
+
declare function claimPolicyRequirement(claimPolicy: number): string;
|
|
1794
|
+
/** Review a released job when the seller ALREADY has a score object —
|
|
1795
|
+
* also the star-EDIT path (same buyer re-rating the same job). */
|
|
1796
|
+
declare function buildSubmitReviewTx({ scoreId, jobId, stars, }: {
|
|
1797
|
+
scoreId: string;
|
|
1798
|
+
jobId: string;
|
|
1799
|
+
stars: number;
|
|
1800
|
+
}): Transaction;
|
|
1801
|
+
/** First review a seller ever receives — lazily creates their score at its
|
|
1802
|
+
* derived address (aborts on-chain if it raced into existence; retry with
|
|
1803
|
+
* `buildSubmitReviewTx`). */
|
|
1804
|
+
declare function buildSubmitFirstReviewTx({ jobId, stars, boardId, }: {
|
|
1805
|
+
jobId: string;
|
|
1806
|
+
stars: number;
|
|
1807
|
+
boardId?: string;
|
|
1808
|
+
}): Transaction;
|
|
1809
|
+
|
|
1604
1810
|
declare const DEFAULT_COMMERCE_API_BASE = "https://api.t2000.ai/v1";
|
|
1605
1811
|
/** The shape the API returns from GET /v1/services. */
|
|
1606
1812
|
interface ServiceListing {
|
|
@@ -1668,4 +1874,4 @@ declare function putJobSpec(base: string, content: string): Promise<string>;
|
|
|
1668
1874
|
* the store is untrusted; the chain hash is the authority). */
|
|
1669
1875
|
declare function getJobSpec(base: string, hash: string): Promise<string>;
|
|
1670
1876
|
|
|
1671
|
-
export {
|
|
1877
|
+
export { type SendAssetClass as $, A2A_ESCROW_FEE_CONFIG_ID as A, type BalanceResponse as B, CLOCK_ID as C, DEFAULT_ACTIVITY_REPORT_URL as D, ETH_TYPE as E, type OverlayFeeConfig as F, GAS_RESERVE_MIN as G, PREFLIGHT_OK as H, IKA_TYPE as I, JOB_STATES as J, KNOWN_TARGETS as K, LABEL_PATTERNS as L, MANIFEST_TYPE as M, NAVX_TYPE as N, OPENING_CLAIM_POLICIES as O, PREFLIGHT_MAX_AMOUNT as P, PROVEN_MIN_AVG_STARS_X10 as Q, PROVEN_MIN_REVIEWS as R, type PayOptions as S, type PayResult as T, type PreflightResult as U, REVIEW_MAX_STARS as V, REVIEW_MIN_STARS as W, STABLE_ASSETS as X, SUI_DECIMALS as Y, SUI_TYPE as Z, SUPPORTED_ASSETS as _, A2A_ESCROW_PACKAGE_ID as a, mapWalletError as a$, type SendResult as a0, type ServiceListing as a1, type SimulationResult as a2, type StableAsset as a3, type SuiHolding as a4, type SuiRpcTxBlock as a5, type SupportedAsset as a6, type SwapRouteResult as a7, T2000Error as a8, type T2000ErrorCode as a9, claimPolicyLabel as aA, claimPolicyRequirement as aB, classifyAction as aC, classifyLabel as aD, classifySendAsset as aE, classifyTransaction as aF, deriveAgentScoreId as aG, executeTx as aH, extractAllUserLegs as aI, extractTransferDetails as aJ, extractTxCommands as aK, extractTxSender as aL, fallbackLabel as aM, fetchService as aN, findSwapRoute as aO, formatAssetAmount as aP, formatSui as aQ, formatUsd as aR, getAgentScore as aS, getDecimals as aT, getDecimalsForCoinType as aU, getJob as aV, getJobSpec as aW, invalidSendAssetMessage as aX, jobActionsFor as aY, listServices as aZ, mapMoveAbortCode as a_, type T2000ErrorData as aa, T2000_OVERLAY_FEE_WALLET as ab, TOKEN_MAP as ac, type TransactionLeg as ad, type TransactionRecord as ae, type TransactionSigner as af, type TxDirection as ag, USDC_DECIMALS as ah, USDC_TYPE as ai, USDE_TYPE as aj, USDSUI_TYPE as ak, USDT_TYPE as al, WAL_TYPE as am, WBTC_TYPE as an, type X402ActivityPayload as ao, type ZkLoginProof as ap, ZkLoginSigner as aq, buildCreateJobTx as ar, buildDeliverJobTx as as, buildRefundJobTx as at, buildRejectJobTx as au, buildReleaseJobTx as av, buildSendTx as aw, buildSwapTx as ax, checkPositiveAmount as ay, checkSuiAddress as az, type ActivityReportConfig as b, buildRefundUnclaimedTx as b$, meetsClaimPolicy as b0, mistToSui as b1, parseSuiRpcTx as b2, payWithX402 as b3, preflightCreateJob as b4, preflightFail as b5, preflightPay as b6, preflightSend as b7, preflightSwap as b8, putJobSpec as b9, A2A_SCORE_BOARD_ID as bA, CETUS_USDC_SUI_POOL as bB, type CoinPage as bC, DEFAULT_GRPC_URL as bD, GASLESS_MIN_STABLE_AMOUNT as bE, GASLESS_STABLE_TYPES as bF, MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID as bG, MAINNET_A2A_ESCROW_OPENING_PACKAGE_ID as bH, MAINNET_A2A_ESCROW_PACKAGE_ID as bI, MAINNET_A2A_SCORE_BOARD_ID as bJ, MAX_OPEN_WINDOW_MS as bK, OPERATION_ASSETS as bL, type Opening as bM, type OpeningTerms as bN, type Operation as bO, SENDABLE_ASSETS as bP, type SelectAndSplitResult as bQ, type SerializedCetusRoutePath as bR, type SerializedRouterDataV3 as bS, addSendToTx as bT, addSwapToTx as bU, assertAllowedAsset as bV, assertBuyerRequirements as bW, buildCancelOpeningTx as bX, buildClaimOpeningTx as bY, buildCreateOpeningTx as bZ, buildDeclineJobTx as b_, rawToStable as ba, rawToUsdc as bb, refineLendingLabel as bc, reportX402Activity as bd, resolveSymbol as be, resolveTokenType as bf, stableToRaw as bg, suiToMist as bh, truncateAddress as bi, usdcToRaw as bj, validateAddress as bk, verifyJobForSeller as bl, type T2000Options as bm, type X402Probe as bn, type SerializedCetusRoute as bo, type SwapResult as bp, type SwapQuoteResult as bq, type PaymentRequest as br, type SuiCoreClient as bs, type SponsoredCoinMergeCache as bt, type SendableAsset as bu, A2A_ESCROW_LATEST_PACKAGE_ID as bv, A2A_ESCROW_OPENING_PACKAGE_ID as bw, A2A_ESCROW_PACKAGE_V2_ID as bx, A2A_ESCROW_PACKAGE_V3_ID as by, A2A_ESCROW_PACKAGE_V6_ID as bz, type AgentScore as c, buildSubmitFirstReviewTx as c0, buildSubmitReviewTx as c1, deserializeCetusRoute as c2, fetchAllCoins as c3, getCoinMeta as c4, getOpening as c5, getSuiClient as c6, getSuiGrpcClient as c7, isAllowedAsset as c8, isCetusRouteFresh as c9, isInRegistry as ca, normalizeAsset as cb, normalizeCoinType as cc, preflightCreateOpening as cd, probeX402 as ce, queryHistory as cf, queryTransaction as cg, selectAndSplitCoin as ch, selectSuiCoin as ci, serializeCetusRoute as cj, simulateTransaction as ck, throwIfSimulationFailed as cl, verifyCetusRouteCoinMatch as cm, COIN_REGISTRY as d, type ClassifyBalanceChange as e, type ClassifyResult as f, type CoinMeta as g, DEFAULT_COMMERCE_API_BASE as h, DEFAULT_NETWORK as i, type DepositInfo as j, type ExtractedTransfer as k, type Job as l, type JobState as m, type JobTerms as n, type JobVerification as o, KeypairSigner as p, LOFI_TYPE as q, MAX_DELIVER_HORIZON_MS as r, MAX_JOB_USDC as s, MAX_REVIEW_WINDOW_MS as t, MIN_JOB_USDC as u, MIST_PER_SUI as v, OPENING_CLAIM_POLICY_ANY_ACTIVE as w, OPENING_CLAIM_POLICY_PROVEN as x, OPENING_CLAIM_POLICY_PROVEN_4STAR as y, OVERLAY_FEE_RATE as z };
|
package/dist/index.cjs
CHANGED
|
@@ -18,6 +18,7 @@ var secp256k1 = require('@noble/curves/secp256k1');
|
|
|
18
18
|
var sha256 = require('@noble/hashes/sha256');
|
|
19
19
|
var utils$1 = require('@noble/hashes/utils');
|
|
20
20
|
var fs = require('fs');
|
|
21
|
+
var bcs = require('@mysten/sui/bcs');
|
|
21
22
|
var suins = require('@mysten/suins');
|
|
22
23
|
|
|
23
24
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -3327,16 +3328,19 @@ init_coinSelection();
|
|
|
3327
3328
|
init_errors();
|
|
3328
3329
|
init_token_registry();
|
|
3329
3330
|
init_coinSelection();
|
|
3330
|
-
var MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID = "
|
|
3331
|
+
var MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID = "0xb065033b6f72c4899055a0b3afac28f09dc7b0b7b491eada793157de20000618";
|
|
3331
3332
|
var MAINNET_A2A_ESCROW_OPENING_PACKAGE_ID = MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID;
|
|
3332
3333
|
var A2A_ESCROW_LATEST_PACKAGE_ID = process.env.A2A_ESCROW_OPENING_PACKAGE_ID ?? process.env.A2A_ESCROW_PACKAGE_ID ?? MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID;
|
|
3333
3334
|
var A2A_ESCROW_OPENING_PACKAGE_ID = A2A_ESCROW_LATEST_PACKAGE_ID;
|
|
3334
3335
|
var A2A_ESCROW_PACKAGE_V2_ID = "0x860288d789dc617f6474a0a6801d6011e53bf30d5fb801cdad47b9bc6adb098b";
|
|
3335
3336
|
var A2A_ESCROW_PACKAGE_V3_ID = "0x69ad93c555519de520a5c7f7f2963ad6f8b91cefc098fc2eed75942dcb5bcbe7";
|
|
3337
|
+
var A2A_ESCROW_PACKAGE_V6_ID = "0xb065033b6f72c4899055a0b3afac28f09dc7b0b7b491eada793157de20000618";
|
|
3336
3338
|
var CLOCK_ID2 = "0x6";
|
|
3337
3339
|
var MODULE = "opening";
|
|
3338
3340
|
var SHA256_HEX_RE = /^(0x)?[0-9a-fA-F]{64}$/;
|
|
3339
3341
|
var OPENING_CLAIM_POLICY_ANY_ACTIVE = 0;
|
|
3342
|
+
var OPENING_CLAIM_POLICY_PROVEN = 1;
|
|
3343
|
+
var OPENING_CLAIM_POLICY_PROVEN_4STAR = 2;
|
|
3340
3344
|
var MAX_OPEN_WINDOW_MS = 2592e6;
|
|
3341
3345
|
function feeConfigArg(tx) {
|
|
3342
3346
|
return tx.sharedObjectRef({
|
|
@@ -3353,6 +3357,11 @@ function hexToBytes2(hex) {
|
|
|
3353
3357
|
}
|
|
3354
3358
|
return bytes;
|
|
3355
3359
|
}
|
|
3360
|
+
var OPENING_CLAIM_POLICIES = [
|
|
3361
|
+
OPENING_CLAIM_POLICY_ANY_ACTIVE,
|
|
3362
|
+
OPENING_CLAIM_POLICY_PROVEN,
|
|
3363
|
+
OPENING_CLAIM_POLICY_PROVEN_4STAR
|
|
3364
|
+
];
|
|
3356
3365
|
var OPEN_REJECT_SPLIT_BPS = 1e4;
|
|
3357
3366
|
function preflightCreateOpening(terms) {
|
|
3358
3367
|
if (!Number.isFinite(terms.amountUsdc) || terms.amountUsdc <= 0) {
|
|
@@ -3392,6 +3401,14 @@ function preflightCreateOpening(terms) {
|
|
|
3392
3401
|
error: "Open postings lock reject at 100% buyer / 0% seller (rejectSplitBps must be 10000, contract-enforced since v5) \u2014 reject is economically a decline, so junk delivery has no edge."
|
|
3393
3402
|
};
|
|
3394
3403
|
}
|
|
3404
|
+
const policy = terms.claimPolicy ?? OPENING_CLAIM_POLICY_ANY_ACTIVE;
|
|
3405
|
+
if (!OPENING_CLAIM_POLICIES.includes(policy)) {
|
|
3406
|
+
return {
|
|
3407
|
+
valid: false,
|
|
3408
|
+
code: "INVALID_INPUT",
|
|
3409
|
+
error: "claimPolicy must be 0 (Anyone), 1 (Proven) or 2 (Proven \xB7 4\u2605+) \u2014 anything else aborts on-chain."
|
|
3410
|
+
};
|
|
3411
|
+
}
|
|
3395
3412
|
return { valid: true };
|
|
3396
3413
|
}
|
|
3397
3414
|
async function buildCreateOpeningTx({
|
|
@@ -3416,7 +3433,7 @@ async function buildCreateOpeningTx({
|
|
|
3416
3433
|
tx.pure.u64(terms.slaMs),
|
|
3417
3434
|
tx.pure.u64(terms.reviewWindowMs),
|
|
3418
3435
|
tx.pure.u64(terms.rejectSplitBps),
|
|
3419
|
-
tx.pure.u8(OPENING_CLAIM_POLICY_ANY_ACTIVE),
|
|
3436
|
+
tx.pure.u8(terms.claimPolicy ?? OPENING_CLAIM_POLICY_ANY_ACTIVE),
|
|
3420
3437
|
feeConfigArg(tx),
|
|
3421
3438
|
tx.object(CLOCK_ID2)
|
|
3422
3439
|
]
|
|
@@ -3425,13 +3442,20 @@ async function buildCreateOpeningTx({
|
|
|
3425
3442
|
}
|
|
3426
3443
|
function buildClaimOpeningTx({
|
|
3427
3444
|
openingId,
|
|
3428
|
-
registryId
|
|
3445
|
+
registryId,
|
|
3446
|
+
scoreId
|
|
3429
3447
|
}) {
|
|
3430
3448
|
const tx = new transactions.Transaction();
|
|
3431
3449
|
tx.moveCall({
|
|
3432
|
-
target: `${A2A_ESCROW_OPENING_PACKAGE_ID}::${MODULE}
|
|
3450
|
+
target: `${A2A_ESCROW_OPENING_PACKAGE_ID}::${MODULE}::${scoreId ? "claim_proven" : "claim"}`,
|
|
3433
3451
|
typeArguments: [exports.USDC_TYPE],
|
|
3434
|
-
arguments: [
|
|
3452
|
+
arguments: scoreId ? [
|
|
3453
|
+
tx.object(openingId),
|
|
3454
|
+
tx.object(registryId),
|
|
3455
|
+
tx.object(scoreId),
|
|
3456
|
+
feeConfigArg(tx),
|
|
3457
|
+
tx.object(CLOCK_ID2)
|
|
3458
|
+
] : [
|
|
3435
3459
|
tx.object(openingId),
|
|
3436
3460
|
tx.object(registryId),
|
|
3437
3461
|
feeConfigArg(tx),
|
|
@@ -3713,6 +3737,123 @@ async function verifyJobForSeller({
|
|
|
3713
3737
|
return { ok: problems.length === 0, job, problems };
|
|
3714
3738
|
}
|
|
3715
3739
|
|
|
3740
|
+
// src/wallet/reputation.ts
|
|
3741
|
+
init_errors();
|
|
3742
|
+
init_token_registry();
|
|
3743
|
+
var MAINNET_A2A_SCORE_BOARD_ID = "0x7506f01e01b1c48d73832949a2808929b80dec2f7104889e012f8a4f09719f6e";
|
|
3744
|
+
var A2A_SCORE_BOARD_ID = process.env.A2A_SCORE_BOARD_ID ?? MAINNET_A2A_SCORE_BOARD_ID;
|
|
3745
|
+
var MODULE3 = "reputation";
|
|
3746
|
+
var CLOCK_ID4 = "0x6";
|
|
3747
|
+
var PROVEN_MIN_REVIEWS = 3;
|
|
3748
|
+
var PROVEN_MIN_AVG_STARS_X10 = 40;
|
|
3749
|
+
var REVIEW_MIN_STARS = 1;
|
|
3750
|
+
var REVIEW_MAX_STARS = 5;
|
|
3751
|
+
function boardIdOrThrow(boardId) {
|
|
3752
|
+
const id = boardId ?? A2A_SCORE_BOARD_ID;
|
|
3753
|
+
if (!id) {
|
|
3754
|
+
throw new exports.T2000Error(
|
|
3755
|
+
"INVALID_INPUT",
|
|
3756
|
+
"The reputation ScoreBoard id is not configured (pre-S.1054-cutover build?)."
|
|
3757
|
+
);
|
|
3758
|
+
}
|
|
3759
|
+
return id;
|
|
3760
|
+
}
|
|
3761
|
+
function deriveAgentScoreId(agent, boardId) {
|
|
3762
|
+
return utils.deriveObjectID(
|
|
3763
|
+
boardIdOrThrow(boardId),
|
|
3764
|
+
"address",
|
|
3765
|
+
bcs.bcs.Address.serialize(validateAddress(agent)).toBytes()
|
|
3766
|
+
);
|
|
3767
|
+
}
|
|
3768
|
+
async function getAgentScore(client, agent, boardId) {
|
|
3769
|
+
const scoreId = deriveAgentScoreId(agent, boardId);
|
|
3770
|
+
const resp = await client.core.getObject({ objectId: scoreId, include: { json: true } }).catch(() => null);
|
|
3771
|
+
const objType = resp?.object?.type ?? "";
|
|
3772
|
+
const json = resp?.object?.json;
|
|
3773
|
+
if (!json || !objType.includes(`::${MODULE3}::AgentScore`)) {
|
|
3774
|
+
return null;
|
|
3775
|
+
}
|
|
3776
|
+
const reviewCount = Number(json.review_count ?? 0);
|
|
3777
|
+
const starsSum = Number(json.stars_sum ?? 0);
|
|
3778
|
+
return {
|
|
3779
|
+
id: scoreId,
|
|
3780
|
+
agent: String(json.agent),
|
|
3781
|
+
reviewCount,
|
|
3782
|
+
starsSum,
|
|
3783
|
+
averageStars: reviewCount > 0 ? Math.round(starsSum / reviewCount * 100) / 100 : 0
|
|
3784
|
+
};
|
|
3785
|
+
}
|
|
3786
|
+
function meetsClaimPolicy(score, claimPolicy) {
|
|
3787
|
+
if (claimPolicy === 0) return true;
|
|
3788
|
+
if (!score) return false;
|
|
3789
|
+
const proven = score.reviewCount >= PROVEN_MIN_REVIEWS;
|
|
3790
|
+
if (claimPolicy === 1) return proven;
|
|
3791
|
+
if (claimPolicy === 2) {
|
|
3792
|
+
return proven && score.starsSum * 10 >= score.reviewCount * PROVEN_MIN_AVG_STARS_X10;
|
|
3793
|
+
}
|
|
3794
|
+
return false;
|
|
3795
|
+
}
|
|
3796
|
+
function claimPolicyLabel(claimPolicy) {
|
|
3797
|
+
if (claimPolicy === 0) return "Anyone";
|
|
3798
|
+
if (claimPolicy === 1) return "Proven";
|
|
3799
|
+
if (claimPolicy === 2) return "Proven \xB7 4\u2605+";
|
|
3800
|
+
return `Unknown policy ${claimPolicy}`;
|
|
3801
|
+
}
|
|
3802
|
+
function claimPolicyRequirement(claimPolicy) {
|
|
3803
|
+
if (claimPolicy === 1) {
|
|
3804
|
+
return `Proven opening \u2014 claiming needs at least ${PROVEN_MIN_REVIEWS} on-chain reviews.`;
|
|
3805
|
+
}
|
|
3806
|
+
if (claimPolicy === 2) {
|
|
3807
|
+
return `Proven \xB7 4\u2605+ opening \u2014 claiming needs at least ${PROVEN_MIN_REVIEWS} on-chain reviews AND a 4.0\u2605 average.`;
|
|
3808
|
+
}
|
|
3809
|
+
return "Anyone can claim (active Agent ID required).";
|
|
3810
|
+
}
|
|
3811
|
+
function assertStars(stars) {
|
|
3812
|
+
if (!Number.isInteger(stars) || stars < REVIEW_MIN_STARS || stars > REVIEW_MAX_STARS) {
|
|
3813
|
+
throw new exports.T2000Error("INVALID_INPUT", "Stars must be an integer 1-5.");
|
|
3814
|
+
}
|
|
3815
|
+
}
|
|
3816
|
+
function buildSubmitReviewTx({
|
|
3817
|
+
scoreId,
|
|
3818
|
+
jobId,
|
|
3819
|
+
stars
|
|
3820
|
+
}) {
|
|
3821
|
+
assertStars(stars);
|
|
3822
|
+
const tx = new transactions.Transaction();
|
|
3823
|
+
tx.moveCall({
|
|
3824
|
+
target: `${A2A_ESCROW_LATEST_PACKAGE_ID}::${MODULE3}::submit_review`,
|
|
3825
|
+
typeArguments: [exports.USDC_TYPE],
|
|
3826
|
+
arguments: [
|
|
3827
|
+
tx.object(scoreId),
|
|
3828
|
+
tx.object(validateAddress(jobId)),
|
|
3829
|
+
tx.pure.u8(stars),
|
|
3830
|
+
feeConfigArg(tx),
|
|
3831
|
+
tx.object(CLOCK_ID4)
|
|
3832
|
+
]
|
|
3833
|
+
});
|
|
3834
|
+
return tx;
|
|
3835
|
+
}
|
|
3836
|
+
function buildSubmitFirstReviewTx({
|
|
3837
|
+
jobId,
|
|
3838
|
+
stars,
|
|
3839
|
+
boardId
|
|
3840
|
+
}) {
|
|
3841
|
+
assertStars(stars);
|
|
3842
|
+
const tx = new transactions.Transaction();
|
|
3843
|
+
tx.moveCall({
|
|
3844
|
+
target: `${A2A_ESCROW_LATEST_PACKAGE_ID}::${MODULE3}::submit_first_review`,
|
|
3845
|
+
typeArguments: [exports.USDC_TYPE],
|
|
3846
|
+
arguments: [
|
|
3847
|
+
tx.object(boardIdOrThrow(boardId)),
|
|
3848
|
+
tx.object(validateAddress(jobId)),
|
|
3849
|
+
tx.pure.u8(stars),
|
|
3850
|
+
feeConfigArg(tx),
|
|
3851
|
+
tx.object(CLOCK_ID4)
|
|
3852
|
+
]
|
|
3853
|
+
});
|
|
3854
|
+
return tx;
|
|
3855
|
+
}
|
|
3856
|
+
|
|
3716
3857
|
// src/commerce.ts
|
|
3717
3858
|
var DEFAULT_COMMERCE_API_BASE = "https://api.t2000.ai/v1";
|
|
3718
3859
|
async function commerceFetchJson(url, init) {
|
|
@@ -3938,6 +4079,12 @@ async function sponsoredOpeningVerb(base, signer, action, params) {
|
|
|
3938
4079
|
function postOpenJob(base, signer, input) {
|
|
3939
4080
|
return sponsoredOpeningVerb(base, signer, "open-create", input);
|
|
3940
4081
|
}
|
|
4082
|
+
function submitJobReview(base, signer, input) {
|
|
4083
|
+
return sponsoredOpeningVerb(base, signer, "job-review", {
|
|
4084
|
+
jobId: input.jobId.trim(),
|
|
4085
|
+
stars: input.stars
|
|
4086
|
+
});
|
|
4087
|
+
}
|
|
3941
4088
|
function claimOpenJob(base, signer, openingId) {
|
|
3942
4089
|
return sponsoredOpeningVerb(base, signer, "open-claim", {
|
|
3943
4090
|
openingId: openingId.trim()
|
|
@@ -4401,6 +4548,8 @@ exports.A2A_ESCROW_OPENING_PACKAGE_ID = A2A_ESCROW_OPENING_PACKAGE_ID;
|
|
|
4401
4548
|
exports.A2A_ESCROW_PACKAGE_ID = A2A_ESCROW_PACKAGE_ID;
|
|
4402
4549
|
exports.A2A_ESCROW_PACKAGE_V2_ID = A2A_ESCROW_PACKAGE_V2_ID;
|
|
4403
4550
|
exports.A2A_ESCROW_PACKAGE_V3_ID = A2A_ESCROW_PACKAGE_V3_ID;
|
|
4551
|
+
exports.A2A_ESCROW_PACKAGE_V6_ID = A2A_ESCROW_PACKAGE_V6_ID;
|
|
4552
|
+
exports.A2A_SCORE_BOARD_ID = A2A_SCORE_BOARD_ID;
|
|
4404
4553
|
exports.AUDRIC_PARENT = AUDRIC_PARENT;
|
|
4405
4554
|
exports.AUDRIC_PARENT_NAME = AUDRIC_PARENT_NAME;
|
|
4406
4555
|
exports.AUDRIC_PARENT_NFT_ID = AUDRIC_PARENT_NFT_ID;
|
|
@@ -4425,15 +4574,23 @@ exports.LimitExceededError = LimitExceededError;
|
|
|
4425
4574
|
exports.MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID = MAINNET_A2A_ESCROW_LATEST_PACKAGE_ID;
|
|
4426
4575
|
exports.MAINNET_A2A_ESCROW_OPENING_PACKAGE_ID = MAINNET_A2A_ESCROW_OPENING_PACKAGE_ID;
|
|
4427
4576
|
exports.MAINNET_A2A_ESCROW_PACKAGE_ID = MAINNET_A2A_ESCROW_PACKAGE_ID;
|
|
4577
|
+
exports.MAINNET_A2A_SCORE_BOARD_ID = MAINNET_A2A_SCORE_BOARD_ID;
|
|
4428
4578
|
exports.MAX_DELIVER_HORIZON_MS = MAX_DELIVER_HORIZON_MS;
|
|
4429
4579
|
exports.MAX_JOB_USDC = MAX_JOB_USDC;
|
|
4430
4580
|
exports.MAX_OPEN_WINDOW_MS = MAX_OPEN_WINDOW_MS;
|
|
4431
4581
|
exports.MAX_REVIEW_WINDOW_MS = MAX_REVIEW_WINDOW_MS;
|
|
4432
4582
|
exports.MIN_JOB_USDC = MIN_JOB_USDC;
|
|
4433
4583
|
exports.MIST_PER_SUI = MIST_PER_SUI;
|
|
4584
|
+
exports.OPENING_CLAIM_POLICIES = OPENING_CLAIM_POLICIES;
|
|
4434
4585
|
exports.OPENING_CLAIM_POLICY_ANY_ACTIVE = OPENING_CLAIM_POLICY_ANY_ACTIVE;
|
|
4586
|
+
exports.OPENING_CLAIM_POLICY_PROVEN = OPENING_CLAIM_POLICY_PROVEN;
|
|
4587
|
+
exports.OPENING_CLAIM_POLICY_PROVEN_4STAR = OPENING_CLAIM_POLICY_PROVEN_4STAR;
|
|
4435
4588
|
exports.OPENING_TYPE_MARKER = OPENING_TYPE_MARKER;
|
|
4436
4589
|
exports.OPERATION_ASSETS = OPERATION_ASSETS;
|
|
4590
|
+
exports.PROVEN_MIN_AVG_STARS_X10 = PROVEN_MIN_AVG_STARS_X10;
|
|
4591
|
+
exports.PROVEN_MIN_REVIEWS = PROVEN_MIN_REVIEWS;
|
|
4592
|
+
exports.REVIEW_MAX_STARS = REVIEW_MAX_STARS;
|
|
4593
|
+
exports.REVIEW_MIN_STARS = REVIEW_MIN_STARS;
|
|
4437
4594
|
exports.SENDABLE_ASSETS = SENDABLE_ASSETS;
|
|
4438
4595
|
exports.SPONSORED_PYTH_DEPENDENT_PROVIDERS = SPONSORED_PYTH_DEPENDENT_PROVIDERS;
|
|
4439
4596
|
exports.STABLE_ASSETS = STABLE_ASSETS;
|
|
@@ -4468,6 +4625,8 @@ exports.buildRejectJobTx = buildRejectJobTx;
|
|
|
4468
4625
|
exports.buildReleaseJobTx = buildReleaseJobTx;
|
|
4469
4626
|
exports.buildRevokeLeafTx = buildRevokeLeafTx;
|
|
4470
4627
|
exports.buildSendTx = buildSendTx;
|
|
4628
|
+
exports.buildSubmitFirstReviewTx = buildSubmitFirstReviewTx;
|
|
4629
|
+
exports.buildSubmitReviewTx = buildSubmitReviewTx;
|
|
4471
4630
|
exports.buildSwapTx = buildSwapTx;
|
|
4472
4631
|
exports.cancelOpenJob = cancelOpenJob;
|
|
4473
4632
|
exports.canonicalizeRecipientInput = canonicalizeRecipientInput;
|
|
@@ -4476,6 +4635,8 @@ exports.chatCompletionStream = chatCompletionStream;
|
|
|
4476
4635
|
exports.checkPositiveAmount = checkPositiveAmount;
|
|
4477
4636
|
exports.checkSuiAddress = checkSuiAddress;
|
|
4478
4637
|
exports.claimOpenJob = claimOpenJob;
|
|
4638
|
+
exports.claimPolicyLabel = claimPolicyLabel;
|
|
4639
|
+
exports.claimPolicyRequirement = claimPolicyRequirement;
|
|
4479
4640
|
exports.classifyAction = classifyAction;
|
|
4480
4641
|
exports.classifyLabel = classifyLabel;
|
|
4481
4642
|
exports.classifySendAsset = classifySendAsset;
|
|
@@ -4484,6 +4645,7 @@ exports.clearLimits = clearLimits;
|
|
|
4484
4645
|
exports.composeTx = composeTx;
|
|
4485
4646
|
exports.customHireEnvelope = customHireEnvelope;
|
|
4486
4647
|
exports.dailySpentToday = dailySpentToday;
|
|
4648
|
+
exports.deriveAgentScoreId = deriveAgentScoreId;
|
|
4487
4649
|
exports.deriveAllowedAddressesFromPtb = deriveAllowedAddressesFromPtb;
|
|
4488
4650
|
exports.deserializeCetusRoute = deserializeCetusRoute;
|
|
4489
4651
|
exports.displayHandle = displayHandle;
|
|
@@ -4503,6 +4665,7 @@ exports.formatUsd = formatUsd;
|
|
|
4503
4665
|
exports.fullHandle = fullHandle;
|
|
4504
4666
|
exports.generateKeypair = generateKeypair;
|
|
4505
4667
|
exports.getAddress = getAddress;
|
|
4668
|
+
exports.getAgentScore = getAgentScore;
|
|
4506
4669
|
exports.getCoinMeta = getCoinMeta;
|
|
4507
4670
|
exports.getDecimals = getDecimals;
|
|
4508
4671
|
exports.getDecimalsForCoinType = getDecimalsForCoinType;
|
|
@@ -4530,6 +4693,7 @@ exports.loadKey = loadKey;
|
|
|
4530
4693
|
exports.looksLikeSuiNs = looksLikeSuiNs;
|
|
4531
4694
|
exports.mapMoveAbortCode = mapMoveAbortCode;
|
|
4532
4695
|
exports.mapWalletError = mapWalletError;
|
|
4696
|
+
exports.meetsClaimPolicy = meetsClaimPolicy;
|
|
4533
4697
|
exports.mistToSui = mistToSui;
|
|
4534
4698
|
exports.normalizeAddressInput = normalizeAddressInput;
|
|
4535
4699
|
exports.normalizeAsset = normalizeAsset;
|
|
@@ -4569,6 +4733,7 @@ exports.setLimits = setLimits;
|
|
|
4569
4733
|
exports.setSponsoredTxGuard = setSponsoredTxGuard;
|
|
4570
4734
|
exports.simulateTransaction = simulateTransaction;
|
|
4571
4735
|
exports.stableToRaw = stableToRaw;
|
|
4736
|
+
exports.submitJobReview = submitJobReview;
|
|
4572
4737
|
exports.suiToMist = suiToMist;
|
|
4573
4738
|
exports.throwIfSimulationFailed = throwIfSimulationFailed;
|
|
4574
4739
|
exports.truncateAddress = truncateAddress;
|