@dfinity/nns 10.0.1 → 10.1.1

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.
@@ -15,6 +15,7 @@ export type Action =
15
15
  | { ManageNeuron: ManageNeuron }
16
16
  | { UpdateCanisterSettings: UpdateCanisterSettings }
17
17
  | { InstallCode: InstallCode }
18
+ | { DeregisterKnownNeuron: DeregisterKnownNeuron }
18
19
  | { StopOrStartCanister: StopOrStartCanister }
19
20
  | { CreateServiceNervousSystem: CreateServiceNervousSystem }
20
21
  | { ExecuteNnsFunction: ExecuteNnsFunction }
@@ -93,6 +94,9 @@ export interface ClaimOrRefreshNeuronFromAccountResponse {
93
94
  export interface ClaimOrRefreshResponse {
94
95
  refreshed_neuron_id: [] | [NeuronId];
95
96
  }
97
+ /**
98
+ * KEEP THIS IN SYNC WITH ManageNeuronCommandRequest!
99
+ */
96
100
  export type Command =
97
101
  | { Spawn: Spawn }
98
102
  | { Split: Split }
@@ -174,6 +178,9 @@ export interface DateRangeFilter {
174
178
  export interface Decimal {
175
179
  human_readable: [] | [string];
176
180
  }
181
+ export interface DeregisterKnownNeuron {
182
+ id: [] | [NeuronId];
183
+ }
177
184
  export interface DerivedProposalInformation {
178
185
  swap_background_information: [] | [SwapBackgroundInformation];
179
186
  }
@@ -223,9 +230,41 @@ export interface FolloweesForTopic {
223
230
  topic: [] | [number];
224
231
  followees: [] | [Array<NeuronId>];
225
232
  }
233
+ /**
234
+ * Creates a rented subnet from a rental request (in the Subnet Rental
235
+ * canister).
236
+ */
226
237
  export interface FulfillSubnetRentalRequest {
238
+ /**
239
+ * Identifies which rental request to fulfill.
240
+ *
241
+ * (Identifying the rental request by user works, because a user can have at
242
+ * most one rental request in the Subnet Rental canister).
243
+ */
227
244
  user: [] | [Principal];
245
+ /**
246
+ * What software the nodes will run.
247
+ *
248
+ * This must be approved by a prior proposal to bless an IC OS version.
249
+ *
250
+ * This is a FULL git commit ID in the ic repo. (Therefore, it must be a 40
251
+ * character hexidecimal string, not an abbreviated git commit ID.)
252
+ *
253
+ * One way to find a suitable value is with the following command:
254
+ *
255
+ * ic-admin \
256
+ * get-subnet 0 \
257
+ * --nns-urls https://nns.ic0.app \
258
+ * | grep replica_version_id
259
+ *
260
+ * Where to obtain a recent version of ic-admin:
261
+ *
262
+ * https://github.com/dfinity/ic/releases/latest
263
+ */
228
264
  replica_version_id: [] | [string];
265
+ /**
266
+ * Which nodes will be members of the subnet.
267
+ */
229
268
  node_ids: [] | [Array<Principal>];
230
269
  }
231
270
  export interface GetNeuronsFundAuditInfoRequest {
@@ -239,7 +278,6 @@ export interface GlobalTimeOfDay {
239
278
  }
240
279
  export interface Governance {
241
280
  default_followees: Array<[number, Followees]>;
242
- making_sns_proposal: [] | [MakingSnsProposal];
243
281
  most_recent_monthly_node_provider_rewards: [] | [MonthlyNodeProviderRewards];
244
282
  maturity_modulation_last_updated_at_timestamp_seconds: [] | [bigint];
245
283
  wait_for_quiet_threshold_seconds: bigint;
@@ -360,6 +398,7 @@ export interface KnownNeuron {
360
398
  export interface KnownNeuronData {
361
399
  name: string;
362
400
  description: [] | [string];
401
+ links: [] | [Array<string>];
363
402
  }
364
403
  export interface LedgerParameters {
365
404
  transaction_fee: [] | [Tokens];
@@ -370,17 +409,45 @@ export interface LedgerParameters {
370
409
  export interface ListKnownNeuronsResponse {
371
410
  known_neurons: Array<KnownNeuron>;
372
411
  }
412
+ /**
413
+ * Parameters of the list_neurons method.
414
+ */
373
415
  export interface ListNeurons {
374
416
  page_size: [] | [bigint];
417
+ /**
418
+ * When a public neuron is a member of the result set, include it in the
419
+ * full_neurons field (of ListNeuronsResponse). This does not affect which
420
+ * neurons are part of the result set.
421
+ */
375
422
  include_public_neurons_in_full_neurons: [] | [boolean];
423
+ /**
424
+ * These fields select neurons to be in the result set.
425
+ */
376
426
  neuron_ids: BigUint64Array | bigint[];
377
427
  page_number: [] | [bigint];
428
+ /**
429
+ * Only has an effect when include_neurons_readable_by_caller.
430
+ */
378
431
  include_empty_neurons_readable_by_caller: [] | [boolean];
379
432
  neuron_subaccounts: [] | [Array<NeuronSubaccount>];
380
433
  include_neurons_readable_by_caller: boolean;
381
434
  }
435
+ /**
436
+ * Output of the list_neurons method.
437
+ */
382
438
  export interface ListNeuronsResponse {
439
+ /**
440
+ * Per the NeuronInfo type, this is a redacted view of the neurons in the
441
+ * result set consisting of information that require no special privileges to
442
+ * view.
443
+ */
383
444
  neuron_infos: Array<[bigint, NeuronInfo]>;
445
+ /**
446
+ * If the caller has the necessary special privileges (or the neuron is
447
+ * public, and the request sets include_public_neurons_in_full_neurons to
448
+ * true), then all the information about the neurons in the result set is made
449
+ * available here.
450
+ */
384
451
  full_neurons: Array<Neuron>;
385
452
  total_pages_available: [] | [bigint];
386
453
  }
@@ -415,16 +482,18 @@ export interface MakeProposalResponse {
415
482
  message: [] | [string];
416
483
  proposal_id: [] | [ProposalId];
417
484
  }
418
- export interface MakingSnsProposal {
419
- proposal: [] | [Proposal];
420
- caller: [] | [Principal];
421
- proposer_id: [] | [NeuronId];
422
- }
485
+ /**
486
+ * Not to be confused with ManageNeuronRequest. (Yes, this is very structurally
487
+ * similar to that, but not actually exactly equivalent.)
488
+ */
423
489
  export interface ManageNeuron {
424
490
  id: [] | [NeuronId];
425
491
  command: [] | [Command];
426
492
  neuron_id_or_subaccount: [] | [NeuronIdOrSubaccount];
427
493
  }
494
+ /**
495
+ * KEEP THIS IN SYNC WITH COMMAND!
496
+ */
428
497
  export type ManageNeuronCommandRequest =
429
498
  | { Spawn: Spawn }
430
499
  | { Split: Split }
@@ -441,12 +510,31 @@ export type ManageNeuronCommandRequest =
441
510
  | { StakeMaturity: StakeMaturity }
442
511
  | { MergeMaturity: MergeMaturity }
443
512
  | { Disburse: Disburse };
513
+ /**
514
+ * Parameters of the manage_neuron method.
515
+ */
444
516
  export interface ManageNeuronRequest {
517
+ /**
518
+ * Deprecated. Use neuron_id_or_subaccount instead.
519
+ */
445
520
  id: [] | [NeuronId];
521
+ /**
522
+ * What operation to perform on the neuron.
523
+ */
446
524
  command: [] | [ManageNeuronCommandRequest];
525
+ /**
526
+ * Which neuron to operate on.
527
+ */
447
528
  neuron_id_or_subaccount: [] | [NeuronIdOrSubaccount];
448
529
  }
530
+ /**
531
+ * Output of the manage_neuron method.
532
+ */
449
533
  export interface ManageNeuronResponse {
534
+ /**
535
+ * Corresponds to the command field in ManageNeuronRequest, which determines
536
+ * what operation was performed.
537
+ */
450
538
  command: [] | [Command_1];
451
539
  }
452
540
  export interface MaturityDisbursement {
@@ -486,6 +574,9 @@ export interface Motion {
486
574
  }
487
575
  export interface NetworkEconomics {
488
576
  neuron_minimum_stake_e8s: bigint;
577
+ /**
578
+ * Parameters that affect the voting power of neurons.
579
+ */
489
580
  voting_power_economics: [] | [VotingPowerEconomics];
490
581
  max_proposals_to_keep_per_topic: number;
491
582
  neuron_management_fee_per_proposal_e8s: bigint;
@@ -503,10 +594,67 @@ export interface Neuron {
503
594
  recent_ballots: Array<BallotInfo>;
504
595
  voting_power_refreshed_timestamp_seconds: [] | [bigint];
505
596
  kyc_verified: boolean;
597
+ /**
598
+ * The amount of "sway" this neuron can have if it refreshes its voting power
599
+ * frequently enough.
600
+ *
601
+ * Unlike deciding_voting_power, this does NOT take refreshing into account.
602
+ * Rather, this only takes three factors into account:
603
+ *
604
+ * 1. (Net) staked amount - This is the "base" of a neuron's voting power.
605
+ * This primarily consists of the neuron's ICP balance.
606
+ *
607
+ * 2. Age - Neurons with more age have more voting power (all else being
608
+ * equal).
609
+ *
610
+ * 3. Dissolve delay - Neurons with longer dissolve delay have more voting
611
+ * power (all else being equal). Neurons with a dissolve delay of less
612
+ * than six months are not eligible to vote. Therefore, such neurons
613
+ * are considered to have 0 voting power.
614
+ *
615
+ * Per NNS policy, this is opt. Nevertheless, it will never be null.
616
+ */
506
617
  potential_voting_power: [] | [bigint];
507
618
  neuron_type: [] | [number];
508
619
  not_for_profit: boolean;
509
620
  maturity_e8s_equivalent: bigint;
621
+ /**
622
+ * The amount of "sway" this neuron has when voting on proposals.
623
+ *
624
+ * When a proposal is created, each eligible neuron gets a "blank" ballot. The
625
+ * amount of voting power in that ballot is set to the neuron's deciding
626
+ * voting power at the time of proposal creation. There are two ways that a
627
+ * proposal can become decided:
628
+ *
629
+ * 1. Early: Either more than half of the total voting power in the ballots
630
+ * votes in favor (then the proposal is approved), or at least half of the
631
+ * votal voting power in the ballots votes against (then, the proposal is
632
+ * rejected).
633
+ *
634
+ * 2. The proposal's voting deadline is reached. At that point, if there is
635
+ * more voting power in favor than against, and at least 3% of the total
636
+ * voting power voted in favor, then the proposal is approved. Otherwise, it
637
+ * is rejected.
638
+ *
639
+ * If a neuron regularly refreshes its voting power, this has the same value
640
+ * as potential_voting_power. Actions that cause a refresh are as follows:
641
+ *
642
+ * 1. voting directly (not via following)
643
+ * 2. set following
644
+ * 3. refresh voting power
645
+ *
646
+ * (All of these actions are performed via the manage_neuron method.)
647
+ *
648
+ * However, if a neuron has not refreshed in a "long" time, this will be less
649
+ * than potential voting power. See VotingPowerEconomics. As a further result
650
+ * of less deciding voting power, not only does it have less influence on the
651
+ * outcome of proposals, the neuron receives less voting rewards (when it
652
+ * votes indirectly via following).
653
+ *
654
+ * For details, see https://dashboard.internetcomputer.org/proposal/132411.
655
+ *
656
+ * Per NNS policy, this is opt. Nevertheless, it will never be null.
657
+ */
510
658
  deciding_voting_power: [] | [bigint];
511
659
  cached_neuron_stake_e8s: bigint;
512
660
  created_timestamp_seconds: bigint;
@@ -515,6 +663,10 @@ export interface Neuron {
515
663
  hot_keys: Array<Principal>;
516
664
  account: Uint8Array | number[];
517
665
  joined_community_fund_timestamp_seconds: [] | [bigint];
666
+ /**
667
+ * The maturity disbursements in progress, i.e. the disbursements that are initiated but not
668
+ * finalized. The finalization happens 7 days after the disbursement is initiated.
669
+ */
518
670
  maturity_disbursements_in_progress: [] | [Array<MaturityDisbursement>];
519
671
  dissolve_state: [] | [DissolveState];
520
672
  followees: Array<[number, Followees]>;
@@ -549,6 +701,14 @@ export interface NeuronInFlightCommand {
549
701
  command: [] | [Command_2];
550
702
  timestamp: bigint;
551
703
  }
704
+ /**
705
+ * A limit view of Neuron that allows some aspects of all neurons to be read by
706
+ * anyone (i.e. without having to be the neuron's controller nor one of its
707
+ * hotkeys).
708
+ *
709
+ * As such, the meaning of each field in this type is generally the same as the
710
+ * one of the same (or at least similar) name in Neuron.
711
+ */
552
712
  export interface NeuronInfo {
553
713
  dissolve_delay_seconds: bigint;
554
714
  recent_ballots: Array<BallotInfo>;
@@ -558,11 +718,27 @@ export interface NeuronInfo {
558
718
  deciding_voting_power: [] | [bigint];
559
719
  created_timestamp_seconds: bigint;
560
720
  state: number;
721
+ /**
722
+ * The amount of ICP (and staked maturity) locked in this neuron.
723
+ *
724
+ * This is the foundation of the neuron's voting power.
725
+ *
726
+ * cached_neuron_stake_e8s - neuron_fees_e8s + staked_maturity_e8s_equivalent
727
+ */
561
728
  stake_e8s: bigint;
562
729
  joined_community_fund_timestamp_seconds: [] | [bigint];
563
730
  retrieved_at_timestamp_seconds: bigint;
564
731
  visibility: [] | [number];
565
732
  known_neuron_data: [] | [KnownNeuronData];
733
+ /**
734
+ * Deprecated. Use either deciding_voting_power or potential_voting_power
735
+ * instead. Has the same value as deciding_voting_power.
736
+ *
737
+ * Previously, if a neuron had < 6 months dissolve delay (making it ineligible
738
+ * to vote), this would not get set to 0 (zero). That was pretty confusing.
739
+ * Now that this is set to deciding_voting_power, this actually does get
740
+ * zeroed out.
741
+ */
566
742
  voting_power: bigint;
567
743
  age_seconds: bigint;
568
744
  }
@@ -706,6 +882,7 @@ export type ProposalActionRequest =
706
882
  | { ManageNeuron: ManageNeuronRequest }
707
883
  | { UpdateCanisterSettings: UpdateCanisterSettings }
708
884
  | { InstallCode: InstallCodeRequest }
885
+ | { DeregisterKnownNeuron: DeregisterKnownNeuron }
709
886
  | { StopOrStartCanister: StopOrStartCanister }
710
887
  | { CreateServiceNervousSystem: CreateServiceNervousSystem }
711
888
  | { ExecuteNnsFunction: ExecuteNnsFunction }
@@ -759,6 +936,11 @@ export interface ProposalInfo {
759
936
  proposer: [] | [NeuronId];
760
937
  executed_timestamp_seconds: bigint;
761
938
  }
939
+ /**
940
+ * This is one way for a neuron to make sure that its deciding_voting_power is
941
+ * not less than its potential_voting_power. See the description of those fields
942
+ * in Neuron.
943
+ */
762
944
  export type RefreshVotingPower = {};
763
945
  export type RefreshVotingPowerResponse = {};
764
946
  export interface RegisterVote {
@@ -860,6 +1042,7 @@ export interface SpawnResponse {
860
1042
  created_neuron_id: [] | [NeuronId];
861
1043
  }
862
1044
  export interface Split {
1045
+ memo: [] | [bigint];
863
1046
  amount_e8s: bigint;
864
1047
  }
865
1048
  export interface StakeMaturity {
@@ -930,9 +1113,41 @@ export interface UpdateCanisterSettings {
930
1113
  export interface UpdateNodeProvider {
931
1114
  reward_account: [] | [AccountIdentifier];
932
1115
  }
1116
+ /**
1117
+ * Parameters that affect the voting power of neurons.
1118
+ */
933
1119
  export interface VotingPowerEconomics {
1120
+ /**
1121
+ * If a neuron has not "refreshed" its voting power after this amount of time,
1122
+ * its deciding voting power starts decreasing linearly. See also
1123
+ * clear_following_after_seconds.
1124
+ *
1125
+ * For explanation of what "refresh" means in this context, see
1126
+ * https://dashboard.internetcomputer.org/proposal/132411
1127
+ *
1128
+ * Initially, set to 0.5 years. (The nominal length of a year is 365.25 days).
1129
+ */
934
1130
  start_reducing_voting_power_after_seconds: [] | [bigint];
1131
+ /**
1132
+ * The minimum dissolve delay a neuron must have in order to be eligible to vote.
1133
+ *
1134
+ * Neurons with a dissolve delay lower than this threshold will not have
1135
+ * voting power, even if they are otherwise active.
1136
+ *
1137
+ * This value is an essential part of the staking mechanism, promoting
1138
+ * long-term alignment with the network's governance.
1139
+ */
935
1140
  neuron_minimum_dissolve_delay_to_vote_seconds: [] | [bigint];
1141
+ /**
1142
+ * After a neuron has experienced voting power reduction for this amount of
1143
+ * time, a couple of things happen:
1144
+ *
1145
+ * 1. Deciding voting power reaches 0.
1146
+ *
1147
+ * 2. Its following on topics other than NeuronManagement are cleared.
1148
+ *
1149
+ * Initially, set to 1/12 years.
1150
+ */
936
1151
  clear_following_after_seconds: [] | [bigint];
937
1152
  }
938
1153
  export interface VotingRewardParameters {
@@ -1,10 +1,12 @@
1
- // Generated from IC repo commit 9173238 (2025-08-18 tags: release-2025-08-28_03-17-snapshot-feature) 'rs/nns/governance/canister/governance.did' by import-candid
1
+ // Generated from IC repo commit 206b61a (2025-09-25 tags: release-2025-09-25_09-52-base) 'rs/nns/governance/canister/governance.did' by import-candid
2
+
2
3
  type AccountIdentifier = record {
3
4
  hash : blob;
4
5
  };
5
6
 
6
7
  type Action = variant {
7
8
  RegisterKnownNeuron : KnownNeuron;
9
+ DeregisterKnownNeuron : DeregisterKnownNeuron;
8
10
  ManageNeuron : ManageNeuron;
9
11
  UpdateCanisterSettings : UpdateCanisterSettings;
10
12
  InstallCode : InstallCode;
@@ -312,7 +314,6 @@ type GlobalTimeOfDay = record {
312
314
 
313
315
  type Governance = record {
314
316
  default_followees : vec record { int32; Followees };
315
- making_sns_proposal : opt MakingSnsProposal;
316
317
  most_recent_monthly_node_provider_rewards : opt MonthlyNodeProviderRewards;
317
318
  maturity_modulation_last_updated_at_timestamp_seconds : opt nat64;
318
319
  wait_for_quiet_threshold_seconds : nat64;
@@ -442,9 +443,14 @@ type KnownNeuron = record {
442
443
  known_neuron_data : opt KnownNeuronData;
443
444
  };
444
445
 
446
+ type DeregisterKnownNeuron = record {
447
+ id : opt NeuronId;
448
+ };
449
+
445
450
  type KnownNeuronData = record {
446
451
  name : text;
447
452
  description : opt text;
453
+ links : opt vec text;
448
454
  };
449
455
 
450
456
  type LedgerParameters = record {
@@ -535,12 +541,6 @@ type MakeProposalResponse = record {
535
541
  proposal_id : opt ProposalId;
536
542
  };
537
543
 
538
- type MakingSnsProposal = record {
539
- proposal : opt Proposal;
540
- caller : opt principal;
541
- proposer_id : opt NeuronId;
542
- };
543
-
544
544
  // Not to be confused with ManageNeuronRequest. (Yes, this is very structurally
545
545
  // similar to that, but not actually exactly equivalent.)
546
546
  type ManageNeuron = record {
@@ -985,6 +985,7 @@ type Proposal = record {
985
985
 
986
986
  type ProposalActionRequest = variant {
987
987
  RegisterKnownNeuron : KnownNeuron;
988
+ DeregisterKnownNeuron : DeregisterKnownNeuron;
988
989
  ManageNeuron : ManageNeuronRequest;
989
990
  UpdateCanisterSettings : UpdateCanisterSettings;
990
991
  InstallCode : InstallCodeRequest;
@@ -1016,8 +1017,19 @@ type FulfillSubnetRentalRequest = record {
1016
1017
  //
1017
1018
  // This must be approved by a prior proposal to bless an IC OS version.
1018
1019
  //
1019
- // This is a full git commit ID in the ic repo. (Therefore, it must be a 40
1020
- // character hexidecimal string.)
1020
+ // This is a FULL git commit ID in the ic repo. (Therefore, it must be a 40
1021
+ // character hexidecimal string, not an abbreviated git commit ID.)
1022
+ //
1023
+ // One way to find a suitable value is with the following command:
1024
+ //
1025
+ // ic-admin \
1026
+ // get-subnet 0 \
1027
+ // --nns-urls https://nns.ic0.app \
1028
+ // | grep replica_version_id
1029
+ //
1030
+ // Where to obtain a recent version of ic-admin:
1031
+ //
1032
+ // https://github.com/dfinity/ic/releases/latest
1021
1033
  replica_version_id : opt text;
1022
1034
  };
1023
1035
 
@@ -1219,6 +1231,7 @@ type SpawnResponse = record {
1219
1231
 
1220
1232
  type Split = record {
1221
1233
  amount_e8s : nat64;
1234
+ memo : opt nat64;
1222
1235
  };
1223
1236
 
1224
1237
  type StakeMaturity = record {