yosoku 0.1.0

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.
Files changed (110) hide show
  1. package/dist/accounts/filllog.d.ts +5 -0
  2. package/dist/accounts/filllog.d.ts.map +1 -0
  3. package/dist/accounts/filllog.js +30 -0
  4. package/dist/accounts/filllog.js.map +1 -0
  5. package/dist/accounts/index.d.ts +42 -0
  6. package/dist/accounts/index.d.ts.map +1 -0
  7. package/dist/accounts/index.js +81 -0
  8. package/dist/accounts/index.js.map +1 -0
  9. package/dist/accounts/market.d.ts +14 -0
  10. package/dist/accounts/market.d.ts.map +1 -0
  11. package/dist/accounts/market.js +104 -0
  12. package/dist/accounts/market.js.map +1 -0
  13. package/dist/accounts/marketinfo.d.ts +9 -0
  14. package/dist/accounts/marketinfo.d.ts.map +1 -0
  15. package/dist/accounts/marketinfo.js +29 -0
  16. package/dist/accounts/marketinfo.js.map +1 -0
  17. package/dist/accounts/order.d.ts +11 -0
  18. package/dist/accounts/order.d.ts.map +1 -0
  19. package/dist/accounts/order.js +50 -0
  20. package/dist/accounts/order.js.map +1 -0
  21. package/dist/accounts/orderbook.d.ts +5 -0
  22. package/dist/accounts/orderbook.d.ts.map +1 -0
  23. package/dist/accounts/orderbook.js +80 -0
  24. package/dist/accounts/orderbook.js.map +1 -0
  25. package/dist/accounts/position.d.ts +11 -0
  26. package/dist/accounts/position.d.ts.map +1 -0
  27. package/dist/accounts/position.js +48 -0
  28. package/dist/accounts/position.js.map +1 -0
  29. package/dist/accounts/resolution.d.ts +13 -0
  30. package/dist/accounts/resolution.d.ts.map +1 -0
  31. package/dist/accounts/resolution.js +91 -0
  32. package/dist/accounts/resolution.js.map +1 -0
  33. package/dist/client.d.ts +50 -0
  34. package/dist/client.d.ts.map +1 -0
  35. package/dist/client.js +63 -0
  36. package/dist/client.js.map +1 -0
  37. package/dist/constants.d.ts +28 -0
  38. package/dist/constants.d.ts.map +1 -0
  39. package/dist/constants.js +32 -0
  40. package/dist/constants.js.map +1 -0
  41. package/dist/errors.d.ts +85 -0
  42. package/dist/errors.d.ts.map +1 -0
  43. package/dist/errors.js +186 -0
  44. package/dist/errors.js.map +1 -0
  45. package/dist/events/index.d.ts +22 -0
  46. package/dist/events/index.d.ts.map +1 -0
  47. package/dist/events/index.js +78 -0
  48. package/dist/events/index.js.map +1 -0
  49. package/dist/events/parser.d.ts +4 -0
  50. package/dist/events/parser.d.ts.map +1 -0
  51. package/dist/events/parser.js +111 -0
  52. package/dist/events/parser.js.map +1 -0
  53. package/dist/events/types.d.ts +85 -0
  54. package/dist/events/types.d.ts.map +1 -0
  55. package/dist/events/types.js +3 -0
  56. package/dist/events/types.js.map +1 -0
  57. package/dist/idl/pred_market.d.ts +4809 -0
  58. package/dist/idl/pred_market.d.ts.map +1 -0
  59. package/dist/idl/pred_market.js +3 -0
  60. package/dist/idl/pred_market.js.map +1 -0
  61. package/dist/idl/pred_market.json +4802 -0
  62. package/dist/index.d.ts +15 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +47 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/instructions/admin.d.ts +20 -0
  67. package/dist/instructions/admin.d.ts.map +1 -0
  68. package/dist/instructions/admin.js +89 -0
  69. package/dist/instructions/admin.js.map +1 -0
  70. package/dist/instructions/index.d.ts +14 -0
  71. package/dist/instructions/index.d.ts.map +1 -0
  72. package/dist/instructions/index.js +18 -0
  73. package/dist/instructions/index.js.map +1 -0
  74. package/dist/instructions/market-creation.d.ts +48 -0
  75. package/dist/instructions/market-creation.d.ts.map +1 -0
  76. package/dist/instructions/market-creation.js +270 -0
  77. package/dist/instructions/market-creation.js.map +1 -0
  78. package/dist/instructions/market-info.d.ts +48 -0
  79. package/dist/instructions/market-info.d.ts.map +1 -0
  80. package/dist/instructions/market-info.js +138 -0
  81. package/dist/instructions/market-info.js.map +1 -0
  82. package/dist/instructions/positions.d.ts +42 -0
  83. package/dist/instructions/positions.d.ts.map +1 -0
  84. package/dist/instructions/positions.js +122 -0
  85. package/dist/instructions/positions.js.map +1 -0
  86. package/dist/instructions/resolution.d.ts +32 -0
  87. package/dist/instructions/resolution.d.ts.map +1 -0
  88. package/dist/instructions/resolution.js +107 -0
  89. package/dist/instructions/resolution.js.map +1 -0
  90. package/dist/instructions/trading.d.ts +81 -0
  91. package/dist/instructions/trading.d.ts.map +1 -0
  92. package/dist/instructions/trading.js +195 -0
  93. package/dist/instructions/trading.js.map +1 -0
  94. package/dist/instructions/vote-resolution.d.ts +20 -0
  95. package/dist/instructions/vote-resolution.d.ts.map +1 -0
  96. package/dist/instructions/vote-resolution.js +58 -0
  97. package/dist/instructions/vote-resolution.js.map +1 -0
  98. package/dist/pda.d.ts +11 -0
  99. package/dist/pda.d.ts.map +1 -0
  100. package/dist/pda.js +68 -0
  101. package/dist/pda.js.map +1 -0
  102. package/dist/price.d.ts +48 -0
  103. package/dist/price.d.ts.map +1 -0
  104. package/dist/price.js +90 -0
  105. package/dist/price.js.map +1 -0
  106. package/dist/types.d.ts +198 -0
  107. package/dist/types.d.ts.map +1 -0
  108. package/dist/types.js +92 -0
  109. package/dist/types.js.map +1 -0
  110. package/package.json +40 -0
@@ -0,0 +1,5 @@
1
+ import { Connection, PublicKey } from "@solana/web3.js";
2
+ import { FillLogView } from "../types";
3
+ /** @internal */
4
+ export declare function fetchFillLog(connection: Connection, address: PublicKey): Promise<FillLogView | null>;
5
+ //# sourceMappingURL=filllog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filllog.d.ts","sourceRoot":"","sources":["../../src/accounts/filllog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAQ,MAAM,UAAU,CAAC;AAmB7C,gBAAgB;AAChB,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAU7B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchFillLog = fetchFillLog;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ /**
6
+ * @internal
7
+ *
8
+ * Deserializes a FillLog from raw account bytes.
9
+ * Exposes only the minimal public view (market, index, side).
10
+ * Internal settlement details are not exposed.
11
+ */
12
+ // Layout offsets (after 8-byte Anchor discriminator)
13
+ const MARKET_OFFSET = 8;
14
+ const INDEX_OFFSET = 40;
15
+ const SIDE_OFFSET = 41;
16
+ function sideFromByte(b) {
17
+ return b === 0 ? "yes" : "no";
18
+ }
19
+ /** @internal */
20
+ async function fetchFillLog(connection, address) {
21
+ const accountInfo = await connection.getAccountInfo(address);
22
+ if (!accountInfo)
23
+ return null;
24
+ const data = accountInfo.data;
25
+ const market = new web3_js_1.PublicKey(data.subarray(MARKET_OFFSET, MARKET_OFFSET + 32));
26
+ const index = data[INDEX_OFFSET];
27
+ const side = sideFromByte(data[SIDE_OFFSET]);
28
+ return { market, index, side };
29
+ }
30
+ //# sourceMappingURL=filllog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filllog.js","sourceRoot":"","sources":["../../src/accounts/filllog.ts"],"names":[],"mappings":";;AAqBA,oCAaC;AAlCD,6CAAwD;AAGxD;;;;;;GAMG;AAEH,qDAAqD;AACrD,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,OAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { MarketAccount, OrderAccount, PositionAccount, OrderBookView, FillLogView, MarketInfoAccount, ResolutionProposalAccount, VoteStateAccount, Side } from "../types";
5
+ export declare class AccountModule {
6
+ private readonly program;
7
+ /** @internal */
8
+ constructor(program: Program<PredMarket>);
9
+ /** Fetch and deserialize a Market account */
10
+ getMarket(address: PublicKey): Promise<MarketAccount | null>;
11
+ /** Fetch a Market by its numeric ID */
12
+ getMarketById(marketId: bigint): Promise<MarketAccount | null>;
13
+ /** Fetch all markets, with optional filters */
14
+ getMarkets(filters?: {
15
+ creator?: PublicKey;
16
+ verified?: boolean;
17
+ }): Promise<MarketAccount[]>;
18
+ /** Fetch and deserialize an Order account */
19
+ getOrder(address: PublicKey): Promise<OrderAccount | null>;
20
+ /** Fetch all orders for a user in a specific market */
21
+ getUserOrders(market: PublicKey, user: PublicKey): Promise<OrderAccount[]>;
22
+ /** Fetch a Position account for a specific user/side */
23
+ getPosition(market: PublicKey, index: number, user: PublicKey, side: Side): Promise<PositionAccount | null>;
24
+ /** Fetch all positions for a user in a specific market */
25
+ getUserPositions(market: PublicKey, user: PublicKey): Promise<PositionAccount[]>;
26
+ /** Fetch an OrderBook as aggregated price levels */
27
+ getOrderBook(address: PublicKey): Promise<OrderBookView | null>;
28
+ /** Fetch both YES and NO order books for a market leg */
29
+ getOrderBooks(market: PublicKey, index?: number): Promise<{
30
+ yes: OrderBookView | null;
31
+ no: OrderBookView | null;
32
+ }>;
33
+ /** Fetch a FillLog */
34
+ getFillLog(address: PublicKey): Promise<FillLogView | null>;
35
+ /** Fetch a MarketInfo account */
36
+ getMarketInfo(address: PublicKey): Promise<MarketInfoAccount | null>;
37
+ /** Fetch a ResolutionProposal for a market leg */
38
+ getResolutionProposal(market: PublicKey, index?: number): Promise<ResolutionProposalAccount | null>;
39
+ /** Fetch a VoteState for a market leg */
40
+ getVoteState(market: PublicKey, index?: number): Promise<VoteStateAccount | null>;
41
+ }
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,IAAI,EACL,MAAM,UAAU,CAAC;AAUlB,qBAAa,aAAa;IAEZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,gBAAgB;gBACa,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAEzD,6CAA6C;IACvC,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAIlE,uCAAuC;IACjC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKpE,+CAA+C;IACzC,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5B,6CAA6C;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIhE,uDAAuD;IACjD,aAAa,CACjB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B,wDAAwD;IAClD,WAAW,CACf,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIlC,0DAA0D;IACpD,gBAAgB,CACpB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,eAAe,EAAE,CAAC;IAI7B,oDAAoD;IAC9C,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAIrE,yDAAyD;IACnD,aAAa,CACjB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC;QAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAA;KAAE,CAAC;IAanE,sBAAsB;IAChB,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIjE,iCAAiC;IAC3B,aAAa,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI1E,kDAAkD;IAC5C,qBAAqB,CACzB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAI5C,yCAAyC;IACnC,YAAY,CAChB,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAGpC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountModule = void 0;
4
+ const pda_1 = require("../pda");
5
+ const market_1 = require("./market");
6
+ const order_1 = require("./order");
7
+ const position_1 = require("./position");
8
+ const orderbook_1 = require("./orderbook");
9
+ const filllog_1 = require("./filllog");
10
+ const marketinfo_1 = require("./marketinfo");
11
+ const resolution_1 = require("./resolution");
12
+ class AccountModule {
13
+ /** @internal */
14
+ constructor(program) {
15
+ this.program = program;
16
+ }
17
+ /** Fetch and deserialize a Market account */
18
+ async getMarket(address) {
19
+ return (0, market_1.fetchMarket)(this.program, address);
20
+ }
21
+ /** Fetch a Market by its numeric ID */
22
+ async getMarketById(marketId) {
23
+ const [pda] = (0, pda_1.getMarketPda)(this.program.programId, marketId);
24
+ return (0, market_1.fetchMarket)(this.program, pda);
25
+ }
26
+ /** Fetch all markets, with optional filters */
27
+ async getMarkets(filters) {
28
+ return (0, market_1.fetchAllMarkets)(this.program, filters);
29
+ }
30
+ /** Fetch and deserialize an Order account */
31
+ async getOrder(address) {
32
+ return (0, order_1.fetchOrder)(this.program, address);
33
+ }
34
+ /** Fetch all orders for a user in a specific market */
35
+ async getUserOrders(market, user) {
36
+ return (0, order_1.fetchUserOrders)(this.program, market, user);
37
+ }
38
+ /** Fetch a Position account for a specific user/side */
39
+ async getPosition(market, index, user, side) {
40
+ return (0, position_1.fetchPosition)(this.program, market, index, user, side);
41
+ }
42
+ /** Fetch all positions for a user in a specific market */
43
+ async getUserPositions(market, user) {
44
+ return (0, position_1.fetchUserPositions)(this.program, market, user);
45
+ }
46
+ /** Fetch an OrderBook as aggregated price levels */
47
+ async getOrderBook(address) {
48
+ return (0, orderbook_1.fetchOrderBook)(this.program.provider.connection, address);
49
+ }
50
+ /** Fetch both YES and NO order books for a market leg */
51
+ async getOrderBooks(market, index = 0) {
52
+ const marketAccount = await this.getMarket(market);
53
+ if (!marketAccount || !marketAccount.legs[index]) {
54
+ return { yes: null, no: null };
55
+ }
56
+ const leg = marketAccount.legs[index];
57
+ const [yes, no] = await Promise.all([
58
+ this.getOrderBook(leg.yesOrderBook),
59
+ this.getOrderBook(leg.noOrderBook),
60
+ ]);
61
+ return { yes, no };
62
+ }
63
+ /** Fetch a FillLog */
64
+ async getFillLog(address) {
65
+ return (0, filllog_1.fetchFillLog)(this.program.provider.connection, address);
66
+ }
67
+ /** Fetch a MarketInfo account */
68
+ async getMarketInfo(address) {
69
+ return (0, marketinfo_1.fetchMarketInfo)(this.program, address);
70
+ }
71
+ /** Fetch a ResolutionProposal for a market leg */
72
+ async getResolutionProposal(market, index = 0) {
73
+ return (0, resolution_1.fetchResolutionProposal)(this.program, market, index);
74
+ }
75
+ /** Fetch a VoteState for a market leg */
76
+ async getVoteState(market, index = 0) {
77
+ return (0, resolution_1.fetchVoteState)(this.program, market, index);
78
+ }
79
+ }
80
+ exports.AccountModule = AccountModule;
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/accounts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { MarketAccount } from "../types";
5
+ /** @internal */
6
+ export declare function parseMarketAccount(address: PublicKey, raw: any): MarketAccount;
7
+ /** @internal */
8
+ export declare function fetchMarket(program: Program<PredMarket>, address: PublicKey): Promise<MarketAccount | null>;
9
+ /** @internal */
10
+ export declare function fetchAllMarkets(program: Program<PredMarket>, filters?: {
11
+ creator?: PublicKey;
12
+ verified?: boolean;
13
+ }): Promise<MarketAccount[]>;
14
+ //# sourceMappingURL=market.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../src/accounts/market.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,aAAa,EAKd,MAAM,UAAU,CAAC;AAoDlB,gBAAgB;AAChB,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,aAAa,CAiBf;AAED,gBAAgB;AAChB,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAO/B;AAED,gBAAgB;AAChB,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,EAAE,CAAC,CAuB1B"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMarketAccount = parseMarketAccount;
4
+ exports.fetchMarket = fetchMarket;
5
+ exports.fetchAllMarkets = fetchAllMarkets;
6
+ const types_1 = require("../types");
7
+ /** @internal */
8
+ function parseMarketData(data, index) {
9
+ return {
10
+ index,
11
+ name: data.name,
12
+ yesOrderBook: data.yesOrderBook,
13
+ noOrderBook: data.noOrderBook,
14
+ yesFillLog: data.yesFillLog,
15
+ noFillLog: data.noFillLog,
16
+ vault: data.vault,
17
+ status: (0, types_1.fromAnchorMarketStatus)(data.status),
18
+ winningSide: (0, types_1.fromAnchorOrderSide)(data.winningSide),
19
+ resolvingState: (0, types_1.fromAnchorResolvingState)(data.resolvingState),
20
+ sharesOutstanding: data.sharesOutstanding,
21
+ totalVolume: data.totalVolume,
22
+ };
23
+ }
24
+ /** @internal */
25
+ function extractLegs(marketType) {
26
+ if (marketType.regular) {
27
+ const data = marketType.regular;
28
+ // Anchor may serialize as array, object with "0" key, or direct object
29
+ let legData;
30
+ if (Array.isArray(data)) {
31
+ legData = data[0];
32
+ }
33
+ else if (data["0"]) {
34
+ legData = data["0"];
35
+ }
36
+ else if (data.name !== undefined) {
37
+ legData = data;
38
+ }
39
+ else {
40
+ throw new Error("Cannot parse regular market data");
41
+ }
42
+ return { label: "regular", legs: [parseMarketData(legData, 0)] };
43
+ }
44
+ if (marketType.multiLeg) {
45
+ const multiLegData = marketType.multiLeg;
46
+ const legsArray = Array.isArray(multiLegData)
47
+ ? multiLegData
48
+ : multiLegData["0"] ?? [];
49
+ return {
50
+ label: "multiLeg",
51
+ legs: legsArray.map((d, i) => parseMarketData(d, i)),
52
+ };
53
+ }
54
+ throw new Error("Unknown market type");
55
+ }
56
+ /** @internal */
57
+ function parseMarketAccount(address, raw) {
58
+ const { label, legs } = extractLegs(raw.marketType);
59
+ return {
60
+ address,
61
+ marketId: BigInt(raw.marketId.toString()),
62
+ creator: raw.creator,
63
+ marketInfo: raw.marketInfo,
64
+ category: raw.category,
65
+ imageUri: raw.imageUri,
66
+ createdAt: new Date(Number(raw.createdAt.toString()) * 1000),
67
+ minOrderSize: raw.minOrderSize,
68
+ eventDeadline: new Date(Number(raw.eventDeadline.toString()) * 1000),
69
+ feeBps: raw.feeBps,
70
+ verified: raw.verified,
71
+ marketType: label,
72
+ legs,
73
+ };
74
+ }
75
+ /** @internal */
76
+ async function fetchMarket(program, address) {
77
+ try {
78
+ const raw = await program.account.market.fetch(address);
79
+ return parseMarketAccount(address, raw);
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ /** @internal */
86
+ async function fetchAllMarkets(program, filters) {
87
+ const anchorFilters = [];
88
+ if (filters?.creator) {
89
+ // creator field is at offset 8 (discriminator) + 8 (market_id) = 16
90
+ anchorFilters.push({
91
+ memcmp: {
92
+ offset: 16,
93
+ bytes: filters.creator.toBase58(),
94
+ },
95
+ });
96
+ }
97
+ const accounts = await program.account.market.all(anchorFilters);
98
+ let results = accounts.map((a) => parseMarketAccount(a.publicKey, a.account));
99
+ if (filters?.verified !== undefined) {
100
+ results = results.filter((m) => m.verified === filters.verified);
101
+ }
102
+ return results;
103
+ }
104
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/accounts/market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { MarketInfoAccount } from "../types";
5
+ /** @internal */
6
+ export declare function parseMarketInfoAccount(address: PublicKey, raw: any): MarketInfoAccount;
7
+ /** @internal */
8
+ export declare function fetchMarketInfo(program: Program<PredMarket>, address: PublicKey): Promise<MarketInfoAccount | null>;
9
+ //# sourceMappingURL=marketinfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketinfo.d.ts","sourceRoot":"","sources":["../../src/accounts/marketinfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAElB,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,iBAAiB,CAWnB;AAED,gBAAgB;AAChB,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAOnC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMarketInfoAccount = parseMarketInfoAccount;
4
+ exports.fetchMarketInfo = fetchMarketInfo;
5
+ const types_1 = require("../types");
6
+ /** @internal */
7
+ function parseMarketInfoAccount(address, raw) {
8
+ return {
9
+ address,
10
+ authority: raw.authority ?? null,
11
+ isLocked: raw.isLocked,
12
+ marketType: (0, types_1.fromAnchorMarketInfoType)(raw.marketType),
13
+ resolverType: (0, types_1.fromAnchorResolverType)(raw.resolverType),
14
+ marketQuestion: raw.marketQuestion,
15
+ description: raw.description,
16
+ rules: raw.rules,
17
+ };
18
+ }
19
+ /** @internal */
20
+ async function fetchMarketInfo(program, address) {
21
+ try {
22
+ const raw = await program.account.marketInfo.fetch(address);
23
+ return parseMarketInfoAccount(address, raw);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ //# sourceMappingURL=marketinfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketinfo.js","sourceRoot":"","sources":["../../src/accounts/marketinfo.ts"],"names":[],"mappings":";;AAUA,wDAcC;AAGD,0CAUC;AAlCD,oCAIkB;AAElB,gBAAgB;AAChB,SAAgB,sBAAsB,CACpC,OAAkB,EAClB,GAAQ;IAER,OAAO;QACL,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;QAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,IAAA,gCAAwB,EAAC,GAAG,CAAC,UAAU,CAAC;QACpD,YAAY,EAAE,IAAA,8BAAsB,EAAC,GAAG,CAAC,YAAY,CAAC;QACtD,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,eAAe,CACnC,OAA4B,EAC5B,OAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { OrderAccount } from "../types";
5
+ /** @internal */
6
+ export declare function parseOrderAccount(address: PublicKey, raw: any): OrderAccount;
7
+ /** @internal */
8
+ export declare function fetchOrder(program: Program<PredMarket>, address: PublicKey): Promise<OrderAccount | null>;
9
+ /** @internal */
10
+ export declare function fetchUserOrders(program: Program<PredMarket>, market: PublicKey, user: PublicKey): Promise<OrderAccount[]>;
11
+ //# sourceMappingURL=order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/accounts/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuC,MAAM,UAAU,CAAC;AAE7E,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,YAAY,CAad;AAED,gBAAgB;AAChB,wBAAsB,UAAU,CAC9B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAO9B;AAED,gBAAgB;AAChB,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBzB"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseOrderAccount = parseOrderAccount;
4
+ exports.fetchOrder = fetchOrder;
5
+ exports.fetchUserOrders = fetchUserOrders;
6
+ const types_1 = require("../types");
7
+ /** @internal */
8
+ function parseOrderAccount(address, raw) {
9
+ return {
10
+ address,
11
+ authority: raw.authority,
12
+ market: raw.market,
13
+ index: raw.index,
14
+ side: (0, types_1.fromAnchorSide)(raw.side),
15
+ price: raw.price,
16
+ orderId: raw.orderId,
17
+ amount: raw.amount,
18
+ seed: raw.seed,
19
+ coveredBy: (0, types_1.fromAnchorCoveredBy)(raw.coveredBy),
20
+ };
21
+ }
22
+ /** @internal */
23
+ async function fetchOrder(program, address) {
24
+ try {
25
+ const raw = await program.account.order.fetch(address);
26
+ return parseOrderAccount(address, raw);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /** @internal */
33
+ async function fetchUserOrders(program, market, user) {
34
+ const accounts = await program.account.order.all([
35
+ {
36
+ memcmp: {
37
+ offset: 8, // after discriminator: authority
38
+ bytes: user.toBase58(),
39
+ },
40
+ },
41
+ {
42
+ memcmp: {
43
+ offset: 8 + 32, // after discriminator + authority: market
44
+ bytes: market.toBase58(),
45
+ },
46
+ },
47
+ ]);
48
+ return accounts.map((a) => parseOrderAccount(a.publicKey, a.account));
49
+ }
50
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/accounts/order.ts"],"names":[],"mappings":";;AAMA,8CAgBC;AAGD,gCAUC;AAGD,0CAoBC;AAvDD,oCAA6E;AAE7E,gBAAgB;AAChB,SAAgB,iBAAiB,CAC/B,OAAkB,EAClB,GAAQ;IAER,OAAO;QACL,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,IAAA,sBAAc,EAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,IAAA,2BAAmB,EAAC,GAAG,CAAC,SAAS,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,UAAU,CAC9B,OAA4B,EAC5B,OAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,eAAe,CACnC,OAA4B,EAC5B,MAAiB,EACjB,IAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,EAAE,iCAAiC;gBAC5C,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;aACvB;SACF;QACD;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,0CAA0C;gBAC1D,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;aACzB;SACF;KACF,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Connection, PublicKey } from "@solana/web3.js";
2
+ import { OrderBookView } from "../types";
3
+ /** @internal */
4
+ export declare function fetchOrderBook(connection: Connection, address: PublicKey): Promise<OrderBookView | null>;
5
+ //# sourceMappingURL=orderbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderbook.d.ts","sourceRoot":"","sources":["../../src/accounts/orderbook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAwB,MAAM,UAAU,CAAC;AAiC/D,gBAAgB;AAChB,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqD/B"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchOrderBook = fetchOrderBook;
4
+ const anchor_1 = require("@coral-xyz/anchor");
5
+ const constants_1 = require("../constants");
6
+ /**
7
+ * @internal
8
+ *
9
+ * Deserializes an OrderBook from raw account bytes.
10
+ * Returns an aggregated L2 view (price levels) without exposing internal structure.
11
+ */
12
+ // Layout offsets (after 8-byte Anchor discriminator)
13
+ const SIDE_OFFSET = 8;
14
+ const INDEX_OFFSET = 9;
15
+ // 6 bytes padding
16
+ const MARKET_OFFSET = 16;
17
+ const ORDER_COUNT_OFFSET = 48;
18
+ const FILL_LOG_OFFSET = 56;
19
+ const TICKS_OFFSET = 88;
20
+ const TICKS_SIZE = constants_1.PRICE_TICKS * 4;
21
+ const ORDERS_OFFSET = TICKS_OFFSET + TICKS_SIZE;
22
+ // Each node in the allocator: Key (8 bytes) + Value (8 bytes) + metadata (16 bytes)
23
+ const NODE_SIZE = 32;
24
+ const KEY_SIZE = 8;
25
+ const VALUE_SIZE = 8;
26
+ // Allocator header size within the tree structure
27
+ const ALLOCATOR_HEADER_SIZE = 16;
28
+ function sideFromByte(b) {
29
+ return b === 0 ? "yes" : "no";
30
+ }
31
+ /** @internal */
32
+ async function fetchOrderBook(connection, address) {
33
+ const accountInfo = await connection.getAccountInfo(address);
34
+ if (!accountInfo)
35
+ return null;
36
+ const data = accountInfo.data;
37
+ const side = sideFromByte(data[SIDE_OFFSET]);
38
+ const orderCount = Number(data.readBigUInt64LE(ORDER_COUNT_OFFSET));
39
+ if (orderCount === 0) {
40
+ return { side, levels: [] };
41
+ }
42
+ // Aggregate by price from the tree structure
43
+ const levelMap = new Map();
44
+ // Read nodes from the tree: scan allocated entries
45
+ const treeData = data.subarray(ORDERS_OFFSET);
46
+ // The tree has a header followed by node data
47
+ // Each node contains: key (OrderKey: price u16, padding u16, inverted_order_id u32) + value (OrderValue: packed u64)
48
+ // We scan all MAX_ORDERS slots and aggregate non-empty entries by price
49
+ for (let i = 0; i < constants_1.MAX_ORDERS; i++) {
50
+ const nodeOffset = ALLOCATOR_HEADER_SIZE + i * NODE_SIZE;
51
+ if (nodeOffset + KEY_SIZE + VALUE_SIZE > treeData.length)
52
+ break;
53
+ // Read the key
54
+ const price = treeData.readUInt16LE(nodeOffset);
55
+ // Read the value (packed: lower 56 bits = quantity, upper 8 bits = type)
56
+ const valueData = treeData.readBigUInt64LE(nodeOffset + KEY_SIZE);
57
+ const quantity = valueData & BigInt("0x00FFFFFFFFFFFFFF");
58
+ // Skip empty/unallocated nodes
59
+ if (price === 0 || quantity === BigInt(0))
60
+ continue;
61
+ const existing = levelMap.get(price);
62
+ if (existing) {
63
+ existing.quantity += quantity;
64
+ existing.count++;
65
+ }
66
+ else {
67
+ levelMap.set(price, { quantity, count: 1 });
68
+ }
69
+ }
70
+ // Sort levels by price descending (best bids first)
71
+ const levels = Array.from(levelMap.entries())
72
+ .sort((a, b) => b[0] - a[0])
73
+ .map(([price, { quantity, count }]) => ({
74
+ price,
75
+ totalQuantity: new anchor_1.BN(quantity.toString()),
76
+ orderCount: count,
77
+ }));
78
+ return { side, levels };
79
+ }
80
+ //# sourceMappingURL=orderbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderbook.js","sourceRoot":"","sources":["../../src/accounts/orderbook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { PositionAccount, Side } from "../types";
5
+ /** @internal */
6
+ export declare function parsePositionAccount(address: PublicKey, raw: any): PositionAccount;
7
+ /** @internal */
8
+ export declare function fetchPosition(program: Program<PredMarket>, market: PublicKey, index: number, user: PublicKey, side: Side): Promise<PositionAccount | null>;
9
+ /** @internal */
10
+ export declare function fetchUserPositions(program: Program<PredMarket>, market: PublicKey, user: PublicKey): Promise<PositionAccount[]>;
11
+ //# sourceMappingURL=position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/accounts/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAgC,MAAM,UAAU,CAAC;AAG/E,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,eAAe,CASjB;AAED,gBAAgB;AAChB,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAcjC;AAED,gBAAgB;AAChB,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePositionAccount = parsePositionAccount;
4
+ exports.fetchPosition = fetchPosition;
5
+ exports.fetchUserPositions = fetchUserPositions;
6
+ const types_1 = require("../types");
7
+ const pda_1 = require("../pda");
8
+ /** @internal */
9
+ function parsePositionAccount(address, raw) {
10
+ return {
11
+ address,
12
+ market: raw.market,
13
+ index: raw.index,
14
+ user: raw.user,
15
+ side: (0, types_1.fromAnchorSide)(raw.side),
16
+ amount: raw.amount,
17
+ };
18
+ }
19
+ /** @internal */
20
+ async function fetchPosition(program, market, index, user, side) {
21
+ const [pda] = (0, pda_1.getPositionPda)(program.programId, market, index, user, (0, types_1.toSideNumber)(side));
22
+ try {
23
+ const raw = await program.account.position.fetch(pda);
24
+ return parsePositionAccount(pda, raw);
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ /** @internal */
31
+ async function fetchUserPositions(program, market, user) {
32
+ const accounts = await program.account.position.all([
33
+ {
34
+ memcmp: {
35
+ offset: 8, // after discriminator: market
36
+ bytes: market.toBase58(),
37
+ },
38
+ },
39
+ {
40
+ memcmp: {
41
+ offset: 8 + 32 + 1, // after discriminator + market + index: user
42
+ bytes: user.toBase58(),
43
+ },
44
+ },
45
+ ]);
46
+ return accounts.map((a) => parsePositionAccount(a.publicKey, a.account));
47
+ }
48
+ //# sourceMappingURL=position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../src/accounts/position.ts"],"names":[],"mappings":";;AAOA,oDAYC;AAGD,sCAoBC;AAGD,gDAoBC;AA9DD,oCAA+E;AAC/E,gCAAwC;AAExC,gBAAgB;AAChB,SAAgB,oBAAoB,CAClC,OAAkB,EAClB,GAAQ;IAER,OAAO;QACL,OAAO;QACP,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,IAAA,sBAAc,EAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,aAAa,CACjC,OAA4B,EAC5B,MAAiB,EACjB,KAAa,EACb,IAAe,EACf,IAAU;IAEV,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAc,EAC1B,OAAO,CAAC,SAAS,EACjB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,IAAA,oBAAY,EAAC,IAAI,CAAC,CACnB,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,kBAAkB,CACtC,OAA4B,EAC5B,MAAiB,EACjB,IAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClD;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,EAAE,8BAA8B;gBACzC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;aACzB;SACF;QACD;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,6CAA6C;gBACjE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;aACvB;SACF;KACF,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { PredMarket } from "../idl/pred_market";
4
+ import { ResolutionProposalAccount, VoteStateAccount } from "../types";
5
+ /** @internal */
6
+ export declare function parseResolutionProposal(address: PublicKey, raw: any): ResolutionProposalAccount;
7
+ /** @internal */
8
+ export declare function fetchResolutionProposal(program: Program<PredMarket>, market: PublicKey, index: number): Promise<ResolutionProposalAccount | null>;
9
+ /** @internal */
10
+ export declare function parseVoteState(address: PublicKey, raw: any): VoteStateAccount;
11
+ /** @internal */
12
+ export declare function fetchVoteState(program: Program<PredMarket>, market: PublicKey, index: number): Promise<VoteStateAccount | null>;
13
+ //# sourceMappingURL=resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution.d.ts","sourceRoot":"","sources":["../../src/accounts/resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAiBlB,gBAAgB;AAChB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,yBAAyB,CAmB3B;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAQ3C;AAaD,gBAAgB;AAChB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,GAAG,GACP,gBAAgB,CAYlB;AAED,gBAAgB;AAChB,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAQlC"}