From 4abd24ceb5c76009ce47e9b2a0ed375f725e331d Mon Sep 17 00:00:00 2001 From: Dan Volkov Date: Mon, 12 Feb 2024 14:06:11 +0400 Subject: [PATCH 1/2] feat: reopenable contract provider --- src/contract/ContractProvider.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/contract/ContractProvider.ts b/src/contract/ContractProvider.ts index f359bbb..596c030 100644 --- a/src/contract/ContractProvider.ts +++ b/src/contract/ContractProvider.ts @@ -13,6 +13,7 @@ import { TupleItem } from "../tuple/tuple"; import { Maybe } from "../utils/maybe"; import { ContractState } from "./ContractState"; import { Sender } from './Sender'; +import { Contract } from './Contract'; export type ContractGetMethodResult = { stack: TupleReader; @@ -25,4 +26,12 @@ export interface ContractProvider { get(name: string, args: TupleItem[]): Promise; external(message: Cell): Promise; internal(via: Sender, args: { value: bigint | string, bounce?: Maybe, sendMode?: SendMode, body?: Maybe }): Promise; +} + +export interface ReopenableContractProvider extends ContractProvider { + reopenFor(contract: Contract): ContractProvider; +} + +export function isReopenableContractProvider(provider: ContractProvider): provider is ReopenableContractProvider { + return !!(provider as ReopenableContractProvider)['reopenFor']; } \ No newline at end of file From 651dbd8ddaea04521eb8a8c31878f05d1d0fe649 Mon Sep 17 00:00:00 2001 From: Dan Volkov Date: Mon, 12 Feb 2024 14:09:42 +0400 Subject: [PATCH 2/2] chore: add reopenable contract provider to exports --- src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index a418d53..9946937 100644 --- a/src/index.ts +++ b/src/index.ts @@ -49,7 +49,9 @@ export * from './types/_export'; export { Contract } from './contract/Contract'; export { ContractProvider, - ContractGetMethodResult + ContractGetMethodResult, + ReopenableContractProvider, + isReopenableContractProvider } from './contract/ContractProvider'; export { ContractState } from './contract/ContractState'; export { Sender, SenderArguments } from './contract/Sender';