@n1xyz/nord-ts 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -44,7 +44,7 @@ import { Nord } from "@n1xyz/nord-ts";
44
44
  // Create a Nord instance
45
45
  const nord = new Nord({
46
46
  webServerUrl: 'https://api.nord.exchange',
47
- bridgeVk: 'your_bridge_vk', // Provide the bridge verification key
47
+ app: 'your_app_addr', // Provide the app verification key
48
48
  solanaUrl: 'https://api.mainnet-beta.solana.com',
49
49
  });
50
50
 
@@ -61,7 +61,7 @@ import { Connection } from "@solana/web3.js";
61
61
  // Define Nord configuration
62
62
  const nordConfig = {
63
63
  webServerUrl: 'https://api.nord.exchange',
64
- bridgeVk: 'your_bridge_vk', // Provide the bridge verification key
64
+ app: 'your_app_addr', // Provide the app verification key
65
65
  solanaUrl: 'https://api.mainnet-beta.solana.com',
66
66
  };
67
67
 
@@ -530,6 +530,18 @@ export type Action = Message<"nord.Action"> & {
530
530
  */
531
531
  value: Atomic;
532
532
  case: "atomic";
533
+ } | {
534
+ /**
535
+ * @generated from field: nord.Action.FreezeMarket freeze_market = 36;
536
+ */
537
+ value: Action_FreezeMarket;
538
+ case: "freezeMarket";
539
+ } | {
540
+ /**
541
+ * @generated from field: nord.Action.UnfreezeMarket unfreeze_market = 37;
542
+ */
543
+ value: Action_UnfreezeMarket;
544
+ case: "unfreezeMarket";
533
545
  } | {
534
546
  case: undefined;
535
547
  value?: undefined;
@@ -634,6 +646,14 @@ export type ActionJson = {
634
646
  * @generated from field: nord.Atomic atomic = 35;
635
647
  */
636
648
  atomic?: AtomicJson;
649
+ /**
650
+ * @generated from field: nord.Action.FreezeMarket freeze_market = 36;
651
+ */
652
+ freezeMarket?: Action_FreezeMarketJson;
653
+ /**
654
+ * @generated from field: nord.Action.UnfreezeMarket unfreeze_market = 37;
655
+ */
656
+ unfreezeMarket?: Action_UnfreezeMarketJson;
637
657
  };
638
658
  /**
639
659
  * Describes the message nord.Action.
@@ -1740,6 +1760,56 @@ export type Action_RemoveTriggerJson = {
1740
1760
  export declare const Action_RemoveTriggerSchema: GenMessage<Action_RemoveTrigger, {
1741
1761
  jsonType: Action_RemoveTriggerJson;
1742
1762
  }>;
1763
+ /**
1764
+ * @generated from message nord.Action.FreezeMarket
1765
+ */
1766
+ export type Action_FreezeMarket = Message<"nord.Action.FreezeMarket"> & {
1767
+ /**
1768
+ * @generated from field: uint32 market_id = 2;
1769
+ */
1770
+ marketId: number;
1771
+ };
1772
+ /**
1773
+ * @generated from message nord.Action.FreezeMarket
1774
+ */
1775
+ export type Action_FreezeMarketJson = {
1776
+ /**
1777
+ * @generated from field: uint32 market_id = 2;
1778
+ */
1779
+ marketId?: number;
1780
+ };
1781
+ /**
1782
+ * Describes the message nord.Action.FreezeMarket.
1783
+ * Use `create(Action_FreezeMarketSchema)` to create a new message.
1784
+ */
1785
+ export declare const Action_FreezeMarketSchema: GenMessage<Action_FreezeMarket, {
1786
+ jsonType: Action_FreezeMarketJson;
1787
+ }>;
1788
+ /**
1789
+ * @generated from message nord.Action.UnfreezeMarket
1790
+ */
1791
+ export type Action_UnfreezeMarket = Message<"nord.Action.UnfreezeMarket"> & {
1792
+ /**
1793
+ * @generated from field: uint32 market_id = 2;
1794
+ */
1795
+ marketId: number;
1796
+ };
1797
+ /**
1798
+ * @generated from message nord.Action.UnfreezeMarket
1799
+ */
1800
+ export type Action_UnfreezeMarketJson = {
1801
+ /**
1802
+ * @generated from field: uint32 market_id = 2;
1803
+ */
1804
+ marketId?: number;
1805
+ };
1806
+ /**
1807
+ * Describes the message nord.Action.UnfreezeMarket.
1808
+ * Use `create(Action_UnfreezeMarketSchema)` to create a new message.
1809
+ */
1810
+ export declare const Action_UnfreezeMarketSchema: GenMessage<Action_UnfreezeMarket, {
1811
+ jsonType: Action_UnfreezeMarketJson;
1812
+ }>;
1743
1813
  /**
1744
1814
  * @generated from message nord.Action.TakePosition
1745
1815
  */
@@ -2041,6 +2111,12 @@ export type Receipt = Message<"nord.Receipt"> & {
2041
2111
  */
2042
2112
  value: Receipt_AtomicResult;
2043
2113
  case: "atomic";
2114
+ } | {
2115
+ /**
2116
+ * @generated from field: nord.Receipt.MarketFreezeUpdated market_freeze_updated = 68;
2117
+ */
2118
+ value: Receipt_MarketFreezeUpdated;
2119
+ case: "marketFreezeUpdated";
2044
2120
  } | {
2045
2121
  case: undefined;
2046
2122
  value?: undefined;
@@ -2138,6 +2214,10 @@ export type ReceiptJson = {
2138
2214
  * @generated from field: nord.Receipt.AtomicResult atomic = 67;
2139
2215
  */
2140
2216
  atomic?: Receipt_AtomicResultJson;
2217
+ /**
2218
+ * @generated from field: nord.Receipt.MarketFreezeUpdated market_freeze_updated = 68;
2219
+ */
2220
+ marketFreezeUpdated?: Receipt_MarketFreezeUpdatedJson;
2141
2221
  };
2142
2222
  /**
2143
2223
  * Describes the message nord.Receipt.
@@ -3026,6 +3106,39 @@ export type Receipt_TriggerRemovedJson = {};
3026
3106
  export declare const Receipt_TriggerRemovedSchema: GenMessage<Receipt_TriggerRemoved, {
3027
3107
  jsonType: Receipt_TriggerRemovedJson;
3028
3108
  }>;
3109
+ /**
3110
+ * @generated from message nord.Receipt.MarketFreezeUpdated
3111
+ */
3112
+ export type Receipt_MarketFreezeUpdated = Message<"nord.Receipt.MarketFreezeUpdated"> & {
3113
+ /**
3114
+ * @generated from field: uint32 market_id = 1;
3115
+ */
3116
+ marketId: number;
3117
+ /**
3118
+ * @generated from field: bool frozen = 2;
3119
+ */
3120
+ frozen: boolean;
3121
+ };
3122
+ /**
3123
+ * @generated from message nord.Receipt.MarketFreezeUpdated
3124
+ */
3125
+ export type Receipt_MarketFreezeUpdatedJson = {
3126
+ /**
3127
+ * @generated from field: uint32 market_id = 1;
3128
+ */
3129
+ marketId?: number;
3130
+ /**
3131
+ * @generated from field: bool frozen = 2;
3132
+ */
3133
+ frozen?: boolean;
3134
+ };
3135
+ /**
3136
+ * Describes the message nord.Receipt.MarketFreezeUpdated.
3137
+ * Use `create(Receipt_MarketFreezeUpdatedSchema)` to create a new message.
3138
+ */
3139
+ export declare const Receipt_MarketFreezeUpdatedSchema: GenMessage<Receipt_MarketFreezeUpdated, {
3140
+ jsonType: Receipt_MarketFreezeUpdatedJson;
3141
+ }>;
3029
3142
  /**
3030
3143
  * @generated from message nord.Receipt.AtomicSubactionResultKind
3031
3144
  */
@@ -4,13 +4,13 @@
4
4
  // i.e. prefixed with a varint encoding the length of the protobuf message.
5
5
  // All other message types are encoded normally, i.e. with no prefix.
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Receipt_SessionRevokedSchema = exports.Receipt_AccountLiquidatedSchema = exports.Receipt_PerpPositionSchema = exports.Receipt_UpdateGuardianSetResultSchema = exports.Receipt_OracleUpdateResultSchema = exports.Receipt_OracleSymbolFeedResultSchema = exports.Receipt_WithdrawResultSchema = exports.Receipt_InsertMarketResultSchema = exports.Receipt_InsertTokenResultSchema = exports.Receipt_DepositResultSchema = exports.Receipt_CancelOrderResultSchema = exports.Receipt_PositionTakenOrTradedResultSchema = exports.Receipt_TakenResultSchema = exports.Receipt_PlaceOrderResultSchema = exports.Receipt_TriggeredSchema = exports.Receipt_CreateSessionResultSchema = exports.Receipt_TradeSchema = exports.Receipt_PostedSchema = exports.ReceiptSchema = exports.AtomicSchema = exports.AtomicSubactionKindSchema = exports.Action_TakePositionSchema = exports.Action_RemoveTriggerSchema = exports.Action_AddTriggerSchema = exports.Action_TriggerPricesSchema = exports.Action_TransferSchema = exports.Action_UnpauseSchema = exports.Action_PauseSchema = exports.Action_RevokeSessionSchema = exports.Action_LiquidateSchema = exports.Action_PythPriceFeedUpdateSchema = exports.Action_PythSetSymbolFeedSchema = exports.Action_PythSetWormholeGuardiansSchema = exports.Action_WithdrawSchema = exports.Action_DepositSchema = exports.Action_CancelOrderByIdSchema = exports.Action_PlaceOrderSchema = exports.Action_CreateMarketSchema = exports.Action_CreateTokenSchema = exports.Action_CreateSessionSchema = exports.ActionSchema = exports.TriggerKeySchema = exports.CancelOrderSchema = exports.TradeOrPlaceSchema = exports.OrderTypeSchema = exports.OrderLimitSchema = exports.QuoteSizeSchema = exports.TokenSchema = exports.MarketSchema = exports.file_nord = void 0;
8
- exports.SpecialAccountSchema = exports.SpecialAccount = exports.ErrorSchema = exports.Error = exports.MarketTypeSchema = exports.MarketType = exports.FillModeSchema = exports.FillMode = exports.TriggerKindSchema = exports.TriggerKind = exports.SideSchema = exports.Side = exports.Receipt_AtomicResultSchema = exports.Receipt_AtomicSubactionResultKindSchema = exports.Receipt_TriggerRemovedSchema = exports.Receipt_TriggerAddedSchema = exports.Receipt_TransferredSchema = exports.Receipt_UnpausedSchema = exports.Receipt_PausedSchema = void 0;
7
+ exports.Receipt_PerpPositionSchema = exports.Receipt_UpdateGuardianSetResultSchema = exports.Receipt_OracleUpdateResultSchema = exports.Receipt_OracleSymbolFeedResultSchema = exports.Receipt_WithdrawResultSchema = exports.Receipt_InsertMarketResultSchema = exports.Receipt_InsertTokenResultSchema = exports.Receipt_DepositResultSchema = exports.Receipt_CancelOrderResultSchema = exports.Receipt_PositionTakenOrTradedResultSchema = exports.Receipt_TakenResultSchema = exports.Receipt_PlaceOrderResultSchema = exports.Receipt_TriggeredSchema = exports.Receipt_CreateSessionResultSchema = exports.Receipt_TradeSchema = exports.Receipt_PostedSchema = exports.ReceiptSchema = exports.AtomicSchema = exports.AtomicSubactionKindSchema = exports.Action_TakePositionSchema = exports.Action_UnfreezeMarketSchema = exports.Action_FreezeMarketSchema = exports.Action_RemoveTriggerSchema = exports.Action_AddTriggerSchema = exports.Action_TriggerPricesSchema = exports.Action_TransferSchema = exports.Action_UnpauseSchema = exports.Action_PauseSchema = exports.Action_RevokeSessionSchema = exports.Action_LiquidateSchema = exports.Action_PythPriceFeedUpdateSchema = exports.Action_PythSetSymbolFeedSchema = exports.Action_PythSetWormholeGuardiansSchema = exports.Action_WithdrawSchema = exports.Action_DepositSchema = exports.Action_CancelOrderByIdSchema = exports.Action_PlaceOrderSchema = exports.Action_CreateMarketSchema = exports.Action_CreateTokenSchema = exports.Action_CreateSessionSchema = exports.ActionSchema = exports.TriggerKeySchema = exports.CancelOrderSchema = exports.TradeOrPlaceSchema = exports.OrderTypeSchema = exports.OrderLimitSchema = exports.QuoteSizeSchema = exports.TokenSchema = exports.MarketSchema = exports.file_nord = void 0;
8
+ exports.SpecialAccountSchema = exports.SpecialAccount = exports.ErrorSchema = exports.Error = exports.MarketTypeSchema = exports.MarketType = exports.FillModeSchema = exports.FillMode = exports.TriggerKindSchema = exports.TriggerKind = exports.SideSchema = exports.Side = exports.Receipt_AtomicResultSchema = exports.Receipt_AtomicSubactionResultKindSchema = exports.Receipt_MarketFreezeUpdatedSchema = exports.Receipt_TriggerRemovedSchema = exports.Receipt_TriggerAddedSchema = exports.Receipt_TransferredSchema = exports.Receipt_UnpausedSchema = exports.Receipt_PausedSchema = exports.Receipt_SessionRevokedSchema = exports.Receipt_AccountLiquidatedSchema = void 0;
9
9
  const codegenv2_1 = require("@bufbuild/protobuf/codegenv2");
10
10
  /**
11
11
  * Describes the file nord.proto.
12
12
  */
13
- exports.file_nord = (0, codegenv2_1.fileDesc)("Cgpub3JkLnByb3RvEgRub3JkItABCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIigKCVF1b3RlU2l6ZRIMCgRzaXplGAEgASgEEg0KBXByaWNlGAIgASgEIk4KCk9yZGVyTGltaXQSDQoFcHJpY2UYBiABKAQSDAoEc2l6ZRgHIAEoBBIjCgpxdW90ZV9zaXplGAggASgLMg8ubm9yZC5RdW90ZVNpemUiYAoJT3JkZXJUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCCKZAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpvcmRlcl90eXBlGAMgASgLMg8ubm9yZC5PcmRlclR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQFCEgoQX2NsaWVudF9vcmRlcl9pZCIfCgtDYW5jZWxPcmRlchIQCghvcmRlcl9pZBgCIAEoBCJHCgpUcmlnZ2VyS2V5Eh8KBGtpbmQYAyABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUimRoKBkFjdGlvbhIZChFjdXJyZW50X3RpbWVzdGFtcBgBIAEoAxINCgVub25jZRgCIAEoDRI0Cg5jcmVhdGVfc2Vzc2lvbhgEIAEoCzIaLm5vcmQuQWN0aW9uLkNyZWF0ZVNlc3Npb25IABIwCgxjcmVhdGVfdG9rZW4YBSABKAsyGC5ub3JkLkFjdGlvbi5DcmVhdGVUb2tlbkgAEjIKDWNyZWF0ZV9tYXJrZXQYBiABKAsyGS5ub3JkLkFjdGlvbi5DcmVhdGVNYXJrZXRIABIuCgtwbGFjZV9vcmRlchgHIAEoCzIXLm5vcmQuQWN0aW9uLlBsYWNlT3JkZXJIABI6ChJjYW5jZWxfb3JkZXJfYnlfaWQYCCABKAsyHC5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5SWRIABInCgdkZXBvc2l0GAkgASgLMhQubm9yZC5BY3Rpb24uRGVwb3NpdEgAEikKCHdpdGhkcmF3GAogASgLMhUubm9yZC5BY3Rpb24uV2l0aGRyYXdIABJMChtweXRoX3NldF93b3JtaG9sZV9ndWFyZGlhbnMYCyABKAsyJS5ub3JkLkFjdGlvbi5QeXRoU2V0V29ybWhvbGVHdWFyZGlhbnNIABI+ChRweXRoX3NldF9zeW1ib2xfZmVlZBgMIAEoCzIeLm5vcmQuQWN0aW9uLlB5dGhTZXRTeW1ib2xGZWVkSAASQgoWcHl0aF9wcmljZV9mZWVkX3VwZGF0ZRgNIAEoCzIgLm5vcmQuQWN0aW9uLlB5dGhQcmljZUZlZWRVcGRhdGVIABIrCglsaXF1aWRhdGUYDiABKAsyFi5ub3JkLkFjdGlvbi5MaXF1aWRhdGVIABI0Cg5yZXZva2Vfc2Vzc2lvbhgPIAEoCzIaLm5vcmQuQWN0aW9uLlJldm9rZVNlc3Npb25IABIjCgVwYXVzZRgQIAEoCzISLm5vcmQuQWN0aW9uLlBhdXNlSAASJwoHdW5wYXVzZRgRIAEoCzIULm5vcmQuQWN0aW9uLlVucGF1c2VIABIpCgh0cmFuc2ZlchgSIAEoCzIVLm5vcmQuQWN0aW9uLlRyYW5zZmVySAASLgoLYWRkX3RyaWdnZXIYICABKAsyFy5ub3JkLkFjdGlvbi5BZGRUcmlnZ2VySAASNAoOcmVtb3ZlX3RyaWdnZXIYISABKAsyGi5ub3JkLkFjdGlvbi5SZW1vdmVUcmlnZ2VySAASMgoNdGFrZV9wb3NpdGlvbhgiIAEoCzIZLm5vcmQuQWN0aW9uLlRha2VQb3NpdGlvbkgAEh4KBmF0b21pYxgjIAEoCzIMLm5vcmQuQXRvbWljSAAaUwoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBITCgtibHN0X3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDGncKC0NyZWF0ZVRva2VuEhYKDnRva2VuX2RlY2ltYWxzGAEgASgNEhIKCndlaWdodF9icHMYAyABKA0SEwoLdmlld19zeW1ib2wYBCABKAkSFQoNb3JhY2xlX3N5bWJvbBgFIAEoCRIQCghzb2xfYWRkchgGIAEoDBraAQoMQ3JlYXRlTWFya2V0EhUKDXNpemVfZGVjaW1hbHMYASABKA0SFgoOcHJpY2VfZGVjaW1hbHMYAiABKA0SDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0SJQoLbWFya2V0X3R5cGUYBiABKA4yEC5ub3JkLk1hcmtldFR5cGUSEwoLdmlld19zeW1ib2wYByABKAkSFQoNb3JhY2xlX3N5bWJvbBgIIAEoCRIVCg1iYXNlX3Rva2VuX2lkGAkgASgNGqYDCgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEiMKCnF1b3RlX3NpemUYCCABKAsyDy5ub3JkLlF1b3RlU2l6ZRIhChRkZWxlZ2F0b3JfYWNjb3VudF9pZBggIAEoDUgAiAEBEhwKD2NsaWVudF9vcmRlcl9pZBghIAEoBEgBiAEBEh4KEXNlbmRlcl9hY2NvdW50X2lkGCIgASgNSAKIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGCMgASgESAOIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGm8KB0RlcG9zaXQSFAoMYWN0aW9uX25vbmNlGAEgASgEEhIKCnRva2VuX2FkZHIYAiABKAwSDgoGYW1vdW50GAMgASgEEhMKC3VzZXJfcHVia2V5GAQgASgMEhUKDXNlbmRlcl9wdWJrZXkYBSABKAwaQAoIV2l0aGRyYXcSEAoIdG9rZW5faWQYASABKA0SEgoKc2Vzc2lvbl9pZBgCIAEoBBIOCgZhbW91bnQYAyABKAQaSQoYUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zEhoKEmd1YXJkaWFuX3NldF9pbmRleBgBIAEoDRIRCglhZGRyZXNzZXMYAiADKAwaQQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMGi8KE1B5dGhQcmljZUZlZWRVcGRhdGUSGAoQcmF3X3B5dGhuZXRfZGF0YRgBIAEoDBqHAQoJTGlxdWlkYXRlEh0KFWxpcXVpZGF0b3Jfc2Vzc2lvbl9pZBgBIAEoBBIdChVsaXF1aWRhdGVlX2FjY291bnRfaWQYAiABKA0SIgoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAMgASgNSACIAQFCGAoWX2xpcXVpZGF0b3JfYWNjb3VudF9pZBojCg1SZXZva2VTZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAQaBwoFUGF1c2UaCQoHVW5wYXVzZRrPAQoIVHJhbnNmZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhoKDXRvX2FjY291bnRfaWQYCCABKA1IAIgBARIyCg9zcGVjaWFsX2FjY291bnQYCSABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEAoOX3RvX2FjY291bnRfaWRCEgoQX3NwZWNpYWxfYWNjb3VudBpQCg1UcmlnZ2VyUHJpY2VzEhUKDXRyaWdnZXJfcHJpY2UYBSABKAQSGAoLbGltaXRfcHJpY2UYBiABKARIAIgBAUIOCgxfbGltaXRfcHJpY2UapgEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SHQoDa2V5GAMgASgLMhAubm9yZC5UcmlnZ2VyS2V5EioKBnByaWNlcxgEIAEoCzIaLm5vcmQuQWN0aW9uLlRyaWdnZXJQcmljZXMSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGn0KDVJlbW92ZVRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SHQoDa2V5GAMgASgLMhAubm9yZC5UcmlnZ2VyS2V5EhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBqXAQoMVGFrZVBvc2l0aW9uEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEgwKBHNpemUYAyABKAMSHgoRc2VuZGVyX2FjY291bnRfaWQYBCABKA1IAIgBARISCgVwcmljZRgFIAEoBEgBiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZEIICgZfcHJpY2VCBgoEa2luZCJ3ChNBdG9taWNTdWJhY3Rpb25LaW5kEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIpCgxjYW5jZWxfb3JkZXIYByABKAsyES5ub3JkLkNhbmNlbE9yZGVySABCBwoFaW5uZXIicAoGQXRvbWljEhIKCnNlc3Npb25faWQYASABKAQSFwoKYWNjb3VudF9pZBgCIAEoDUgAiAEBEioKB2FjdGlvbnMYBiADKAsyGS5ub3JkLkF0b21pY1N1YmFjdGlvbktpbmRCDQoLX2FjY291bnRfaWQiwRoKB1JlY2VpcHQSEQoJYWN0aW9uX2lkGAEgASgEEhoKA2VychggIAEoDjILLm5vcmQuRXJyb3JIABJCChVjcmVhdGVfc2Vzc2lvbl9yZXN1bHQYISABKAsyIS5ub3JkLlJlY2VpcHQuQ3JlYXRlU2Vzc2lvblJlc3VsdEgAEjwKEnBsYWNlX29yZGVyX3Jlc3VsdBgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI1CgpsaXF1aWRhdGVkGCsgASgLMh8ubm9yZC5SZWNlaXB0LkFjY291bnRMaXF1aWRhdGVkSAASNwoPc2Vzc2lvbl9yZXZva2VkGCwgASgLMhwubm9yZC5SZWNlaXB0LlNlc3Npb25SZXZva2VkSAASJgoGcGF1c2VkGC0gASgLMhQubm9yZC5SZWNlaXB0LlBhdXNlZEgAEioKCHVucGF1c2VkGC4gASgLMhYubm9yZC5SZWNlaXB0LlVucGF1c2VkSAASMAoLdHJhbnNmZXJyZWQYLyABKAsyGS5ub3JkLlJlY2VpcHQuVHJhbnNmZXJyZWRIABIzCg10cmlnZ2VyX2FkZGVkGEAgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBhBIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEk0KGHBvc2l0aW9uX3Rha2VuX29yX3RyYWRlZBhCIAEoCzIpLm5vcmQuUmVjZWlwdC5Qb3NpdGlvblRha2VuT3JUcmFkZWRSZXN1bHRIABIsCgZhdG9taWMYQyABKAsyGi5ub3JkLlJlY2VpcHQuQXRvbWljUmVzdWx0SAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpKCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0aKQoTQ3JlYXRlU2Vzc2lvblJlc3VsdBISCgpzZXNzaW9uX2lkGAEgASgEGkMKCVRyaWdnZXJlZBIfCgRraW5kGAMgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIVCg10cmlnZ2VyX3ByaWNlGAQgASgEGpUCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARIvCgl0cmlnZ2VyZWQYBSABKAsyFy5ub3JkLlJlY2VpcHQuVHJpZ2dlcmVkSAOIAQFCCQoHX3Bvc3RlZEISChBfY2xpZW50X29yZGVyX2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCDAoKX3RyaWdnZXJlZBpCCgtUYWtlblJlc3VsdBILCgNwbmwYASABKAMSDAoEc2l6ZRgCIAEoAxIYChB0YWtlcl9hY2NvdW50X2lkGAMgASgNGqsBChtQb3NpdGlvblRha2VuT3JUcmFkZWRSZXN1bHQSEQoJbWFya2V0X2lkGAEgASgNEioKBXRha2VuGAIgASgLMhkubm9yZC5SZWNlaXB0LlRha2VuUmVzdWx0SAASMAoGdHJhZGVkGAMgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIAEIbChlQb3NpdGlvblRha2VuT3JUcmFkZWRLaW5kGjkKEUNhbmNlbE9yZGVyUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhIKCmFjY291bnRfaWQYAiABKA0acAoNRGVwb3NpdFJlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSEgoKYWNjb3VudF9pZBgDIAEoDRIUCgx1c2VyX2NyZWF0ZWQYBCABKAgSEwoLdXNlcl9wdWJrZXkYBSABKAwaQwoRSW5zZXJ0VG9rZW5SZXN1bHQSEgoKY2hhaW5fYWRkchgBIAEoDBIaCgV0b2tlbhgCIAEoCzILLm5vcmQuVG9rZW4aMgoSSW5zZXJ0TWFya2V0UmVzdWx0EhwKBm1hcmtldBgBIAEoCzIMLm5vcmQuTWFya2V0GnkKDldpdGhkcmF3UmVzdWx0EhAKCHRva2VuX2lkGAEgASgNEg4KBmFtb3VudBgCIAEoBBIPCgdiYWxhbmNlGAMgASgEEhIKCmFjY291bnRfaWQYBCABKA0SCwoDZmVlGAUgASgEEhMKC3VzZXJfcHVia2V5GAYgASgMGkAKFk9yYWNsZVN5bWJvbEZlZWRSZXN1bHQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIPCgdmZWVkX2lkGAIgASgMGicKEk9yYWNsZVVwZGF0ZVJlc3VsdBIRCgl0aW1lc3RhbXAYASABKAMaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBqeAQoRQWNjb3VudExpcXVpZGF0ZWQSHQoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAEgASgNEh0KFWxpcXVpZGF0ZWVfYWNjb3VudF9pZBgCIAEoDRIYChBjYW5jZWxsZWRfb3JkZXJzGAMgAygEEjEKDXJlbW92ZWRfcGVycHMYBCADKAsyGi5ub3JkLlJlY2VpcHQuUGVycFBvc2l0aW9uGhAKDlNlc3Npb25SZXZva2VkGggKBlBhdXNlZBoKCghVbnBhdXNlZBrhAQoLVHJhbnNmZXJyZWQSFwoPZnJvbV9hY2NvdW50X2lkGAEgASgNEhwKD3RvX3VzZXJfYWNjb3VudBgCIAEoDUgAiAEBEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIXCg9hY2NvdW50X2NyZWF0ZWQYBSABKAgSNQoSdG9fc3BlY2lhbF9hY2NvdW50GAYgASgOMhQubm9yZC5TcGVjaWFsQWNjb3VudEgBiAEBQhIKEF90b191c2VyX2FjY291bnRCFQoTX3RvX3NwZWNpYWxfYWNjb3VudBoOCgxUcmlnZ2VyQWRkZWQaEAoOVHJpZ2dlclJlbW92ZWQamwEKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIAEIHCgVpbm5lchpICgxBdG9taWNSZXN1bHQSOAoHcmVzdWx0cxgBIAMoCzInLm5vcmQuUmVjZWlwdC5BdG9taWNTdWJhY3Rpb25SZXN1bHRLaW5kQgYKBGtpbmQqGAoEU2lkZRIHCgNBU0sQABIHCgNCSUQQASotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKk8KCEZpbGxNb2RlEgkKBUxJTUlUEAASDQoJUE9TVF9PTkxZEAESFwoTSU1NRURJQVRFX09SX0NBTkNFTBACEhAKDEZJTExfT1JfS0lMTBADKiYKCk1hcmtldFR5cGUSCAoEU1BPVBAAEg4KClBFUlBFVFVBTFMQASrdGQoFRXJyb3ISDQoJRFVQTElDQVRFEAASEgoOREVDT0RFX0ZBSUxVUkUQAhIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSDgoKQVJJVEhNRVRJQxALEhcKE0FSSVRITUVUSUNfT1ZFUkZMT1cQDBIYChRBUklUSE1FVElDX1VOREVSRkxPVxANEh8KG0FSSVRITUVUSUNfRElWSVNJT05fQllfWkVSTxAOEhoKFktFWV9BTFJFQURZX1JFR0lTVEVSRUQQDxIcChhFWFBJUllfVElNRVNUQU1QX0lOX1BBU1QQEBIcChhVUERBVEVfVElNRVNUQU1QX0lOX1BBU1QQERIYChRUT09fTUFOWV9PUEVOX09SREVSUxASEh0KGVdJVEhEUkFXX0FNT1VOVF9UT09fU01BTEwQFRIXChNJTlZBTElEX09SREVSX09XTkVSEBYSIAocREVDT0RFX0ZBSUxVUkVfTEVOR1RIX1BSRUZJWBAhEhYKEkRFQ09ERV9GQUlMVVJFX1JBVxAiEhkKFURFQ09ERV9GQUlMVVJFX0RPTUFJThAjEh8KG1VQREFURV9QVUJMSVNIX1RJTUVfSU5fUEFTVBAkEhcKE1BZVEhfRkVFRF9OT1RfQURERUQQXRIVChFQWVRIX0ZFRURfTUlTU0lORxBeEhsKF1BZVEhfRkVFRF9BTFJFQURZX0FEREVEEF8SIwofUFlUSF9HVUFSRElBTl9TRVRfVU5JTklUSUFMSVpFRBBgEh0KGVBZVEhfR1VBUkRJQU5fU0VUX0lOVkFMSUQQYRIjCh9QWVRIX0ZFRURfREVDSU1BTFNfT1VUX09GX1JBTkdFEGISIAocUFlUSF9GRUVEX1BSSUNFX09VVF9PRl9SQU5HRRBjEiMKH1BZVEhfRkVFRF9WQVJJQU5DRV9PVVRfT0ZfUkFOR0UQZBI1CjFQWVRIX0dVQVJESUFOX1NFVF9BTkRfUFlUSF9TSUdOQVRVUkVfRE9fTk9UX01BVENIEGUSHAoYSU5WQUxJRF9UT0tFTl9QQVJBTUVURVJTEGYSHAoYSU5ERVhfUFJJQ0VfT1VUX09GX1JBTkdFEGcSHwobSU5ERVhfREVDSU1BTFNfT1VUX09GX1JBTkdFEGgSGQoVSU5WQUxJRF9TVEFURV9WRVJTSU9OEGkSEwoPSU5WQUxJRF9NQVJHSU5TEGsSIQodTUFSS0VUX0RFQ0lNQUxTX0VYQ0VFRF9MSU1JVFMQbRITCg9UT09fTUFOWV9UT0tFTlMQbhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhQKD1RPS0VOX05PVF9SRUFEWRCCARIcChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQcBIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIOCglUSU1FU1RBTVAQsAESHwoaVElNRVNUQU1QX09VVF9PRl9USFJFU0hPTEQQsQESFAoPVElNRVNUQU1QX1NUQUxFELIBEiUKIEJBTktSVVBUQ1lfSU5TVUZGSUNJRU5UX0NPVkVSQUdFELkBEhkKFEJBTktSVVBUQ1lfTk9UX0ZPVU5EELoBEhsKFkJBTktSVVBUQ1lfTk9UX0FMTE9XRUQQuwESFQoQTUFSS0VUX05PVF9SRUFEWRDAARISCg1NQVJLRVRfRlJPWkVOEMEBEhEKDE1BUktFVF9FTVBUWRDCARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESGAoTUE9TSVRJT05fU1RBVEVfUEVSUBDPARIkCh9QT1NJVElPTl9TVEFURV9PUkRFUl9ERUxFR0FUSU9OENABEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEioKJVJJU0tfVFJBREVfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9DTUYQ5QESNQowUklTS19VTkhFQUxUSFlfTUZfQU5EX1BPTl9BRlRFUl9CRVRURVJfT0ZfQkVGT1JFEOQBEhQKD09SREVSX0VYRUNVVElPThDwARIaChVPUkRFUl9FWEVDVVRJT05fRU1QVFkQ8QESIQocT1JERVJfRVhFQ1VUSU9OX0ZJTExfT1JfS0lMTBDyARIjCh5PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19MSU1JVFMQ8wESIgodT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfUFJJQ0UQ9AESHwoaT1JERVJfRVhFQ1VUSU9OX1NJWkVfTElNSVQQ9QESIAobT1JERVJfRVhFQ1VUSU9OX0xJTUlUX1BSSUNFEPYBEh4KGU9SREVSX1JFRFVDRV9JU19QT1NUX09OTFkQ9wESHwoaT1JERVJfRVhFQ1VUSU9OX1NFTExfUFJJQ0UQ+AESJQogT1JERVJfU0laRV9FWENFRURTX1BPU0lUSU9OX1NJWkUQ+QESKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgAISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCBAhImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIMCgdEcm9wcGVkEOcHKh4KDlNwZWNpYWxBY2NvdW50EgwKCEZlZVZhdWx0EABiBnByb3RvMw");
13
+ exports.file_nord = (0, codegenv2_1.fileDesc)("Cgpub3JkLnByb3RvEgRub3JkItABCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIigKCVF1b3RlU2l6ZRIMCgRzaXplGAEgASgEEg0KBXByaWNlGAIgASgEIk4KCk9yZGVyTGltaXQSDQoFcHJpY2UYBiABKAQSDAoEc2l6ZRgHIAEoBBIjCgpxdW90ZV9zaXplGAggASgLMg8ubm9yZC5RdW90ZVNpemUiYAoJT3JkZXJUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCCKZAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpvcmRlcl90eXBlGAMgASgLMg8ubm9yZC5PcmRlclR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQFCEgoQX2NsaWVudF9vcmRlcl9pZCIfCgtDYW5jZWxPcmRlchIQCghvcmRlcl9pZBgCIAEoBCJHCgpUcmlnZ2VyS2V5Eh8KBGtpbmQYAyABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUizRsKBkFjdGlvbhIZChFjdXJyZW50X3RpbWVzdGFtcBgBIAEoAxINCgVub25jZRgCIAEoDRI0Cg5jcmVhdGVfc2Vzc2lvbhgEIAEoCzIaLm5vcmQuQWN0aW9uLkNyZWF0ZVNlc3Npb25IABIwCgxjcmVhdGVfdG9rZW4YBSABKAsyGC5ub3JkLkFjdGlvbi5DcmVhdGVUb2tlbkgAEjIKDWNyZWF0ZV9tYXJrZXQYBiABKAsyGS5ub3JkLkFjdGlvbi5DcmVhdGVNYXJrZXRIABIuCgtwbGFjZV9vcmRlchgHIAEoCzIXLm5vcmQuQWN0aW9uLlBsYWNlT3JkZXJIABI6ChJjYW5jZWxfb3JkZXJfYnlfaWQYCCABKAsyHC5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5SWRIABInCgdkZXBvc2l0GAkgASgLMhQubm9yZC5BY3Rpb24uRGVwb3NpdEgAEikKCHdpdGhkcmF3GAogASgLMhUubm9yZC5BY3Rpb24uV2l0aGRyYXdIABJMChtweXRoX3NldF93b3JtaG9sZV9ndWFyZGlhbnMYCyABKAsyJS5ub3JkLkFjdGlvbi5QeXRoU2V0V29ybWhvbGVHdWFyZGlhbnNIABI+ChRweXRoX3NldF9zeW1ib2xfZmVlZBgMIAEoCzIeLm5vcmQuQWN0aW9uLlB5dGhTZXRTeW1ib2xGZWVkSAASQgoWcHl0aF9wcmljZV9mZWVkX3VwZGF0ZRgNIAEoCzIgLm5vcmQuQWN0aW9uLlB5dGhQcmljZUZlZWRVcGRhdGVIABIrCglsaXF1aWRhdGUYDiABKAsyFi5ub3JkLkFjdGlvbi5MaXF1aWRhdGVIABI0Cg5yZXZva2Vfc2Vzc2lvbhgPIAEoCzIaLm5vcmQuQWN0aW9uLlJldm9rZVNlc3Npb25IABIjCgVwYXVzZRgQIAEoCzISLm5vcmQuQWN0aW9uLlBhdXNlSAASJwoHdW5wYXVzZRgRIAEoCzIULm5vcmQuQWN0aW9uLlVucGF1c2VIABIpCgh0cmFuc2ZlchgSIAEoCzIVLm5vcmQuQWN0aW9uLlRyYW5zZmVySAASLgoLYWRkX3RyaWdnZXIYICABKAsyFy5ub3JkLkFjdGlvbi5BZGRUcmlnZ2VySAASNAoOcmVtb3ZlX3RyaWdnZXIYISABKAsyGi5ub3JkLkFjdGlvbi5SZW1vdmVUcmlnZ2VySAASMgoNdGFrZV9wb3NpdGlvbhgiIAEoCzIZLm5vcmQuQWN0aW9uLlRha2VQb3NpdGlvbkgAEh4KBmF0b21pYxgjIAEoCzIMLm5vcmQuQXRvbWljSAASMgoNZnJlZXplX21hcmtldBgkIAEoCzIZLm5vcmQuQWN0aW9uLkZyZWV6ZU1hcmtldEgAEjYKD3VuZnJlZXplX21hcmtldBglIAEoCzIbLm5vcmQuQWN0aW9uLlVuZnJlZXplTWFya2V0SAAaUwoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBITCgtibHN0X3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDGncKC0NyZWF0ZVRva2VuEhYKDnRva2VuX2RlY2ltYWxzGAEgASgNEhIKCndlaWdodF9icHMYAyABKA0SEwoLdmlld19zeW1ib2wYBCABKAkSFQoNb3JhY2xlX3N5bWJvbBgFIAEoCRIQCghzb2xfYWRkchgGIAEoDBraAQoMQ3JlYXRlTWFya2V0EhUKDXNpemVfZGVjaW1hbHMYASABKA0SFgoOcHJpY2VfZGVjaW1hbHMYAiABKA0SDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0SJQoLbWFya2V0X3R5cGUYBiABKA4yEC5ub3JkLk1hcmtldFR5cGUSEwoLdmlld19zeW1ib2wYByABKAkSFQoNb3JhY2xlX3N5bWJvbBgIIAEoCRIVCg1iYXNlX3Rva2VuX2lkGAkgASgNGqYDCgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEiMKCnF1b3RlX3NpemUYCCABKAsyDy5ub3JkLlF1b3RlU2l6ZRIhChRkZWxlZ2F0b3JfYWNjb3VudF9pZBggIAEoDUgAiAEBEhwKD2NsaWVudF9vcmRlcl9pZBghIAEoBEgBiAEBEh4KEXNlbmRlcl9hY2NvdW50X2lkGCIgASgNSAKIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGCMgASgESAOIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGm8KB0RlcG9zaXQSFAoMYWN0aW9uX25vbmNlGAEgASgEEhIKCnRva2VuX2FkZHIYAiABKAwSDgoGYW1vdW50GAMgASgEEhMKC3VzZXJfcHVia2V5GAQgASgMEhUKDXNlbmRlcl9wdWJrZXkYBSABKAwaQAoIV2l0aGRyYXcSEAoIdG9rZW5faWQYASABKA0SEgoKc2Vzc2lvbl9pZBgCIAEoBBIOCgZhbW91bnQYAyABKAQaSQoYUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zEhoKEmd1YXJkaWFuX3NldF9pbmRleBgBIAEoDRIRCglhZGRyZXNzZXMYAiADKAwaQQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMGi8KE1B5dGhQcmljZUZlZWRVcGRhdGUSGAoQcmF3X3B5dGhuZXRfZGF0YRgBIAEoDBqHAQoJTGlxdWlkYXRlEh0KFWxpcXVpZGF0b3Jfc2Vzc2lvbl9pZBgBIAEoBBIdChVsaXF1aWRhdGVlX2FjY291bnRfaWQYAiABKA0SIgoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAMgASgNSACIAQFCGAoWX2xpcXVpZGF0b3JfYWNjb3VudF9pZBojCg1SZXZva2VTZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAQaBwoFUGF1c2UaCQoHVW5wYXVzZRrPAQoIVHJhbnNmZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhoKDXRvX2FjY291bnRfaWQYCCABKA1IAIgBARIyCg9zcGVjaWFsX2FjY291bnQYCSABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEAoOX3RvX2FjY291bnRfaWRCEgoQX3NwZWNpYWxfYWNjb3VudBpQCg1UcmlnZ2VyUHJpY2VzEhUKDXRyaWdnZXJfcHJpY2UYBSABKAQSGAoLbGltaXRfcHJpY2UYBiABKARIAIgBAUIOCgxfbGltaXRfcHJpY2UapgEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SHQoDa2V5GAMgASgLMhAubm9yZC5UcmlnZ2VyS2V5EioKBnByaWNlcxgEIAEoCzIaLm5vcmQuQWN0aW9uLlRyaWdnZXJQcmljZXMSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGn0KDVJlbW92ZVRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SHQoDa2V5GAMgASgLMhAubm9yZC5UcmlnZ2VyS2V5EhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBohCgxGcmVlemVNYXJrZXQSEQoJbWFya2V0X2lkGAIgASgNGiMKDlVuZnJlZXplTWFya2V0EhEKCW1hcmtldF9pZBgCIAEoDRqXAQoMVGFrZVBvc2l0aW9uEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEgwKBHNpemUYAyABKAMSHgoRc2VuZGVyX2FjY291bnRfaWQYBCABKA1IAIgBARISCgVwcmljZRgFIAEoBEgBiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZEIICgZfcHJpY2VCBgoEa2luZCJ3ChNBdG9taWNTdWJhY3Rpb25LaW5kEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIpCgxjYW5jZWxfb3JkZXIYByABKAsyES5ub3JkLkNhbmNlbE9yZGVySABCBwoFaW5uZXIicAoGQXRvbWljEhIKCnNlc3Npb25faWQYASABKAQSFwoKYWNjb3VudF9pZBgCIAEoDUgAiAEBEioKB2FjdGlvbnMYBiADKAsyGS5ub3JkLkF0b21pY1N1YmFjdGlvbktpbmRCDQoLX2FjY291bnRfaWQivxsKB1JlY2VpcHQSEQoJYWN0aW9uX2lkGAEgASgEEhoKA2VychggIAEoDjILLm5vcmQuRXJyb3JIABJCChVjcmVhdGVfc2Vzc2lvbl9yZXN1bHQYISABKAsyIS5ub3JkLlJlY2VpcHQuQ3JlYXRlU2Vzc2lvblJlc3VsdEgAEjwKEnBsYWNlX29yZGVyX3Jlc3VsdBgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI1CgpsaXF1aWRhdGVkGCsgASgLMh8ubm9yZC5SZWNlaXB0LkFjY291bnRMaXF1aWRhdGVkSAASNwoPc2Vzc2lvbl9yZXZva2VkGCwgASgLMhwubm9yZC5SZWNlaXB0LlNlc3Npb25SZXZva2VkSAASJgoGcGF1c2VkGC0gASgLMhQubm9yZC5SZWNlaXB0LlBhdXNlZEgAEioKCHVucGF1c2VkGC4gASgLMhYubm9yZC5SZWNlaXB0LlVucGF1c2VkSAASMAoLdHJhbnNmZXJyZWQYLyABKAsyGS5ub3JkLlJlY2VpcHQuVHJhbnNmZXJyZWRIABIzCg10cmlnZ2VyX2FkZGVkGEAgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBhBIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEk0KGHBvc2l0aW9uX3Rha2VuX29yX3RyYWRlZBhCIAEoCzIpLm5vcmQuUmVjZWlwdC5Qb3NpdGlvblRha2VuT3JUcmFkZWRSZXN1bHRIABIsCgZhdG9taWMYQyABKAsyGi5ub3JkLlJlY2VpcHQuQXRvbWljUmVzdWx0SAASQgoVbWFya2V0X2ZyZWV6ZV91cGRhdGVkGEQgASgLMiEubm9yZC5SZWNlaXB0Lk1hcmtldEZyZWV6ZVVwZGF0ZWRIABp4CgZQb3N0ZWQSGAoEc2lkZRgBIAEoDjIKLm5vcmQuU2lkZRIRCgltYXJrZXRfaWQYAiABKA0SDQoFcHJpY2UYAyABKAQSDAoEc2l6ZRgEIAEoBBIQCghvcmRlcl9pZBgFIAEoBBISCgphY2NvdW50X2lkGAYgASgNGkoKBVRyYWRlEhAKCG9yZGVyX2lkGAIgASgEEg0KBXByaWNlGAQgASgEEgwKBHNpemUYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRopChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQaQwoJVHJpZ2dlcmVkEh8KBGtpbmQYAyABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhUKDXRyaWdnZXJfcHJpY2UYBCABKAQalQIKEFBsYWNlT3JkZXJSZXN1bHQSKQoGcG9zdGVkGAEgASgLMhQubm9yZC5SZWNlaXB0LlBvc3RlZEgAiAEBEiIKBWZpbGxzGAIgAygLMhMubm9yZC5SZWNlaXB0LlRyYWRlEhwKD2NsaWVudF9vcmRlcl9pZBgDIAEoBEgBiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgEIAEoBEgCiAEBEi8KCXRyaWdnZXJlZBgFIAEoCzIXLm5vcmQuUmVjZWlwdC5UcmlnZ2VyZWRIA4gBAUIJCgdfcG9zdGVkQhIKEF9jbGllbnRfb3JkZXJfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZEIMCgpfdHJpZ2dlcmVkGkIKC1Rha2VuUmVzdWx0EgsKA3BubBgBIAEoAxIMCgRzaXplGAIgASgDEhgKEHRha2VyX2FjY291bnRfaWQYAyABKA0aqwEKG1Bvc2l0aW9uVGFrZW5PclRyYWRlZFJlc3VsdBIRCgltYXJrZXRfaWQYASABKA0SKgoFdGFrZW4YAiABKAsyGS5ub3JkLlJlY2VpcHQuVGFrZW5SZXN1bHRIABIwCgZ0cmFkZWQYAyABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdEgAQhsKGVBvc2l0aW9uVGFrZW5PclRyYWRlZEtpbmQaOQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRpwCg1EZXBvc2l0UmVzdWx0EhAKCHRva2VuX2lkGAEgASgNEg4KBmFtb3VudBgCIAEoBBISCgphY2NvdW50X2lkGAMgASgNEhQKDHVzZXJfY3JlYXRlZBgEIAEoCBITCgt1c2VyX3B1YmtleRgFIAEoDBpDChFJbnNlcnRUb2tlblJlc3VsdBISCgpjaGFpbl9hZGRyGAEgASgMEhoKBXRva2VuGAIgASgLMgsubm9yZC5Ub2tlbhoyChJJbnNlcnRNYXJrZXRSZXN1bHQSHAoGbWFya2V0GAEgASgLMgwubm9yZC5NYXJrZXQaeQoOV2l0aGRyYXdSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEg8KB2JhbGFuY2UYAyABKAQSEgoKYWNjb3VudF9pZBgEIAEoDRILCgNmZWUYBSABKAQSEwoLdXNlcl9wdWJrZXkYBiABKAwaQAoWT3JhY2xlU3ltYm9sRmVlZFJlc3VsdBIVCg1vcmFjbGVfc3ltYm9sGAEgASgJEg8KB2ZlZWRfaWQYAiABKAwaJwoST3JhY2xlVXBkYXRlUmVzdWx0EhEKCXRpbWVzdGFtcBgBIAEoAxpIChdVcGRhdGVHdWFyZGlhblNldFJlc3VsdBIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMGkMKDFBlcnBQb3NpdGlvbhIRCgltYXJrZXRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEg0KBXByaWNlGAMgASgEGp4BChFBY2NvdW50TGlxdWlkYXRlZBIdChVsaXF1aWRhdG9yX2FjY291bnRfaWQYASABKA0SHQoVbGlxdWlkYXRlZV9hY2NvdW50X2lkGAIgASgNEhgKEGNhbmNlbGxlZF9vcmRlcnMYAyADKAQSMQoNcmVtb3ZlZF9wZXJwcxgEIAMoCzIaLm5vcmQuUmVjZWlwdC5QZXJwUG9zaXRpb24aEAoOU2Vzc2lvblJldm9rZWQaCAoGUGF1c2VkGgoKCFVucGF1c2VkGuEBCgtUcmFuc2ZlcnJlZBIXCg9mcm9tX2FjY291bnRfaWQYASABKA0SHAoPdG9fdXNlcl9hY2NvdW50GAIgASgNSACIAQESEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhcKD2FjY291bnRfY3JlYXRlZBgFIAEoCBI1ChJ0b19zcGVjaWFsX2FjY291bnQYBiABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEgoQX3RvX3VzZXJfYWNjb3VudEIVChNfdG9fc3BlY2lhbF9hY2NvdW50Gg4KDFRyaWdnZXJBZGRlZBoQCg5UcmlnZ2VyUmVtb3ZlZBo4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgamwEKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIAEIHCgVpbm5lchpICgxBdG9taWNSZXN1bHQSOAoHcmVzdWx0cxgBIAMoCzInLm5vcmQuUmVjZWlwdC5BdG9taWNTdWJhY3Rpb25SZXN1bHRLaW5kQgYKBGtpbmQqGAoEU2lkZRIHCgNBU0sQABIHCgNCSUQQASotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKk8KCEZpbGxNb2RlEgkKBUxJTUlUEAASDQoJUE9TVF9PTkxZEAESFwoTSU1NRURJQVRFX09SX0NBTkNFTBACEhAKDEZJTExfT1JfS0lMTBADKiYKCk1hcmtldFR5cGUSCAoEU1BPVBAAEg4KClBFUlBFVFVBTFMQASrdGQoFRXJyb3ISDQoJRFVQTElDQVRFEAASEgoOREVDT0RFX0ZBSUxVUkUQAhIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSDgoKQVJJVEhNRVRJQxALEhcKE0FSSVRITUVUSUNfT1ZFUkZMT1cQDBIYChRBUklUSE1FVElDX1VOREVSRkxPVxANEh8KG0FSSVRITUVUSUNfRElWSVNJT05fQllfWkVSTxAOEhoKFktFWV9BTFJFQURZX1JFR0lTVEVSRUQQDxIcChhFWFBJUllfVElNRVNUQU1QX0lOX1BBU1QQEBIcChhVUERBVEVfVElNRVNUQU1QX0lOX1BBU1QQERIYChRUT09fTUFOWV9PUEVOX09SREVSUxASEh0KGVdJVEhEUkFXX0FNT1VOVF9UT09fU01BTEwQFRIXChNJTlZBTElEX09SREVSX09XTkVSEBYSIAocREVDT0RFX0ZBSUxVUkVfTEVOR1RIX1BSRUZJWBAhEhYKEkRFQ09ERV9GQUlMVVJFX1JBVxAiEhkKFURFQ09ERV9GQUlMVVJFX0RPTUFJThAjEh8KG1VQREFURV9QVUJMSVNIX1RJTUVfSU5fUEFTVBAkEhcKE1BZVEhfRkVFRF9OT1RfQURERUQQXRIVChFQWVRIX0ZFRURfTUlTU0lORxBeEhsKF1BZVEhfRkVFRF9BTFJFQURZX0FEREVEEF8SIwofUFlUSF9HVUFSRElBTl9TRVRfVU5JTklUSUFMSVpFRBBgEh0KGVBZVEhfR1VBUkRJQU5fU0VUX0lOVkFMSUQQYRIjCh9QWVRIX0ZFRURfREVDSU1BTFNfT1VUX09GX1JBTkdFEGISIAocUFlUSF9GRUVEX1BSSUNFX09VVF9PRl9SQU5HRRBjEiMKH1BZVEhfRkVFRF9WQVJJQU5DRV9PVVRfT0ZfUkFOR0UQZBI1CjFQWVRIX0dVQVJESUFOX1NFVF9BTkRfUFlUSF9TSUdOQVRVUkVfRE9fTk9UX01BVENIEGUSHAoYSU5WQUxJRF9UT0tFTl9QQVJBTUVURVJTEGYSHAoYSU5ERVhfUFJJQ0VfT1VUX09GX1JBTkdFEGcSHwobSU5ERVhfREVDSU1BTFNfT1VUX09GX1JBTkdFEGgSGQoVSU5WQUxJRF9TVEFURV9WRVJTSU9OEGkSEwoPSU5WQUxJRF9NQVJHSU5TEGsSIQodTUFSS0VUX0RFQ0lNQUxTX0VYQ0VFRF9MSU1JVFMQbRITCg9UT09fTUFOWV9UT0tFTlMQbhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhQKD1RPS0VOX05PVF9SRUFEWRCCARIcChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQcBIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIOCglUSU1FU1RBTVAQsAESHwoaVElNRVNUQU1QX09VVF9PRl9USFJFU0hPTEQQsQESFAoPVElNRVNUQU1QX1NUQUxFELIBEiUKIEJBTktSVVBUQ1lfSU5TVUZGSUNJRU5UX0NPVkVSQUdFELkBEhkKFEJBTktSVVBUQ1lfTk9UX0ZPVU5EELoBEhsKFkJBTktSVVBUQ1lfTk9UX0FMTE9XRUQQuwESFQoQTUFSS0VUX05PVF9SRUFEWRDAARISCg1NQVJLRVRfRlJPWkVOEMEBEhEKDE1BUktFVF9FTVBUWRDCARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESGAoTUE9TSVRJT05fU1RBVEVfUEVSUBDPARIkCh9QT1NJVElPTl9TVEFURV9PUkRFUl9ERUxFR0FUSU9OENABEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEioKJVJJU0tfVFJBREVfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9DTUYQ5QESNQowUklTS19VTkhFQUxUSFlfTUZfQU5EX1BPTl9BRlRFUl9CRVRURVJfT0ZfQkVGT1JFEOQBEhQKD09SREVSX0VYRUNVVElPThDwARIaChVPUkRFUl9FWEVDVVRJT05fRU1QVFkQ8QESIQocT1JERVJfRVhFQ1VUSU9OX0ZJTExfT1JfS0lMTBDyARIjCh5PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19MSU1JVFMQ8wESIgodT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfUFJJQ0UQ9AESHwoaT1JERVJfRVhFQ1VUSU9OX1NJWkVfTElNSVQQ9QESIAobT1JERVJfRVhFQ1VUSU9OX0xJTUlUX1BSSUNFEPYBEh4KGU9SREVSX1JFRFVDRV9JU19QT1NUX09OTFkQ9wESHwoaT1JERVJfRVhFQ1VUSU9OX1NFTExfUFJJQ0UQ+AESJQogT1JERVJfU0laRV9FWENFRURTX1BPU0lUSU9OX1NJWkUQ+QESKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgAISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCBAhImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIMCgdEcm9wcGVkEOcHKh4KDlNwZWNpYWxBY2NvdW50EgwKCEZlZVZhdWx0EABiBnByb3RvMw");
14
14
  /**
15
15
  * Describes the message nord.Market.
16
16
  * Use `create(MarketSchema)` to create a new message.
@@ -146,11 +146,21 @@ exports.Action_AddTriggerSchema = (0, codegenv2_1.messageDesc)(exports.file_nord
146
146
  * Use `create(Action_RemoveTriggerSchema)` to create a new message.
147
147
  */
148
148
  exports.Action_RemoveTriggerSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 8, 17);
149
+ /**
150
+ * Describes the message nord.Action.FreezeMarket.
151
+ * Use `create(Action_FreezeMarketSchema)` to create a new message.
152
+ */
153
+ exports.Action_FreezeMarketSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 8, 18);
154
+ /**
155
+ * Describes the message nord.Action.UnfreezeMarket.
156
+ * Use `create(Action_UnfreezeMarketSchema)` to create a new message.
157
+ */
158
+ exports.Action_UnfreezeMarketSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 8, 19);
149
159
  /**
150
160
  * Describes the message nord.Action.TakePosition.
151
161
  * Use `create(Action_TakePositionSchema)` to create a new message.
152
162
  */
153
- exports.Action_TakePositionSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 8, 18);
163
+ exports.Action_TakePositionSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 8, 20);
154
164
  /**
155
165
  * Describes the message nord.AtomicSubactionKind.
156
166
  * Use `create(AtomicSubactionKindSchema)` to create a new message.
@@ -281,16 +291,21 @@ exports.Receipt_TriggerAddedSchema = (0, codegenv2_1.messageDesc)(exports.file_n
281
291
  * Use `create(Receipt_TriggerRemovedSchema)` to create a new message.
282
292
  */
283
293
  exports.Receipt_TriggerRemovedSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 22);
294
+ /**
295
+ * Describes the message nord.Receipt.MarketFreezeUpdated.
296
+ * Use `create(Receipt_MarketFreezeUpdatedSchema)` to create a new message.
297
+ */
298
+ exports.Receipt_MarketFreezeUpdatedSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 23);
284
299
  /**
285
300
  * Describes the message nord.Receipt.AtomicSubactionResultKind.
286
301
  * Use `create(Receipt_AtomicSubactionResultKindSchema)` to create a new message.
287
302
  */
288
- exports.Receipt_AtomicSubactionResultKindSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 23);
303
+ exports.Receipt_AtomicSubactionResultKindSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 24);
289
304
  /**
290
305
  * Describes the message nord.Receipt.AtomicResult.
291
306
  * Use `create(Receipt_AtomicResultSchema)` to create a new message.
292
307
  */
293
- exports.Receipt_AtomicResultSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 24);
308
+ exports.Receipt_AtomicResultSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 25);
294
309
  /**
295
310
  * @generated from enum nord.Side
296
311
  */
@@ -59,7 +59,7 @@ export interface paths {
59
59
  [name: string]: unknown;
60
60
  };
61
61
  content: {
62
- "application/json": components["schemas"]["Info2"];
62
+ "application/json": components["schemas"]["MarketsInfo"];
63
63
  };
64
64
  };
65
65
  };
@@ -1068,6 +1068,40 @@ export interface paths {
1068
1068
  patch?: never;
1069
1069
  trace?: never;
1070
1070
  };
1071
+ "/state/info": {
1072
+ parameters: {
1073
+ query?: never;
1074
+ header?: never;
1075
+ path?: never;
1076
+ cookie?: never;
1077
+ };
1078
+ get: {
1079
+ parameters: {
1080
+ query?: never;
1081
+ header?: never;
1082
+ path?: never;
1083
+ cookie?: never;
1084
+ };
1085
+ requestBody?: never;
1086
+ responses: {
1087
+ 200: {
1088
+ headers: {
1089
+ [name: string]: unknown;
1090
+ };
1091
+ content: {
1092
+ "application/json": components["schemas"]["StateInfo"];
1093
+ };
1094
+ };
1095
+ };
1096
+ };
1097
+ put?: never;
1098
+ post?: never;
1099
+ delete?: never;
1100
+ options?: never;
1101
+ head?: never;
1102
+ patch?: never;
1103
+ trace?: never;
1104
+ };
1071
1105
  "/tv": {
1072
1106
  parameters: {
1073
1107
  query?: never;
@@ -1967,7 +2001,7 @@ export interface components {
1967
2001
  } & {
1968
2002
  [key: string]: unknown;
1969
2003
  };
1970
- Info2: {
2004
+ MarketsInfo: {
1971
2005
  markets: components["schemas"]["MarketInfo"][];
1972
2006
  tokens: components["schemas"]["TokenInfo"][];
1973
2007
  };
@@ -2475,6 +2509,21 @@ export interface components {
2475
2509
  version?: components["schemas"]["BinaryId"] | null;
2476
2510
  };
2477
2511
  BinaryId: string;
2512
+ StateInfo: {
2513
+ version: components["schemas"]["ExecutableVersion"];
2514
+ state: components["schemas"]["EngineStateHeader"];
2515
+ };
2516
+ EngineStateHeader: {
2517
+ /** Format: uint16 */
2518
+ version: number;
2519
+ /** Format: uint64 */
2520
+ action_id: number;
2521
+ /** Format: uint64 */
2522
+ action_nonce: number;
2523
+ /** Format: uint64 */
2524
+ timestamp: number;
2525
+ paused: boolean;
2526
+ };
2478
2527
  /** @description TV config query response https://www.tradingview.com/charting-library-docs/latest/connecting_data/UDF/#data-feed-configuration-data */
2479
2528
  TvConfigResponse: {
2480
2529
  supported_resolutions: components["schemas"]["Resolution"][];
@@ -2,6 +2,8 @@ import Decimal from "decimal.js";
2
2
  import * as proto from "../../gen/nord_pb";
3
3
  import { FillMode, Side, QuoteSize, TriggerKind } from "../../types";
4
4
  import { BigIntValue } from "../../utils";
5
+ export declare function createAction(currentTimestamp: bigint, nonce: number, kind: proto.Action["kind"]): proto.Action;
6
+ export declare function sendAction(serverUrl: string, makeSignedMessage: (message: Uint8Array) => Promise<Uint8Array>, action: proto.Action): Promise<proto.Receipt>;
5
7
  export declare function prepareAction(action: proto.Action, makeSignedMessage: (message: Uint8Array) => Promise<Uint8Array>): Promise<Uint8Array<ArrayBufferLike>>;
6
8
  export declare function createSession(serverUrl: string, walletSignFn: (message: string | Uint8Array) => Promise<Uint8Array>, currentTimestamp: bigint, nonce: number, params: {
7
9
  userPubkey: Uint8Array;
@@ -36,6 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createAction = createAction;
40
+ exports.sendAction = sendAction;
39
41
  exports.prepareAction = prepareAction;
40
42
  exports.createSession = createSession;
41
43
  exports.revokeSession = revokeSession;
@@ -1,7 +1,7 @@
1
1
  import { ProtonClient } from "@n1xyz/proton";
2
2
  import { PublicKey } from "@solana/web3.js";
3
3
  import { EventEmitter } from "events";
4
- import { Account, AccountPnlPage, AccountPnlQuery, ActionResponse, AggregateMetrics, Info, Market, MarketStats, NordConfig, OrderbookQuery, OrderbookResponse, PeakTpsPeriodUnit, Token, TradesResponse, User } from "../../types";
4
+ import { Account, AccountPnlPage, AccountPnlQuery, ActionResponse, AggregateMetrics, MarketsInfo, Market, MarketStats, NordConfig, OrderbookQuery, OrderbookResponse, PeakTpsPeriodUnit, Token, TradesResponse, User, AccountTriggerInfo, HistoryTriggerQuery, TriggerHistoryPage } from "../../types";
5
5
  import { NordWebSocketClient } from "../../websocket/index";
6
6
  import { OrderbookSubscription, TradeSubscription } from "../models/Subscriber";
7
7
  /**
@@ -27,8 +27,6 @@ export interface WebSocketSubscriptionOptions {
27
27
  export declare class Nord {
28
28
  /** Base URL for the Nord web server */
29
29
  readonly webServerUrl: string;
30
- /** Bridge verification key */
31
- readonly bridgeVk: PublicKey;
32
30
  /** Solana RPC URL */
33
31
  readonly solanaUrl: string;
34
32
  /** Available markets */
@@ -37,7 +35,7 @@ export declare class Nord {
37
35
  tokens: Token[];
38
36
  /** Map of symbol to market_id */
39
37
  private symbolToMarketId;
40
- /** Proton client for bridge and hansel operations */
38
+ /** Proton client for proton related operations */
41
39
  protonClient: ProtonClient;
42
40
  /** HTTP client for Nord operations */
43
41
  private httpClient;
@@ -46,7 +44,6 @@ export declare class Nord {
46
44
  *
47
45
  * @param config - Configuration options for the Nord client
48
46
  * @param config.webServerUrl - Base URL for the Nord web server
49
- * @param config.bridgeVk - Bridge verification key
50
47
  * @param config.solanaUrl - Solana cluster URL
51
48
  * @throws {Error} If required configuration is missing
52
49
  */
@@ -99,12 +96,12 @@ export declare class Nord {
99
96
  *
100
97
  * @param nordConfig - Configuration options for the Nord client
101
98
  * @param nordConfig.webServerUrl - Base URL for the Nord web server
102
- * @param nordConfig.bridgeVk - Bridge verification key
99
+ * @param nordConfig.app - App address
103
100
  * @param nordConfig.solanaUrl - Solana cluster URL
104
101
  * @returns Initialized Nord client
105
102
  * @throws {NordError} If initialization fails
106
103
  */
107
- static initNord({ bridgeVk: bridgeVk_, solanaUrl, webServerUrl, }: Readonly<NordConfig>): Promise<Nord>;
104
+ static initNord({ app, solanaUrl, webServerUrl, }: Readonly<NordConfig>): Promise<Nord>;
108
105
  /**
109
106
  * Initialize the Nord client
110
107
  * @private
@@ -254,7 +251,7 @@ export declare class Nord {
254
251
  * @returns Information about markets and tokens
255
252
  * @throws {NordError} If the request fails
256
253
  */
257
- getInfo(): Promise<Info>;
254
+ getInfo(): Promise<MarketsInfo>;
258
255
  /**
259
256
  * Get account information
260
257
  *
@@ -288,4 +285,22 @@ export declare class Nord {
288
285
  * @deprecated use getUser instead
289
286
  */
290
287
  accountExists(pubkey: string | PublicKey): Promise<boolean>;
288
+ /**
289
+ * Fetch active triggers for an account.
290
+ *
291
+ * @param params Optional parameters containing an explicit account id.
292
+ * @throws {NordError} If no account can be resolved or the request fails.
293
+ */
294
+ getAccountTriggers(params?: {
295
+ accountId?: number;
296
+ }): Promise<AccountTriggerInfo[]>;
297
+ /**
298
+ * Fetch trigger history for an account.
299
+ *
300
+ * @param params Optional parameters with account id and history query filters.
301
+ * @throws {NordError} If no account can be resolved or the request fails.
302
+ */
303
+ getAccountTriggerHistory(params: HistoryTriggerQuery & {
304
+ accountId?: number;
305
+ }): Promise<TriggerHistoryPage>;
291
306
  }
@@ -56,11 +56,10 @@ class Nord {
56
56
  *
57
57
  * @param config - Configuration options for the Nord client
58
58
  * @param config.webServerUrl - Base URL for the Nord web server
59
- * @param config.bridgeVk - Bridge verification key
60
59
  * @param config.solanaUrl - Solana cluster URL
61
60
  * @throws {Error} If required configuration is missing
62
61
  */
63
- constructor({ bridgeVk, solanaUrl, webServerUrl, protonClient, }) {
62
+ constructor({ solanaUrl, webServerUrl, protonClient, }) {
64
63
  /** Available markets */
65
64
  this.markets = [];
66
65
  /** Available tokens */
@@ -68,7 +67,6 @@ class Nord {
68
67
  /** Map of symbol to market_id */
69
68
  this.symbolToMarketId = new Map();
70
69
  this.webServerUrl = webServerUrl;
71
- this.bridgeVk = bridgeVk;
72
70
  this.solanaUrl = solanaUrl;
73
71
  this.protonClient = protonClient;
74
72
  this.httpClient = (0, openapi_fetch_1.default)({ baseUrl: webServerUrl });
@@ -179,24 +177,22 @@ class Nord {
179
177
  *
180
178
  * @param nordConfig - Configuration options for the Nord client
181
179
  * @param nordConfig.webServerUrl - Base URL for the Nord web server
182
- * @param nordConfig.bridgeVk - Bridge verification key
180
+ * @param nordConfig.app - App address
183
181
  * @param nordConfig.solanaUrl - Solana cluster URL
184
182
  * @returns Initialized Nord client
185
183
  * @throws {NordError} If initialization fails
186
184
  */
187
- static async initNord({ bridgeVk: bridgeVk_, solanaUrl, webServerUrl, }) {
185
+ static async initNord({ app, solanaUrl, webServerUrl, }) {
188
186
  // TODO: we should parametrize the connectionn not have it done here.
189
187
  // this is a dogshit api, only here to be compatible with the shitty
190
188
  // vibecoded code and not break zero one team's workflow.
191
189
  const connection = new web3_js_1.Connection(solanaUrl, { commitment: "confirmed" });
192
- const bridgeVk = new web3_js_1.PublicKey(bridgeVk_);
193
190
  const protonClient = await proton_1.ProtonClient.init({
194
191
  protonUrl: webServerUrl,
195
- bridgeVk,
192
+ app: new web3_js_1.PublicKey(app),
196
193
  solConn: connection,
197
194
  });
198
195
  const nord = new Nord({
199
- bridgeVk,
200
196
  protonClient,
201
197
  solanaUrl,
202
198
  webServerUrl,
@@ -545,5 +541,59 @@ class Nord {
545
541
  async accountExists(pubkey) {
546
542
  return !!(await this.getUser({ pubkey }));
547
543
  }
544
+ /**
545
+ * Fetch active triggers for an account.
546
+ *
547
+ * @param params Optional parameters containing an explicit account id.
548
+ * @throws {NordError} If no account can be resolved or the request fails.
549
+ */
550
+ async getAccountTriggers(params) {
551
+ const accountId = params?.accountId;
552
+ if (accountId == null) {
553
+ throw new NordError_1.NordError("Account ID is undefined. Make sure to call updateAccountId() before requesting triggers.");
554
+ }
555
+ try {
556
+ const triggers = await this.GET("/account/{account_id}/triggers", {
557
+ params: {
558
+ path: { account_id: accountId },
559
+ },
560
+ });
561
+ return triggers ?? [];
562
+ }
563
+ catch (error) {
564
+ throw new NordError_1.NordError("Failed to fetch account triggers", { cause: error });
565
+ }
566
+ }
567
+ /**
568
+ * Fetch trigger history for an account.
569
+ *
570
+ * @param params Optional parameters with account id and history query filters.
571
+ * @throws {NordError} If no account can be resolved or the request fails.
572
+ */
573
+ async getAccountTriggerHistory(params) {
574
+ const accountId = params?.accountId;
575
+ if (accountId == null) {
576
+ throw new NordError_1.NordError("Account ID is undefined. Make sure to call updateAccountId() before requesting trigger history.");
577
+ }
578
+ const { accountId: _, ...query } = params;
579
+ try {
580
+ return await this.GET("/account/{account_id}/triggers/history", {
581
+ params: {
582
+ path: { account_id: accountId },
583
+ query: {
584
+ since: query.since,
585
+ until: query.until,
586
+ pageSize: query.pageSize,
587
+ startInclusive: query.startInclusive,
588
+ },
589
+ },
590
+ });
591
+ }
592
+ catch (error) {
593
+ throw new NordError_1.NordError("Failed to fetch account trigger history", {
594
+ cause: error,
595
+ });
596
+ }
597
+ }
548
598
  }
549
599
  exports.Nord = Nord;