import type { Sablier } from "../../types.js"; export type EvmReleaseVersionByProtocol = { airdrops: Sablier.EVM.Version.Airdrops; bob: Sablier.EVM.Version.Bob; flow: Sablier.EVM.Version.Flow; legacy: Sablier.EVM.Version.Legacy; lockup: Sablier.EVM.Version.Lockup; }; export type EvmReleaseFeatureSetByProtocol = { airdrops: Sablier.EVM.AirdropsReleaseFeatures; bob: Sablier.EVM.EmptyReleaseFeatures; flow: Sablier.EVM.FlowReleaseFeatures; legacy: Sablier.EVM.EmptyReleaseFeatures; lockup: Sablier.EVM.LockupReleaseFeatures; }; export type ReleaseFeaturesForProtocol = EvmReleaseFeatureSetByProtocol[TProtocol]; type ProtocolFeatureSet = EvmReleaseFeatureSetByProtocol[TProtocol]; type ProtocolWithBooleanFeature = { [TProtocol in keyof EvmReleaseFeatureSetByProtocol]: ProtocolFeatureSet extends Record ? TProtocol : never; }[keyof EvmReleaseFeatureSetByProtocol]; type EvmReleaseReference = Pick; export declare const evmReleaseFeatures: { readonly airdrops: { readonly "v1.1": { readonly claimTo: false; readonly comptroller: false; readonly payable: false; readonly sponsor: false; }; readonly "v1.2": { readonly claimTo: false; readonly comptroller: false; readonly payable: false; readonly sponsor: false; }; readonly "v1.3": { readonly claimTo: false; readonly comptroller: false; readonly payable: true; readonly sponsor: false; }; readonly "v2.0": { readonly claimTo: true; readonly comptroller: true; readonly payable: true; readonly sponsor: false; }; readonly "v3.0": { readonly claimTo: true; readonly comptroller: true; readonly payable: true; readonly sponsor: true; }; }; readonly bob: { readonly "v1.0": {}; }; readonly flow: { readonly "v1.0": { readonly comptroller: false; readonly minFee: false; readonly payable: false; readonly simpleTransfer: false; }; readonly "v1.1": { readonly comptroller: false; readonly minFee: false; readonly payable: true; readonly simpleTransfer: false; }; readonly "v2.0": { readonly comptroller: true; readonly minFee: true; readonly payable: true; readonly simpleTransfer: true; }; readonly "v3.0": { readonly comptroller: true; readonly minFee: true; readonly payable: true; readonly simpleTransfer: true; }; }; readonly legacy: { readonly "v1.0": {}; readonly "v1.1": {}; }; readonly lockup: { readonly "v1.0": { readonly batch: false; readonly comptroller: true; readonly legacyAbi: true; readonly minFee: false; readonly payable: false; readonly prbProxy: true; readonly publicWithdraw: false; readonly shape: false; }; readonly "v1.1": { readonly batch: false; readonly comptroller: true; readonly legacyAbi: true; readonly minFee: false; readonly payable: false; readonly prbProxy: false; readonly publicWithdraw: false; readonly shape: false; }; readonly "v1.2": { readonly batch: false; readonly comptroller: false; readonly legacyAbi: false; readonly minFee: false; readonly payable: false; readonly prbProxy: false; readonly publicWithdraw: true; readonly shape: false; }; readonly "v2.0": { readonly batch: true; readonly comptroller: false; readonly legacyAbi: false; readonly minFee: false; readonly payable: true; readonly prbProxy: false; readonly publicWithdraw: true; readonly shape: true; }; readonly "v3.0": { readonly batch: true; readonly comptroller: true; readonly legacyAbi: false; readonly minFee: true; readonly payable: true; readonly prbProxy: false; readonly publicWithdraw: true; readonly shape: true; }; readonly "v4.0": { readonly batch: true; readonly comptroller: true; readonly legacyAbi: false; readonly minFee: true; readonly payable: true; readonly prbProxy: false; readonly publicWithdraw: true; readonly shape: true; }; }; }; export type PayableEvmProtocol = ProtocolWithBooleanFeature<"payable">; export declare function getAirdropsReleaseFeatures(version: Sablier.EVM.Version): Sablier.EVM.AirdropsReleaseFeatures | undefined; export declare function getEvmReleaseFeatures(protocol: TProtocol, version: EvmReleaseVersionByProtocol[TProtocol]): ReleaseFeaturesForProtocol; export declare function getFlowReleaseFeatures(version: Sablier.EVM.Version): Sablier.EVM.FlowReleaseFeatures | undefined; export declare function getLockupReleaseFeatures(version: Sablier.EVM.Version): Sablier.EVM.LockupReleaseFeatures | undefined; export declare function hasClaimTo(version: Sablier.EVM.Version): boolean; export declare function hasSponsor(version: Sablier.EVM.Version): boolean; export declare function hasOnchainMinFee(release: EvmReleaseReference): boolean; export declare function hasOnchainMinFee(protocol: Sablier.EVM.Protocol, version: Sablier.EVM.Version): boolean; export declare function hasSimpleTransfer(version: Sablier.EVM.Version): boolean; export declare function hasSplitLockupArchitecture(version: Sablier.EVM.Version): boolean; export declare const usesLockupSplit: typeof hasSplitLockupArchitecture; export declare function isEvmReleasePayable(release: EvmReleaseReference): boolean; export declare function isEvmReleasePayable(protocol: Sablier.EVM.Protocol, version: Sablier.EVM.Version): boolean; export declare function supportsLockupBatch(version: Sablier.EVM.Version): boolean; export declare function supportsLockupPrbProxy(version: Sablier.EVM.Version): boolean; export declare function supportsLockupPublicWithdraw(version: Sablier.EVM.Version): boolean; export declare function supportsLockupShape(version: Sablier.EVM.Version): boolean; export declare function usesComptroller(release: EvmReleaseReference): boolean; export {}; //# sourceMappingURL=features.d.ts.map