@suigar/sdk 2.0.0-beta.14 → 2.0.0-beta.16

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 (160) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +22 -8
  3. package/dist/client.d.mts +258 -0
  4. package/dist/client.d.mts.map +1 -0
  5. package/dist/client.mjs +291 -0
  6. package/dist/client.mjs.map +1 -0
  7. package/dist/configs/package.mainnet.mjs +23 -0
  8. package/dist/configs/package.mainnet.mjs.map +1 -0
  9. package/dist/configs/package.mjs +19 -0
  10. package/dist/configs/package.mjs.map +1 -0
  11. package/dist/configs/package.testnet.mjs +23 -0
  12. package/dist/configs/package.testnet.mjs.map +1 -0
  13. package/dist/configs/registry.mainnet.mjs +6 -0
  14. package/dist/configs/registry.mainnet.mjs.map +1 -0
  15. package/dist/configs/registry.mjs +11 -0
  16. package/dist/configs/registry.mjs.map +1 -0
  17. package/dist/configs/registry.testnet.mjs +6 -0
  18. package/dist/configs/registry.testnet.mjs.map +1 -0
  19. package/dist/contracts/coinflip/coinflip.mjs +46 -0
  20. package/dist/contracts/coinflip/coinflip.mjs.map +1 -0
  21. package/dist/contracts/core/core.d.mts +55 -0
  22. package/dist/contracts/core/core.d.mts.map +1 -0
  23. package/dist/contracts/core/core.mjs +22 -0
  24. package/dist/contracts/core/core.mjs.map +1 -0
  25. package/dist/contracts/core/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs +10 -0
  26. package/dist/contracts/core/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs.map +1 -0
  27. package/dist/contracts/core/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs +26 -0
  28. package/dist/contracts/core/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs.map +1 -0
  29. package/dist/contracts/core/float.d.mts +14 -0
  30. package/dist/contracts/core/float.d.mts.map +1 -0
  31. package/dist/contracts/core/float.mjs +15 -0
  32. package/dist/contracts/core/float.mjs.map +1 -0
  33. package/dist/contracts/core/i64.mjs +10 -0
  34. package/dist/contracts/core/i64.mjs.map +1 -0
  35. package/dist/contracts/limbo/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs +15 -0
  36. package/dist/contracts/limbo/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs.map +1 -0
  37. package/dist/contracts/limbo/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs +10 -0
  38. package/dist/contracts/limbo/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs.map +1 -0
  39. package/dist/contracts/limbo/limbo.mjs +53 -0
  40. package/dist/contracts/limbo/limbo.mjs.map +1 -0
  41. package/dist/contracts/plinko/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs +26 -0
  42. package/dist/contracts/plinko/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs.map +1 -0
  43. package/dist/contracts/plinko/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs +15 -0
  44. package/dist/contracts/plinko/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs.map +1 -0
  45. package/dist/contracts/plinko/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs +10 -0
  46. package/dist/contracts/plinko/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs.map +1 -0
  47. package/dist/contracts/plinko/plinko.mjs +59 -0
  48. package/dist/contracts/plinko/plinko.mjs.map +1 -0
  49. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs +10 -0
  50. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs.map +1 -0
  51. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs +10 -0
  52. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs.map +1 -0
  53. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs +26 -0
  54. package/dist/contracts/pvp-coinflip/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs.map +1 -0
  55. package/dist/contracts/pvp-coinflip/pvp_coinflip.d.mts +34 -0
  56. package/dist/contracts/pvp-coinflip/pvp_coinflip.d.mts.map +1 -0
  57. package/dist/contracts/pvp-coinflip/pvp_coinflip.mjs +131 -0
  58. package/dist/contracts/pvp-coinflip/pvp_coinflip.mjs.map +1 -0
  59. package/dist/contracts/range/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs +15 -0
  60. package/dist/contracts/range/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs.map +1 -0
  61. package/dist/contracts/range/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs +10 -0
  62. package/dist/contracts/range/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs.map +1 -0
  63. package/dist/contracts/range/range.mjs +53 -0
  64. package/dist/contracts/range/range.mjs.map +1 -0
  65. package/dist/contracts/utils/index.d.mts +33 -0
  66. package/dist/contracts/utils/index.d.mts.map +1 -0
  67. package/dist/contracts/utils/index.mjs +119 -0
  68. package/dist/contracts/utils/index.mjs.map +1 -0
  69. package/dist/contracts/wheel/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs +26 -0
  70. package/dist/contracts/wheel/deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs.map +1 -0
  71. package/dist/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs +15 -0
  72. package/dist/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs.map +1 -0
  73. package/dist/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs +10 -0
  74. package/dist/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.mjs.map +1 -0
  75. package/dist/contracts/wheel/wheel.mjs +59 -0
  76. package/dist/contracts/wheel/wheel.mjs.map +1 -0
  77. package/dist/games.d.mts +3 -0
  78. package/dist/games.mjs +1 -0
  79. package/dist/helpers/config.mjs +51 -0
  80. package/dist/helpers/config.mjs.map +1 -0
  81. package/dist/helpers/game-settings.mjs +19 -0
  82. package/dist/helpers/game-settings.mjs.map +1 -0
  83. package/dist/helpers/metadata.mjs +42 -0
  84. package/dist/helpers/metadata.mjs.map +1 -0
  85. package/dist/index.d.mts +2 -0
  86. package/dist/index.mjs +2 -0
  87. package/dist/transactions/coinflip.mjs +27 -0
  88. package/dist/transactions/coinflip.mjs.map +1 -0
  89. package/dist/transactions/limbo.mjs +31 -0
  90. package/dist/transactions/limbo.mjs.map +1 -0
  91. package/dist/transactions/plinko.mjs +29 -0
  92. package/dist/transactions/plinko.mjs.map +1 -0
  93. package/dist/transactions/pvp-coinflip.mjs +70 -0
  94. package/dist/transactions/pvp-coinflip.mjs.map +1 -0
  95. package/dist/transactions/range.mjs +33 -0
  96. package/dist/transactions/range.mjs.map +1 -0
  97. package/dist/transactions/shared.mjs +49 -0
  98. package/dist/transactions/shared.mjs.map +1 -0
  99. package/dist/transactions/wheel.mjs +29 -0
  100. package/dist/transactions/wheel.mjs.map +1 -0
  101. package/dist/ttl-cache.mjs +60 -0
  102. package/dist/ttl-cache.mjs.map +1 -0
  103. package/dist/types/bet-metadata.type.d.mts +7 -0
  104. package/dist/types/bet-metadata.type.d.mts.map +1 -0
  105. package/dist/types/build-game-transaction-options.type.d.mts +9 -0
  106. package/dist/types/build-game-transaction-options.type.d.mts.map +1 -0
  107. package/dist/types/game-details.type.d.mts +73 -0
  108. package/dist/types/game-details.type.d.mts.map +1 -0
  109. package/dist/types/game-details.type.mjs +59 -0
  110. package/dist/types/game-details.type.mjs.map +1 -0
  111. package/dist/types/game-settings.type.d.mts +201 -0
  112. package/dist/types/game-settings.type.d.mts.map +1 -0
  113. package/dist/types/game-settings.type.mjs +37 -0
  114. package/dist/types/game-settings.type.mjs.map +1 -0
  115. package/dist/types/game.type.d.mts +15 -0
  116. package/dist/types/game.type.d.mts.map +1 -0
  117. package/dist/types/game.type.mjs +19 -0
  118. package/dist/types/game.type.mjs.map +1 -0
  119. package/dist/types/index.d.mts +7 -0
  120. package/dist/types/move-float.type.d.mts +7 -0
  121. package/dist/types/move-float.type.d.mts.map +1 -0
  122. package/dist/types/network.type.d.mts +1 -0
  123. package/dist/types/network.type.mjs +6 -0
  124. package/dist/types/network.type.mjs.map +1 -0
  125. package/dist/types/suigar-config.type.d.mts +33 -0
  126. package/dist/types/suigar-config.type.d.mts.map +1 -0
  127. package/dist/types/transaction-options.type.d.mts +63 -0
  128. package/dist/types/transaction-options.type.d.mts.map +1 -0
  129. package/dist/utils/constants.d.mts +8 -0
  130. package/dist/utils/constants.d.mts.map +1 -0
  131. package/dist/utils/constants.mjs +10 -0
  132. package/dist/utils/constants.mjs.map +1 -0
  133. package/dist/utils/numeric.d.mts +86 -0
  134. package/dist/utils/numeric.d.mts.map +1 -0
  135. package/dist/utils/numeric.mjs +148 -0
  136. package/dist/utils/numeric.mjs.map +1 -0
  137. package/dist/utils/parser.d.mts +54 -0
  138. package/dist/utils/parser.d.mts.map +1 -0
  139. package/dist/utils/parser.mjs +94 -0
  140. package/dist/utils/parser.mjs.map +1 -0
  141. package/dist/utils.d.mts +4 -0
  142. package/dist/utils.mjs +4 -0
  143. package/package.json +21 -22
  144. package/dist/chunk-7N55D2TV.js +0 -343
  145. package/dist/games-Da2uZvVJ.d.cts +0 -98
  146. package/dist/games-Da2uZvVJ.d.ts +0 -98
  147. package/dist/games.cjs +0 -2
  148. package/dist/games.d.cts +0 -2
  149. package/dist/games.d.ts +0 -2
  150. package/dist/games.js +0 -1
  151. package/dist/index-3P_LBbDM.d.cts +0 -25
  152. package/dist/index-3P_LBbDM.d.ts +0 -25
  153. package/dist/index.cjs +0 -1692
  154. package/dist/index.d.cts +0 -467
  155. package/dist/index.d.ts +0 -467
  156. package/dist/index.js +0 -1470
  157. package/dist/utils.cjs +0 -243
  158. package/dist/utils.d.cts +0 -180
  159. package/dist/utils.d.ts +0 -180
  160. package/dist/utils.js +0 -1
@@ -0,0 +1,15 @@
1
+ import { MoveStruct } from "../../../utils/index.mjs";
2
+ import { I64 } from "./i64.mjs";
3
+ import { bcs } from "@mysten/sui/bcs";
4
+ const Float = new MoveStruct({
5
+ name: `0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc::float::Float`,
6
+ fields: {
7
+ is_negative: bcs.bool(),
8
+ exp: I64,
9
+ mant: bcs.u64()
10
+ }
11
+ });
12
+ //#endregion
13
+ export { Float };
14
+
15
+ //# sourceMappingURL=float.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float.mjs","names":["i64.I64"],"sources":["../../../../../src/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport { bcs } from '@mysten/sui/bcs';\nimport { MoveStruct } from '../../../utils/index.js';\nimport * as i64 from './i64.js';\n\nconst $moduleName =\n\t'0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc::float';\nexport const Float = new MoveStruct({\n\tname: `${$moduleName}::Float`,\n\tfields: {\n\t\tis_negative: bcs.bool(),\n\t\texp: i64.I64,\n\t\tmant: bcs.u64(),\n\t},\n});\n"],"mappings":";;;AASA,MAAa,QAAQ,IAAI,WAAW;CACnC,MAAM;CACN,QAAQ;EACP,aAAa,IAAI,MAAM;EACvB,KAAKA;EACL,MAAM,IAAI,KAAK;EACf;CACD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { MoveStruct } from "../../../utils/index.mjs";
2
+ import { bcs } from "@mysten/sui/bcs";
3
+ const I64 = new MoveStruct({
4
+ name: `0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc::i64::I64`,
5
+ fields: { bits: bcs.u64() }
6
+ });
7
+ //#endregion
8
+ export { I64 };
9
+
10
+ //# sourceMappingURL=i64.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i64.mjs","names":[],"sources":["../../../../../src/contracts/wheel/deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/i64.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport { bcs } from '@mysten/sui/bcs';\nimport { MoveStruct } from '../../../utils/index.js';\n\nconst $moduleName =\n\t'0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc::i64';\nexport const I64 = new MoveStruct({\n\tname: `${$moduleName}::I64`,\n\tfields: {\n\t\tbits: bcs.u64(),\n\t},\n});\n"],"mappings":";;AAQA,MAAa,MAAM,IAAI,WAAW;CACjC,MAAM;CACN,QAAQ,EACP,MAAM,IAAI,KAAK,EACf;CACD,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { MoveStruct, normalizeMoveArguments } from "../utils/index.mjs";
2
+ import { VecMap } from "./deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.mjs";
3
+ import { Float } from "./deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.mjs";
4
+ import { bcs } from "@mysten/sui/bcs";
5
+ //#region src/contracts/wheel/wheel.ts
6
+ /**************************************************************
7
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
8
+ **************************************************************/
9
+ const $moduleName = "0x0997852ded7e13301c42317004bc49704a893aa82997c5706cebee59053a31b7::wheel";
10
+ const WheelSettingsKey = new MoveStruct({
11
+ name: `${$moduleName}::WheelSettingsKey`,
12
+ fields: { dummy_field: bcs.bool() }
13
+ });
14
+ const WheelConfig = new MoveStruct({
15
+ name: `${$moduleName}::WheelConfig`,
16
+ fields: {
17
+ num_cases: bcs.u8(),
18
+ multipliers: bcs.vector(Float),
19
+ min_stake: bcs.u64(),
20
+ max_stake: bcs.u64(),
21
+ is_playable: bcs.bool()
22
+ }
23
+ });
24
+ const Parameters = new MoveStruct({
25
+ name: `${$moduleName}::Parameters<phantom T0>`,
26
+ fields: {
27
+ id: bcs.Address,
28
+ min_stake: bcs.u64(),
29
+ max_stake: bcs.u64(),
30
+ max_number_of_spins: bcs.u64(),
31
+ configs: VecMap(bcs.u8(), WheelConfig)
32
+ }
33
+ });
34
+ function play(options) {
35
+ const packageAddress = options.package ?? "0x0997852ded7e13301c42317004bc49704a893aa82997c5706cebee59053a31b7";
36
+ const argumentsTypes = [
37
+ null,
38
+ "u64",
39
+ null,
40
+ "u64",
41
+ "u8",
42
+ "vector<0x1::string::String>",
43
+ "vector<vector<u8>>",
44
+ null,
45
+ "0x2::clock::Clock",
46
+ "0x2::random::Random"
47
+ ];
48
+ return (tx) => tx.moveCall({
49
+ package: packageAddress,
50
+ module: "wheel",
51
+ function: "play",
52
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes),
53
+ typeArguments: options.typeArguments
54
+ });
55
+ }
56
+ //#endregion
57
+ export { Parameters, WheelSettingsKey, play };
58
+
59
+ //# sourceMappingURL=wheel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wheel.mjs","names":["float.Float","vec_map.VecMap"],"sources":["../../../src/contracts/wheel/wheel.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport { bcs } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tMoveStruct,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n} from '../utils/index.js';\nimport * as vec_map from './deps/0x0000000000000000000000000000000000000000000000000000000000000002/vec_map.js';\nimport * as float from './deps/0xf391858d2a08473e8d4defcc8df89976bd7b123d3865c6b9341b237f7853dbbc/float.js';\n\nconst $moduleName =\n\t'0x0997852ded7e13301c42317004bc49704a893aa82997c5706cebee59053a31b7::wheel';\nexport const WheelSettingsKey = new MoveStruct({\n\tname: `${$moduleName}::WheelSettingsKey`,\n\tfields: {\n\t\tdummy_field: bcs.bool(),\n\t},\n});\nexport const WheelConfig = new MoveStruct({\n\tname: `${$moduleName}::WheelConfig`,\n\tfields: {\n\t\tnum_cases: bcs.u8(),\n\t\tmultipliers: bcs.vector(float.Float),\n\t\tmin_stake: bcs.u64(),\n\t\tmax_stake: bcs.u64(),\n\t\tis_playable: bcs.bool(),\n\t},\n});\nexport const Parameters = new MoveStruct({\n\tname: `${$moduleName}::Parameters<phantom T0>`,\n\tfields: {\n\t\tid: bcs.Address,\n\t\tmin_stake: bcs.u64(),\n\t\tmax_stake: bcs.u64(),\n\t\tmax_number_of_spins: bcs.u64(),\n\t\tconfigs: vec_map.VecMap(bcs.u8(), WheelConfig),\n\t},\n});\nexport interface PlayOptions {\n\tpackage?: string;\n\targuments: [\n\t\tRawTransactionArgument<string>,\n\t\tRawTransactionArgument<number | bigint>,\n\t\tRawTransactionArgument<string>,\n\t\tRawTransactionArgument<number | bigint>,\n\t\tRawTransactionArgument<number>,\n\t\tRawTransactionArgument<Array<string>>,\n\t\tRawTransactionArgument<Array<Array<number>>>,\n\t\tRawTransactionArgument<string>,\n\t];\n\ttypeArguments: [string];\n}\nexport function play(options: PlayOptions) {\n\tconst packageAddress =\n\t\toptions.package ??\n\t\t'0x0997852ded7e13301c42317004bc49704a893aa82997c5706cebee59053a31b7';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\t'u64',\n\t\tnull,\n\t\t'u64',\n\t\t'u8',\n\t\t'vector<0x1::string::String>',\n\t\t'vector<vector<u8>>',\n\t\tnull,\n\t\t'0x2::clock::Clock',\n\t\t'0x2::random::Random',\n\t] satisfies (string | null)[];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'wheel',\n\t\t\tfunction: 'play',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\n"],"mappings":";;;;;;;;AAaA,MAAM,cACL;AACD,MAAa,mBAAmB,IAAI,WAAW;CAC9C,MAAM,GAAG,YAAY;CACrB,QAAQ,EACP,aAAa,IAAI,MAAM,EACvB;CACD,CAAC;AACF,MAAa,cAAc,IAAI,WAAW;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,WAAW,IAAI,IAAI;EACnB,aAAa,IAAI,OAAOA,MAAY;EACpC,WAAW,IAAI,KAAK;EACpB,WAAW,IAAI,KAAK;EACpB,aAAa,IAAI,MAAM;EACvB;CACD,CAAC;AACF,MAAa,aAAa,IAAI,WAAW;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,IAAI,IAAI;EACR,WAAW,IAAI,KAAK;EACpB,WAAW,IAAI,KAAK;EACpB,qBAAqB,IAAI,KAAK;EAC9B,SAASC,OAAe,IAAI,IAAI,EAAE,YAAY;EAC9C;CACD,CAAC;AAeF,SAAgB,KAAK,SAAsB;CAC1C,MAAM,iBACL,QAAQ,WACR;CACD,MAAM,iBAAiB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,QAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,eAAe;EACpE,eAAe,QAAQ;EACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CoinSide } from "./types/game.type.mjs";
2
+ import { BuildCancelPvPCoinflipTransactionOptions, BuildCoinflipTransactionOptions, BuildCreatePvPCoinflipTransactionOptions, BuildJoinPvPCoinflipTransactionOptions, BuildLimboTransactionOptions, BuildPlinkoTransactionOptions, BuildRangeTransactionOptions, BuildWheelTransactionOptions, PvPCoinflipAction } from "./types/transaction-options.type.mjs";
3
+ export { type BuildCancelPvPCoinflipTransactionOptions, type BuildCoinflipTransactionOptions, type BuildCreatePvPCoinflipTransactionOptions, type BuildJoinPvPCoinflipTransactionOptions, type BuildLimboTransactionOptions, type BuildPlinkoTransactionOptions, type BuildRangeTransactionOptions, type BuildWheelTransactionOptions, type CoinSide, type PvPCoinflipAction };
package/dist/games.mjs ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,51 @@
1
+ import { COIN_TYPES, PACKAGE_IDS, PRICE_INFO_OBJECT_IDS } from "../configs/package.mjs";
2
+ import { REGISTRY_IDS } from "../configs/registry.mjs";
3
+ import { normalizeStructTag } from "@mysten/sui/utils";
4
+ //#region src/helpers/config.ts
5
+ const DEFAULT_CACHE_TTL_MS = 1800 * 1e3;
6
+ function resolveSuigarConfig(network) {
7
+ const packageIds = PACKAGE_IDS[network];
8
+ const registryIds = REGISTRY_IDS[network];
9
+ const coinTypes = COIN_TYPES[network];
10
+ const priceInfoObjectIds = PRICE_INFO_OBJECT_IDS[network];
11
+ return {
12
+ packageIds: { ...packageIds },
13
+ registryIds: { ...registryIds },
14
+ coinTypes: {
15
+ sui: normalizeStructTag(coinTypes.sui),
16
+ usdc: normalizeStructTag(coinTypes.usdc)
17
+ },
18
+ priceInfoObjectIds: {
19
+ sui: priceInfoObjectIds.sui,
20
+ usdc: priceInfoObjectIds.usdc
21
+ }
22
+ };
23
+ }
24
+ function assertConfiguredBetGame(config, game) {
25
+ if (!resolveGamePackageId(config, game)) throw new Error(`Missing required config for ${game}: packageIds.${game}`);
26
+ }
27
+ function resolveGamePackageId(config, game) {
28
+ switch (game) {
29
+ case "coinflip": return config.packageIds.coinflip;
30
+ case "limbo": return config.packageIds.limbo;
31
+ case "plinko": return config.packageIds.plinko;
32
+ case "pvp-coinflip": return config.packageIds.pvpCoinflip;
33
+ case "range": return config.packageIds.range;
34
+ case "wheel": return config.packageIds.wheel;
35
+ }
36
+ }
37
+ function resolvePriceInfoObjectId(config, coinType) {
38
+ const supportedCoin = resolveSupportedCoin(config, normalizeStructTag(coinType));
39
+ const objectId = config.priceInfoObjectIds[supportedCoin];
40
+ if (!objectId) throw new Error(`Missing price info object configuration for coin type ${coinType}`);
41
+ return objectId;
42
+ }
43
+ function resolveSupportedCoin(config, coinType) {
44
+ const [supportedCoin] = Object.entries(config.coinTypes).find(([_, value]) => value === coinType) ?? [];
45
+ if (!supportedCoin) throw new RangeError(`Unsupported coin type ${coinType}. Supported coin types: ${Object.values(config.coinTypes).join(", ")}`);
46
+ return supportedCoin;
47
+ }
48
+ //#endregion
49
+ export { DEFAULT_CACHE_TTL_MS, assertConfiguredBetGame, resolveGamePackageId, resolvePriceInfoObjectId, resolveSuigarConfig };
50
+
51
+ //# sourceMappingURL=config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../../src/helpers/config.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { normalizeStructTag } from '@mysten/sui/utils';\nimport {\n\tCOIN_TYPES,\n\tPACKAGE_IDS,\n\tPRICE_INFO_OBJECT_IDS,\n\tREGISTRY_IDS,\n} from '../configs/index.js';\nimport type { Game, SuigarCoin, SuigarConfig, SuiNetwork } from '../types';\n\nexport const DEFAULT_CACHE_TTL_MS = 30 * 60 * 1000;\n\nexport function resolveSuigarConfig(network: SuiNetwork): SuigarConfig {\n\tconst packageIds = PACKAGE_IDS[network];\n\tconst registryIds = REGISTRY_IDS[network];\n\tconst coinTypes = COIN_TYPES[network];\n\tconst priceInfoObjectIds = PRICE_INFO_OBJECT_IDS[network];\n\n\treturn {\n\t\tpackageIds: { ...packageIds },\n\t\tregistryIds: { ...registryIds },\n\t\tcoinTypes: {\n\t\t\tsui: normalizeStructTag(coinTypes.sui),\n\t\t\tusdc: normalizeStructTag(coinTypes.usdc),\n\t\t},\n\t\tpriceInfoObjectIds: {\n\t\t\tsui: priceInfoObjectIds.sui,\n\t\t\tusdc: priceInfoObjectIds.usdc,\n\t\t},\n\t};\n}\n\nexport function assertConfiguredBetGame(\n\tconfig: SuigarConfig,\n\tgame: Game,\n): void {\n\tif (!resolveGamePackageId(config, game)) {\n\t\tthrow new Error(`Missing required config for ${game}: packageIds.${game}`);\n\t}\n}\n\nexport function resolveGamePackageId(config: SuigarConfig, game: Game): string {\n\tswitch (game) {\n\t\tcase 'coinflip':\n\t\t\treturn config.packageIds.coinflip;\n\t\tcase 'limbo':\n\t\t\treturn config.packageIds.limbo;\n\t\tcase 'plinko':\n\t\t\treturn config.packageIds.plinko;\n\t\tcase 'pvp-coinflip':\n\t\t\treturn config.packageIds.pvpCoinflip;\n\t\tcase 'range':\n\t\t\treturn config.packageIds.range;\n\t\tcase 'wheel':\n\t\t\treturn config.packageIds.wheel;\n\t}\n}\n\nexport function resolvePriceInfoObjectId(\n\tconfig: SuigarConfig,\n\tcoinType: string,\n): string {\n\tconst normalizedCoinType = normalizeStructTag(coinType);\n\tconst supportedCoin = resolveSupportedCoin(config, normalizedCoinType);\n\tconst objectId = config.priceInfoObjectIds[supportedCoin];\n\n\tif (!objectId) {\n\t\tthrow new Error(\n\t\t\t`Missing price info object configuration for coin type ${coinType}`,\n\t\t);\n\t}\n\n\treturn objectId;\n}\n\nfunction resolveSupportedCoin(\n\tconfig: SuigarConfig,\n\tcoinType: string,\n): SuigarCoin {\n\tconst [supportedCoin] =\n\t\tObject.entries(config.coinTypes).find(([_, value]) => value === coinType) ??\n\t\t[];\n\n\tif (!supportedCoin) {\n\t\tthrow new RangeError(\n\t\t\t`Unsupported coin type ${coinType}. Supported coin types: ${Object.values(\n\t\t\t\tconfig.coinTypes,\n\t\t\t).join(', ')}`,\n\t\t);\n\t}\n\n\treturn supportedCoin as SuigarCoin;\n}\n"],"mappings":";;;;AAYA,MAAa,uBAAuB,OAAU;AAE9C,SAAgB,oBAAoB,SAAmC;CACtE,MAAM,aAAa,YAAY;CAC/B,MAAM,cAAc,aAAa;CACjC,MAAM,YAAY,WAAW;CAC7B,MAAM,qBAAqB,sBAAsB;CAEjD,OAAO;EACN,YAAY,EAAE,GAAG,YAAY;EAC7B,aAAa,EAAE,GAAG,aAAa;EAC/B,WAAW;GACV,KAAK,mBAAmB,UAAU,IAAI;GACtC,MAAM,mBAAmB,UAAU,KAAK;GACxC;EACD,oBAAoB;GACnB,KAAK,mBAAmB;GACxB,MAAM,mBAAmB;GACzB;EACD;;AAGF,SAAgB,wBACf,QACA,MACO;CACP,IAAI,CAAC,qBAAqB,QAAQ,KAAK,EACtC,MAAM,IAAI,MAAM,+BAA+B,KAAK,eAAe,OAAO;;AAI5E,SAAgB,qBAAqB,QAAsB,MAAoB;CAC9E,QAAQ,MAAR;EACC,KAAK,YACJ,OAAO,OAAO,WAAW;EAC1B,KAAK,SACJ,OAAO,OAAO,WAAW;EAC1B,KAAK,UACJ,OAAO,OAAO,WAAW;EAC1B,KAAK,gBACJ,OAAO,OAAO,WAAW;EAC1B,KAAK,SACJ,OAAO,OAAO,WAAW;EAC1B,KAAK,SACJ,OAAO,OAAO,WAAW;;;AAI5B,SAAgB,yBACf,QACA,UACS;CAET,MAAM,gBAAgB,qBAAqB,QADhB,mBAAmB,SACuB,CAAC;CACtE,MAAM,WAAW,OAAO,mBAAmB;CAE3C,IAAI,CAAC,UACJ,MAAM,IAAI,MACT,yDAAyD,WACzD;CAGF,OAAO;;AAGR,SAAS,qBACR,QACA,UACa;CACb,MAAM,CAAC,iBACN,OAAO,QAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,UAAU,SAAS,IACzE,EAAE;CAEH,IAAI,CAAC,eACJ,MAAM,IAAI,WACT,yBAAyB,SAAS,0BAA0B,OAAO,OAClE,OAAO,UACP,CAAC,KAAK,KAAK,GACZ;CAGF,OAAO"}
@@ -0,0 +1,19 @@
1
+ import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
2
+ //#region src/helpers/game-settings.ts
3
+ function replaceStructTagAddress(structName, address) {
4
+ return normalizeStructTag({
5
+ ...parseStructTag(structName),
6
+ address
7
+ });
8
+ }
9
+ function resolveGameSettingsKeyType(structName, packageId) {
10
+ return replaceStructTagAddress(structName, packageId);
11
+ }
12
+ function resolveCoinTypeNameForTypeNameKey(structName) {
13
+ const { address } = parseStructTag(structName);
14
+ return replaceStructTagAddress(structName, normalizeSuiAddress(address).replace(/^0x/, ""));
15
+ }
16
+ //#endregion
17
+ export { resolveCoinTypeNameForTypeNameKey, resolveGameSettingsKeyType };
18
+
19
+ //# sourceMappingURL=game-settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-settings.mjs","names":[],"sources":["../../src/helpers/game-settings.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tnormalizeStructTag,\n\tnormalizeSuiAddress,\n\tparseStructTag,\n} from '@mysten/sui/utils';\n\nfunction replaceStructTagAddress(structName: string, address: string): string {\n\treturn normalizeStructTag({\n\t\t...parseStructTag(structName),\n\t\taddress,\n\t});\n}\n\nexport function resolveGameSettingsKeyType(\n\tstructName: string,\n\tpackageId: string,\n): string {\n\treturn replaceStructTagAddress(structName, packageId);\n}\n\nexport function resolveCoinTypeNameForTypeNameKey(structName: string): string {\n\tconst { address } = parseStructTag(structName);\n\n\treturn replaceStructTagAddress(\n\t\tstructName,\n\t\tnormalizeSuiAddress(address).replace(/^0x/, ''),\n\t);\n}\n"],"mappings":";;AASA,SAAS,wBAAwB,YAAoB,SAAyB;CAC7E,OAAO,mBAAmB;EACzB,GAAG,eAAe,WAAW;EAC7B;EACA,CAAC;;AAGH,SAAgB,2BACf,YACA,WACS;CACT,OAAO,wBAAwB,YAAY,UAAU;;AAGtD,SAAgB,kCAAkC,YAA4B;CAC7E,MAAM,EAAE,YAAY,eAAe,WAAW;CAE9C,OAAO,wBACN,YACA,oBAAoB,QAAQ,CAAC,QAAQ,OAAO,GAAG,CAC/C"}
@@ -0,0 +1,42 @@
1
+ import { fromHex } from "@mysten/sui/utils";
2
+ //#region src/helpers/metadata.ts
3
+ const PARTNER_METADATA_KEY = "partner";
4
+ const RESERVED_METADATA_KEYS = new Set([PARTNER_METADATA_KEY, "referrer"]);
5
+ const textEncoder = new TextEncoder();
6
+ function encodeString(value) {
7
+ try {
8
+ return fromHex(value);
9
+ } catch {
10
+ return textEncoder.encode(value);
11
+ }
12
+ }
13
+ function encodeMetadataValue(value) {
14
+ if (value instanceof Uint8Array) return Array.from(value);
15
+ if (Array.isArray(value)) return value;
16
+ return Array.from(encodeString(String(value)));
17
+ }
18
+ function encodeBetMetadata(metadata, partner) {
19
+ const keys = [];
20
+ const values = [];
21
+ for (const [key, value] of Object.entries(metadata ?? {})) {
22
+ if (RESERVED_METADATA_KEYS.has(key)) {
23
+ console.warn(`Metadata key "${key}" is reserved and will be ignored when parsing metadata.`);
24
+ continue;
25
+ }
26
+ if (value == null) continue;
27
+ keys.push(key);
28
+ values.push(encodeMetadataValue(value));
29
+ }
30
+ if (partner?.trim()) {
31
+ keys.unshift(PARTNER_METADATA_KEY);
32
+ values.unshift(encodeMetadataValue(partner));
33
+ }
34
+ return {
35
+ keys,
36
+ values
37
+ };
38
+ }
39
+ //#endregion
40
+ export { encodeBetMetadata };
41
+
42
+ //# sourceMappingURL=metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.mjs","names":[],"sources":["../../src/helpers/metadata.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromHex } from '@mysten/sui/utils';\nimport type {\n\tBetMetadataInput,\n\tBetMetadataValue,\n\tEncodedBetMetadata,\n} from '../types';\n\nconst PARTNER_METADATA_KEY = 'partner';\n\nconst RESERVED_METADATA_KEYS = new Set([PARTNER_METADATA_KEY, 'referrer']);\nconst textEncoder = new TextEncoder();\n\nfunction encodeString(value: string) {\n\ttry {\n\t\treturn fromHex(value);\n\t} catch {\n\t\treturn textEncoder.encode(value);\n\t}\n}\n\nfunction encodeMetadataValue(value: BetMetadataValue) {\n\tif (value instanceof Uint8Array) {\n\t\treturn Array.from(value);\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\treturn Array.from(encodeString(String(value)));\n}\n\nexport function encodeBetMetadata(\n\tmetadata?: BetMetadataInput,\n\tpartner?: string,\n): EncodedBetMetadata {\n\tconst keys: string[] = [];\n\tconst values: number[][] = [];\n\n\tfor (const [key, value] of Object.entries(metadata ?? {})) {\n\t\tif (RESERVED_METADATA_KEYS.has(key)) {\n\t\t\tconsole.warn(\n\t\t\t\t`Metadata key \"${key}\" is reserved and will be ignored when parsing metadata.`,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (value == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tkeys.push(key);\n\t\tvalues.push(encodeMetadataValue(value));\n\t}\n\n\tif (partner?.trim()) {\n\t\tkeys.unshift(PARTNER_METADATA_KEY);\n\t\tvalues.unshift(encodeMetadataValue(partner));\n\t}\n\n\treturn {\n\t\tkeys,\n\t\tvalues,\n\t};\n}\n"],"mappings":";;AAUA,MAAM,uBAAuB;AAE7B,MAAM,yBAAyB,IAAI,IAAI,CAAC,sBAAsB,WAAW,CAAC;AAC1E,MAAM,cAAc,IAAI,aAAa;AAErC,SAAS,aAAa,OAAe;CACpC,IAAI;EACH,OAAO,QAAQ,MAAM;SACd;EACP,OAAO,YAAY,OAAO,MAAM;;;AAIlC,SAAS,oBAAoB,OAAyB;CACrD,IAAI,iBAAiB,YACpB,OAAO,MAAM,KAAK,MAAM;CAGzB,IAAI,MAAM,QAAQ,MAAM,EACvB,OAAO;CAGR,OAAO,MAAM,KAAK,aAAa,OAAO,MAAM,CAAC,CAAC;;AAG/C,SAAgB,kBACf,UACA,SACqB;CACrB,MAAM,OAAiB,EAAE;CACzB,MAAM,SAAqB,EAAE;CAE7B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,EAAE,CAAC,EAAE;EAC1D,IAAI,uBAAuB,IAAI,IAAI,EAAE;GACpC,QAAQ,KACP,iBAAiB,IAAI,0DACrB;GACD;;EAGD,IAAI,SAAS,MACZ;EAGD,KAAK,KAAK,IAAI;EACd,OAAO,KAAK,oBAAoB,MAAM,CAAC;;CAGxC,IAAI,SAAS,MAAM,EAAE;EACpB,KAAK,QAAQ,qBAAqB;EAClC,OAAO,QAAQ,oBAAoB,QAAQ,CAAC;;CAG7C,OAAO;EACN;EACA;EACA"}
@@ -0,0 +1,2 @@
1
+ import { SuigarClient, suigar } from "./client.mjs";
2
+ export { SuigarClient, suigar };
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import { SuigarClient, suigar } from "./client.mjs";
2
+ export { SuigarClient, suigar };
@@ -0,0 +1,27 @@
1
+ import { play } from "../contracts/coinflip/coinflip.mjs";
2
+ import { buildSharedStandardGameBetTransaction } from "./shared.mjs";
3
+ //#region src/transactions/coinflip.ts
4
+ function buildCoinflipTransaction(options) {
5
+ return buildSharedStandardGameBetTransaction({
6
+ ...options,
7
+ game: "coinflip",
8
+ buildRewardCoin: ({ tx, config, coinType, stake, betCount, metadata, priceInfoObjectId, betCoin }) => play({
9
+ package: config.packageIds.coinflip,
10
+ typeArguments: [coinType],
11
+ arguments: [
12
+ config.packageIds.sweetHouse,
13
+ stake,
14
+ betCoin,
15
+ betCount,
16
+ options.side === "tails",
17
+ metadata.keys,
18
+ metadata.values,
19
+ priceInfoObjectId
20
+ ]
21
+ })(tx)
22
+ });
23
+ }
24
+ //#endregion
25
+ export { buildCoinflipTransaction };
26
+
27
+ //# sourceMappingURL=coinflip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coinflip.mjs","names":[],"sources":["../../src/transactions/coinflip.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { play } from '../contracts/coinflip/coinflip.js';\nimport type { BuildCoinflipTransactionOptions, WithPartner } from '../types';\nimport { buildSharedStandardGameBetTransaction } from './shared.js';\n\nexport function buildCoinflipTransaction(\n\toptions: WithPartner<BuildCoinflipTransactionOptions>,\n): Transaction {\n\treturn buildSharedStandardGameBetTransaction({\n\t\t...options,\n\t\tgame: 'coinflip',\n\t\tbuildRewardCoin: ({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tcoinType,\n\t\t\tstake,\n\t\t\tbetCount,\n\t\t\tmetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t}) =>\n\t\t\tplay({\n\t\t\t\tpackage: config.packageIds.coinflip,\n\t\t\t\ttypeArguments: [coinType],\n\t\t\t\targuments: [\n\t\t\t\t\tconfig.packageIds.sweetHouse,\n\t\t\t\t\tstake,\n\t\t\t\t\tbetCoin,\n\t\t\t\t\tbetCount,\n\t\t\t\t\toptions.side === 'tails',\n\t\t\t\t\tmetadata.keys,\n\t\t\t\t\tmetadata.values,\n\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t],\n\t\t\t})(tx),\n\t});\n}\n"],"mappings":";;;AAQA,SAAgB,yBACf,SACc;CACd,OAAO,sCAAsC;EAC5C,GAAG;EACH,MAAM;EACN,kBAAkB,EACjB,IACA,QACA,UACA,OACA,UACA,UACA,mBACA,cAEA,KAAK;GACJ,SAAS,OAAO,WAAW;GAC3B,eAAe,CAAC,SAAS;GACzB,WAAW;IACV,OAAO,WAAW;IAClB;IACA;IACA;IACA,QAAQ,SAAS;IACjB,SAAS;IACT,SAAS;IACT;IACA;GACD,CAAC,CAAC,GAAG;EACP,CAAC"}
@@ -0,0 +1,31 @@
1
+ import "../utils/constants.mjs";
2
+ import { buildSharedStandardGameBetTransaction } from "./shared.mjs";
3
+ import { play } from "../contracts/limbo/limbo.mjs";
4
+ //#region src/transactions/limbo.ts
5
+ function buildLimboTransaction(options) {
6
+ const scale = options.scale ?? 100;
7
+ const numerator = Math.round(options.targetMultiplier * scale);
8
+ return buildSharedStandardGameBetTransaction({
9
+ ...options,
10
+ game: "limbo",
11
+ buildRewardCoin: ({ tx, config, coinType, stake, betCount, metadata, priceInfoObjectId, betCoin }) => play({
12
+ package: config.packageIds.limbo,
13
+ typeArguments: [coinType],
14
+ arguments: [
15
+ config.packageIds.sweetHouse,
16
+ stake,
17
+ betCoin,
18
+ betCount,
19
+ BigInt(numerator),
20
+ BigInt(scale),
21
+ metadata.keys,
22
+ metadata.values,
23
+ priceInfoObjectId
24
+ ]
25
+ })(tx)
26
+ });
27
+ }
28
+ //#endregion
29
+ export { buildLimboTransaction };
30
+
31
+ //# sourceMappingURL=limbo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limbo.mjs","names":[],"sources":["../../src/transactions/limbo.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { play } from '../contracts/limbo/limbo.js';\nimport type { BuildLimboTransactionOptions, WithPartner } from '../types';\nimport { DEFAULT_LIMBO_MULTIPLIER_SCALE } from '../utils/index.js';\nimport { buildSharedStandardGameBetTransaction } from './shared.js';\n\nexport function buildLimboTransaction(\n\toptions: WithPartner<BuildLimboTransactionOptions>,\n): Transaction {\n\tconst scale = options.scale ?? DEFAULT_LIMBO_MULTIPLIER_SCALE;\n\tconst numerator = Math.round(options.targetMultiplier * scale);\n\n\treturn buildSharedStandardGameBetTransaction({\n\t\t...options,\n\t\tgame: 'limbo',\n\t\tbuildRewardCoin: ({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tcoinType,\n\t\t\tstake,\n\t\t\tbetCount,\n\t\t\tmetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t}) =>\n\t\t\tplay({\n\t\t\t\tpackage: config.packageIds.limbo,\n\t\t\t\ttypeArguments: [coinType],\n\t\t\t\targuments: [\n\t\t\t\t\tconfig.packageIds.sweetHouse,\n\t\t\t\t\tstake,\n\t\t\t\t\tbetCoin,\n\t\t\t\t\tbetCount,\n\t\t\t\t\tBigInt(numerator),\n\t\t\t\t\tBigInt(scale),\n\t\t\t\t\tmetadata.keys,\n\t\t\t\t\tmetadata.values,\n\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t],\n\t\t\t})(tx),\n\t});\n}\n"],"mappings":";;;;AASA,SAAgB,sBACf,SACc;CACd,MAAM,QAAQ,QAAQ,SAAA;CACtB,MAAM,YAAY,KAAK,MAAM,QAAQ,mBAAmB,MAAM;CAE9D,OAAO,sCAAsC;EAC5C,GAAG;EACH,MAAM;EACN,kBAAkB,EACjB,IACA,QACA,UACA,OACA,UACA,UACA,mBACA,cAEA,KAAK;GACJ,SAAS,OAAO,WAAW;GAC3B,eAAe,CAAC,SAAS;GACzB,WAAW;IACV,OAAO,WAAW;IAClB;IACA;IACA;IACA,OAAO,UAAU;IACjB,OAAO,MAAM;IACb,SAAS;IACT,SAAS;IACT;IACA;GACD,CAAC,CAAC,GAAG;EACP,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { toU8 } from "../utils/numeric.mjs";
2
+ import { buildSharedStandardGameBetTransaction } from "./shared.mjs";
3
+ import { play } from "../contracts/plinko/plinko.mjs";
4
+ //#region src/transactions/plinko.ts
5
+ function buildPlinkoTransaction(options) {
6
+ const configId = toU8(options.configId);
7
+ return buildSharedStandardGameBetTransaction({
8
+ ...options,
9
+ game: "plinko",
10
+ buildRewardCoin: ({ tx, config, coinType, stake, betCount, metadata, priceInfoObjectId, betCoin }) => play({
11
+ package: config.packageIds.plinko,
12
+ typeArguments: [coinType],
13
+ arguments: [
14
+ config.packageIds.sweetHouse,
15
+ stake,
16
+ betCoin,
17
+ betCount,
18
+ configId,
19
+ metadata.keys,
20
+ metadata.values,
21
+ priceInfoObjectId
22
+ ]
23
+ })(tx)
24
+ });
25
+ }
26
+ //#endregion
27
+ export { buildPlinkoTransaction };
28
+
29
+ //# sourceMappingURL=plinko.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plinko.mjs","names":[],"sources":["../../src/transactions/plinko.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { play } from '../contracts/plinko/plinko.js';\nimport type { BuildPlinkoTransactionOptions, WithPartner } from '../types';\nimport { toU8 } from '../utils/index.js';\nimport { buildSharedStandardGameBetTransaction } from './shared.js';\n\nexport function buildPlinkoTransaction(\n\toptions: WithPartner<BuildPlinkoTransactionOptions>,\n): Transaction {\n\tconst configId = toU8(options.configId);\n\n\treturn buildSharedStandardGameBetTransaction({\n\t\t...options,\n\t\tgame: 'plinko',\n\t\tbuildRewardCoin: ({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tcoinType,\n\t\t\tstake,\n\t\t\tbetCount,\n\t\t\tmetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t}) =>\n\t\t\tplay({\n\t\t\t\tpackage: config.packageIds.plinko,\n\t\t\t\ttypeArguments: [coinType],\n\t\t\t\targuments: [\n\t\t\t\t\tconfig.packageIds.sweetHouse,\n\t\t\t\t\tstake,\n\t\t\t\t\tbetCoin,\n\t\t\t\t\tbetCount,\n\t\t\t\t\tconfigId,\n\t\t\t\t\tmetadata.keys,\n\t\t\t\t\tmetadata.values,\n\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t],\n\t\t\t})(tx),\n\t});\n}\n"],"mappings":";;;;AASA,SAAgB,uBACf,SACc;CACd,MAAM,WAAW,KAAK,QAAQ,SAAS;CAEvC,OAAO,sCAAsC;EAC5C,GAAG;EACH,MAAM;EACN,kBAAkB,EACjB,IACA,QACA,UACA,OACA,UACA,UACA,mBACA,cAEA,KAAK;GACJ,SAAS,OAAO,WAAW;GAC3B,eAAe,CAAC,SAAS;GACzB,WAAW;IACV,OAAO,WAAW;IAClB;IACA;IACA;IACA;IACA,SAAS;IACT,SAAS;IACT;IACA;GACD,CAAC,CAAC,GAAG;EACP,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { cancelGame, createGame, joinGame } from "../contracts/pvp-coinflip/pvp_coinflip.mjs";
2
+ import { resolvePriceInfoObjectId } from "../helpers/config.mjs";
3
+ import { encodeBetMetadata } from "../helpers/metadata.mjs";
4
+ import { toBigInt } from "../utils/numeric.mjs";
5
+ import { createBaseGameTransaction } from "./shared.mjs";
6
+ import { normalizeStructTag } from "@mysten/sui/utils";
7
+ //#region src/transactions/pvp-coinflip.ts
8
+ function buildPvPCoinflipTransaction(action, options) {
9
+ const tx = createBaseGameTransaction({
10
+ ...options,
11
+ game: "pvp-coinflip"
12
+ });
13
+ const normalizedCoinType = normalizeStructTag(options.coinType);
14
+ const encodedMetadata = encodeBetMetadata(options.metadata, options.partner);
15
+ switch (action) {
16
+ case "create": {
17
+ const createOptions = options;
18
+ const stake = toBigInt(createOptions.stake);
19
+ const betCoin = tx.coin({
20
+ type: normalizedCoinType,
21
+ balance: stake,
22
+ useGasCoin: createOptions.allowGasCoinShortcut
23
+ });
24
+ tx.add(createGame({
25
+ package: createOptions.config.packageIds.pvpCoinflip,
26
+ typeArguments: [normalizedCoinType],
27
+ arguments: [
28
+ createOptions.config.packageIds.sweetHouse,
29
+ betCoin,
30
+ createOptions.side === "tails",
31
+ Boolean(createOptions.isPrivate),
32
+ encodedMetadata.keys,
33
+ encodedMetadata.values
34
+ ]
35
+ }));
36
+ return tx;
37
+ }
38
+ case "join": {
39
+ const joinOptions = options;
40
+ const priceInfoObjectId = resolvePriceInfoObjectId(joinOptions.config, normalizedCoinType);
41
+ tx.add(joinGame({
42
+ package: joinOptions.config.packageIds.pvpCoinflip,
43
+ typeArguments: [normalizedCoinType],
44
+ arguments: [
45
+ joinOptions.gameId,
46
+ joinOptions.config.packageIds.sweetHouse,
47
+ tx.add(joinOptions.betCoin),
48
+ encodedMetadata.keys,
49
+ encodedMetadata.values,
50
+ priceInfoObjectId
51
+ ]
52
+ }));
53
+ return tx;
54
+ }
55
+ case "cancel": {
56
+ const cancelOptions = options;
57
+ tx.add(cancelGame({
58
+ package: cancelOptions.config.packageIds.pvpCoinflip,
59
+ typeArguments: [normalizedCoinType],
60
+ arguments: [cancelOptions.gameId, cancelOptions.config.packageIds.sweetHouse]
61
+ }));
62
+ return tx;
63
+ }
64
+ default: throw new RangeError(`Unsupported PvP coinflip action: ${action}`);
65
+ }
66
+ }
67
+ //#endregion
68
+ export { buildPvPCoinflipTransaction };
69
+
70
+ //# sourceMappingURL=pvp-coinflip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pvp-coinflip.mjs","names":[],"sources":["../../src/transactions/pvp-coinflip.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { normalizeStructTag } from '@mysten/sui/utils';\nimport {\n\tcancelGame,\n\tcreateGame,\n\tjoinGame,\n} from '../contracts/pvp-coinflip/pvp_coinflip.js';\nimport {\n\tencodeBetMetadata,\n\tresolvePriceInfoObjectId,\n} from '../helpers/index.js';\nimport type {\n\tBuildCancelPvPCoinflipTransactionOptions,\n\tBuildCreatePvPCoinflipTransactionOptions,\n\tBuildPvPCoinflipTransactionOptions,\n\tPvPCoinflipAction,\n\tResolvedJoinPvPCoinflipTransactionOptions,\n\tWithPartner,\n} from '../types/index.js';\nimport { toBigInt } from '../utils/index.js';\nimport { createBaseGameTransaction } from './shared.js';\n\ntype PvPCoinflipTransactionOptionsWithPartner<\n\tAction extends PvPCoinflipAction,\n> = Action extends 'join'\n\t? WithPartner<ResolvedJoinPvPCoinflipTransactionOptions>\n\t: WithPartner<BuildPvPCoinflipTransactionOptions<Action>>;\n\nexport function buildPvPCoinflipTransaction<Action extends PvPCoinflipAction>(\n\taction: Action,\n\toptions: PvPCoinflipTransactionOptionsWithPartner<Action>,\n): Transaction {\n\tconst tx = createBaseGameTransaction({\n\t\t...options,\n\t\tgame: 'pvp-coinflip',\n\t});\n\tconst normalizedCoinType = normalizeStructTag(options.coinType);\n\tconst encodedMetadata = encodeBetMetadata(options.metadata, options.partner);\n\n\tswitch (action) {\n\t\tcase 'create': {\n\t\t\tconst createOptions = options as BuildCreatePvPCoinflipTransactionOptions;\n\t\t\tconst stake = toBigInt(createOptions.stake);\n\t\t\tconst betCoin = tx.coin({\n\t\t\t\ttype: normalizedCoinType,\n\t\t\t\tbalance: stake,\n\t\t\t\tuseGasCoin: createOptions.allowGasCoinShortcut,\n\t\t\t});\n\n\t\t\ttx.add(\n\t\t\t\tcreateGame({\n\t\t\t\t\tpackage: createOptions.config.packageIds.pvpCoinflip,\n\t\t\t\t\ttypeArguments: [normalizedCoinType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\tcreateOptions.config.packageIds.sweetHouse,\n\t\t\t\t\t\tbetCoin,\n\t\t\t\t\t\tcreateOptions.side === 'tails',\n\t\t\t\t\t\tBoolean(createOptions.isPrivate),\n\t\t\t\t\t\tencodedMetadata.keys,\n\t\t\t\t\t\tencodedMetadata.values,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn tx;\n\t\t}\n\n\t\tcase 'join': {\n\t\t\tconst joinOptions = options as ResolvedJoinPvPCoinflipTransactionOptions;\n\t\t\tconst priceInfoObjectId = resolvePriceInfoObjectId(\n\t\t\t\tjoinOptions.config,\n\t\t\t\tnormalizedCoinType,\n\t\t\t);\n\n\t\t\ttx.add(\n\t\t\t\tjoinGame({\n\t\t\t\t\tpackage: joinOptions.config.packageIds.pvpCoinflip,\n\t\t\t\t\ttypeArguments: [normalizedCoinType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\tjoinOptions.gameId,\n\t\t\t\t\t\tjoinOptions.config.packageIds.sweetHouse,\n\t\t\t\t\t\ttx.add(joinOptions.betCoin),\n\t\t\t\t\t\tencodedMetadata.keys,\n\t\t\t\t\t\tencodedMetadata.values,\n\t\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn tx;\n\t\t}\n\n\t\tcase 'cancel': {\n\t\t\tconst cancelOptions = options as BuildCancelPvPCoinflipTransactionOptions;\n\n\t\t\ttx.add(\n\t\t\t\tcancelGame({\n\t\t\t\t\tpackage: cancelOptions.config.packageIds.pvpCoinflip,\n\t\t\t\t\ttypeArguments: [normalizedCoinType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\tcancelOptions.gameId,\n\t\t\t\t\t\tcancelOptions.config.packageIds.sweetHouse,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn tx;\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new RangeError(`Unsupported PvP coinflip action: ${action}`);\n\t}\n}\n"],"mappings":";;;;;;;AA+BA,SAAgB,4BACf,QACA,SACc;CACd,MAAM,KAAK,0BAA0B;EACpC,GAAG;EACH,MAAM;EACN,CAAC;CACF,MAAM,qBAAqB,mBAAmB,QAAQ,SAAS;CAC/D,MAAM,kBAAkB,kBAAkB,QAAQ,UAAU,QAAQ,QAAQ;CAE5E,QAAQ,QAAR;EACC,KAAK,UAAU;GACd,MAAM,gBAAgB;GACtB,MAAM,QAAQ,SAAS,cAAc,MAAM;GAC3C,MAAM,UAAU,GAAG,KAAK;IACvB,MAAM;IACN,SAAS;IACT,YAAY,cAAc;IAC1B,CAAC;GAEF,GAAG,IACF,WAAW;IACV,SAAS,cAAc,OAAO,WAAW;IACzC,eAAe,CAAC,mBAAmB;IACnC,WAAW;KACV,cAAc,OAAO,WAAW;KAChC;KACA,cAAc,SAAS;KACvB,QAAQ,cAAc,UAAU;KAChC,gBAAgB;KAChB,gBAAgB;KAChB;IACD,CAAC,CACF;GACD,OAAO;;EAGR,KAAK,QAAQ;GACZ,MAAM,cAAc;GACpB,MAAM,oBAAoB,yBACzB,YAAY,QACZ,mBACA;GAED,GAAG,IACF,SAAS;IACR,SAAS,YAAY,OAAO,WAAW;IACvC,eAAe,CAAC,mBAAmB;IACnC,WAAW;KACV,YAAY;KACZ,YAAY,OAAO,WAAW;KAC9B,GAAG,IAAI,YAAY,QAAQ;KAC3B,gBAAgB;KAChB,gBAAgB;KAChB;KACA;IACD,CAAC,CACF;GACD,OAAO;;EAGR,KAAK,UAAU;GACd,MAAM,gBAAgB;GAEtB,GAAG,IACF,WAAW;IACV,SAAS,cAAc,OAAO,WAAW;IACzC,eAAe,CAAC,mBAAmB;IACnC,WAAW,CACV,cAAc,QACd,cAAc,OAAO,WAAW,WAChC;IACD,CAAC,CACF;GACD,OAAO;;EAGR,SACC,MAAM,IAAI,WAAW,oCAAoC,SAAS"}
@@ -0,0 +1,33 @@
1
+ import "../utils/constants.mjs";
2
+ import { buildSharedStandardGameBetTransaction } from "./shared.mjs";
3
+ import { play } from "../contracts/range/range.mjs";
4
+ //#region src/transactions/range.ts
5
+ function buildRangeTransaction(options) {
6
+ const scale = options.scale ?? 1e6;
7
+ const leftPoint = Math.round(options.leftPoint * scale);
8
+ const rightPoint = Math.round(options.rightPoint * scale);
9
+ return buildSharedStandardGameBetTransaction({
10
+ ...options,
11
+ game: "range",
12
+ buildRewardCoin: ({ tx, config, coinType, stake, betCount, metadata, priceInfoObjectId, betCoin }) => play({
13
+ package: config.packageIds.range,
14
+ typeArguments: [coinType],
15
+ arguments: [
16
+ config.packageIds.sweetHouse,
17
+ stake,
18
+ betCoin,
19
+ betCount,
20
+ BigInt(leftPoint),
21
+ BigInt(rightPoint),
22
+ Boolean(options.outOfRange),
23
+ metadata.keys,
24
+ metadata.values,
25
+ priceInfoObjectId
26
+ ]
27
+ })(tx)
28
+ });
29
+ }
30
+ //#endregion
31
+ export { buildRangeTransaction };
32
+
33
+ //# sourceMappingURL=range.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.mjs","names":[],"sources":["../../src/transactions/range.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { play } from '../contracts/range/range.js';\nimport type { BuildRangeTransactionOptions, WithPartner } from '../types';\nimport { DEFAULT_RANGE_SCALE } from '../utils/index.js';\nimport { buildSharedStandardGameBetTransaction } from './shared.js';\n\nexport function buildRangeTransaction(\n\toptions: WithPartner<BuildRangeTransactionOptions>,\n): Transaction {\n\tconst scale = options.scale ?? DEFAULT_RANGE_SCALE;\n\tconst leftPoint = Math.round(options.leftPoint * scale);\n\tconst rightPoint = Math.round(options.rightPoint * scale);\n\n\treturn buildSharedStandardGameBetTransaction({\n\t\t...options,\n\t\tgame: 'range',\n\t\tbuildRewardCoin: ({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tcoinType,\n\t\t\tstake,\n\t\t\tbetCount,\n\t\t\tmetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t}) =>\n\t\t\tplay({\n\t\t\t\tpackage: config.packageIds.range,\n\t\t\t\ttypeArguments: [coinType],\n\t\t\t\targuments: [\n\t\t\t\t\tconfig.packageIds.sweetHouse,\n\t\t\t\t\tstake,\n\t\t\t\t\tbetCoin,\n\t\t\t\t\tbetCount,\n\t\t\t\t\tBigInt(leftPoint),\n\t\t\t\t\tBigInt(rightPoint),\n\t\t\t\t\tBoolean(options.outOfRange),\n\t\t\t\t\tmetadata.keys,\n\t\t\t\t\tmetadata.values,\n\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t],\n\t\t\t})(tx),\n\t});\n}\n"],"mappings":";;;;AASA,SAAgB,sBACf,SACc;CACd,MAAM,QAAQ,QAAQ,SAAA;CACtB,MAAM,YAAY,KAAK,MAAM,QAAQ,YAAY,MAAM;CACvD,MAAM,aAAa,KAAK,MAAM,QAAQ,aAAa,MAAM;CAEzD,OAAO,sCAAsC;EAC5C,GAAG;EACH,MAAM;EACN,kBAAkB,EACjB,IACA,QACA,UACA,OACA,UACA,UACA,mBACA,cAEA,KAAK;GACJ,SAAS,OAAO,WAAW;GAC3B,eAAe,CAAC,SAAS;GACzB,WAAW;IACV,OAAO,WAAW;IAClB;IACA;IACA;IACA,OAAO,UAAU;IACjB,OAAO,WAAW;IAClB,QAAQ,QAAQ,WAAW;IAC3B,SAAS;IACT,SAAS;IACT;IACA;GACD,CAAC,CAAC,GAAG;EACP,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { assertConfiguredBetGame, resolvePriceInfoObjectId } from "../helpers/config.mjs";
2
+ import { encodeBetMetadata } from "../helpers/metadata.mjs";
3
+ import { DEFAULT_GAS_BUDGET_MIST } from "../utils/constants.mjs";
4
+ import { toBigInt } from "../utils/numeric.mjs";
5
+ import { normalizeStructTag, normalizeSuiAddress } from "@mysten/sui/utils";
6
+ import { Transaction } from "@mysten/sui/transactions";
7
+ //#region src/transactions/shared.ts
8
+ function createBaseGameTransaction({ config, game, playerAddress, gasBudget }) {
9
+ assertConfiguredBetGame(config, game);
10
+ const tx = new Transaction();
11
+ tx.setSenderIfNotSet(normalizeSuiAddress(playerAddress));
12
+ tx.setGasBudgetIfNotSet(gasBudget ?? DEFAULT_GAS_BUDGET_MIST);
13
+ return tx;
14
+ }
15
+ function buildSharedStandardGameBetCall({ config, playerAddress, coinType, stake, cashStake, betCount, metadata, partner, allowGasCoinShortcut = true, buildRewardCoin }) {
16
+ return (tx) => {
17
+ const normalizedPlayerAddress = normalizeSuiAddress(playerAddress);
18
+ const normalizedCoinType = normalizeStructTag(coinType);
19
+ const resolvedStake = toBigInt(stake);
20
+ const resolvedCashStake = toBigInt(cashStake ?? stake);
21
+ const rewardCoin = buildRewardCoin({
22
+ tx,
23
+ config,
24
+ playerAddress: normalizedPlayerAddress,
25
+ coinType: normalizedCoinType,
26
+ stake: resolvedStake,
27
+ cashStake: resolvedCashStake,
28
+ betCount: toBigInt(betCount ?? 1),
29
+ metadata: encodeBetMetadata(metadata, partner),
30
+ priceInfoObjectId: resolvePriceInfoObjectId(config, normalizedCoinType),
31
+ betCoin: tx.coin({
32
+ type: normalizedCoinType,
33
+ balance: resolvedCashStake,
34
+ useGasCoin: allowGasCoinShortcut
35
+ })
36
+ });
37
+ tx.transferObjects([rewardCoin], tx.pure.address(normalizedPlayerAddress));
38
+ return rewardCoin;
39
+ };
40
+ }
41
+ function buildSharedStandardGameBetTransaction(options) {
42
+ const tx = createBaseGameTransaction(options);
43
+ tx.add(buildSharedStandardGameBetCall(options));
44
+ return tx;
45
+ }
46
+ //#endregion
47
+ export { buildSharedStandardGameBetTransaction, createBaseGameTransaction };
48
+
49
+ //# sourceMappingURL=shared.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.mjs","names":[],"sources":["../../src/transactions/shared.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tTransaction,\n\ttype TransactionArgument,\n\ttype TransactionResult,\n} from '@mysten/sui/transactions';\nimport { normalizeStructTag, normalizeSuiAddress } from '@mysten/sui/utils';\nimport {\n\tassertConfiguredBetGame,\n\tencodeBetMetadata,\n\tresolvePriceInfoObjectId,\n} from '../helpers/index.js';\nimport type {\n\tBaseTransactionOptions,\n\tCoinTransactionOptions,\n\tEncodedBetMetadata,\n\tGame,\n\tSharedBetTransactionOptions,\n\tStakeTransactionOptions,\n\tWithPartner,\n} from '../types';\nimport { DEFAULT_GAS_BUDGET_MIST, toBigInt } from '../utils/index.js';\n\ntype StrictStakeTransactionOptions = {\n\t[K in keyof StakeTransactionOptions]-?: Exclude<\n\t\tStakeTransactionOptions[K],\n\t\tnumber\n\t>;\n};\n\nexport type BuildSharedBetTransactionContext = Pick<\n\tBaseTransactionOptions,\n\t'config' | 'playerAddress'\n> &\n\tPick<CoinTransactionOptions, 'coinType'> &\n\tStrictStakeTransactionOptions & {\n\t\ttx: Transaction;\n\t\tmetadata: EncodedBetMetadata;\n\t\tpriceInfoObjectId: string;\n\t\tbetCoin: TransactionResult;\n\t};\n\nexport type CreateBaseGameTransactionOptions = BaseTransactionOptions & {\n\tgame: Game;\n};\n\nexport type BuildSharedBetTransactionOptions = WithPartner<\n\tSharedBetTransactionOptions & {\n\t\tgame: Game;\n\t\tbuildRewardCoin: (\n\t\t\tcontext: BuildSharedBetTransactionContext,\n\t\t) => TransactionResult;\n\t}\n>;\n\nexport function createBaseGameTransaction({\n\tconfig,\n\tgame,\n\tplayerAddress,\n\tgasBudget,\n}: CreateBaseGameTransactionOptions): Transaction {\n\tassertConfiguredBetGame(config, game);\n\n\tconst tx = new Transaction();\n\ttx.setSenderIfNotSet(normalizeSuiAddress(playerAddress));\n\ttx.setGasBudgetIfNotSet(gasBudget ?? DEFAULT_GAS_BUDGET_MIST);\n\n\treturn tx;\n}\n\nexport function buildSharedStandardGameBetCall({\n\tconfig,\n\tplayerAddress,\n\tcoinType,\n\tstake,\n\tcashStake,\n\tbetCount,\n\tmetadata,\n\tpartner,\n\tallowGasCoinShortcut = true,\n\tbuildRewardCoin,\n}: BuildSharedBetTransactionOptions): (tx: Transaction) => TransactionArgument {\n\treturn (tx: Transaction) => {\n\t\tconst normalizedPlayerAddress = normalizeSuiAddress(playerAddress);\n\t\tconst normalizedCoinType = normalizeStructTag(coinType);\n\t\tconst resolvedStake = toBigInt(stake);\n\t\tconst resolvedCashStake = toBigInt(cashStake ?? stake);\n\t\tconst resolvedBetCount = toBigInt(betCount ?? 1);\n\t\tconst encodedMetadata = encodeBetMetadata(metadata, partner);\n\t\tconst priceInfoObjectId = resolvePriceInfoObjectId(\n\t\t\tconfig,\n\t\t\tnormalizedCoinType,\n\t\t);\n\n\t\tconst betCoin = tx.coin({\n\t\t\ttype: normalizedCoinType,\n\t\t\tbalance: resolvedCashStake,\n\t\t\tuseGasCoin: allowGasCoinShortcut,\n\t\t});\n\n\t\tconst rewardCoin = buildRewardCoin({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tplayerAddress: normalizedPlayerAddress,\n\t\t\tcoinType: normalizedCoinType,\n\t\t\tstake: resolvedStake,\n\t\t\tcashStake: resolvedCashStake,\n\t\t\tbetCount: resolvedBetCount,\n\t\t\tmetadata: encodedMetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t});\n\n\t\ttx.transferObjects([rewardCoin], tx.pure.address(normalizedPlayerAddress));\n\t\treturn rewardCoin;\n\t};\n}\n\nexport function buildSharedStandardGameBetTransaction(\n\toptions: BuildSharedBetTransactionOptions,\n): Transaction {\n\tconst tx = createBaseGameTransaction(options);\n\ttx.add(buildSharedStandardGameBetCall(options));\n\treturn tx;\n}\n"],"mappings":";;;;;;;AAyDA,SAAgB,0BAA0B,EACzC,QACA,MACA,eACA,aACiD;CACjD,wBAAwB,QAAQ,KAAK;CAErC,MAAM,KAAK,IAAI,aAAa;CAC5B,GAAG,kBAAkB,oBAAoB,cAAc,CAAC;CACxD,GAAG,qBAAqB,aAAa,wBAAwB;CAE7D,OAAO;;AAGR,SAAgB,+BAA+B,EAC9C,QACA,eACA,UACA,OACA,WACA,UACA,UACA,SACA,uBAAuB,MACvB,mBAC8E;CAC9E,QAAQ,OAAoB;EAC3B,MAAM,0BAA0B,oBAAoB,cAAc;EAClE,MAAM,qBAAqB,mBAAmB,SAAS;EACvD,MAAM,gBAAgB,SAAS,MAAM;EACrC,MAAM,oBAAoB,SAAS,aAAa,MAAM;EActD,MAAM,aAAa,gBAAgB;GAClC;GACA;GACA,eAAe;GACf,UAAU;GACV,OAAO;GACP,WAAW;GACX,UApBwB,SAAS,YAAY,EAoBnB;GAC1B,UApBuB,kBAAkB,UAAU,QAoB1B;GACzB,mBApByB,yBACzB,QACA,mBAkBiB;GACjB,SAhBe,GAAG,KAAK;IACvB,MAAM;IACN,SAAS;IACT,YAAY;IACZ,CAYO;GACP,CAAC;EAEF,GAAG,gBAAgB,CAAC,WAAW,EAAE,GAAG,KAAK,QAAQ,wBAAwB,CAAC;EAC1E,OAAO;;;AAIT,SAAgB,sCACf,SACc;CACd,MAAM,KAAK,0BAA0B,QAAQ;CAC7C,GAAG,IAAI,+BAA+B,QAAQ,CAAC;CAC/C,OAAO"}
@@ -0,0 +1,29 @@
1
+ import { toU8 } from "../utils/numeric.mjs";
2
+ import { buildSharedStandardGameBetTransaction } from "./shared.mjs";
3
+ import { play } from "../contracts/wheel/wheel.mjs";
4
+ //#region src/transactions/wheel.ts
5
+ function buildWheelTransaction(options) {
6
+ const configId = toU8(options.configId);
7
+ return buildSharedStandardGameBetTransaction({
8
+ ...options,
9
+ game: "wheel",
10
+ buildRewardCoin: ({ tx, config, coinType, stake, betCount, metadata, priceInfoObjectId, betCoin }) => play({
11
+ package: config.packageIds.wheel,
12
+ typeArguments: [coinType],
13
+ arguments: [
14
+ config.packageIds.sweetHouse,
15
+ stake,
16
+ betCoin,
17
+ betCount,
18
+ configId,
19
+ metadata.keys,
20
+ metadata.values,
21
+ priceInfoObjectId
22
+ ]
23
+ })(tx)
24
+ });
25
+ }
26
+ //#endregion
27
+ export { buildWheelTransaction };
28
+
29
+ //# sourceMappingURL=wheel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wheel.mjs","names":[],"sources":["../../src/transactions/wheel.ts"],"sourcesContent":["// Copyright (c) Suigar\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@mysten/sui/transactions';\nimport { play } from '../contracts/wheel/wheel.js';\nimport type { BuildWheelTransactionOptions, WithPartner } from '../types';\nimport { toU8 } from '../utils/index.js';\nimport { buildSharedStandardGameBetTransaction } from './shared.js';\n\nexport function buildWheelTransaction(\n\toptions: WithPartner<BuildWheelTransactionOptions>,\n): Transaction {\n\tconst configId = toU8(options.configId);\n\n\treturn buildSharedStandardGameBetTransaction({\n\t\t...options,\n\t\tgame: 'wheel',\n\t\tbuildRewardCoin: ({\n\t\t\ttx,\n\t\t\tconfig,\n\t\t\tcoinType,\n\t\t\tstake,\n\t\t\tbetCount,\n\t\t\tmetadata,\n\t\t\tpriceInfoObjectId,\n\t\t\tbetCoin,\n\t\t}) =>\n\t\t\tplay({\n\t\t\t\tpackage: config.packageIds.wheel,\n\t\t\t\ttypeArguments: [coinType],\n\t\t\t\targuments: [\n\t\t\t\t\tconfig.packageIds.sweetHouse,\n\t\t\t\t\tstake,\n\t\t\t\t\tbetCoin,\n\t\t\t\t\tbetCount,\n\t\t\t\t\tconfigId,\n\t\t\t\t\tmetadata.keys,\n\t\t\t\t\tmetadata.values,\n\t\t\t\t\tpriceInfoObjectId,\n\t\t\t\t],\n\t\t\t})(tx),\n\t});\n}\n"],"mappings":";;;;AASA,SAAgB,sBACf,SACc;CACd,MAAM,WAAW,KAAK,QAAQ,SAAS;CAEvC,OAAO,sCAAsC;EAC5C,GAAG;EACH,MAAM;EACN,kBAAkB,EACjB,IACA,QACA,UACA,OACA,UACA,UACA,mBACA,cAEA,KAAK;GACJ,SAAS,OAAO,WAAW;GAC3B,eAAe,CAAC,SAAS;GACzB,WAAW;IACV,OAAO,WAAW;IAClB;IACA;IACA;IACA;IACA,SAAS;IACT,SAAS;IACT;IACA;GACD,CAAC,CAAC,GAAG;EACP,CAAC"}