@kontor/kontor-sdk 1.0.0-alpha.39 → 1.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/sdk/actions/kontor/public/call-view.js.map +1 -1
- package/dist/cjs/sdk/chains/definitions/signet.js +2 -2
- package/dist/cjs/sdk/test/e2e.test-deprecated.js +2 -0
- package/dist/cjs/sdk/test/e2e.test-deprecated.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/bool.js +9 -21
- package/dist/cjs/sdk/utils/wit/codecs/bool.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/contract-address.js +92 -0
- package/dist/cjs/sdk/utils/wit/codecs/contract-address.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/index.js +29 -0
- package/dist/cjs/sdk/utils/wit/codecs/index.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/list.js +21 -95
- package/dist/cjs/sdk/utils/wit/codecs/list.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/numerics.js +228 -0
- package/dist/cjs/sdk/utils/wit/codecs/numerics.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/option.js +21 -72
- package/dist/cjs/sdk/utils/wit/codecs/option.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/result.js +32 -0
- package/dist/cjs/sdk/utils/wit/codecs/result.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/string.js +16 -21
- package/dist/cjs/sdk/utils/wit/codecs/string.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/unit.js +11 -19
- package/dist/cjs/sdk/utils/wit/codecs/unit.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/util.js +185 -0
- package/dist/cjs/sdk/utils/wit/codecs/util.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js +297 -163
- package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js +214 -221
- package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
- package/dist/cjs/wit/built-ins.js +19 -0
- package/dist/cjs/wit/built-ins.js.map +1 -0
- package/dist/cjs/wit/regex.js +1 -1
- package/dist/cjs/wit/regex.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/errors/signature.js +17 -2
- package/dist/cjs/wit/wit-parser/core/errors/signature.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/signatures.js +18 -0
- package/dist/cjs/wit/wit-parser/core/signatures.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/types/{records.js → user-defined.js} +1 -1
- package/dist/cjs/wit/wit-parser/core/types/user-defined.js.map +1 -0
- package/dist/cjs/wit/wit-parser/core/user-defined.js +271 -0
- package/dist/cjs/wit/wit-parser/core/user-defined.js.map +1 -0
- package/dist/cjs/wit/wit-parser/core/utils.js +29 -7
- package/dist/cjs/wit/wit-parser/core/utils.js.map +1 -1
- package/dist/cjs/wit/wit-parser/parse-wit-parameter.js +9 -3
- package/dist/cjs/wit/wit-parser/parse-wit-parameter.js.map +1 -1
- package/dist/cjs/wit/wit-parser/parse-wit.js +7 -3
- package/dist/cjs/wit/wit-parser/parse-wit.js.map +1 -1
- package/dist/esm/sdk/actions/kontor/public/call-view.js.map +1 -1
- package/dist/esm/sdk/chains/definitions/signet.js +2 -2
- package/dist/esm/sdk/test/e2e.test-deprecated.js +197 -0
- package/dist/esm/sdk/test/e2e.test-deprecated.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/bool.js +9 -21
- package/dist/esm/sdk/utils/wit/codecs/bool.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/contract-address.js +92 -0
- package/dist/esm/sdk/utils/wit/codecs/contract-address.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/index.js +9 -0
- package/dist/esm/sdk/utils/wit/codecs/index.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/list.js +20 -114
- package/dist/esm/sdk/utils/wit/codecs/list.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/numerics.js +234 -0
- package/dist/esm/sdk/utils/wit/codecs/numerics.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/option.js +21 -88
- package/dist/esm/sdk/utils/wit/codecs/option.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/result.js +29 -0
- package/dist/esm/sdk/utils/wit/codecs/result.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/string.js +22 -22
- package/dist/esm/sdk/utils/wit/codecs/string.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/unit.js +12 -21
- package/dist/esm/sdk/utils/wit/codecs/unit.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/util.js +181 -0
- package/dist/esm/sdk/utils/wit/codecs/util.js.map +1 -0
- package/dist/esm/sdk/utils/wit/decode-wit-parameter.js +322 -188
- package/dist/esm/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
- package/dist/esm/sdk/utils/wit/encode-wit-parameters.js +230 -233
- package/dist/esm/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/wit/built-ins.js +16 -0
- package/dist/esm/wit/built-ins.js.map +1 -0
- package/dist/esm/wit/regex.js +1 -1
- package/dist/esm/wit/regex.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/errors/signature.js +15 -1
- package/dist/esm/wit/wit-parser/core/errors/signature.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/signatures.js +14 -0
- package/dist/esm/wit/wit-parser/core/signatures.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/types/signatures.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/types/user-defined.js +2 -0
- package/dist/esm/wit/wit-parser/core/types/user-defined.js.map +1 -0
- package/dist/esm/wit/wit-parser/core/types/utils.js +25 -0
- package/dist/esm/wit/wit-parser/core/types/utils.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/user-defined.js +280 -0
- package/dist/esm/wit/wit-parser/core/user-defined.js.map +1 -0
- package/dist/esm/wit/wit-parser/core/utils.js +33 -36
- package/dist/esm/wit/wit-parser/core/utils.js.map +1 -1
- package/dist/esm/wit/wit-parser/parse-wit-parameter.js +10 -4
- package/dist/esm/wit/wit-parser/parse-wit-parameter.js.map +1 -1
- package/dist/esm/wit/wit-parser/parse-wit.js +8 -4
- package/dist/esm/wit/wit-parser/parse-wit.js.map +1 -1
- package/dist/types/sdk/actions/kontor/public/call-view.d.ts +2 -1
- package/dist/types/sdk/actions/kontor/public/call-view.d.ts.map +1 -1
- package/dist/types/sdk/chains/definitions/signet.d.ts +2 -2
- package/dist/types/sdk/test/e2e.test-deprecated.d.ts +2 -0
- package/dist/types/sdk/test/e2e.test-deprecated.d.ts.map +1 -0
- package/dist/types/sdk/types/contract.d.ts +5 -5
- package/dist/types/sdk/types/contract.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/bool.d.ts +2 -2
- package/dist/types/sdk/utils/wit/codecs/bool.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts +5 -0
- package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/index.d.ts +9 -0
- package/dist/types/sdk/utils/wit/codecs/index.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/list.d.ts +2 -16
- package/dist/types/sdk/utils/wit/codecs/list.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/numerics.d.ts +14 -0
- package/dist/types/sdk/utils/wit/codecs/numerics.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/option.d.ts +3 -23
- package/dist/types/sdk/utils/wit/codecs/option.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/result.d.ts +4 -0
- package/dist/types/sdk/utils/wit/codecs/result.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/string.d.ts +6 -2
- package/dist/types/sdk/utils/wit/codecs/string.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/types.d.ts +4 -0
- package/dist/types/sdk/utils/wit/codecs/types.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/unit.d.ts +2 -11
- package/dist/types/sdk/utils/wit/codecs/unit.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/util.d.ts +12 -0
- package/dist/types/sdk/utils/wit/codecs/util.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts +9 -31
- package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts +9 -1
- package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts.map +1 -1
- package/dist/types/wit/built-ins.d.ts +6 -0
- package/dist/types/wit/built-ins.d.ts.map +1 -0
- package/dist/types/wit/regex.d.ts.map +1 -1
- package/dist/types/wit/utils.d.ts +53 -33
- package/dist/types/wit/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/errors/signature.d.ts +7 -1
- package/dist/types/wit/wit-parser/core/errors/signature.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/signatures.d.ts +10 -0
- package/dist/types/wit/wit-parser/core/signatures.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/types/signatures.d.ts +6 -2
- package/dist/types/wit/wit-parser/core/types/signatures.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/types/user-defined.d.ts +134 -0
- package/dist/types/wit/wit-parser/core/types/user-defined.d.ts.map +1 -0
- package/dist/types/wit/wit-parser/core/types/utils.d.ts +86 -11
- package/dist/types/wit/wit-parser/core/types/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/user-defined.d.ts +19 -0
- package/dist/types/wit/wit-parser/core/user-defined.d.ts.map +1 -0
- package/dist/types/wit/wit-parser/core/utils.d.ts +8 -4
- package/dist/types/wit/wit-parser/core/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts +11 -5
- package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/parse-wit.d.ts +7 -3
- package/dist/types/wit/wit-parser/parse-wit.d.ts.map +1 -1
- package/dist/types/wit/wit.d.ts +20 -12
- package/dist/types/wit/wit.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/sdk/actions/get-contract.test-d.ts +430 -50
- package/src/sdk/actions/get-contract.test.ts +324 -24
- package/src/sdk/actions/kontor/public/call-view.ts +2 -1
- package/src/sdk/actions/kontor/public/proc-contract.test-d.ts +107 -0
- package/src/sdk/actions/kontor/public/proc-contract.test.ts +234 -21
- package/src/sdk/actions/kontor/public/view-contract.test-d.ts +240 -0
- package/src/sdk/actions/kontor/public/view-contract.test.ts +613 -18
- package/src/sdk/chains/definitions/signet.ts +2 -2
- package/src/sdk/clients/base/create-rpc-client.test.ts +2 -2
- package/src/sdk/clients/create-public-client.test.ts +2 -2
- package/src/sdk/clients/kontor/create-public-client.test.ts +2 -2
- package/src/sdk/clients/transports/http-rpc.test.ts +0 -24
- package/src/sdk/test/e2e.test-deprecated.ts +195 -0
- package/src/sdk/types/contract.test-d.ts +489 -55
- package/src/sdk/types/contract.ts +6 -7
- package/src/sdk/utils/wit/codecs/bool.test.ts +29 -0
- package/src/sdk/utils/wit/codecs/bool.ts +10 -25
- package/src/sdk/utils/wit/codecs/contract-address.test.ts +37 -0
- package/src/sdk/utils/wit/codecs/contract-address.ts +114 -0
- package/src/sdk/utils/wit/codecs/index.ts +20 -0
- package/src/sdk/utils/wit/codecs/list.test-d.ts +13 -0
- package/src/sdk/utils/wit/codecs/list.test.ts +55 -0
- package/src/sdk/utils/wit/codecs/list.ts +21 -150
- package/src/sdk/utils/wit/codecs/numerics.test.ts +399 -0
- package/src/sdk/utils/wit/codecs/numerics.ts +304 -0
- package/src/sdk/utils/wit/codecs/option.test.ts +71 -0
- package/src/sdk/utils/wit/codecs/option.ts +21 -120
- package/src/sdk/utils/wit/codecs/result.test.ts +82 -0
- package/src/sdk/utils/wit/codecs/result.ts +37 -0
- package/src/sdk/utils/wit/codecs/string.test.ts +62 -0
- package/src/sdk/utils/wit/codecs/string.ts +23 -25
- package/src/sdk/utils/wit/codecs/types.ts +5 -0
- package/src/sdk/utils/wit/codecs/unit.test.ts +27 -0
- package/src/sdk/utils/wit/codecs/unit.ts +14 -38
- package/src/sdk/utils/wit/codecs/util.test.ts +221 -0
- package/src/sdk/utils/wit/codecs/util.ts +193 -0
- package/src/sdk/utils/wit/decode-wit-parameter.test.ts +1264 -32
- package/src/sdk/utils/wit/decode-wit-parameter.ts +508 -211
- package/src/sdk/utils/wit/encode-wit-parameters.test.ts +955 -91
- package/src/sdk/utils/wit/encode-wit-parameters.ts +277 -274
- package/src/sdk/utils/wit/get-wit-item.test.ts +1 -1
- package/src/wit/built-ins.ts +23 -0
- package/src/wit/regex.ts +1 -1
- package/src/wit/utils.ts +120 -74
- package/src/wit/wit-parser/core/errors/signature.ts +13 -2
- package/src/wit/wit-parser/core/signatures.ts +28 -0
- package/src/wit/wit-parser/core/types/signatures.test-d.ts +21 -0
- package/src/wit/wit-parser/core/types/signatures.ts +19 -2
- package/src/wit/wit-parser/core/types/user-defined.test-d.ts +1308 -0
- package/src/wit/wit-parser/core/types/user-defined.ts +412 -0
- package/src/wit/wit-parser/core/types/utils.test-d.ts +43 -2
- package/src/wit/wit-parser/core/types/utils.ts +143 -14
- package/src/wit/wit-parser/core/user-defined.test.ts +609 -0
- package/src/wit/wit-parser/core/user-defined.ts +392 -0
- package/src/wit/wit-parser/core/utils.test.ts +334 -115
- package/src/wit/wit-parser/core/utils.ts +54 -38
- package/src/wit/wit-parser/parse-wit-parameter.test.ts +282 -4
- package/src/wit/wit-parser/parse-wit-parameter.ts +37 -11
- package/src/wit/wit-parser/parse-wit.test.ts +738 -12
- package/src/wit/wit-parser/parse-wit.ts +25 -10
- package/src/wit/wit.ts +37 -16
- package/vitest.config.ts +5 -0
- package/dist/cjs/sdk/utils/wit/codecs/decimal.js +0 -148
- package/dist/cjs/sdk/utils/wit/codecs/decimal.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/enum.js +0 -94
- package/dist/cjs/sdk/utils/wit/codecs/enum.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/integer.js +0 -125
- package/dist/cjs/sdk/utils/wit/codecs/integer.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/s64.js +0 -57
- package/dist/cjs/sdk/utils/wit/codecs/s64.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/u64.js +0 -56
- package/dist/cjs/sdk/utils/wit/codecs/u64.js.map +0 -1
- package/dist/cjs/wit/wit-parser/core/records.js +0 -70
- package/dist/cjs/wit/wit-parser/core/records.js.map +0 -1
- package/dist/cjs/wit/wit-parser/core/types/records.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/decimal.js +0 -165
- package/dist/esm/sdk/utils/wit/codecs/decimal.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/enum.js +0 -104
- package/dist/esm/sdk/utils/wit/codecs/enum.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/integer.js +0 -167
- package/dist/esm/sdk/utils/wit/codecs/integer.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/s64.js +0 -65
- package/dist/esm/sdk/utils/wit/codecs/s64.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/u64.js +0 -63
- package/dist/esm/sdk/utils/wit/codecs/u64.js.map +0 -1
- package/dist/esm/wit/wit-parser/core/records.js +0 -73
- package/dist/esm/wit/wit-parser/core/records.js.map +0 -1
- package/dist/esm/wit/wit-parser/core/types/records.js +0 -2
- package/dist/esm/wit/wit-parser/core/types/records.js.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/decimal.d.ts +0 -42
- package/dist/types/sdk/utils/wit/codecs/decimal.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/enum.d.ts +0 -49
- package/dist/types/sdk/utils/wit/codecs/enum.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/integer.d.ts +0 -36
- package/dist/types/sdk/utils/wit/codecs/integer.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/s64.d.ts +0 -23
- package/dist/types/sdk/utils/wit/codecs/s64.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/u64.d.ts +0 -23
- package/dist/types/sdk/utils/wit/codecs/u64.d.ts.map +0 -1
- package/dist/types/wit/wit-parser/core/records.d.ts +0 -4
- package/dist/types/wit/wit-parser/core/records.d.ts.map +0 -1
- package/dist/types/wit/wit-parser/core/types/records.d.ts +0 -51
- package/dist/types/wit/wit-parser/core/types/records.d.ts.map +0 -1
- package/src/sdk/test/e2e.test.ts +0 -194
- package/src/sdk/utils/wit/codecs/decimal.ts +0 -215
- package/src/sdk/utils/wit/codecs/enum.ts +0 -114
- package/src/sdk/utils/wit/codecs/integer.ts +0 -193
- package/src/sdk/utils/wit/codecs/s64.ts +0 -76
- package/src/sdk/utils/wit/codecs/u64.ts +0 -73
- package/src/wit/wit-parser/core/records.test.ts +0 -69
- package/src/wit/wit-parser/core/records.ts +0 -101
- package/src/wit/wit-parser/core/types/records.test-d.ts +0 -331
- package/src/wit/wit-parser/core/types/records.ts +0 -91
|
@@ -1,72 +1,452 @@
|
|
|
1
|
-
import { expectTypeOf, test } from "vitest";
|
|
1
|
+
import { expectTypeOf, test, assertType } from "vitest";
|
|
2
2
|
import { parseWit } from "../../wit/wit-parser/parse-wit.js";
|
|
3
3
|
import {
|
|
4
|
-
// getContract,
|
|
5
4
|
type GetContractReturnType,
|
|
6
5
|
type KebabToCamel,
|
|
7
6
|
type GetViewFunction,
|
|
8
|
-
|
|
7
|
+
type GetProcFunction,
|
|
8
|
+
getContract,
|
|
9
9
|
} from "./get-contract.js";
|
|
10
|
+
import type { KontorIndexerClient } from "../clients/kontor/create-public-client.js";
|
|
11
|
+
import type { Chain } from "../types/chain.js";
|
|
12
|
+
import type { UtxoId } from "../types/misc.js";
|
|
13
|
+
import type { Account } from "../accounts/types.js";
|
|
10
14
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"export
|
|
17
|
-
"export
|
|
18
|
-
"export
|
|
19
|
-
|
|
15
|
+
const nativeTokenRaw = [
|
|
16
|
+
"record balance { acc: string, amt: decimal }",
|
|
17
|
+
"record transfer { src: string, dst: string, amt: decimal }",
|
|
18
|
+
"record burn { src: string, amt: decimal }",
|
|
19
|
+
"record mint { dst: string, amt: decimal }",
|
|
20
|
+
"export mint: func(ctx: borrow<proc-context>, amt: decimal) -> result<mint, error>;",
|
|
21
|
+
"export burn: func(ctx: borrow<proc-context>, amt: decimal) -> result<burn, error>;",
|
|
22
|
+
"export transfer: func(ctx: borrow<proc-context>, dst: string, amt: decimal) -> result<transfer, error>;",
|
|
23
|
+
"export balance: func(ctx: borrow<view-context>, acc: string) -> option<decimal>;",
|
|
24
|
+
"export balances: func(ctx: borrow<view-context>) -> list<balance>;",
|
|
25
|
+
"export total-supply: func(ctx: borrow<view-context>) -> decimal;",
|
|
26
|
+
"export attach: func(ctx: borrow<proc-context>, vout: u64, amt: decimal) -> result<transfer, error>;",
|
|
27
|
+
"export detach: func(ctx: borrow<proc-context>) -> result<transfer, error>;",
|
|
20
28
|
] as const;
|
|
21
29
|
|
|
22
|
-
const
|
|
30
|
+
const nativeToken = parseWit(nativeTokenRaw);
|
|
23
31
|
|
|
24
32
|
test("KebabToCamel basic mapping", () => {
|
|
25
|
-
type A = KebabToCamel<"
|
|
26
|
-
type B = KebabToCamel<"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expectTypeOf<A>().toEqualTypeOf<"cachedValues">();
|
|
30
|
-
expectTypeOf<B>().toEqualTypeOf<"fibOfSub">();
|
|
31
|
-
expectTypeOf<C>().toEqualTypeOf<"fib">();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test("GetContractReturnType", () => {
|
|
35
|
-
// expectTypeOf<GetContractReturnType<typeof wit>>().toEqualTypeOf<{
|
|
36
|
-
// view: {
|
|
37
|
-
// cachedValues: never;
|
|
38
|
-
// fibAsView: never;
|
|
39
|
-
// readWithRecordArg: never;
|
|
40
|
-
// readTools: never;
|
|
41
|
-
// };
|
|
42
|
-
// proc: {}
|
|
43
|
-
// }>;
|
|
33
|
+
type A = KebabToCamel<"total-supply">;
|
|
34
|
+
type B = KebabToCamel<"balance">;
|
|
35
|
+
expectTypeOf<A>().toEqualTypeOf<"totalSupply">();
|
|
36
|
+
expectTypeOf<B>().toEqualTypeOf<"balance">();
|
|
44
37
|
});
|
|
38
|
+
|
|
39
|
+
test("GetContractReturnType has view and proc", () => {
|
|
40
|
+
type Contract = GetContractReturnType<typeof nativeToken>;
|
|
41
|
+
|
|
42
|
+
expectTypeOf<Contract>().toHaveProperty("view");
|
|
43
|
+
expectTypeOf<Contract>().toHaveProperty("proc");
|
|
44
|
+
expectTypeOf<Contract>().toHaveProperty("wit");
|
|
45
|
+
expectTypeOf<Contract>().toHaveProperty("contractAddress");
|
|
46
|
+
});
|
|
47
|
+
|
|
45
48
|
test("GetContractReturnType view keys are camelCased", () => {
|
|
46
|
-
type ViewKeys = keyof GetContractReturnType<typeof
|
|
49
|
+
type ViewKeys = keyof GetContractReturnType<typeof nativeToken>["view"];
|
|
50
|
+
|
|
51
|
+
expectTypeOf<ViewKeys>().toEqualTypeOf<
|
|
52
|
+
"balance" | "balances" | "totalSupply"
|
|
53
|
+
>();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test("GetContractReturnType proc keys are camelCased", () => {
|
|
57
|
+
type ProcKeys = keyof GetContractReturnType<typeof nativeToken>["proc"];
|
|
58
|
+
|
|
59
|
+
expectTypeOf<ProcKeys>().toEqualTypeOf<
|
|
60
|
+
"mint" | "burn" | "transfer" | "attach" | "detach"
|
|
61
|
+
>();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test("GetViewFunction for balance - function signature", () => {
|
|
65
|
+
type BalanceFn = GetViewFunction<
|
|
66
|
+
true,
|
|
67
|
+
undefined,
|
|
68
|
+
typeof nativeToken,
|
|
69
|
+
"balance"
|
|
70
|
+
>;
|
|
71
|
+
|
|
72
|
+
// Test that it accepts the right parameters
|
|
73
|
+
type Params = Parameters<BalanceFn>;
|
|
74
|
+
|
|
75
|
+
// Should accept args array with string
|
|
76
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
|
|
77
|
+
|
|
78
|
+
// Return type should be Promise<option<decimal>>
|
|
79
|
+
type Return = Awaited<ReturnType<BalanceFn>>;
|
|
80
|
+
expectTypeOf<Return>().toEqualTypeOf<["none"] | ["some", [bigint, number]]>();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test("GetViewFunction for balances - no args function signature", () => {
|
|
84
|
+
type BalancesFn = GetViewFunction<
|
|
85
|
+
true,
|
|
86
|
+
undefined,
|
|
87
|
+
typeof nativeToken,
|
|
88
|
+
"balances"
|
|
89
|
+
>;
|
|
90
|
+
|
|
91
|
+
// Test that it accepts optional empty args
|
|
92
|
+
type Params = Parameters<BalancesFn>;
|
|
93
|
+
|
|
94
|
+
// Should accept optional args
|
|
95
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<{
|
|
96
|
+
chain: Chain | null | undefined;
|
|
97
|
+
}>();
|
|
98
|
+
|
|
99
|
+
// Return type should be Promise<list<balance>>
|
|
100
|
+
type Return = Awaited<ReturnType<BalancesFn>>;
|
|
101
|
+
expectTypeOf<Return>().toEqualTypeOf<
|
|
102
|
+
readonly {
|
|
103
|
+
acc: string;
|
|
104
|
+
amt: [bigint, number];
|
|
105
|
+
}[]
|
|
106
|
+
>();
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test("GetViewFunction for totalSupply - return type", () => {
|
|
110
|
+
type TotalSupplyFn = GetViewFunction<
|
|
111
|
+
true,
|
|
112
|
+
undefined,
|
|
113
|
+
typeof nativeToken,
|
|
114
|
+
"total-supply"
|
|
115
|
+
>;
|
|
116
|
+
|
|
117
|
+
type Return = Awaited<ReturnType<TotalSupplyFn>>;
|
|
118
|
+
expectTypeOf<Return>().toEqualTypeOf<[bigint, number]>();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test("GetProcFunction for mint - function signature", () => {
|
|
122
|
+
type MintFn = GetProcFunction<
|
|
123
|
+
true,
|
|
124
|
+
undefined,
|
|
125
|
+
undefined,
|
|
126
|
+
typeof nativeToken,
|
|
127
|
+
"mint"
|
|
128
|
+
>;
|
|
129
|
+
|
|
130
|
+
// Test parameters
|
|
131
|
+
type Params = Parameters<MintFn>;
|
|
132
|
+
|
|
133
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [[bigint, number]]>();
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
test("GetProcFunction for transfer - multiple args", () => {
|
|
137
|
+
type TransferFn = GetProcFunction<
|
|
138
|
+
true,
|
|
139
|
+
undefined,
|
|
140
|
+
undefined,
|
|
141
|
+
typeof nativeToken,
|
|
142
|
+
"transfer"
|
|
143
|
+
>;
|
|
144
|
+
|
|
145
|
+
type Params = Parameters<TransferFn>;
|
|
146
|
+
|
|
147
|
+
// Should accept dst string and decimal amount
|
|
148
|
+
assertType<Params[0]>(["recipient_address", [75n, 18]]);
|
|
149
|
+
|
|
150
|
+
expectTypeOf<Params[1]>().toEqualTypeOf<{
|
|
151
|
+
account: [string, string] | Account | null;
|
|
152
|
+
chain: Chain | null | undefined;
|
|
153
|
+
utxos: UtxoId[];
|
|
154
|
+
gas: bigint;
|
|
155
|
+
satsPerVByte: number;
|
|
156
|
+
}>();
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
test("GetProcFunction for detach - no args function", () => {
|
|
160
|
+
type DetachFn = GetProcFunction<
|
|
161
|
+
true,
|
|
162
|
+
undefined,
|
|
163
|
+
undefined,
|
|
164
|
+
typeof nativeToken,
|
|
165
|
+
"detach"
|
|
166
|
+
>;
|
|
167
|
+
|
|
168
|
+
type Params = Parameters<DetachFn>;
|
|
169
|
+
|
|
170
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<{
|
|
171
|
+
account: [string, string] | Account | null;
|
|
172
|
+
chain: Chain | null | undefined;
|
|
173
|
+
utxos: UtxoId[];
|
|
174
|
+
gas: bigint;
|
|
175
|
+
satsPerVByte: number;
|
|
176
|
+
}>();
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test("GetContractReturnType - actual function types on contract object", () => {
|
|
180
|
+
type Contract = GetContractReturnType<typeof nativeToken>;
|
|
181
|
+
|
|
182
|
+
// Test view functions
|
|
183
|
+
type BalanceFunc = Contract["view"]["balance"];
|
|
184
|
+
type BalancesFunc = Contract["view"]["balances"];
|
|
185
|
+
type TotalSupplyFunc = Contract["view"]["totalSupply"];
|
|
186
|
+
|
|
187
|
+
// Balance should be a function
|
|
188
|
+
expectTypeOf<BalanceFunc>().toBeFunction();
|
|
189
|
+
expectTypeOf<BalancesFunc>().toBeFunction();
|
|
190
|
+
expectTypeOf<TotalSupplyFunc>().toBeFunction();
|
|
191
|
+
|
|
192
|
+
// Test proc functions
|
|
193
|
+
type MintFunc = Contract["proc"]["mint"];
|
|
194
|
+
type BurnFunc = Contract["proc"]["burn"];
|
|
195
|
+
type TransferFunc = Contract["proc"]["transfer"];
|
|
196
|
+
type AttachFunc = Contract["proc"]["attach"];
|
|
197
|
+
type DetachFunc = Contract["proc"]["detach"];
|
|
198
|
+
|
|
199
|
+
expectTypeOf<MintFunc>().toBeFunction();
|
|
200
|
+
expectTypeOf<BurnFunc>().toBeFunction();
|
|
201
|
+
expectTypeOf<TransferFunc>().toBeFunction();
|
|
202
|
+
expectTypeOf<AttachFunc>().toBeFunction();
|
|
203
|
+
expectTypeOf<DetachFunc>().toBeFunction();
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test("getContract runtime - contract structure", () => {
|
|
207
|
+
const mockClient = {} as KontorIndexerClient;
|
|
208
|
+
|
|
209
|
+
const contract = getContract({
|
|
210
|
+
wit: nativeToken,
|
|
211
|
+
contractAddress: "token_0_0",
|
|
212
|
+
client: mockClient,
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Test that properties exist at type level
|
|
216
|
+
expectTypeOf(contract).toHaveProperty("view");
|
|
217
|
+
expectTypeOf(contract).toHaveProperty("proc");
|
|
218
|
+
expectTypeOf(contract).toHaveProperty("wit");
|
|
219
|
+
expectTypeOf(contract).toHaveProperty("contractAddress");
|
|
220
|
+
|
|
221
|
+
// Test that view functions have correct names
|
|
222
|
+
expectTypeOf(contract.view).toHaveProperty("balance");
|
|
223
|
+
expectTypeOf(contract.view).toHaveProperty("balances");
|
|
224
|
+
expectTypeOf(contract.view).toHaveProperty("totalSupply");
|
|
225
|
+
|
|
226
|
+
// Test that proc functions have correct names
|
|
227
|
+
expectTypeOf(contract.proc).toHaveProperty("mint");
|
|
228
|
+
expectTypeOf(contract.proc).toHaveProperty("burn");
|
|
229
|
+
expectTypeOf(contract.proc).toHaveProperty("transfer");
|
|
230
|
+
expectTypeOf(contract.proc).toHaveProperty("attach");
|
|
231
|
+
expectTypeOf(contract.proc).toHaveProperty("detach");
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// ─────────────────────────────────────────────────────────────────
|
|
235
|
+
// Storage Agreement Contract Tests
|
|
236
|
+
// ─────────────────────────────────────────────────────────────────
|
|
237
|
+
|
|
238
|
+
const storageAgreementRaw = [
|
|
239
|
+
"record agreement-data { agreement-id: string, file-id: string, root: list<u8>, depth: u64, active: bool }",
|
|
240
|
+
"record create-agreement-result { agreement-id: string }",
|
|
241
|
+
"record join-agreement-result { agreement-id: string, node-id: string, activated: bool }",
|
|
242
|
+
"record leave-agreement-result { agreement-id: string, node-id: string }",
|
|
243
|
+
"export init: func(ctx: borrow<proc-context>);",
|
|
244
|
+
"export create-agreement: func(ctx: borrow<proc-context>, descriptor: raw-file-descriptor) -> result<create-agreement-result, error>;",
|
|
245
|
+
"export get-agreement: func(ctx: borrow<view-context>, agreement-id: string) -> option<agreement-data>;",
|
|
246
|
+
"export agreement-count: func(ctx: borrow<view-context>) -> u64;",
|
|
247
|
+
"export join-agreement: func(ctx: borrow<proc-context>, agreement-id: string, node-id: string) -> result<join-agreement-result, error>;",
|
|
248
|
+
"export leave-agreement: func(ctx: borrow<proc-context>, agreement-id: string, node-id: string) -> result<leave-agreement-result, error>;",
|
|
249
|
+
"export get-agreement-nodes: func(ctx: borrow<view-context>, agreement-id: string) -> option<list<string>>;",
|
|
250
|
+
"export is-node-in-agreement: func(ctx: borrow<view-context>, agreement-id: string, node-id: string) -> bool;",
|
|
251
|
+
"export get-min-nodes: func(ctx: borrow<view-context>) -> u64;",
|
|
252
|
+
] as const;
|
|
253
|
+
|
|
254
|
+
const storageAgreement = parseWit(storageAgreementRaw);
|
|
255
|
+
|
|
256
|
+
test("Storage Agreement - view keys are camelCased", () => {
|
|
257
|
+
type ViewKeys = keyof GetContractReturnType<typeof storageAgreement>["view"];
|
|
47
258
|
|
|
48
|
-
// For FibAbi, the only view fn is "cached-values", so this should be just "cachedValues"
|
|
49
259
|
expectTypeOf<ViewKeys>().toEqualTypeOf<
|
|
50
|
-
|
|
260
|
+
| "getAgreement"
|
|
261
|
+
| "agreementCount"
|
|
262
|
+
| "getAgreementNodes"
|
|
263
|
+
| "isNodeInAgreement"
|
|
264
|
+
| "getMinNodes"
|
|
265
|
+
>();
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
test("Storage Agreement - proc keys are camelCased", () => {
|
|
269
|
+
type ProcKeys = keyof GetContractReturnType<typeof storageAgreement>["proc"];
|
|
270
|
+
|
|
271
|
+
expectTypeOf<ProcKeys>().toEqualTypeOf<
|
|
272
|
+
"createAgreement" | "joinAgreement" | "leaveAgreement"
|
|
273
|
+
>();
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
test("Storage Agreement - get-agreement view function", () => {
|
|
277
|
+
type GetAgreementFn = GetViewFunction<
|
|
278
|
+
true,
|
|
279
|
+
undefined,
|
|
280
|
+
typeof storageAgreement,
|
|
281
|
+
"get-agreement"
|
|
282
|
+
>;
|
|
283
|
+
|
|
284
|
+
type Params = Parameters<GetAgreementFn>;
|
|
285
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
|
|
286
|
+
|
|
287
|
+
type Return = Awaited<ReturnType<GetAgreementFn>>;
|
|
288
|
+
|
|
289
|
+
expectTypeOf<Return>().toEqualTypeOf<
|
|
290
|
+
| [
|
|
291
|
+
"some",
|
|
292
|
+
{
|
|
293
|
+
["agreement-id"]: string;
|
|
294
|
+
["file-id"]: string;
|
|
295
|
+
root: readonly number[];
|
|
296
|
+
depth: bigint;
|
|
297
|
+
active: boolean;
|
|
298
|
+
},
|
|
299
|
+
]
|
|
300
|
+
| ["none"]
|
|
51
301
|
>();
|
|
52
302
|
});
|
|
53
303
|
|
|
54
|
-
test("
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
304
|
+
test("Storage Agreement - agreement-count view function", () => {
|
|
305
|
+
type AgreementCountFn = GetViewFunction<
|
|
306
|
+
true,
|
|
307
|
+
undefined,
|
|
308
|
+
typeof storageAgreement,
|
|
309
|
+
"agreement-count"
|
|
310
|
+
>;
|
|
311
|
+
|
|
312
|
+
type Params = Parameters<AgreementCountFn>;
|
|
313
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<{
|
|
314
|
+
chain: Chain | null | undefined;
|
|
315
|
+
}>();
|
|
316
|
+
|
|
317
|
+
type Return = Awaited<ReturnType<AgreementCountFn>>;
|
|
318
|
+
expectTypeOf<Return>().toEqualTypeOf<bigint>();
|
|
64
319
|
});
|
|
65
320
|
|
|
66
|
-
test("
|
|
67
|
-
type
|
|
321
|
+
test("Storage Agreement - get-agreement-nodes view function", () => {
|
|
322
|
+
type GetAgreementNodesFn = GetViewFunction<
|
|
323
|
+
true,
|
|
324
|
+
undefined,
|
|
325
|
+
typeof storageAgreement,
|
|
326
|
+
"get-agreement-nodes"
|
|
327
|
+
>;
|
|
328
|
+
|
|
329
|
+
type Params = Parameters<GetAgreementNodesFn>;
|
|
330
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
|
|
331
|
+
|
|
332
|
+
type Return = Awaited<ReturnType<GetAgreementNodesFn>>;
|
|
333
|
+
expectTypeOf<Return>().toEqualTypeOf<
|
|
334
|
+
["some", readonly string[]] | ["none"]
|
|
335
|
+
>();
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
test("Storage Agreement - is-node-in-agreement view function", () => {
|
|
339
|
+
type IsNodeInAgreementFn = GetViewFunction<
|
|
340
|
+
true,
|
|
341
|
+
undefined,
|
|
342
|
+
typeof storageAgreement,
|
|
343
|
+
"is-node-in-agreement"
|
|
344
|
+
>;
|
|
345
|
+
|
|
346
|
+
type Params = Parameters<IsNodeInAgreementFn>;
|
|
347
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string, string]>();
|
|
348
|
+
|
|
349
|
+
type Return = Awaited<ReturnType<IsNodeInAgreementFn>>;
|
|
350
|
+
expectTypeOf<Return>().toEqualTypeOf<boolean>();
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
test("Storage Agreement - get-min-nodes view function", () => {
|
|
354
|
+
type GetMinNodesFn = GetViewFunction<
|
|
355
|
+
true,
|
|
356
|
+
undefined,
|
|
357
|
+
typeof storageAgreement,
|
|
358
|
+
"get-min-nodes"
|
|
359
|
+
>;
|
|
360
|
+
|
|
361
|
+
type Params = Parameters<GetMinNodesFn>;
|
|
362
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<{
|
|
363
|
+
chain: Chain | null | undefined;
|
|
364
|
+
}>();
|
|
365
|
+
|
|
366
|
+
type Return = Awaited<ReturnType<GetMinNodesFn>>;
|
|
367
|
+
expectTypeOf<Return>().toEqualTypeOf<bigint>();
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
test("Storage Agreement - create-agreement proc function", () => {
|
|
371
|
+
type CreateAgreementFn = GetProcFunction<
|
|
372
|
+
true,
|
|
373
|
+
undefined,
|
|
374
|
+
undefined,
|
|
375
|
+
typeof storageAgreement,
|
|
376
|
+
"create-agreement"
|
|
377
|
+
>;
|
|
378
|
+
|
|
379
|
+
type Params = Parameters<CreateAgreementFn>;
|
|
380
|
+
// raw-file-descriptor is an unknown type
|
|
381
|
+
expectTypeOf<Params[0]>().toEqualTypeOf<readonly [unknown]>();
|
|
382
|
+
expectTypeOf<Params[1]>().toEqualTypeOf<{
|
|
383
|
+
account: [string, string] | Account | null;
|
|
384
|
+
chain: Chain | null | undefined;
|
|
385
|
+
utxos: UtxoId[];
|
|
386
|
+
gas: bigint;
|
|
387
|
+
satsPerVByte: number;
|
|
388
|
+
}>();
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
test("Storage Agreement - join-agreement proc function", () => {
|
|
392
|
+
type JoinAgreementFn = GetProcFunction<
|
|
393
|
+
true,
|
|
394
|
+
undefined,
|
|
395
|
+
undefined,
|
|
396
|
+
typeof storageAgreement,
|
|
397
|
+
"join-agreement"
|
|
398
|
+
>;
|
|
399
|
+
|
|
400
|
+
type Params = Parameters<JoinAgreementFn>;
|
|
401
|
+
assertType<Params[0]>(["agreement-123", "node-456"]);
|
|
402
|
+
|
|
403
|
+
expectTypeOf<Params[1]>().toEqualTypeOf<{
|
|
404
|
+
account: [string, string] | Account | null;
|
|
405
|
+
chain: Chain | null | undefined;
|
|
406
|
+
utxos: UtxoId[];
|
|
407
|
+
gas: bigint;
|
|
408
|
+
satsPerVByte: number;
|
|
409
|
+
}>();
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
test("Storage Agreement - leave-agreement proc function", () => {
|
|
413
|
+
type LeaveAgreementFn = GetProcFunction<
|
|
414
|
+
true,
|
|
415
|
+
undefined,
|
|
416
|
+
undefined,
|
|
417
|
+
typeof storageAgreement,
|
|
418
|
+
"leave-agreement"
|
|
419
|
+
>;
|
|
420
|
+
|
|
421
|
+
type Params = Parameters<LeaveAgreementFn>;
|
|
422
|
+
assertType<Params[0]>(["agreement-123", "node-456"]);
|
|
423
|
+
|
|
424
|
+
expectTypeOf<Params[1]>().toEqualTypeOf<{
|
|
425
|
+
account: [string, string] | Account | null;
|
|
426
|
+
chain: Chain | null | undefined;
|
|
427
|
+
utxos: UtxoId[];
|
|
428
|
+
gas: bigint;
|
|
429
|
+
satsPerVByte: number;
|
|
430
|
+
}>();
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
test("Storage Agreement - getContract runtime structure", () => {
|
|
434
|
+
const mockClient = {} as KontorIndexerClient;
|
|
435
|
+
|
|
436
|
+
const contract = getContract({
|
|
437
|
+
wit: storageAgreement,
|
|
438
|
+
contractAddress: "agreement_0_0",
|
|
439
|
+
client: mockClient,
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
// Test view functions
|
|
443
|
+
expectTypeOf(contract.view).toHaveProperty("getAgreement");
|
|
444
|
+
expectTypeOf(contract.view).toHaveProperty("agreementCount");
|
|
445
|
+
expectTypeOf(contract.view).toHaveProperty("getAgreementNodes");
|
|
446
|
+
expectTypeOf(contract.view).toHaveProperty("isNodeInAgreement");
|
|
447
|
+
expectTypeOf(contract.view).toHaveProperty("getMinNodes");
|
|
68
448
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
expectTypeOf
|
|
449
|
+
expectTypeOf(contract.proc).toHaveProperty("createAgreement");
|
|
450
|
+
expectTypeOf(contract.proc).toHaveProperty("joinAgreement");
|
|
451
|
+
expectTypeOf(contract.proc).toHaveProperty("leaveAgreement");
|
|
72
452
|
});
|