You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: crates/contract/tests/snapshots/abi__abi_has_not_changed.snap
+15-15Lines changed: 15 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ expression: abi
31
31
},
32
32
{
33
33
"name": "allowed_foreign_chain_providers",
34
-
"doc": " On-chain RPC provider whitelist keyed by `ForeignChain`. Nodes read this at\n startup to validate their local `foreign_chains.yaml`. Borsh-encoded result.",
34
+
"doc": " On-chain RPC provider whitelist keyed by [`ForeignChain`](dtos::ForeignChain). Nodes read this at\n startup to validate their local `foreign_chains.yaml`. Borsh-encoded result.",
35
35
"kind": "view",
36
36
"result": {
37
37
"serialization_type": "borsh",
@@ -423,7 +423,7 @@ expression: abi
423
423
},
424
424
{
425
425
"name": "clean_invalid_attestations",
426
-
"doc": " Prunes up to `max_scan` stored attestations that fail re-verification (expired or\n referencing stale whitelists). Returns the number of entries removed. Callable by\n anyone while the protocol is in `Running`.",
426
+
"doc": " Prunes up to `max_scan` stored attestations that fail re-verification (expired or\n referencing stale whitelists). Returns the number of entries removed. Callable by\n anyone while the protocol is in [`Running`](ProtocolContractState::Running).",
427
427
"kind": "call",
428
428
"params": {
429
429
"serialization_type": "json",
@@ -487,7 +487,7 @@ expression: abi
487
487
},
488
488
{
489
489
"name": "conclude_node_migration",
490
-
"doc": " Finalizes a node migration for the calling account.\n\n This method can only be called while the protocol is in a `Running` state\n and by an existing participant. On success, the participant’s information is\n updated to the new destination node.\n\n # Errors\n Returns the following errors:\n - `InvalidState::ProtocolStateNotRunning`: if protocol is not in `Running` state\n - `InvalidState::NotParticipant`: if caller is not a current participant\n - `NodeMigrationError::KeysetMismatch`: if provided keyset does not match the expected keyset\n - `NodeMigrationError::MigrationNotFound`: if no migration record exists for the caller\n - `NodeMigrationError::AccountPublicKeyMismatch`: if caller’s public key does not match the expected destination node\n - `InvalidParameters::InvalidTeeRemoteAttestation`: if destination node’s TEE quote is invalid",
490
+
"doc": " Finalizes a node migration for the calling account.\n\n This method can only be called while the protocol is in a [`Running`](ProtocolContractState::Running) state\n and by an existing participant. On success, the participant’s information is\n updated to the new destination node.\n\n # Errors\n Returns the following errors:\n - [`InvalidState::ProtocolStateNotRunning`]: if protocol is not in [`Running`](ProtocolContractState::Running) state\n - [`InvalidState::NotParticipant`]: if caller is not a current participant\n - [`NodeMigrationError::KeysetMismatch`](crate::errors::NodeMigrationError::KeysetMismatch): if provided keyset does not match the expected keyset\n - [`NodeMigrationError::MigrationNotFound`](crate::errors::NodeMigrationError::MigrationNotFound): if no migration record exists for the caller\n - [`NodeMigrationError::AccountPublicKeyMismatch`](crate::errors::NodeMigrationError::AccountPublicKeyMismatch): if caller’s public key does not match the expected destination node\n - [`InvalidParameters::InvalidTeeRemoteAttestation`]: if destination node’s TEE quote is invalid",
491
491
"kind": "call",
492
492
"params": {
493
493
"serialization_type": "json",
@@ -668,7 +668,7 @@ expression: abi
668
668
},
669
669
{
670
670
"name": "get_pending_ckd_request",
671
-
"doc": " Presence check for a pending CKD request, exposed as a view call.\n\n See [`Self::get_pending_request`] for the contract: the returned `YieldIndex`\n is an arbitrary representative of a fan-out queue, not \"the\" yield. Only the\n `Some`/`None` distinction is meaningful.",
671
+
"doc": " Presence check for a pending CKD request, exposed as a view call.\n\n See [`Self::get_pending_request`] for the contract: the returned [`YieldIndex`]\n is an arbitrary representative of a fan-out queue, not \"the\" yield. Only the\n `Some`/`None` distinction is meaningful.",
672
672
"kind": "view",
673
673
"params": {
674
674
"serialization_type": "json",
@@ -697,7 +697,7 @@ expression: abi
697
697
},
698
698
{
699
699
"name": "get_pending_request",
700
-
"doc": " Presence check for a pending signature request, exposed as a view call.\n\n **The returned `YieldIndex` is an arbitrary representative, not \"the\" yield\n for this request.** Since the duplicate-request fan-out feature (PR #3187),\n a single request key can have N queued yields; this method returns the head of the\n queue. Callers that need to act on the full set are wrong to use this. The\n only correct interpretation is presence: `Some(_)` vs `None`.\n\n The `Option<YieldIndex>` shape is retained for JSON wire compatibility with\n out-of-tree consumers; the in-tree caller (`tx_sender::observe_tx_result`)\n only matches on presence. Prefer a `bool`-shaped accessor if one is added.",
700
+
"doc": " Presence check for a pending signature request, exposed as a view call.\n\n **The returned [`YieldIndex`] is an arbitrary representative, not \"the\" yield\n for this request.** Since the duplicate-request fan-out feature (PR #3187),\n a single request key can have N queued yields; this method returns the head of the\n queue. Callers that need to act on the full set are wrong to use this. The\n only correct interpretation is presence: `Some(_)` vs `None`.\n\n The `Option<YieldIndex>` shape is retained for JSON wire compatibility with\n out-of-tree consumers; the in-tree caller (`tx_sender::observe_tx_result`)\n only matches on presence. Prefer a `bool`-shaped accessor if one is added.",
701
701
"kind": "view",
702
702
"params": {
703
703
"serialization_type": "json",
@@ -726,7 +726,7 @@ expression: abi
726
726
},
727
727
{
728
728
"name": "get_pending_verify_foreign_tx_request",
729
-
"doc": " Presence check for a pending foreign-tx verification request, exposed as a\n view call.\n\n See [`Self::get_pending_request`] for the contract: the returned `YieldIndex`\n is an arbitrary representative of a fan-out queue, not \"the\" yield. Only the\n `Some`/`None` distinction is meaningful.",
729
+
"doc": " Presence check for a pending foreign-tx verification request, exposed as a\n view call.\n\n See [`Self::get_pending_request`] for the contract: the returned [`YieldIndex`]\n is an arbitrary representative of a fan-out queue, not \"the\" yield. Only the\n `Some`/`None` distinction is meaningful.",
730
730
"kind": "view",
731
731
"params": {
732
732
"serialization_type": "json",
@@ -1228,7 +1228,7 @@ expression: abi
1228
1228
},
1229
1229
{
1230
1230
"name": "register_foreign_chain_support",
1231
-
"doc": " Registers the set of foreign chains the calling node supports.\n\n Must be called directly from the participant's own NEAR account\n (`voter_or_panic` requires `signer == predecessor`, blocking calls forwarded\n through another contract). Callable by a participant in any active protocol phase\n (Initializing, Running, or Resharing — authenticated against that phase's participant\n set); panics in `NotInitialized` or when the caller is not a participant. Entries for\n accounts that are no longer participants are pruned after resharing by\n [`Self::clean_foreign_chain_data`].",
1231
+
"doc": " Registers the set of foreign chains the calling node supports.\n\n Must be called directly from the participant's own NEAR account\n (`voter_or_panic` requires `signer == predecessor`, blocking calls forwarded\n through another contract). Callable by a participant in any active protocol phase\n (Initializing, Running, or Resharing — authenticated against that phase's participant\n set); panics in [`NotInitialized`](ProtocolContractState::NotInitialized) or when the caller is not a participant. Entries for\n accounts that are no longer participants are pruned after resharing by\n [`Self::clean_foreign_chain_data`].",
1232
1232
"kind": "call",
1233
1233
"params": {
1234
1234
"serialization_type": "json",
@@ -1302,7 +1302,7 @@ expression: abi
1302
1302
},
1303
1303
{
1304
1304
"name": "request_app_private_key",
1305
-
"doc": " To avoid overloading the network with too many requests,\n we ask for a small deposit for each ckd request.\n\n Note: identity points are accepted in`AppPublicKeyPV` to support use cases\n where the derived key is intentionally public (no encryption).",
1305
+
"doc": " To avoid overloading the network with too many requests,\n we ask for a small deposit for each ckd request.\n\n Note: identity points are accepted in\n [`AppPublicKeyPV`](near_mpc_contract_interface::types::CKDAppPublicKey::AppPublicKeyPV)\n to support use cases\n where the derived key is intentionally public (no encryption).",
1306
1306
"kind": "call",
1307
1307
"modifiers": [
1308
1308
"payable"
@@ -2288,7 +2288,7 @@ expression: abi
2288
2288
},
2289
2289
{
2290
2290
"name": "start_node_migration",
2291
-
"doc": " Sets the destination node for the calling account.\n\n This function can only be called while the protocol is in a `Running` state.\n The signer must be a current participant of the current epoch, otherwise an error is returned.\n On success, the provided `DestinationNodeInfo` is stored in the contract state\n under the signer’s account ID.\n\n # Errors\n - [`InvalidState::ProtocolStateNotRunning`] if the protocol is not in the `Running` state.\n - [`InvalidState::NotParticipant`] if the signer is not a current participant.\n\n Requires a deposit of at least [`MINIMUM_NODE_MANAGEMENT_DEPOSIT`] (excess is refunded), so\n the call must be signed by a full-access key rather than the node's function-call access\n key.",
2291
+
"doc": " Sets the destination node for the calling account.\n\n This function can only be called while the protocol is in a [`Running`](ProtocolContractState::Running) state.\n The signer must be a current participant of the current epoch, otherwise an error is returned.\n On success, the provided [`DestinationNodeInfo`](dtos::DestinationNodeInfo) is stored in the contract state\n under the signer’s account ID.\n\n # Errors\n - [`InvalidState::ProtocolStateNotRunning`] if the protocol is not in the [`Running`](ProtocolContractState::Running) state.\n - [`InvalidState::NotParticipant`] if the signer is not a current participant.\n\n Requires a deposit of at least [`MINIMUM_NODE_MANAGEMENT_DEPOSIT`] (excess is refunded), so\n the call must be signed by a full-access key rather than the node's function-call access\n key.",
2292
2292
"kind": "call",
2293
2293
"modifiers": [
2294
2294
"payable"
@@ -2636,7 +2636,7 @@ expression: abi
2636
2636
},
2637
2637
{
2638
2638
"name": "vote_new_parameters",
2639
-
"doc": " Propose new parameters for the MPC network: participants, governance\n threshold, and optional per-domain`ReconstructionThreshold` updates\n (empty map keeps the current ones), applied on resharing completion.\n If a threshold number of votes are reached on the exact same proposal, this will transition\n the contract into the Resharing state.\n\n The epoch_id must be equal to 1 plus the current epoch ID (if Running) or prospective epoch\n ID (if Resharing). Otherwise the vote is ignored. This is to prevent late transactions from\n accidentally voting on outdated proposals.\n\n Like the other governance voting methods, this must be called directly from the\n participant's own NEAR account: `assert_caller_is_signer()` requires\n `signer_account_id == predecessor_account_id`, so calls forwarded through another\n contract are rejected.",
2639
+
"doc": " Propose new parameters for the MPC network: participants, governance\n threshold, and optional per-domain\n [`ReconstructionThreshold`](near_mpc_contract_interface::types::ReconstructionThreshold) updates\n (empty map keeps the current ones), applied on resharing completion.\n If a threshold number of votes are reached on the exact same proposal, this will transition\n the contract into the Resharing state.\n\n The epoch_id must be equal to 1 plus the current epoch ID (if Running) or prospective epoch\n ID (if Resharing). Otherwise the vote is ignored. This is to prevent late transactions from\n accidentally voting on outdated proposals.\n\n Like the other governance voting methods, this must be called directly from the\n participant's own NEAR account: [`assert_caller_is_signer()`](MpcContract::assert_caller_is_signer) requires\n `signer_account_id == predecessor_account_id`, so calls forwarded through another\n contract are rejected.",
2640
2640
"kind": "call",
2641
2641
"params": {
2642
2642
"serialization_type": "json",
@@ -2809,7 +2809,7 @@ expression: abi
2809
2809
},
2810
2810
{
2811
2811
"name": "vote_update_foreign_chain_providers",
2812
-
"doc": " Vote on per-chain RPC provider whitelist state. The input is keyed by\n `ForeignChain`; each `ChainEntry` value carries the proposed full provider list\n and the RPC response quorum for that chain. The chain's stored state is replaced\n once the protocol's signing threshold of participants has voted the same\n `(providers, quorum)` pair. `NonEmptyBTreeMap` enforces a non-empty batch and\n at-most-one entry per chain at borsh-deserialize time.",
2812
+
"doc": " Vote on per-chain RPC provider whitelist state. The input is keyed by\n[`ForeignChain`](dtos::ForeignChain); each [`ChainEntry`](dtos::ChainEntry) value carries the proposed full provider list\n and the RPC response quorum for that chain. The chain's stored state is replaced\n once the protocol's signing threshold of participants has voted the same\n `(providers, quorum)` pair. [`NonEmptyBTreeMap`](near_mpc_bounded_collections::NonEmptyBTreeMap) enforces a non-empty batch and\n at-most-one entry per chain at borsh-deserialize time.",
2813
2813
"kind": "call",
2814
2814
"params": {
2815
2815
"serialization_type": "borsh",
@@ -3329,7 +3329,7 @@ expression: abi
3329
3329
]
3330
3330
},
3331
3331
"AuthenticatedParticipantId2": {
3332
-
"description": "This struct is supposed to contain the participant id associated to the account `env::signer_account_id()`, but is only constructible given a set of participants that includes the signer, thus acting as a type system-based enforcement mechanism (albeit a best-effort one) for authenticating the signer.",
3332
+
"description": "This struct is supposed to contain the participant id associated to the account [`env::signer_account_id()`], but is only constructible given a set of participants that includes the signer, thus acting as a type system-based enforcement mechanism (albeit a best-effort one) for authenticating the signer.",
3333
3333
"allOf": [
3334
3334
{
3335
3335
"$ref": "#/definitions/ParticipantId"
@@ -4963,7 +4963,7 @@ expression: abi
4963
4963
}
4964
4964
},
4965
4965
"Participants": {
4966
-
"description": "DTO representation of the contract-internal `Participants` type.\n\nIt decouples the JSON wire format (used in view methods like `state()` via [`GovernanceThresholdParameters`](crate::types::state::GovernanceThresholdParameters) from the internal `Participants` representation, allowing internal changes (e.g., migrating to [`BTreeMap`](std::collections::BTreeMap) in [#1861](https://github.com/near/mpc/pull/1861)) without breaking the public API.",
4966
+
"description": "DTO representation of the contract-internal [`Participants`] type.\n\nIt decouples the JSON wire format (used in view methods like `state()` via [`GovernanceThresholdParameters`](crate::types::state::GovernanceThresholdParameters) from the internal [`Participants`] representation, allowing internal changes (e.g., migrating to [`BTreeMap`](std::collections::BTreeMap) in [#1861](https://github.com/near/mpc/pull/1861)) without breaking the public API.",
4967
4967
"type": "object",
4968
4968
"required": [
4969
4969
"next_id",
@@ -5108,7 +5108,7 @@ expression: abi
5108
5108
}
5109
5109
},
5110
5110
"ProposedGovernanceThresholdParameters": {
5111
-
"description": "A proposed set of threshold parameters submitted to `vote_new_parameters`: the proposed [`GovernanceThresholdParameters`] plus per-domain `ReconstructionThreshold` updates for the resharing it would trigger. An empty `per_domain_thresholds` keeps the current ones; a populated map must reference only existing domains (contract-validated), is applied to the `DomainRegistry` on resharing, and never persists onto the stored [`GovernanceThresholdParameters`].",
5111
+
"description": "A proposed set of threshold parameters submitted to `vote_new_parameters`: the proposed [`GovernanceThresholdParameters`] plus per-domain [`ReconstructionThreshold`] updates for the resharing it would trigger. An empty `per_domain_thresholds` keeps the current ones; a populated map must reference only existing domains (contract-validated), is applied to the [`DomainRegistry`] on resharing, and never persists onto the stored [`GovernanceThresholdParameters`].",
5112
5112
"type": "object",
5113
5113
"required": [
5114
5114
"parameters"
@@ -5427,7 +5427,7 @@ expression: abi
5427
5427
"uniqueItems": true
5428
5428
},
5429
5429
"per_domain_thresholds": {
5430
-
"description": "Per-domain `ReconstructionThreshold` updates carried from the accepted proposal. Applied to the `DomainRegistry` when resharing completes.",
5430
+
"description": "Per-domain [`ReconstructionThreshold`] updates carried from the accepted proposal. Applied to the [`DomainRegistry`] when resharing completes.",
0 commit comments