StableRoute Router — Entrypoint & Event Reference
Authoritative on-chain ABI for StableRouteRouter (src/lib.rs ).
Every public entrypoint and emitted event is listed below, grouped by
subsystem. Error codes referenced here are documented in the
RouterError table in the README .
Auth legend: admin = require_admin (the stored Admin must sign) ·
pending = the proposed pending admin must sign · none = no auth.
Entrypoint
Auth
Params
Returns
Errors
Event
init
admin
admin: Address
—
AlreadyInitialized (#1)
init(admin)
version
none
—
Symbol (ROUTER_V2)
—
—
get_schema_version
none
—
u32
—
—
migrate_v1_to_v2
admin
—
—
NotInitialized (#2), MigrationVersionMismatch (#13)
—
Entrypoint
Auth
Params
Returns
Errors
Event
get_admin
none
—
Option<Address>
—
—
propose_admin_transfer
admin
new_admin: Address
—
NotInitialized (#2)
adm_prop(new_admin)
accept_admin_transfer
pending
caller: Address
—
NoPendingAdminTransfer (#7), NotPendingAdmin (#8)
adm_set(caller)
cancel_admin_transfer
admin
—
—
NotInitialized (#2)
—
get_pending_admin
none
—
Option<Address>
—
—
Entrypoint
Auth
Params
Returns
Errors
Event
pause
admin
—
—
NotInitialized (#2)
paused(true)
unpause
admin
—
—
NotInitialized (#2)
paused(false)
is_paused
none
—
bool
—
—
Entrypoint
Auth
Params
Returns
Errors
Event
register_pair
admin
source: Symbol, destination: Symbol
—
ContractPaused (#9), NotInitialized (#2), SourceEqualsDestination (#3)
pair_reg(source, destination)
register_pairs
admin
pairs: Vec<(Symbol, Symbol)>
—
ContractPaused (#9), NotInitialized (#2), EmptyBatch (#19), BatchTooLarge (#18), SourceEqualsDestination (#3)
pair_reg(source, destination) per entry
unregister_pair
admin
source: Symbol, destination: Symbol
—
NotInitialized (#2)
unreg(source, destination)
is_pair_registered
none
source: Symbol, destination: Symbol
bool
—
—
is_pair_active
none
source: Symbol, destination: Symbol
bool
—
—
get_pair_info
none
source: Symbol, destination: Symbol
PairInfo
—
—
get_pair_info_ext
none
source: Symbol, destination: Symbol
PairInfoExt
—
—
Entrypoint
Auth
Params
Returns
Errors
Event
set_pair_fee_bps
admin
source: Symbol, destination: Symbol, fee_bps: u32
—
ContractPaused (#9), NotInitialized (#2), FeeBpsTooHigh (#4)
fee_set(source, destination, fee_bps)
set_pair_fees_bps
admin
entries: Vec<(Symbol, Symbol, u32)>
—
ContractPaused (#9), NotInitialized (#2), EmptyBatch (#19), BatchTooLarge (#18), FeeBpsTooHigh (#4), PairNotRegistered (#5)
fee_set(source, destination, fee_bps) per entry
get_pair_fee_bps
none
source: Symbol, destination: Symbol
u32
—
—
set_fee_recipient
admin
recipient: Address
—
NotInitialized (#2)
—
get_fee_recipient
none
—
Option<Address>
—
—
Entrypoint
Auth
Params
Returns
Errors
Event
set_pair_min_amount
admin
source, destination: Symbol, min_amount: i128
—
NotInitialized (#2), AmountMustBePositive (#6)
—
get_pair_min_amount
none
source, destination: Symbol
i128
—
—
set_pair_max_amount
admin
source, destination: Symbol, max_amount: i128
—
NotInitialized (#2), AmountMustBePositive (#6)
—
get_pair_max_amount
none
source, destination: Symbol
i128
—
—
set_pair_liquidity
admin
source, destination: Symbol, liquidity: i128
—
NotInitialized (#2), AmountMustBePositive (#6)
liq_set(source, destination, liquidity)
get_pair_liquidity
none
source, destination: Symbol
i128
—
—
Entrypoint
Auth
Params
Returns
Errors
Event
compute_route_fee
none
source, destination: Symbol, amount: i128
i128 (fee)
AmountMustBePositive (#6), PairNotRegistered (#5), AmountBelowMin (#10), AmountAboveMax (#11), InsufficientLiquidity (#12)
route(source, destination, amount)
quote_route
none
source, destination: Symbol, amount: i128
(i128 fee, i128 net)
AmountMustBePositive (#6), PairNotRegistered (#5)
—
get_pair_last_route_at
none
source, destination: Symbol
Option<u64>
—
—
get_total_routes_all_time
none
—
u64
—
—
route_tag
none
source, destination: Symbol
(Symbol, Symbol)
—
—
Every event is published with a single symbol_short! topic and a data
payload tuple. Topic symbols are capped at 9 characters.
Topic
Payload
Emitted by
init
admin: Address
init
adm_prop
new_admin: Address
propose_admin_transfer
adm_set
caller: Address
accept_admin_transfer
paused
bool
pause / unpause
pair_reg
(source, destination): (Symbol, Symbol)
register_pair
unreg
(source, destination): (Symbol, Symbol)
unregister_pair
cfg_clr
(source, destination): (Symbol, Symbol)
unregister_pair
fee_set
(source, destination, fee_bps): (Symbol, Symbol, u32)
set_pair_fee_bps
liq_set
(source, destination, liquidity): (Symbol, Symbol, i128)
set_pair_liquidity
route
(source, destination, amount): (Symbol, Symbol, i128)
compute_route_fee
Extended pair info (PairInfoExt)
Added in a later batch after the original PairInfo, get_pair_info_ext
returns all per-pair slots in a single round-trip. The extra fields beyond
PairInfo are:
Field
Type
Default
Source slot
cooldown_secs
u64
0 (disabled)
PairCooldown
route_count
u64
0
PairRouteCount
volume
i128
0
PairVolume
Keep this catalog in sync with the symbol_short!(...) calls in
src/lib.rs whenever an entrypoint or event is added or changed.