@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 +2 -2
- package/dist/gen/nord_pb.d.ts +113 -0
- package/dist/gen/nord_pb.js +21 -6
- package/dist/gen/openapi.d.ts +51 -2
- package/dist/nord/api/actions.d.ts +2 -0
- package/dist/nord/api/actions.js +2 -0
- package/dist/nord/client/Nord.d.ts +23 -8
- package/dist/nord/client/Nord.js +58 -8
- package/dist/nord/client/NordAdmin.d.ts +70 -0
- package/dist/nord/client/NordAdmin.js +187 -0
- package/dist/nord/client/NordClient.d.ts +42 -0
- package/dist/nord/client/NordClient.js +93 -0
- package/dist/nord/client/NordUser.d.ts +6 -50
- package/dist/nord/client/NordUser.js +162 -133
- package/dist/nord/index.d.ts +4 -0
- package/dist/nord/index.js +5 -1
- package/dist/types.d.ts +8 -5
- package/package.json +2 -2
- package/src/gen/nord_pb.ts +128 -4
- package/src/gen/openapi.ts +51 -2
- package/src/nord/api/actions.ts +2 -3
- package/src/nord/client/Nord.ts +75 -15
- package/src/nord/client/NordAdmin.ts +232 -0
- package/src/nord/client/NordClient.ts +105 -0
- package/src/nord/client/NordUser.ts +175 -229
- package/src/nord/index.ts +12 -0
- package/src/types.ts +9 -5
- package/src/nord/api/triggers.ts +0 -57
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
|
-
|
|
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
|
-
|
|
64
|
+
app: 'your_app_addr', // Provide the app verification key
|
|
65
65
|
solanaUrl: 'https://api.mainnet-beta.solana.com',
|
|
66
66
|
};
|
|
67
67
|
|
package/dist/gen/nord_pb.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/gen/nord_pb.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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,
|
|
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,
|
|
308
|
+
exports.Receipt_AtomicResultSchema = (0, codegenv2_1.messageDesc)(exports.file_nord, 11, 25);
|
|
294
309
|
/**
|
|
295
310
|
* @generated from enum nord.Side
|
|
296
311
|
*/
|
package/dist/gen/openapi.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export interface paths {
|
|
|
59
59
|
[name: string]: unknown;
|
|
60
60
|
};
|
|
61
61
|
content: {
|
|
62
|
-
"application/json": components["schemas"]["
|
|
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
|
-
|
|
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;
|
package/dist/nord/api/actions.js
CHANGED
|
@@ -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,
|
|
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
|
|
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.
|
|
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({
|
|
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<
|
|
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
|
}
|
package/dist/nord/client/Nord.js
CHANGED
|
@@ -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({
|
|
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.
|
|
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({
|
|
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
|
-
|
|
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;
|