import { ISubmittableResult } from '@polkadot/types/types';
import { SubmittableExtrinsic } from '@polkadot/api/types';
import { IResumeSessionCommitArgs, IResumeSessionInitArgs, IResumeSessionPushArgs } from '../types';
import { GearApi } from '../GearApi';
import { GearTransaction } from './Transaction';
export declare class GearResumeSession extends GearTransaction {
    protected _api: GearApi;
    constructor(_api: GearApi);
    /**
     * ## Create a session for program resume. Get session id from `ProgramResumeSessionStarted` event
     * @param args Resume program args
     * @returns Submittable result
     * @example
     * ```javascript
     * const program = await api.programStorage.getProgram(programId, oneBlockBeforePauseHash);
     * const initTx = api.program.resumeSession.init({
     *   programId,
     *   allocations: program.allocations,
     *   codeHash: program.codeHash.toHex(),
     * });
     *
     * let sessionId: HexString;
     * initTx.signAndSend(account, ({ events }) => {
     *   events.forEach(({ event: { method, data }}) => {
     *     if (method === 'ProgramResumeSessionStarted') {
     *       sessionId = data.sessionId.toNumber();
     *     }
     *   })
     * })
     * ```
     */
    init({ programId, allocations, codeHash, }: IResumeSessionInitArgs): SubmittableExtrinsic<'promise', ISubmittableResult>;
    /**
     * ## Append program memory pages to the session data.
     * @param args Push pages args
     * @returns Submittable result
     * @example
     * ```javascript
     * const pages = await api.programStorage.getProgramPages(programId, program, oneBlockBeforePauseHash);
     * for (const memPage of Object.entries(page)) {
     *   const tx = api.program.resumeSession.push({ sessionId, memoryPages: [memPage] });
     *   tx.signAndSend(account);
     * }
     * ```
     */
    push({ sessionId, memoryPages }: IResumeSessionPushArgs): SubmittableExtrinsic<'promise', ISubmittableResult>;
    /**
     * ## Finish program resume session with the given key `sessionId`.
     * @param args Commit session args
     * @returns Submittable result
     * @example
     * ```javascript
     * const tx = api.program.resumeSession.commit({ sessionId, blockCount: 20_000 });
     * tx.signAndSend(account);
     * ```
     */
    commit({ sessionId, blockCount }: IResumeSessionCommitArgs): SubmittableExtrinsic<'promise', ISubmittableResult>;
}
