wallet-storage-client
Version:
Client only Wallet Storage
108 lines • 3.94 kB
TypeScript
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