UNPKG

@bsv/wallet-toolbox-client

Version:
95 lines 3.43 kB
import { StorageFeeModel } from '../../sdk/WalletStorage.interfaces'; /** * An output of this satoshis amount will be adjusted to the largest fundable amount. */ export declare const maxPossibleSatoshis = 2099999999999999; export interface GenerateChangeSdkResult { allocatedChangeInputs: GenerateChangeSdkChangeInput[]; changeOutputs: GenerateChangeSdkChangeOutput[]; size: number; fee: number; satsPerKb: number; maxPossibleSatoshisAdjustment?: { fixedOutputIndex: number; satoshis: number; }; } /** * Simplifications: * - only support one change type with fixed length scripts. * - only support satsPerKb fee model. * * Confirms for each availbleChange output that it remains available as they are allocated and selects alternate if not. * * @param params * @returns */ export declare function generateChangeSdk(params: GenerateChangeSdkParams, allocateChangeInput: (targetSatoshis: number, exactSatoshis?: number) => Promise<GenerateChangeSdkChangeInput | undefined>, releaseChangeInput: (outputId: number) => Promise<void>): Promise<GenerateChangeSdkResult>; export declare function validateGenerateChangeSdkResult(params: GenerateChangeSdkParams, r: GenerateChangeSdkResult): { ok: boolean; log: string; }; export interface GenerateChangeSdkParams { fixedInputs: GenerateChangeSdkInput[]; fixedOutputs: GenerateChangeSdkOutput[]; feeModel: StorageFeeModel; /** * Target for number of new change outputs added minus number of funding change outputs consumed. * If undefined, only a single change output will be added if excess fees must be recaptured. */ targetNetCount?: number; /** * Satoshi amount to initialize optional new change outputs. */ changeInitialSatoshis: number; /** * Lowest amount value to assign to a change output. * Drop the output if unable to satisfy. * default 285 */ changeFirstSatoshis: number; /** * Fixed change locking script length. * * For P2PKH template, 25 bytes */ changeLockingScriptLength: number; /** * Fixed change unlocking script length. * * For P2PKH template, 107 bytes */ changeUnlockingScriptLength: number; randomVals?: number[]; noLogging?: boolean; log?: string; } export interface GenerateChangeSdkInput { satoshis: number; unlockingScriptLength: number; } export interface GenerateChangeSdkOutput { satoshis: number; lockingScriptLength: number; } export interface GenerateChangeSdkChangeInput { outputId: number; satoshis: number; } export interface GenerateChangeSdkChangeOutput { satoshis: number; lockingScriptLength: number; } export interface ValidateGenerateChangeSdkParamsResult { hasMaxPossibleOutput?: number; } export declare function validateGenerateChangeSdkParams(params: GenerateChangeSdkParams): ValidateGenerateChangeSdkParamsResult; export interface GenerateChangeSdkStorageChange extends GenerateChangeSdkChangeInput { spendable: boolean; } export declare function generateChangeSdkMakeStorage(availableChange: GenerateChangeSdkChangeInput[]): { allocateChangeInput: (targetSatoshis: number, exactSatoshis?: number) => Promise<GenerateChangeSdkChangeInput | undefined>; releaseChangeInput: (outputId: number) => Promise<void>; getLog: () => string; }; //# sourceMappingURL=generateChange.d.ts.map