UNPKG

wallet-storage-client

Version:
108 lines 3.94 kB
import { sdk } from '../../index.client'; export interface GenerateChangeSdkResult { allocatedChangeInputs: GenerateChangeSdkChangeInput[]; changeOutputs: GenerateChangeSdkChangeOutput[]; size: number; fee: number; satsPerKb: 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: sdk.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 declare function validateGenerateChangeSdkParams(params: GenerateChangeSdkParams): void; 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; }; /** * Returns the byte size required to encode number as Bitcoin VarUint * @publicbody */ export declare function varUintSize(val: number): 1 | 3 | 5 | 9; /** * @param scriptSize byte length of input script * @returns serialized byte length a transaction input */ export declare function transactionInputSize(scriptSize: number): number; /** * @param scriptSize byte length of output script * @returns serialized byte length a transaction output */ export declare function transactionOutputSize(scriptSize: number): number; /** * Compute the serialized binary transaction size in bytes * given the number of inputs and outputs, * and the size of each script. * @param inputs array of input script lengths, in bytes * @param outputs array of output script lengths, in bytes * @returns total transaction size in bytes */ export declare function transactionSize(inputs: number[], outputs: number[]): number; //# sourceMappingURL=generateChange.d.ts.map