@kontor/kontor-sdk 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (113) hide show
  1. package/dist/src/kwit/error.js +59 -0
  2. package/dist/src/kwit/error.js.map +1 -0
  3. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js +29 -0
  4. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js.map +1 -0
  5. package/dist/src/kwit/kwit-parser/core/errors/signature.js +42 -0
  6. package/dist/src/kwit/kwit-parser/core/errors/signature.js.map +1 -0
  7. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js +18 -0
  8. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js.map +1 -0
  9. package/dist/src/kwit/kwit-parser/core/records.js +73 -0
  10. package/dist/src/kwit/kwit-parser/core/records.js.map +1 -0
  11. package/dist/src/kwit/kwit-parser/core/records.test.js +53 -0
  12. package/dist/src/kwit/kwit-parser/core/records.test.js.map +1 -0
  13. package/dist/src/kwit/kwit-parser/core/signatures.js +33 -0
  14. package/dist/src/kwit/kwit-parser/core/signatures.js.map +1 -0
  15. package/dist/src/kwit/kwit-parser/core/signatures.test.js +54 -0
  16. package/dist/src/kwit/kwit-parser/core/signatures.test.js.map +1 -0
  17. package/dist/src/kwit/kwit-parser/core/types/records.js +2 -0
  18. package/dist/src/kwit/kwit-parser/core/types/records.js.map +1 -0
  19. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js +19 -0
  20. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js.map +1 -0
  21. package/dist/src/kwit/kwit-parser/core/types/signatures.js +3 -0
  22. package/dist/src/kwit/kwit-parser/core/types/signatures.js.map +1 -0
  23. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js +18 -0
  24. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js.map +1 -0
  25. package/dist/src/kwit/kwit-parser/core/types/utils.js +2 -0
  26. package/dist/src/kwit/kwit-parser/core/types/utils.js.map +1 -0
  27. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js +159 -0
  28. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js.map +1 -0
  29. package/dist/src/kwit/kwit-parser/core/utils.js +212 -0
  30. package/dist/src/kwit/kwit-parser/core/utils.js.map +1 -0
  31. package/dist/src/kwit/kwit-parser/core/utils.test.js +302 -0
  32. package/dist/src/kwit/kwit-parser/core/utils.test.js.map +1 -0
  33. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js +26 -0
  34. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js.map +1 -0
  35. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js +83 -0
  36. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js.map +1 -0
  37. package/dist/src/kwit/kwit-parser/parse-kwit.js +16 -0
  38. package/dist/src/kwit/kwit-parser/parse-kwit.js.map +1 -0
  39. package/dist/src/kwit/kwit-parser/parse-kwit.test.js +78 -0
  40. package/dist/src/kwit/kwit-parser/parse-kwit.test.js.map +1 -0
  41. package/dist/src/kwit/kwit.js +2 -0
  42. package/dist/src/kwit/kwit.js.map +1 -0
  43. package/dist/src/kwit/kwit.test.js +9 -0
  44. package/dist/src/kwit/kwit.test.js.map +1 -0
  45. package/dist/src/kwit/narrow.js +14 -0
  46. package/dist/src/kwit/narrow.js.map +1 -0
  47. package/dist/src/kwit/regex.js +6 -0
  48. package/dist/src/kwit/regex.js.map +1 -0
  49. package/dist/src/kwit/register.js +2 -0
  50. package/dist/src/kwit/register.js.map +1 -0
  51. package/dist/src/kwit/type-utils.js +2 -0
  52. package/dist/src/kwit/type-utils.js.map +1 -0
  53. package/dist/src/kwit/utils.js +2 -0
  54. package/dist/src/kwit/utils.js.map +1 -0
  55. package/dist/src/kwit/utils.test-d.js +17 -0
  56. package/dist/src/kwit/utils.test-d.js.map +1 -0
  57. package/dist/src/kwit/version.js +2 -0
  58. package/dist/src/kwit/version.js.map +1 -0
  59. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +19 -30
  60. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -1
  61. package/dist/src/sdk/actions/public/test-mempool-accept.js +1 -1
  62. package/dist/src/sdk/actions/public/test-mempool-accept.js.map +1 -1
  63. package/dist/src/sdk/clients/decorators/public.js +2 -0
  64. package/dist/src/sdk/clients/decorators/public.js.map +1 -1
  65. package/dist/src/sdk/errors/kwit.js +19 -0
  66. package/dist/src/sdk/errors/kwit.js.map +1 -0
  67. package/dist/src/sdk/test/e2e.test.js +174 -14
  68. package/dist/src/sdk/test/e2e.test.js.map +1 -1
  69. package/dist/src/sdk/utils/kwit/codecs/decimal.js +165 -0
  70. package/dist/src/sdk/utils/kwit/codecs/decimal.js.map +1 -0
  71. package/dist/src/sdk/utils/kwit/codecs/enum.js +104 -0
  72. package/dist/src/sdk/utils/kwit/codecs/enum.js.map +1 -0
  73. package/dist/src/sdk/utils/kwit/codecs/integer.js +167 -0
  74. package/dist/src/sdk/utils/kwit/codecs/integer.js.map +1 -0
  75. package/dist/src/sdk/utils/kwit/codecs/list.js +117 -0
  76. package/dist/src/sdk/utils/kwit/codecs/list.js.map +1 -0
  77. package/dist/src/sdk/utils/kwit/codecs/option.js +91 -0
  78. package/dist/src/sdk/utils/kwit/codecs/option.js.map +1 -0
  79. package/dist/src/sdk/utils/kwit/codecs/string.js +27 -0
  80. package/dist/src/sdk/utils/kwit/codecs/string.js.map +1 -0
  81. package/dist/src/sdk/utils/kwit/codecs/types.js +45 -0
  82. package/dist/src/sdk/utils/kwit/codecs/types.js.map +1 -0
  83. package/dist/src/sdk/utils/kwit/codecs/unit.js +22 -0
  84. package/dist/src/sdk/utils/kwit/codecs/unit.js.map +1 -0
  85. package/dist/src/sdk/utils/kwit/decode-function-result.js +36 -0
  86. package/dist/src/sdk/utils/kwit/decode-function-result.js.map +1 -0
  87. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js +286 -0
  88. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js.map +1 -0
  89. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js +75 -0
  90. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js.map +1 -0
  91. package/dist/src/sdk/utils/kwit/encode-function-data.js +17 -0
  92. package/dist/src/sdk/utils/kwit/encode-function-data.js.map +1 -0
  93. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js +21 -0
  94. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js.map +1 -0
  95. package/dist/src/sdk/utils/kwit/encode-function-data.test.js +91 -0
  96. package/dist/src/sdk/utils/kwit/encode-function-data.test.js.map +1 -0
  97. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js +250 -0
  98. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js.map +1 -0
  99. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js +62 -0
  100. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js.map +1 -0
  101. package/dist/src/sdk/utils/kwit/get-kwit-item.js +186 -0
  102. package/dist/src/sdk/utils/kwit/get-kwit-item.js.map +1 -0
  103. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js +119 -0
  104. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js.map +1 -0
  105. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js +24 -0
  106. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js.map +1 -0
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +1 -1
  109. package/src/sdk/actions/kontor/wallet/sign-reveal.ts +27 -34
  110. package/src/sdk/actions/public/test-mempool-accept.ts +2 -3
  111. package/src/sdk/clients/decorators/public.ts +11 -0
  112. package/src/sdk/test/e2e.test.ts +193 -15
  113. package/src/sdk/types/btc-rpc.ts +1 -1
@@ -0,0 +1,16 @@
1
+ import { isRecordSignature } from "./core/signatures.js";
2
+ import { parseRecords } from "./core/records.js";
3
+ import { parseSignature } from "./core/utils.js";
4
+ export function parseKwit(signatures) {
5
+ const structs = parseRecords(signatures);
6
+ const kwit = [];
7
+ const length = signatures.length;
8
+ for (let i = 0; i < length; i++) {
9
+ const signature = signatures[i];
10
+ if (isRecordSignature(signature))
11
+ continue;
12
+ kwit.push(parseSignature(signature, structs));
13
+ }
14
+ return kwit;
15
+ }
16
+ //# sourceMappingURL=parse-kwit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-kwit.js","sourceRoot":"","sources":["../../../../src/kwit/kwit-parser/parse-kwit.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAyCjD,MAAM,UAAU,SAAS,CACvB,UAI4B;IAE5B,MAAM,OAAO,GAAG,YAAY,CAAC,UAA+B,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAgB,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,SAAS,GAAI,UAAgC,CAAC,CAAC,CAAE,CAAC;QACxD,IAAI,iBAAiB,CAAC,SAAS,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAwC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { expectTypeOf, describe, expect, test } from "vitest";
2
+ import { parseKwit } from "./parse-kwit.js";
3
+ test("ParseKwit (types)", () => {
4
+ // type-level assertions
5
+ expectTypeOf().toEqualTypeOf();
6
+ expectTypeOf().toEqualTypeOf();
7
+ });
8
+ describe("parseKwit (runtime)", () => {
9
+ test("parses proc + view functions and strips ctx from inputs", () => {
10
+ const input = [
11
+ // TODO: build in record defs should be defined under the hood
12
+ "record contract-address { name: string, height: s64, tx-index: s64 }",
13
+ "export fib: func(ctx: borrow<proc-context>, arith-address: contract-address, n: u64) -> u64;",
14
+ "export fib-of-sub: func(ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string) -> result<u64, error>;",
15
+ "export cached-values: func(ctx: borrow<view-context>) -> list<u64>;",
16
+ "export return-option: func(ctx: borrow<view-context>) -> option<u64>;",
17
+ ];
18
+ const out = parseKwit(input);
19
+ expect(out).toEqual([
20
+ {
21
+ name: "fib",
22
+ type: "function",
23
+ context: "proc",
24
+ inputs: [
25
+ {
26
+ name: "arith-address",
27
+ type: "tuple",
28
+ components: [
29
+ { name: "name", type: "string" },
30
+ { name: "height", type: "s64" },
31
+ { name: "tx-index", type: "s64" },
32
+ ],
33
+ },
34
+ { name: "n", type: "u64" },
35
+ ],
36
+ outputs: [{ type: "u64" }],
37
+ },
38
+ {
39
+ name: "fib-of-sub",
40
+ type: "function",
41
+ context: "proc",
42
+ inputs: [
43
+ {
44
+ name: "arith-address",
45
+ type: "tuple",
46
+ components: [
47
+ { name: "name", type: "string" },
48
+ { name: "height", type: "s64" },
49
+ { name: "tx-index", type: "s64" },
50
+ ],
51
+ },
52
+ { name: "x", type: "string" },
53
+ { name: "y", type: "string" },
54
+ ],
55
+ outputs: [
56
+ {
57
+ type: "result<u64, error>",
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ name: "cached-values",
63
+ type: "function",
64
+ context: "view",
65
+ inputs: [],
66
+ outputs: [{ type: "list<u64>" }],
67
+ },
68
+ {
69
+ name: "return-option",
70
+ type: "function",
71
+ context: "view",
72
+ inputs: [],
73
+ outputs: [{ type: "option<u64>" }],
74
+ },
75
+ ]);
76
+ });
77
+ });
78
+ //# sourceMappingURL=parse-kwit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-kwit.test.js","sourceRoot":"","sources":["../../../../src/kwit/kwit-parser/parse-kwit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,wBAAwB;IAExB,YAAY,EAST,CAAC,aAAa,EAgDd,CAAC;IAEJ,YAAY,EAST,CAAC,aAAa,EAgDd,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG;YACZ,8DAA8D;YAC9D,uEAAuE;YACvE,8FAA8F;YAC9F,kIAAkI;YAClI,qEAAqE;YACrE,uEAAuE;SAC/D,CAAC;QAEX,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YAClB;gBACE,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,OAAO;wBACb,UAAU,EAAE;4BACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;4BAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;yBAClC;qBACF;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC3B;gBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aAC3B;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,OAAO;wBAEb,UAAU,EAAE;4BACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;4BAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;yBAClC;qBACF;oBACD,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC9B;gBACD,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,oBAAoB;qBAC3B;iBACF;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;aACjC;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;aACnC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=kwit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kwit.js","sourceRoot":"","sources":["../../../src/kwit/kwit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { assertType, test } from "vitest";
2
+ //TODO: fill this out
3
+ test("Kwit Types", () => {
4
+ // assertType<KwitFunc>("func");
5
+ // assertType<KwitResult>("result");
6
+ assertType("error");
7
+ // TODO: fill out
8
+ });
9
+ //# sourceMappingURL=kwit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kwit.test.js","sourceRoot":"","sources":["../../../src/kwit/kwit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ1C,qBAAqB;AACrB,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IACtB,gCAAgC;IAChC,oCAAoC;IACpC,UAAU,CAAY,OAAO,CAAC,CAAC;IAC/B,iBAAiB;AACnB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Infers embedded primitive type of any type
3
+ * Same as `as const` but without setting the object as readonly and without needing the user to use it.
4
+ *
5
+ * @param value - Value to infer
6
+ * @returns Value with embedded type inferred
7
+ *
8
+ * @example
9
+ * const result = narrow(['foo', 'bar', 1])
10
+ */
11
+ export function narrow(value) {
12
+ return value;
13
+ }
14
+ //# sourceMappingURL=narrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrow.js","sourceRoot":"","sources":["../../../src/kwit/narrow.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAO,KAAmB;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ export function execTyped(regex, string) {
2
+ const match = regex.exec(string);
3
+ return match?.groups;
4
+ }
5
+ export const isGenericRegex = /^(?<outer>borrow|list|option|result|tuple)\s*<(?<inner>[\s\S]+)>\s*$/;
6
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/kwit/regex.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAO,KAAa,EAAE,MAAc;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,KAAK,EAAE,MAA0B,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GACzB,sEAAsE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/kwit/register.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/kwit/type-utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/kwit/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { describe, test, assertType } from "vitest";
2
+ import { parseKwit } from "./kwit-parser/parse-kwit.js";
3
+ const fibKwit = parseKwit([
4
+ "export fib: func(ctx: borrow<proc-context>, arith-address: contract-address, n: u64) -> u64;",
5
+ "export fib-of-sub: func(ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string) -> result<u64, error>;",
6
+ "export cached-values: func(ctx: borrow<view-context>) -> list<u64>;",
7
+ ]);
8
+ test("IsKwit", () => {
9
+ assertType(true);
10
+ });
11
+ describe("Function", () => {
12
+ test("ExtractKwitFunctions", () => {
13
+ // assertType<ExtractKwitFunctions<[typeof fibKwit]>>(abiFunction);
14
+ assertType(undefined);
15
+ });
16
+ });
17
+ //# sourceMappingURL=utils.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test-d.js","sourceRoot":"","sources":["../../../src/kwit/utils.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,OAAO,GAAS,SAAS,CAAC;IAC9B,8FAA8F;IAC9F,kIAAkI;IAClI,qEAAqE;CACtE,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;IAClB,UAAU,CAAyB,IAAI,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,mEAAmE;QACnE,UAAU,CAA2B,SAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const version = "1.0.0";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/kwit/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { parseAccount } from "../../../accounts/utils/parse-account.js";
2
2
  import { getAction } from "../../../utils/get-action.js";
3
3
  import { signPsbt } from "../../wallet/sign-psbt.js";
4
- import { p2tr, taprootListToTree, Transaction } from "@scure/btc-signer";
4
+ import { TaprootControlBlock, Transaction, utils as u, } from "@scure/btc-signer";
5
5
  import { hex } from "@scure/base";
6
6
  export async function signReveal(client, parameters) {
7
7
  const { account: account_ = client.account, chain = client.chain, ...params } = parameters;
@@ -15,23 +15,13 @@ export async function signReveal(client, parameters) {
15
15
  });
16
16
  for (let i = 0; i < params.parcipantScripts.length; i++) {
17
17
  const { commit_tap_leaf_script } = params.parcipantScripts[i];
18
- const tree = taprootListToTree([
19
- {
20
- // TODO: fix this type error
21
- // @ts-ignore
22
- script: hex.decode(commit_tap_leaf_script.script),
23
- leafVersion: commit_tap_leaf_script.leafVersion,
24
- },
25
- ]);
26
- const payment = p2tr(
27
- // @ts-ignore
28
- undefined, tree,
29
- // TODO: must assert chain or default to mainnet
30
- chain.networkConfig, true);
18
+ const scriptBytes = hex.decode(commit_tap_leaf_script.script);
19
+ const controlBlockBytes = hex.decode(commit_tap_leaf_script.controlBlock);
20
+ const leafVersion = commit_tap_leaf_script.leafVersion;
21
+ const scriptWithVersion = u.concatBytes(scriptBytes, new Uint8Array([leafVersion]));
22
+ const controlBlockStruct = TaprootControlBlock.decode(controlBlockBytes);
31
23
  tx.updateInput(i, {
32
- tapLeafScript: payment.tapLeafScript,
33
- tapInternalKey: payment.tapInternalKey,
34
- tapMerkleRoot: payment.tapMerkleRoot,
24
+ tapLeafScript: [[controlBlockStruct, scriptWithVersion]],
35
25
  }, true);
36
26
  }
37
27
  const signInputs = Array.from({
@@ -56,19 +46,18 @@ export async function signReveal(client, parameters) {
56
46
  });
57
47
  // this is technically unnecessary as scure/btc-signer
58
48
  // will product this witness by default
59
- // for (let i = 0; i < params.parcipantScripts.length; i++) {
60
- // const input = signedTx.getInput(i);
61
- // const p = params.parcipantScripts[i]!;
62
- // console.log({ input, tapscriptsig: input.tapScriptSig });
63
- // signedTx.updateInput(i, {
64
- // finalScriptWitness: [
65
- // input.tapScriptSig![0]![1],
66
- // hex.decode(p.commit_tap_leaf_script.script),
67
- // hex.decode(p.commit_tap_leaf_script.controlBlock),
68
- // ],
69
- // });
70
- // }
71
- signedTx.finalize();
49
+ for (let i = 0; i < params.parcipantScripts.length; i++) {
50
+ const input = signedTx.getInput(i);
51
+ const p = params.parcipantScripts[i];
52
+ console.log({ input, tapscriptsig: input.tapScriptSig });
53
+ signedTx.updateInput(i, {
54
+ finalScriptWitness: [
55
+ input.tapScriptSig[0][1],
56
+ hex.decode(p.commit_tap_leaf_script.script),
57
+ hex.decode(p.commit_tap_leaf_script.controlBlock),
58
+ ],
59
+ });
60
+ }
72
61
  return signedTx;
73
62
  }
74
63
  //# sourceMappingURL=sign-reveal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sign-reveal.js","sourceRoot":"","sources":["../../../../../../src/sdk/actions/kontor/wallet/sign-reveal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sign-reveal.js","sourceRoot":"","sources":["../../../../../../src/sdk/actions/kontor/wallet/sign-reveal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAKxE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,KAAK,IAAI,CAAC,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAelC,MAAM,CAAC,KAAK,UAAU,UAAU,CAK9B,MAAwD,EACxD,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,MAAM,EACV,GAAG,UAAU,CAAC;IAEf,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEvC,6CAA6C;IAC7C,0CAA0C;IAE1C,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACvD,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC;QAE/D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;QAEvD,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CACrC,WAAW,EACX,IAAI,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAC9B,CAAC;QAEF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEzE,EAAE,CAAC,WAAW,CACZ,CAAC,EACD;YACE,aAAa,EAAE,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;SACzD,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B;QACE,MAAM,EAAE,EAAE,CAAC,YAAY;KACxB,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CACZ,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ;QAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC;YACrB,IAAI,EAAE,YAAY;YAClB,UAAU;YACV,SAAS,EAAE,KAAK;SACjB,CAAC;QACJ,CAAC,CAAC,MAAM,SAAS,CACb,MAAM,EACN,QAAQ,EACR,UAAU,CACX,CAAC;YACA,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAc,CAAC,EAAE;QACvE,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,sDAAsD;IACtD,uCAAuC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;YACtB,kBAAkB,EAAE;gBAClB,KAAK,CAAC,YAAa,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;gBAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC;aAClD;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export async function testMempoolAccept(client, { rawtx, options = {} }) {
2
2
  const txs = Array.isArray(rawtx) ? rawtx : [rawtx];
3
- const params = options.maxfeerate !== undefined ? [txs, options.maxfeerate] : [txs];
3
+ const params = options.maxfeerate !== undefined ? [txs, options] : [txs];
4
4
  return client.request({
5
5
  method: "testmempoolaccept",
6
6
  params: params,
@@ -1 +1 @@
1
- {"version":3,"file":"test-mempool-accept.js","sourceRoot":"","sources":["../../../../../src/sdk/actions/public/test-mempool-accept.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAkD,EAClD,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAA2B;IAEhD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,MAAM,GACV,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEvE,OAAO,MAAM,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;AACL,CAAC;AAED,2CAA2C;AAC3C,8BAA8B;AAC9B,2CAA2C;AAC3C,0CAA0C;AAC1C,wDAAwD;AACxD,EAAE;AACF,mBAAmB;AACnB,4FAA4F;AAC5F,EAAE;AACF,4EAA4E;AAC5E,IAAI"}
1
+ {"version":3,"file":"test-mempool-accept.js","sourceRoot":"","sources":["../../../../../src/sdk/actions/public/test-mempool-accept.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAkD,EAClD,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAA2B;IAEhD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEzE,OAAO,MAAM,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,MAAa;KACtB,CAAC,CAAC;AACL,CAAC;AAED,2CAA2C;AAC3C,8BAA8B;AAC9B,2CAA2C;AAC3C,0CAA0C;AAC1C,wDAAwD;AACxD,EAAE;AACF,mBAAmB;AACnB,4FAA4F;AAC5F,EAAE;AACF,4EAA4E;AAC5E,IAAI"}
@@ -1,7 +1,9 @@
1
1
  import { sendRawTransaction, } from "../../actions/public/send-raw-transaction.js";
2
+ import { testMempoolAccept, } from "../../actions/public/test-mempool-accept.js";
2
3
  export function publicActions(client) {
3
4
  return {
4
5
  sendRawTransaction: (args) => sendRawTransaction(client, args),
6
+ testMempoolAccept: (args) => testMempoolAccept(client, args),
5
7
  };
6
8
  }
7
9
  //# sourceMappingURL=public.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../../src/sdk/clients/decorators/public.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AAetD,MAAM,UAAU,aAAa,CAK3B,MAA+C;IAE/C,OAAO;QACL,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;KAC/D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../../src/sdk/clients/decorators/public.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAGL,iBAAiB,GAClB,MAAM,6CAA6C,CAAC;AAmBrD,MAAM,UAAU,aAAa,CAK3B,MAA+C;IAE/C,OAAO;QACL,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;QAC9D,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { BaseError } from "./base.js";
2
+ export class KwitEncodingLengthMismatchError extends BaseError {
3
+ constructor({ expectedLength, givenLength, }) {
4
+ super([
5
+ "KWIT encoding params/values length mismatch.",
6
+ `Expected length (params): ${expectedLength}`,
7
+ `Given length (values): ${givenLength}`,
8
+ ].join("\n"), { name: "KwitEncodingLengthMismatchError" });
9
+ }
10
+ }
11
+ export class InvalidKwitEncodingTypeError extends BaseError {
12
+ constructor(type, { docsPath }) {
13
+ super([
14
+ `Type "${type}" is not a valid encoding type.`,
15
+ "Please provide a valid KWIT type.",
16
+ ].join("\n"), { docsPath, name: "InvalidKwitEncodingType" });
17
+ }
18
+ }
19
+ //# sourceMappingURL=kwit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kwit.js","sourceRoot":"","sources":["../../../../src/sdk/errors/kwit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMtC,MAAM,OAAO,+BAAgC,SAAQ,SAAS;IAC5D,YAAY,EACV,cAAc,EACd,WAAW,GAIZ;QACC,KAAK,CACH;YACE,8CAA8C;YAC9C,6BAA6B,cAAc,EAAE;YAC7C,0BAA0B,WAAW,EAAE;SACxC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAC5C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,SAAS;IACzD,YAAY,IAAY,EAAE,EAAE,QAAQ,EAAwB;QAC1D,KAAK,CACH;YACE,SAAS,IAAI,iCAAiC;YAC9C,mCAAmC;SACpC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAC9C,CAAC;IACJ,CAAC;CACF"}
@@ -28,11 +28,152 @@ export const nativeTokenRaw = [
28
28
  "export detach: func(ctx: borrow<proc-context>) -> result<transfer, error>;",
29
29
  ];
30
30
  export const wit = parseWit(nativeTokenRaw);
31
+ // test("e2e kontor wallet client", async () => {
32
+ // const account = mnemonicToAccount(process.env.TEST_MNEMONIC!);
33
+ //
34
+ // const kontorPublicClient = createKontorPublicClient({
35
+ // transport: http("https://signet-staging.kontor.network:35000/api"),
36
+ // account,
37
+ // chain: signet,
38
+ // });
39
+ //
40
+ // const kontorWalletClient = createKontorWalletClient({
41
+ // account,
42
+ // // TODO: transport is not used for local account.
43
+ // transport: custom({
44
+ // request: async (_args: any) => null,
45
+ // }),
46
+ // });
47
+ //
48
+ // const res = await kontorPublicClient.procContract({
49
+ // wit: wit,
50
+ // // TODO: add optional account override
51
+ //
52
+ // functionName: "mint", // functin name is only valid if it's got a proc-context
53
+ // contractAddress: "token_0_0",
54
+ // args: [[7n, 18]],
55
+ // satsPerVByte: 1,
56
+ // utxos: [
57
+ // "641c40edf4cf0f1cdaea5c259bf50267bd8743dbade84c98bb9e360c2d0e2a33:1",
58
+ // ],
59
+ // gas: 10n,
60
+ // });
61
+ //
62
+ // const commit: Transaction = await kontorWalletClient.signCommit({
63
+ // account: account,
64
+ // chain: signet,
65
+ // psbt: res.result.commit_psbt_hex,
66
+ // });
67
+ //
68
+ // const reveal: Transaction = await kontorWalletClient.signReveal({
69
+ // account: account,
70
+ // chain: signet,
71
+ // psbt: res.result.reveal_psbt_hex,
72
+ // parcipantScripts: res.result.per_participant,
73
+ // });
74
+ //
75
+ // const commitExtracted = commit.extract();
76
+ // const revealExtracted = reveal.extract();
77
+ //
78
+ // // const m = await btcPublicClient.testMempoolAccept({
79
+ // // rawtx: [hex.encode(commitExtracted), hex.encode(revealExtracted)],
80
+ // // options: {},
81
+ // // });
82
+ // //
83
+ //
84
+ // const r = await fetch("https://signet.kontor.network:38332", {
85
+ // method: "POST",
86
+ // headers: {
87
+ // "Content-Type": "application/json",
88
+ // Authorization: `Basic ${Buffer.from("rpc:rpc").toString("base64")}`,
89
+ // },
90
+ // body: JSON.stringify({
91
+ // method: "testmempoolaccept",
92
+ // params: [[hex.encode(commitExtracted), hex.encode(revealExtracted)]],
93
+ // }),
94
+ // });
95
+ // console.log({
96
+ // r,
97
+ // reveal: [hex.encode(commitExtracted), hex.encode(revealExtracted)],
98
+ // });
99
+ //
100
+ // const j = await r.json();
101
+ //
102
+ // console.log(j);
103
+ // //
104
+ // // const op = await kontorPublicClient.inspect({
105
+ // // hex: hex.encode(revealExtracted),
106
+ // // });
107
+ //
108
+ // // console.log(JSON.stringify(op.result[0]!.op));
109
+ // //
110
+ // });
31
111
  test("e2e kontor wallet client", async () => {
32
112
  const account = mnemonicToAccount(process.env.TEST_MNEMONIC);
113
+ const res = {
114
+ result: {
115
+ commit_transaction: {
116
+ version: 2,
117
+ lock_time: 0,
118
+ input: [
119
+ {
120
+ previous_output: "641c40edf4cf0f1cdaea5c259bf50267bd8743dbade84c98bb9e360c2d0e2a33:1",
121
+ script_sig: "",
122
+ sequence: 4294967295,
123
+ witness: [],
124
+ },
125
+ ],
126
+ output: [
127
+ {
128
+ value: 570,
129
+ script_pubkey: "51207fe892a65813b770346d37f8fbbdf5c1e6bee0bc34b0c625e8f4ca5ff3ad144f",
130
+ },
131
+ {
132
+ value: 8502,
133
+ script_pubkey: "5120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f",
134
+ },
135
+ ],
136
+ },
137
+ commit_transaction_hex: "0200000001332a0e2d0c369ebb984ce8addb4387bd6702f59b255ceada1c0fcff4ed401c640100000000ffffffff023a020000000000002251207fe892a65813b770346d37f8fbbdf5c1e6bee0bc34b0c625e8f4ca5ff3ad144f3621000000000000225120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f00000000",
138
+ commit_psbt_hex: "70736274ff0100890200000001332a0e2d0c369ebb984ce8addb4387bd6702f59b255ceada1c0fcff4ed401c640100000000ffffffff023a020000000000002251207fe892a65813b770346d37f8fbbdf5c1e6bee0bc34b0c625e8f4ca5ff3ad144f3621000000000000225120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f000000000001012b8e24000000000000225120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f0117202c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f000000",
139
+ reveal_transaction: {
140
+ version: 2,
141
+ lock_time: 0,
142
+ input: [
143
+ {
144
+ previous_output: "4b195fabb3bd5360de2e2db6821df9d8909f0dbd5f1ba50ae1ca71a841080c3d:0",
145
+ script_sig: "",
146
+ sequence: 4294967295,
147
+ witness: [],
148
+ },
149
+ ],
150
+ output: [
151
+ {
152
+ value: 330,
153
+ script_pubkey: "5120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f",
154
+ },
155
+ ],
156
+ },
157
+ reveal_transaction_hex: "02000000013d0c0841a871cae10aa51b5fbd0d9f90d8f91d82b62d2ede6053bdb3ab5f194b0000000000ffffffff014a01000000000000225120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f00000000",
158
+ reveal_psbt_hex: "70736274ff01005e02000000013d0c0841a871cae10aa51b5fbd0d9f90d8f91d82b62d2ede6053bdb3ab5f194b0000000000ffffffff014a01000000000000225120929c39410fb437b4ff387ec898cbc098365d91965073004fc43e013d410d417f000000000001012b3a020000000000002251207fe892a65813b770346d37f8fbbdf5c1e6bee0bc34b0c625e8f4ca5ff3ad144f0117202c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f0000",
159
+ per_participant: [
160
+ {
161
+ address: "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
162
+ x_only_public_key: "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
163
+ commit_tap_leaf_script: {
164
+ leafVersion: 192,
165
+ script: "202c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51fac0063036b6f6e00010268",
166
+ controlBlock: "c12c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
167
+ },
168
+ chained_tap_leaf_script: null,
169
+ },
170
+ ],
171
+ },
172
+ };
33
173
  const kontorPublicClient = createKontorPublicClient({
34
174
  transport: http("https://signet-staging.kontor.network:35000/api"),
35
175
  account,
176
+ chain: signet,
36
177
  });
37
178
  const kontorWalletClient = createKontorWalletClient({
38
179
  account,
@@ -41,20 +182,20 @@ test("e2e kontor wallet client", async () => {
41
182
  request: async (_args) => null,
42
183
  }),
43
184
  });
44
- const res = await kontorPublicClient.procContract({
45
- wit: wit,
46
- // TODO: add optional account override
47
- functionName: "mint", // functin name is only valid if it's got a proc-context
48
- contractAddress: "token_0_0",
49
- args: [[7n, 18]],
50
- satsPerVByte: 1,
51
- utxos: [
52
- "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
53
- ],
54
- gas: 10n,
55
- });
56
- // @ts-ignore
57
- const commit_ = await kontorWalletClient.signCommit({
185
+ // const res = await kontorPublicClient.procContract({
186
+ // wit: wit,
187
+ // // TODO: add optional account override
188
+ //
189
+ // functionName: "mint", // functin name is only valid if it's got a proc-context
190
+ // contractAddress: "token_0_0",
191
+ // args: [[7n, 18]],
192
+ // satsPerVByte: 1,
193
+ // utxos: [
194
+ // "641c40edf4cf0f1cdaea5c259bf50267bd8743dbade84c98bb9e360c2d0e2a33:1",
195
+ // ],
196
+ // gas: 10n,
197
+ // });
198
+ const commit = await kontorWalletClient.signCommit({
58
199
  account: account,
59
200
  chain: signet,
60
201
  psbt: res.result.commit_psbt_hex,
@@ -65,7 +206,26 @@ test("e2e kontor wallet client", async () => {
65
206
  psbt: res.result.reveal_psbt_hex,
66
207
  parcipantScripts: res.result.per_participant,
67
208
  });
209
+ const commitExtracted = commit.extract();
68
210
  const revealExtracted = reveal.extract();
211
+ // const m = await btcPublicClient.testMempoolAccept({
212
+ // rawtx: [hex.encode(commitExtracted), hex.encode(revealExtracted)],
213
+ // options: {},
214
+ // });
215
+ const r = await fetch("https://signet.kontor.network:38332", {
216
+ method: "POST",
217
+ headers: {
218
+ "Content-Type": "application/json",
219
+ Authorization: `Basic ${Buffer.from("rpc:rpc").toString("base64")}`,
220
+ },
221
+ body: JSON.stringify({
222
+ method: "testmempoolaccept",
223
+ params: [[hex.encode(commitExtracted), hex.encode(revealExtracted)]],
224
+ }),
225
+ });
226
+ const mempoolAccept = await r.json();
227
+ console.log({ mempoolAccept: mempoolAccept.result });
228
+ //
69
229
  const op = await kontorPublicClient.inspect({
70
230
  hex: hex.encode(revealExtracted),
71
231
  });
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../../../src/sdk/test/e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../../../src/sdk/test/e2e.test.ts"],"names":[],"mappings":"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"}