From 04f42b0c5cae40980d8143132c93354c680d2088 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Fri, 30 May 2025 19:15:04 +0300 Subject: [PATCH 1/2] feat(wrappers): add messageTypes --- src/bindings/writeTypescript.ts | 47 ++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/bindings/writeTypescript.ts b/src/bindings/writeTypescript.ts index 25ccac4358..cb9fbcc4a1 100644 --- a/src/bindings/writeTypescript.ts +++ b/src/bindings/writeTypescript.ts @@ -322,6 +322,51 @@ export function writeTypescript( w.append(); } + // Internal receivers + if ( + abi.receivers && + abi.receivers.filter((v) => v.receiver === "internal").length > 0 + ) { + // Types + const receivers: string[] = []; + for (const r of abi.receivers) { + if (r.receiver !== "internal") { + continue; + } + switch (r.message.kind) { + case "empty": + { + receivers.push(`null`); + } + break; + case "typed": + { + receivers.push(r.message.type); + } + break; + case "text": + { + if ( + r.message.text !== null && + r.message.text !== undefined + ) { + receivers.push(JSON.stringify(r.message.text)); + } else { + receivers.push(`string`); + } + } + break; + case "any": + { + receivers.push(`Slice`); + } + break; + } + } + w.append(`export type ${abi.name}_messageTypes = ${receivers.join(" | ")};`); + w.append(); + } + // Wrapper w.append(`export class ${abi.name} implements Contract {`); w.inIndent(() => { @@ -450,7 +495,7 @@ export function writeTypescript( // Receiver function w.append( - `async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: ${receivers.join(" | ")}) {`, + `async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: ${abi.name}_messageTypes ) {`, ); w.inIndent(() => { w.append(); From 60f5a3b7b0f84f6d731d38f855906d89ed34bd25 Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Fri, 30 May 2025 19:17:02 +0300 Subject: [PATCH 2/2] fmt --- src/bindings/writeTypescript.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bindings/writeTypescript.ts b/src/bindings/writeTypescript.ts index cb9fbcc4a1..1cb06cae61 100644 --- a/src/bindings/writeTypescript.ts +++ b/src/bindings/writeTypescript.ts @@ -363,7 +363,9 @@ export function writeTypescript( break; } } - w.append(`export type ${abi.name}_messageTypes = ${receivers.join(" | ")};`); + w.append( + `export type ${abi.name}_messageTypes = ${receivers.join(" | ")};`, + ); w.append(); }