import { Address, Cell, Message, Transaction, ContractProvider, Contract, Sender } from "ton-core"; import { Executor } from "../executor/Executor"; import { BlockchainStorage } from "./BlockchainStorage"; import { Event } from "../event/Event"; import { TreasuryContract } from "../treasury/Treasury"; export type SendMessageResult = { transactions: Transaction[]; events: Event[]; }; export type OpenedContract = { [P in keyof F]: P extends `get${string}` ? (F[P] extends (x: ContractProvider, ...args: infer P) => infer R ? (...args: P) => R : never) : (P extends `send${string}` ? (F[P] extends (x: ContractProvider, ...args: infer P) => infer R ? (...args: P) => Promise ? PR : R; }> : never) : F[P]); }; export declare class Blockchain { #private; storage: BlockchainStorage; private networkConfig; readonly executor: Executor; readonly messageQueue: Message[]; get lt(): bigint; private constructor(); get config(): Cell; sendMessage(message: Message): Promise; pushMessage(message: Message): void; runQueue(): Promise; processQueue(): Promise; provider(address: Address, init?: { code: Cell; data: Cell; }): ContractProvider; sender(address: Address): Sender; treasury(seed: string, workchain?: number): Promise>; openContract(contract: T): OpenedContract; getContract(address: Address): Promise; setConfig(config: Cell): void; static create(opts?: { config?: Cell; storage?: BlockchainStorage; }): Promise; }