interface ParallelTransactionExecutorOptions {
    cache?: AsyncCache;
    client: SuiClient;
    coinBatchSize?: number;
    defaultGasBudget?: bigint;
    epochBoundaryWindow?: number;
    initialCoinBalance?: bigint;
    maxPoolSize?: number;
    minimumCoinBalance?: bigint;
    onEffects?: ((effects: EnumOutputShapeWithKeys<{
        V1: {
            created: [{
                digest: string;
                objectId: string;
                version: string;
            }, EnumOutputShapeWithKeys<{
                AddressOwner: string;
                Immutable: true;
                ObjectOwner: string;
                Shared: {
                    initialSharedVersion: string;
                };
            },
                | "AddressOwner"
                | "ObjectOwner"
                | "Shared"
                | "Immutable">][];
            deleted: {
                digest: string;
                objectId: string;
                version: string;
            }[];
            dependencies: string[];
            eventsDigest: null | string;
            executedEpoch: string;
            gasObject: [{
                digest: string;
                objectId: string;
                version: string;
            }, EnumOutputShapeWithKeys<{
                AddressOwner: string;
                Immutable: true;
                ObjectOwner: string;
                Shared: {
                    initialSharedVersion: string;
                };
            },
                | "AddressOwner"
                | "ObjectOwner"
                | "Shared"
                | "Immutable">];
            gasUsed: {
                computationCost: string;
                nonRefundableStorageFee: string;
                storageCost: string;
                storageRebate: string;
            };
            modifiedAtVersions: [string, string][];
            mutated: [{
                digest: string;
                objectId: string;
                version: string;
            }, EnumOutputShapeWithKeys<{
                AddressOwner: string;
                Immutable: true;
                ObjectOwner: string;
                Shared: {
                    initialSharedVersion: string;
                };
            },
                | "AddressOwner"
                | "ObjectOwner"
                | "Shared"
                | "Immutable">][];
            sharedObjects: {
                digest: string;
                objectId: string;
                version: string;
            }[];
            status: EnumOutputShapeWithKeys<{
                Failed: {
                    command: null | string;
                    error: EnumOutputShapeWithKeys<{
                        AddressDeniedForCoin: {
                            address: ...;
                            coinType: ...;
                        };
                        ArityMismatch: true;
                        CertificateDenied: true;
                        CircularObjectOwnership: {
                            object: ...;
                        };
                        CoinBalanceOverflow: true;
                        CoinTypeGlobalPause: {
                            coinType: ...;
                        };
                        CommandArgumentError: {
                            argIdx: ...;
                            kind: ...;
                        };
                        EffectsTooLarge: {
                            currentSize: ...;
                            maxSize: ...;
                        };
                        ExecutionCancelledDueToRandomnessUnavailable: true;
                        ExecutionCancelledDueToSharedObjectCongestion: {
                            congestedObjects: ...;
                        };
                        FeatureNotYetSupported: true;
                        FunctionNotFound: true;
                        InputObjectDeleted: true;
                        InsufficientCoinBalance: true;
                        InsufficientGas: true;
                        InvalidGasObject: true;
                        InvalidPublicFunctionReturnType: {
                            idx: ...;
                        };
                        InvalidTransferObject: true;
                        InvariantViolation: true;
                        MoveAbort: [(...), (...)];
                        MoveObjectTooBig: {
                            maxObjectSize: ...;
                            objectSize: ...;
                        };
                        MovePackageTooBig: {
                            maxObjectSize: ...;
                            objectSize: ...;
                        };
                        MovePrimitiveRuntimeError: (...) | (...);
                        NonEntryFunctionInvoked: true;
                        PackageUpgradeError: {
                            upgradeError: ...;
                        };
                        PublishErrorNonZeroAddress: true;
                        PublishUpgradeDependencyDowngrade: true;
                        PublishUpgradeMissingDependency: true;
                        SharedObjectOperationNotAllowed: true;
                        SuiMoveVerificationError: true;
                        SuiMoveVerificationTimedout: true;
                        TypeArgumentError: {
                            argumentIdx: ...;
                            kind: ...;
                        };
                        TypeArityMismatch: true;
                        UnusedValueWithoutDrop: {
                            resultIdx: ...;
                            secondaryIdx: ...;
                        };
                        VMInvariantViolation: true;
                        VMVerificationOrDeserializationError: true;
                        WrittenObjectsTooLarge: {
                            currentSize: ...;
                            maxSize: ...;
                        };
                    },
                        | "PackageUpgradeError"
                        | "SharedObjectOperationNotAllowed"
                        | "CommandArgumentError"
                        | "TypeArgumentError"
                        | "InsufficientGas"
                        | "InvalidGasObject"
                        | "InvariantViolation"
                        | "FeatureNotYetSupported"
                        | "MoveObjectTooBig"
                        | "MovePackageTooBig"
                        | "CircularObjectOwnership"
                        | "InsufficientCoinBalance"
                        | "CoinBalanceOverflow"
                        | "PublishErrorNonZeroAddress"
                        | "SuiMoveVerificationError"
                        | "MovePrimitiveRuntimeError"
                        | "MoveAbort"
                        | "VMVerificationOrDeserializationError"
                        | "VMInvariantViolation"
                        | "FunctionNotFound"
                        | "ArityMismatch"
                        | "TypeArityMismatch"
                        | "NonEntryFunctionInvoked"
                        | "UnusedValueWithoutDrop"
                        | "InvalidPublicFunctionReturnType"
                        | "InvalidTransferObject"
                        | "EffectsTooLarge"
                        | "PublishUpgradeMissingDependency"
                        | "PublishUpgradeDependencyDowngrade"
                        | "WrittenObjectsTooLarge"
                        | "CertificateDenied"
                        | "SuiMoveVerificationTimedout"
                        | "InputObjectDeleted"
                        | "ExecutionCancelledDueToSharedObjectCongestion"
                        | "AddressDeniedForCoin"
                        | "CoinTypeGlobalPause"
                        | "ExecutionCancelledDueToRandomnessUnavailable">;
                };
                Success: true;
            }, "Success" | "Failed">;
            transactionDigest: string;
            unwrapped: [{
                digest: string;
                objectId: string;
                version: string;
            }, EnumOutputShapeWithKeys<{
                AddressOwner: string;
                Immutable: true;
                ObjectOwner: string;
                Shared: {
                    initialSharedVersion: string;
                };
            },
                | "AddressOwner"
                | "ObjectOwner"
                | "Shared"
                | "Immutable">][];
            unwrappedThenDeleted: {
                digest: string;
                objectId: string;
                version: string;
            }[];
            wrapped: {
                digest: string;
                objectId: string;
                version: string;
            }[];
        };
        V2: {
            auxDataDigest: null | string;
            changedObjects: [string, {
                idOperation: EnumOutputShapeWithKeys<{
                    Created: true;
                    Deleted: true;
                    None: true;
                }, "None" | "Created" | "Deleted">;
                inputState: EnumOutputShapeWithKeys<{
                    Exist: [(...), (...)];
                    NotExist: true;
                }, "NotExist" | "Exist">;
                outputState: EnumOutputShapeWithKeys<{
                    NotExist: true;
                    ObjectWrite: [(...), (...)];
                    PackageWrite: [(...), (...)];
                }, "NotExist" | "ObjectWrite" | "PackageWrite">;
            }][];
            dependencies: string[];
            eventsDigest: null | string;
            executedEpoch: string;
            gasObjectIndex: null | number;
            gasUsed: {
                computationCost: string;
                nonRefundableStorageFee: string;
                storageCost: string;
                storageRebate: string;
            };
            lamportVersion: string;
            status: EnumOutputShapeWithKeys<{
                Failed: {
                    command: null | string;
                    error: EnumOutputShapeWithKeys<{
                        AddressDeniedForCoin: {
                            address: ...;
                            coinType: ...;
                        };
                        ArityMismatch: true;
                        CertificateDenied: true;
                        CircularObjectOwnership: {
                            object: ...;
                        };
                        CoinBalanceOverflow: true;
                        CoinTypeGlobalPause: {
                            coinType: ...;
                        };
                        CommandArgumentError: {
                            argIdx: ...;
                            kind: ...;
                        };
                        EffectsTooLarge: {
                            currentSize: ...;
                            maxSize: ...;
                        };
                        ExecutionCancelledDueToRandomnessUnavailable: true;
                        ExecutionCancelledDueToSharedObjectCongestion: {
                            congestedObjects: ...;
                        };
                        FeatureNotYetSupported: true;
                        FunctionNotFound: true;
                        InputObjectDeleted: true;
                        InsufficientCoinBalance: true;
                        InsufficientGas: true;
                        InvalidGasObject: true;
                        InvalidPublicFunctionReturnType: {
                            idx: ...;
                        };
                        InvalidTransferObject: true;
                        InvariantViolation: true;
                        MoveAbort: [(...), (...)];
                        MoveObjectTooBig: {
                            maxObjectSize: ...;
                            objectSize: ...;
                        };
                        MovePackageTooBig: {
                            maxObjectSize: ...;
                            objectSize: ...;
                        };
                        MovePrimitiveRuntimeError: (...) | (...);
                        NonEntryFunctionInvoked: true;
                        PackageUpgradeError: {
                            upgradeError: ...;
                        };
                        PublishErrorNonZeroAddress: true;
                        PublishUpgradeDependencyDowngrade: true;
                        PublishUpgradeMissingDependency: true;
                        SharedObjectOperationNotAllowed: true;
                        SuiMoveVerificationError: true;
                        SuiMoveVerificationTimedout: true;
                        TypeArgumentError: {
                            argumentIdx: ...;
                            kind: ...;
                        };
                        TypeArityMismatch: true;
                        UnusedValueWithoutDrop: {
                            resultIdx: ...;
                            secondaryIdx: ...;
                        };
                        VMInvariantViolation: true;
                        VMVerificationOrDeserializationError: true;
                        WrittenObjectsTooLarge: {
                            currentSize: ...;
                            maxSize: ...;
                        };
                    },
                        | "PackageUpgradeError"
                        | "SharedObjectOperationNotAllowed"
                        | "CommandArgumentError"
                        | "TypeArgumentError"
                        | "InsufficientGas"
                        | "InvalidGasObject"
                        | "InvariantViolation"
                        | "FeatureNotYetSupported"
                        | "MoveObjectTooBig"
                        | "MovePackageTooBig"
                        | "CircularObjectOwnership"
                        | "InsufficientCoinBalance"
                        | "CoinBalanceOverflow"
                        | "PublishErrorNonZeroAddress"
                        | "SuiMoveVerificationError"
                        | "MovePrimitiveRuntimeError"
                        | "MoveAbort"
                        | "VMVerificationOrDeserializationError"
                        | "VMInvariantViolation"
                        | "FunctionNotFound"
                        | "ArityMismatch"
                        | "TypeArityMismatch"
                        | "NonEntryFunctionInvoked"
                        | "UnusedValueWithoutDrop"
                        | "InvalidPublicFunctionReturnType"
                        | "InvalidTransferObject"
                        | "EffectsTooLarge"
                        | "PublishUpgradeMissingDependency"
                        | "PublishUpgradeDependencyDowngrade"
                        | "WrittenObjectsTooLarge"
                        | "CertificateDenied"
                        | "SuiMoveVerificationTimedout"
                        | "InputObjectDeleted"
                        | "ExecutionCancelledDueToSharedObjectCongestion"
                        | "AddressDeniedForCoin"
                        | "CoinTypeGlobalPause"
                        | "ExecutionCancelledDueToRandomnessUnavailable">;
                };
                Success: true;
            }, "Success" | "Failed">;
            transactionDigest: string;
            unchangedSharedObjects: [string, EnumOutputShapeWithKeys<{
                Cancelled: string;
                MutateDeleted: string;
                PerEpochConfig: true;
                ReadDeleted: string;
                ReadOnlyRoot: [string, string];
            },
                | "ReadOnlyRoot"
                | "MutateDeleted"
                | "ReadDeleted"
                | "Cancelled"
                | "PerEpochConfig">][];
        };
    }, "V1" | "V2">) => Promise<void>);
    signer: Signer;
    sourceCoins?: string[];
}

Hierarchy

  • Omit<ObjectCacheOptions, "address">
    • ParallelTransactionExecutorOptions

Properties

cache?: AsyncCache
client: SuiClient
coinBatchSize?: number

The number of coins to create in a batch when refilling the gas pool

defaultGasBudget?: bigint

The gasBudget to use if the transaction has not defined it's own gasBudget, defaults to minimumCoinBalance

epochBoundaryWindow?: number

Time to wait before/after the expected epoch boundary before re-fetching the gas pool (in milliseconds). Building transactions will be paused for up to 2x this duration around each epoch boundary to ensure the gas price is up-to-date for the next epoch.

initialCoinBalance?: bigint

The initial balance of each coin created for the gas pool

maxPoolSize?: number

The maximum number of transactions that can be execute in parallel, this also determines the maximum number of gas coins that will be created

minimumCoinBalance?: bigint

The minimum balance of a coin that can be reused for future transactions. If the gasCoin is below this value, it will be used when refilling the gasPool

onEffects?: ((effects: EnumOutputShapeWithKeys<{
    V1: {
        created: [{
            digest: string;
            objectId: string;
            version: string;
        }, EnumOutputShapeWithKeys<{
            AddressOwner: string;
            Immutable: true;
            ObjectOwner: string;
            Shared: {
                initialSharedVersion: string;
            };
        },
            | "AddressOwner"
            | "ObjectOwner"
            | "Shared"
            | "Immutable">][];
        deleted: {
            digest: string;
            objectId: string;
            version: string;
        }[];
        dependencies: string[];
        eventsDigest: null | string;
        executedEpoch: string;
        gasObject: [{
            digest: string;
            objectId: string;
            version: string;
        }, EnumOutputShapeWithKeys<{
            AddressOwner: string;
            Immutable: true;
            ObjectOwner: string;
            Shared: {
                initialSharedVersion: string;
            };
        },
            | "AddressOwner"
            | "ObjectOwner"
            | "Shared"
            | "Immutable">];
        gasUsed: {
            computationCost: string;
            nonRefundableStorageFee: string;
            storageCost: string;
            storageRebate: string;
        };
        modifiedAtVersions: [string, string][];
        mutated: [{
            digest: string;
            objectId: string;
            version: string;
        }, EnumOutputShapeWithKeys<{
            AddressOwner: string;
            Immutable: true;
            ObjectOwner: string;
            Shared: {
                initialSharedVersion: string;
            };
        },
            | "AddressOwner"
            | "ObjectOwner"
            | "Shared"
            | "Immutable">][];
        sharedObjects: {
            digest: string;
            objectId: string;
            version: string;
        }[];
        status: EnumOutputShapeWithKeys<{
            Failed: {
                command: null | string;
                error: EnumOutputShapeWithKeys<{
                    AddressDeniedForCoin: {
                        address: ...;
                        coinType: ...;
                    };
                    ArityMismatch: true;
                    CertificateDenied: true;
                    CircularObjectOwnership: {
                        object: ...;
                    };
                    CoinBalanceOverflow: true;
                    CoinTypeGlobalPause: {
                        coinType: ...;
                    };
                    CommandArgumentError: {
                        argIdx: ...;
                        kind: ...;
                    };
                    EffectsTooLarge: {
                        currentSize: ...;
                        maxSize: ...;
                    };
                    ExecutionCancelledDueToRandomnessUnavailable: true;
                    ExecutionCancelledDueToSharedObjectCongestion: {
                        congestedObjects: ...;
                    };
                    FeatureNotYetSupported: true;
                    FunctionNotFound: true;
                    InputObjectDeleted: true;
                    InsufficientCoinBalance: true;
                    InsufficientGas: true;
                    InvalidGasObject: true;
                    InvalidPublicFunctionReturnType: {
                        idx: ...;
                    };
                    InvalidTransferObject: true;
                    InvariantViolation: true;
                    MoveAbort: [(...), (...)];
                    MoveObjectTooBig: {
                        maxObjectSize: ...;
                        objectSize: ...;
                    };
                    MovePackageTooBig: {
                        maxObjectSize: ...;
                        objectSize: ...;
                    };
                    MovePrimitiveRuntimeError: (...) | (...);
                    NonEntryFunctionInvoked: true;
                    PackageUpgradeError: {
                        upgradeError: ...;
                    };
                    PublishErrorNonZeroAddress: true;
                    PublishUpgradeDependencyDowngrade: true;
                    PublishUpgradeMissingDependency: true;
                    SharedObjectOperationNotAllowed: true;
                    SuiMoveVerificationError: true;
                    SuiMoveVerificationTimedout: true;
                    TypeArgumentError: {
                        argumentIdx: ...;
                        kind: ...;
                    };
                    TypeArityMismatch: true;
                    UnusedValueWithoutDrop: {
                        resultIdx: ...;
                        secondaryIdx: ...;
                    };
                    VMInvariantViolation: true;
                    VMVerificationOrDeserializationError: true;
                    WrittenObjectsTooLarge: {
                        currentSize: ...;
                        maxSize: ...;
                    };
                },
                    | "PackageUpgradeError"
                    | "SharedObjectOperationNotAllowed"
                    | "CommandArgumentError"
                    | "TypeArgumentError"
                    | "InsufficientGas"
                    | "InvalidGasObject"
                    | "InvariantViolation"
                    | "FeatureNotYetSupported"
                    | "MoveObjectTooBig"
                    | "MovePackageTooBig"
                    | "CircularObjectOwnership"
                    | "InsufficientCoinBalance"
                    | "CoinBalanceOverflow"
                    | "PublishErrorNonZeroAddress"
                    | "SuiMoveVerificationError"
                    | "MovePrimitiveRuntimeError"
                    | "MoveAbort"
                    | "VMVerificationOrDeserializationError"
                    | "VMInvariantViolation"
                    | "FunctionNotFound"
                    | "ArityMismatch"
                    | "TypeArityMismatch"
                    | "NonEntryFunctionInvoked"
                    | "UnusedValueWithoutDrop"
                    | "InvalidPublicFunctionReturnType"
                    | "InvalidTransferObject"
                    | "EffectsTooLarge"
                    | "PublishUpgradeMissingDependency"
                    | "PublishUpgradeDependencyDowngrade"
                    | "WrittenObjectsTooLarge"
                    | "CertificateDenied"
                    | "SuiMoveVerificationTimedout"
                    | "InputObjectDeleted"
                    | "ExecutionCancelledDueToSharedObjectCongestion"
                    | "AddressDeniedForCoin"
                    | "CoinTypeGlobalPause"
                    | "ExecutionCancelledDueToRandomnessUnavailable">;
            };
            Success: true;
        }, "Success" | "Failed">;
        transactionDigest: string;
        unwrapped: [{
            digest: string;
            objectId: string;
            version: string;
        }, EnumOutputShapeWithKeys<{
            AddressOwner: string;
            Immutable: true;
            ObjectOwner: string;
            Shared: {
                initialSharedVersion: string;
            };
        },
            | "AddressOwner"
            | "ObjectOwner"
            | "Shared"
            | "Immutable">][];
        unwrappedThenDeleted: {
            digest: string;
            objectId: string;
            version: string;
        }[];
        wrapped: {
            digest: string;
            objectId: string;
            version: string;
        }[];
    };
    V2: {
        auxDataDigest: null | string;
        changedObjects: [string, {
            idOperation: EnumOutputShapeWithKeys<{
                Created: true;
                Deleted: true;
                None: true;
            }, "None" | "Created" | "Deleted">;
            inputState: EnumOutputShapeWithKeys<{
                Exist: [(...), (...)];
                NotExist: true;
            }, "NotExist" | "Exist">;
            outputState: EnumOutputShapeWithKeys<{
                NotExist: true;
                ObjectWrite: [(...), (...)];
                PackageWrite: [(...), (...)];
            }, "NotExist" | "ObjectWrite" | "PackageWrite">;
        }][];
        dependencies: string[];
        eventsDigest: null | string;
        executedEpoch: string;
        gasObjectIndex: null | number;
        gasUsed: {
            computationCost: string;
            nonRefundableStorageFee: string;
            storageCost: string;
            storageRebate: string;
        };
        lamportVersion: string;
        status: EnumOutputShapeWithKeys<{
            Failed: {
                command: null | string;
                error: EnumOutputShapeWithKeys<{
                    AddressDeniedForCoin: {
                        address: ...;
                        coinType: ...;
                    };
                    ArityMismatch: true;
                    CertificateDenied: true;
                    CircularObjectOwnership: {
                        object: ...;
                    };
                    CoinBalanceOverflow: true;
                    CoinTypeGlobalPause: {
                        coinType: ...;
                    };
                    CommandArgumentError: {
                        argIdx: ...;
                        kind: ...;
                    };
                    EffectsTooLarge: {
                        currentSize: ...;
                        maxSize: ...;
                    };
                    ExecutionCancelledDueToRandomnessUnavailable: true;
                    ExecutionCancelledDueToSharedObjectCongestion: {
                        congestedObjects: ...;
                    };
                    FeatureNotYetSupported: true;
                    FunctionNotFound: true;
                    InputObjectDeleted: true;
                    InsufficientCoinBalance: true;
                    InsufficientGas: true;
                    InvalidGasObject: true;
                    InvalidPublicFunctionReturnType: {
                        idx: ...;
                    };
                    InvalidTransferObject: true;
                    InvariantViolation: true;
                    MoveAbort: [(...), (...)];
                    MoveObjectTooBig: {
                        maxObjectSize: ...;
                        objectSize: ...;
                    };
                    MovePackageTooBig: {
                        maxObjectSize: ...;
                        objectSize: ...;
                    };
                    MovePrimitiveRuntimeError: (...) | (...);
                    NonEntryFunctionInvoked: true;
                    PackageUpgradeError: {
                        upgradeError: ...;
                    };
                    PublishErrorNonZeroAddress: true;
                    PublishUpgradeDependencyDowngrade: true;
                    PublishUpgradeMissingDependency: true;
                    SharedObjectOperationNotAllowed: true;
                    SuiMoveVerificationError: true;
                    SuiMoveVerificationTimedout: true;
                    TypeArgumentError: {
                        argumentIdx: ...;
                        kind: ...;
                    };
                    TypeArityMismatch: true;
                    UnusedValueWithoutDrop: {
                        resultIdx: ...;
                        secondaryIdx: ...;
                    };
                    VMInvariantViolation: true;
                    VMVerificationOrDeserializationError: true;
                    WrittenObjectsTooLarge: {
                        currentSize: ...;
                        maxSize: ...;
                    };
                },
                    | "PackageUpgradeError"
                    | "SharedObjectOperationNotAllowed"
                    | "CommandArgumentError"
                    | "TypeArgumentError"
                    | "InsufficientGas"
                    | "InvalidGasObject"
                    | "InvariantViolation"
                    | "FeatureNotYetSupported"
                    | "MoveObjectTooBig"
                    | "MovePackageTooBig"
                    | "CircularObjectOwnership"
                    | "InsufficientCoinBalance"
                    | "CoinBalanceOverflow"
                    | "PublishErrorNonZeroAddress"
                    | "SuiMoveVerificationError"
                    | "MovePrimitiveRuntimeError"
                    | "MoveAbort"
                    | "VMVerificationOrDeserializationError"
                    | "VMInvariantViolation"
                    | "FunctionNotFound"
                    | "ArityMismatch"
                    | "TypeArityMismatch"
                    | "NonEntryFunctionInvoked"
                    | "UnusedValueWithoutDrop"
                    | "InvalidPublicFunctionReturnType"
                    | "InvalidTransferObject"
                    | "EffectsTooLarge"
                    | "PublishUpgradeMissingDependency"
                    | "PublishUpgradeDependencyDowngrade"
                    | "WrittenObjectsTooLarge"
                    | "CertificateDenied"
                    | "SuiMoveVerificationTimedout"
                    | "InputObjectDeleted"
                    | "ExecutionCancelledDueToSharedObjectCongestion"
                    | "AddressDeniedForCoin"
                    | "CoinTypeGlobalPause"
                    | "ExecutionCancelledDueToRandomnessUnavailable">;
            };
            Success: true;
        }, "Success" | "Failed">;
        transactionDigest: string;
        unchangedSharedObjects: [string, EnumOutputShapeWithKeys<{
            Cancelled: string;
            MutateDeleted: string;
            PerEpochConfig: true;
            ReadDeleted: string;
            ReadOnlyRoot: [string, string];
        },
            | "ReadOnlyRoot"
            | "MutateDeleted"
            | "ReadDeleted"
            | "Cancelled"
            | "PerEpochConfig">][];
    };
}, "V1" | "V2">) => Promise<void>)
signer: Signer
sourceCoins?: string[]

An initial list of coins used to fund the gas pool, uses all owned SUI coins by default